X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=ND.pm;h=997914241086d75eb46541e06dbd2e8b20121356;hb=c9e0c080884b28042ccca193dd91c8d55a3c3855;hp=dd017f3a4201c73c8a579373ace4d9446e0d1eb1;hpb=9ce5a8529e75cb109ed9ba3fc788c94ef47b1080;p=ndwebbie.git diff --git a/ND.pm b/ND.pm index dd017f3..9979142 100755 --- a/ND.pm +++ b/ND.pm @@ -26,10 +26,13 @@ use DBD::Pg qw(:pg_types); use Apache2::Request; use ND::Web::Include; use ND::DB; +use ND::Include; use Tie::File; use Fcntl 'O_RDONLY'; use strict; -use warnings FATAL => 'all'; +use warnings; + +$SIG{__WARN__} = sub {$ND::ERROR .= p $_[0]}; chdir '/var/www/ndawn/code'; our %PAGES; @@ -38,7 +41,7 @@ our $NOACCESS = HTML::Template->new(filename => 'templates/NoAccess.tmpl', globa sub handler { local $ND::r = shift; local $ND::req = Apache2::Request->new($ND::r, POST_MAX => "1M"); - local $ND::DBH; + local $ND::DBH = ND::DB::DB(); local $ND::USER; local $ND::UID; local $ND::PLANET; @@ -47,22 +50,27 @@ sub handler { local $ND::TICK; local %ND::GROUPS; local $ND::ERROR; + local $ND::USETEMPLATE = 1; local $ND::PAGE = $ND::req->param('page'); if ($ENV{'SCRIPT_NAME'} =~ /(\w+)(\.(pl|php|pm))?$/){ $ND::PAGE = $1 unless $1 eq 'index' and $3 eq 'pl'; } - $ND::PAGE = 'main' unless exists $PAGES{$ND::PAGE}; + $ND::PAGE = 'main' unless (defined $ND::PAGE and exists $PAGES{$ND::PAGE}); $PAGES{$ND::PAGE}->{parse}->($ENV{REQUEST_URI}); - page($ND::PAGE); + if ($ND::USETEMPLATE){ + page($ND::DBH,$ND::PAGE); + }else{ + $PAGES{$ND::PAGE}->{render}->($ND::DBH,$ENV{REQUEST_URI}); + } + return Apache2::Const::OK; } sub page { - my ($PAGE) = @_; - our $DBH = ND::DB::DB(); + my ($DBH,$PAGE) = @_; $DBH->do(q{SET timezone = 'GMT'}); our $ERROR; @@ -100,7 +108,7 @@ sub page { $ND::BODY = HTML::Template->new(filename => "templates/$ND::PAGE.xml.tmpl", cache => 1); }else{ $ND::BODY = HTML::Template->new(filename => "templates/$ND::PAGE.tmpl", global_vars => 1, cache => 1); - $ND::BODY->param(PAGE => '/'.$ND::PAGE); + $ND::BODY->param(PAGE => $ND::PAGE); } $ND::BODY = $PAGES{$PAGE}->{render}->($DBH,$ND::BODY); @@ -110,16 +118,13 @@ sub page { $fleetupdate = 0 unless defined $fleetupdate; - my ($unread) = $DBH->selectrow_array(q{ - SELECT count(*) AS unread -FROM forum_boards fb NATURAL JOIN forum_threads ft - JOIN forum_posts fp USING (ftid) LEFT OUTER JOIN - (SELECT * FROM forum_thread_visits WHERE uid = $1) ftv ON ftv.ftid = ft.ftid -WHERE (ftv.time IS NULL OR fp.time > ftv.time) AND fbid > 0 AND - fbid IN (SELECT fbid FROM forum_access WHERE gid IN (SELECT groups($1))) - },undef,$UID) or $ERROR .= p($DBH->errstr); - + my ($last_forum_visit) = $DBH->selectrow_array(q{SELECT last_forum_visit FROM users WHERE uid = $1} + ,undef,$UID) or $ERROR .= p($DBH->errstr); + my ($unread,$newposts) = $DBH->selectrow_array(unread_query,undef,$UID,$last_forum_visit) + or $ERROR .= p($DBH->errstr); + $TEMPLATE->param(UnreadPosts => $unread); + $TEMPLATE->param(NewPosts => $newposts); $TEMPLATE->param(Tick => $TICK); $TEMPLATE->param(isMember => (($TICK - $fleetupdate < 24) || isScanner()) && $PLANET && isMember()); $TEMPLATE->param(isHC => isHC()); @@ -131,6 +136,8 @@ WHERE (ftv.time IS NULL OR fp.time > ftv.time) AND fbid > 0 AND $ND::TEMPLATE->param(Targets => listTargets()); } $TEMPLATE->param(Coords => param('coords') ? param('coords') : '1:1:1'); + my ($css) = $DBH->selectrow_array(q{SELECT css FROM users WHERE uid = $1},undef,$ND::UID); + $TEMPLATE->param(CSS => $css); } $TEMPLATE->param(Error => $ERROR);