]> ruin.nu Git - NDIRC.git/commitdiff
Allow min claim and forum dates for laston
authorMichael Andreen <harv@ruin.nu>
Wed, 12 Nov 2008 20:34:21 +0000 (21:34 +0100)
committerMichael Andreen <harv@ruin.nu>
Wed, 12 Nov 2008 20:34:21 +0000 (21:34 +0100)
Usermgm.pm

index c579a3cf336282f87fa0952aefa220daf126fe6b..2de54a224ccea222b136c422d6d9c0feae909049 100644 (file)
@@ -133,25 +133,31 @@ WHERE flag = ?;
 sub laston {
        my ($msg, $command) = @_;
 
-       my ($flag,$min);
-       my $f;
        if (officer() || ia()){
-               if(defined $msg && $msg =~ /^(\w)(?: (\d+))?$/){
+               my ($flag,$min);
+               my $f;
+               if(defined $msg && $msg =~ /^(\w)(?: (\d+)(?:\|(\d+)\|(\d+))?)?$/){
                        $flag = $1;
                        $min = $2;
+                       my $forum = $3;
+                       my $claim = $4;
                        $min = 0 unless defined $min;
-                       $f = $ND::DBH->prepare(q{SELECT username
-                               ,date_part('day',now() - laston)::int AS last
-                               ,COALESCE(date_part('day',now() - (SELECT max(time) FROM forum_thread_visits WHERE uid = u.uid))::text,'?')
-                                       AS lastforum
-                               ,COALESCE(date_part('day',now() - (SELECT max(timestamp) FROM raid_claims WHERE uid = u.uid))::text,'?') AS lastclaim
-                               FROM users u
-                                       NATURAL JOIN groupmembers
-                                       NATURAL JOIN groups
-                               WHERE flag = $1 AND COALESCE(date_part('day',now() - laston) >= $2,TRUE)
-                               ORDER BY laston
+                       $f = $ND::DBH->prepare(q{SELECT username, last
+                               ,COALESCE(lastforum::text,'?') AS lastforum
+                               ,COALESCE(lastclaim::text,'?') AS lastclaim
+                               FROM (SELECT username
+                                       ,date_part('day',now() - laston)::int AS last
+                                       ,date_part('day',now() - (SELECT max(time) FROM forum_thread_visits WHERE uid = u.uid)) AS lastforum
+                                       ,date_part('day',now() - (SELECT max(timestamp) FROM raid_claims WHERE uid = u.uid)) AS lastclaim
+                                       FROM users u
+                                               NATURAL JOIN groupmembers
+                                               NATURAL JOIN groups
+                                       WHERE flag = $1
+                               ) a
+                               WHERE COALESCE(last >= $2,TRUE) AND COALESCE(lastforum >= $3,TRUE) AND COALESCE(lastclaim >= $4,TRUE)
+                               ORDER BY last DESC, lastforum DESC, lastclaim DESC
                                });
-                       $f->execute($flag,$min);
+                       $f->execute($flag,$min,$forum,$claim);
                }elsif(defined $msg && $msg =~ /^(\S+)$/){
                        $f = $ND::DBH->prepare(q{SELECT username
                                ,date_part('day',now() - laston)::int AS last