package Apache::WebDAO; use HTML::WebDAO; use HTML::WebDAO::CVapache2; use HTML::WebDAO::SessionID; use HTML::WebDAO::Sessiondb; use HTML::WebDAO::Lex; use HTML::WebDAO::Store::MLDBM; use strict; use warnings; use Apache2::RequestRec(); use Apache2::RequestIO (); use Apache2::URI (); use Data::Dumper; use CGI; use Cwd; use Apache2::Const -compile => qw(OK DECLINED); my $lexer; sub get_config { Apache2::Module::get_config( 'Apache::Directives2', @_ ); } sub handler { my $r = shift; return Apache2::Const::DECLINED if -e $r->filename and !-d $r->filename; #get configs my $s = $r->server; my $dir_cfg = get_config( $s, $r->per_dir_config ); my $srv_cfg = get_config($s); my %cfg; foreach my $key ( grep { /^wd/ } keys %{$srv_cfg}, keys %{$dir_cfg} ) { my $val = exists $srv_cfg->{$key} ? $srv_cfg->{$key} : exists $dir_cfg->{$key} ? $dir_cfg->{$key} : next; $cfg{$key} = $val; } my $store_obj = ( $cfg{wdStore} || 'HTML::WebDAO::Store::Abstract' )->new( %{ $cfg{wdStorePar} || {} } ); my $sess_class = $cfg{wdSession} || 'HTML::WebDAO::Session'; my $sess = $sess_class->new( { %{ $cfg{wdSessionPar} || {} }, store => $store_obj, cv => new HTML::WebDAO::CVapache2:: $r, } ); $sess->set_header( -type => 'text/html; charset=utf-8' ); # $sess->Cgi_env->{path_info_elments} = [ grep { $_ && defined $_ && !/sess/} split( /\//, $r->uri ) ]; my $dir = getcwd; chdir( $r->document_root ); # my $index_file = $r->dir_config->get('wd_indexfile'); my $index_file = $cfg{wdIndexFile};#||$r->dir_config->get('wd_indexfile')||'index.xhtml'; my $filename = $index_file; my $content = qq!<wD><include file="$filename"/></wD>!; $lexer = HTML::WebDAO::Lex->new( content => $content ) unless $lexer; my $eng = HTML::WebDAO::Engine->new( "index", $content, lexer => $lexer, session => $sess ); $sess->ExecEngine($eng); chdir($dir); # return Apache2::Const::DECLINED unless -d $r->filename; # $r->content_type('text/plain'); # my $cgi = CGI::new; =pod my $s = $r->server; my $dir_cfg = get_config( $s, $r->per_dir_config ); my $srv_cfg = get_config($s); print "<pre>" . Dumper( { '%cfg' => \%cfg, '$r'=>ref($r), # '$r->uri' => $r->uri, '$s->is_virtual' => $s->is_virtual, '$r->filename' => $r->filename, '$r->parsed_uri' => $r->parsed_uri, '$dir_cfg' => $dir_cfg, '$srv_cfg' => $srv_cfg, # '$cgi->param' => [ $cgi->param ], '$r->content_type' => $r->content_type, # '$cgi->path_info()'=>$cgi->path_info, '$r->dir_config()' => $r->dir_config(), '$r->document_root' => $r->document_root } ); # print '<pre>'.Dumper($r->dir_config('PlaylistImage')).'</pre>'; # print '<pre>'.Dumper($r->dir_config()).'</pre>'; # print "<pre>".Dumper(\%ENV)."</pre>"; =cut return Apache2::Const::OK; } 1;