X-Git-Url: https://ruin.nu/git/?p=ND.git;a=blobdiff_plain;f=Include.pm;fp=Include.pm;h=7f960575681d7a31c8166e6f69e1655c44e293c0;hp=e5f1f2fc47ec41480b3ab9f97149f8b8000b7703;hb=245cb3b058157d719b02be466e1b4deaa72fc986;hpb=8fe7db805251b8b4bc2f1558e8a7216c63892a33 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;