]> ruin.nu Git - ND.git/blobdiff - Include.pm
Just return the query and let the caller prepare
[ND.git] / Include.pm
index ba1768ee3447c27c4c1747389f0748bd0d6dad9f..7f960575681d7a31c8166e6f69e1655c44e293c0 100644 (file)
@@ -91,20 +91,23 @@ sub def_log {
 
 sub pa_xp {
        my ($roids,$ascore,$avalue,$tscore,$tvalue) = @_;
-       my $bravery = (max(0,min(2,$tscore/$ascore)-0.6)) * (min(2,$tvalue/$avalue)-0.4);
+       my $bravery = (max(0,min(2,$tscore/$ascore)-0.2)) * (min(2,$tvalue/$avalue)-0.1);
        return int(max($roids * 10 * $bravery,0))
 
 }
 
 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;