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