X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=NDWeb%2FPages%2FForum.pm;h=1bd5793134406cb9a769b7bbb6071f9c1ea2c821;hb=961956798336852fd1430ea4298cae6b179deff8;hp=d494b2587dd81979f1b0baca331b05773cad0b35;hpb=721d34ecc1ac357cd325c08790ca41c6218de7d5;p=ndwebbie.git diff --git a/NDWeb/Pages/Forum.pm b/NDWeb/Pages/Forum.pm index d494b25..1bd5793 100644 --- a/NDWeb/Pages/Forum.pm +++ b/NDWeb/Pages/Forum.pm @@ -170,16 +170,15 @@ sub render_body { $threads->execute($ND::UID) or warn $DBH->errstr; my @categories; my $category = {fcid => 0}; - my $board = {fbid => 0}; + my $board = {id => 0}; while (my $thread = $threads->fetchrow_hashref){ if ($category->{fcid} != $thread->{fcid}){ delete $category->{fcid}; $category = {fcid => $thread->{fcid}, category => $thread->{category}}; push @categories,$category; } - if ($board->{fbid} != $thread->{fbid}){ - delete $board->{fbid}; - $board = {fbid => $thread->{fbid}, board => $thread->{board}}; + if ($board->{id} != $thread->{fbid}){ + $board = {id => $thread->{fbid}, board => $thread->{board}}; push @{$category->{Boards}},$board; } delete $thread->{fcid}; @@ -189,7 +188,6 @@ sub render_body { push @{$board->{Threads}},$thread; } delete $category->{fcid}; - delete $board->{fbid}; $BODY->param(Categories => \@categories); }elsif($board){ #List threads in this board @@ -254,12 +252,13 @@ sub render_body { }else{ #List boards $BODY->param(Overview => 1); my $boards = $DBH->prepare(q{SELECT fcid,category,fb.fbid AS id,fb.board - ,count(NULLIF(COALESCE(fp.time > ftv.time,TRUE),FALSE)) AS unread + ,count(NULLIF(COALESCE(fp.fpid::BOOLEAN,FALSE) + AND COALESCE(fp.time > ftv.time,TRUE),FALSE)) AS unread ,date_trunc('seconds',max(fp.time)::timestamp) as last_post FROM forum_categories JOIN forum_boards fb USING (fcid) - JOIN forum_threads ft USING (fbid) - JOIN forum_posts fp USING (ftid) + LEFT OUTER JOIN forum_threads ft USING (fbid) + LEFT OUTER JOIN forum_posts fp USING (ftid) LEFT OUTER JOIN (SELECT * FROM forum_thread_visits WHERE uid = $1) ftv USING (ftid) WHERE EXISTS (SELECT fbid FROM forum_access WHERE fbid = fb.fbid AND gid IN (SELECT groups($1))) GROUP BY fcid,category,fb.fbid, fb.board