X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=Include.pm;h=7f960575681d7a31c8166e6f69e1655c44e293c0;hb=245cb3b058157d719b02be466e1b4deaa72fc986;hp=e5f1f2fc47ec41480b3ab9f97149f8b8000b7703;hpb=193d9ed10fea0563da8da5f54ec42f3068547dd4;p=ND.git diff --git a/Include.pm b/Include.pm index e5f1f2f..7f96057 100644 --- a/Include.pm +++ b/Include.pm @@ -97,14 +97,17 @@ sub pa_xp { } sub unread_query { - return $ND::DBH->prepare_cached(q{ - SELECT count(*) AS unread, count(NULLIF(fp.time > $2,FALSE)) AS new -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))) - }); + return q{ + SELECT count(*) AS unread, count(NULLIF(fp.time > (SELECT max(time) + FROM forum_thread_visits WHERE uid = $1),FALSE)) AS new + FROM 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))) + }; } 1;