X-Git-Url: https://ruin.nu/git/?p=ND.git;a=blobdiff_plain;f=Include.pm;h=7f960575681d7a31c8166e6f69e1655c44e293c0;hp=314283aae8bbcab31c52f8766ef5b9f9b19f0245;hb=245cb3b058157d719b02be466e1b4deaa72fc986;hpb=697f8de81e414a8d0a0c09d31b3d6a16aa651b59 diff --git a/Include.pm b/Include.pm index 314283a..7f96057 100644 --- a/Include.pm +++ b/Include.pm @@ -25,7 +25,7 @@ require Exporter; our @ISA = qw/Exporter/; -our @EXPORT = qw/min max parseValue prettyValue log_message intel_log unread_query pa_xp/; +our @EXPORT = qw/min max parseValue prettyValue log_message intel_log def_log unread_query pa_xp/; sub min { my ($x,$y) = @_; @@ -82,6 +82,13 @@ sub intel_log { $log->execute($uid,$message,$planet) or $ND::ERROR .= p($ND::DBH->errstr); } +sub def_log { + my ($uid,$call, $message) = @_; + my $log = $ND::DBH->prepare_cached(q{INSERT INTO forum_posts (ftid,uid,message) VALUES( + (SELECT ftid FROM calls WHERE id = $3),$1,$2)}); + $log->execute($uid,$message,$call) or $ND::ERROR .= p($ND::DBH->errstr); +} + sub pa_xp { my ($roids,$ascore,$avalue,$tscore,$tvalue) = @_; my $bravery = (max(0,min(2,$tscore/$ascore)-0.2)) * (min(2,$tvalue/$avalue)-0.1); @@ -90,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;