+ my ($msg, $command) = @_;
+
+ if (officer() || ia()){
+ 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, 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,$forum,$claim);
+ }elsif(defined $msg && $msg =~ /^(\S+)$/){
+ $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
+ WHERE username ILIKE $1 ORDER BY lower(username)
+ });
+ $f->execute($1);
+ }else{
+ $ND::server->command("notice $ND::nick syntax: .$command <flag [days]|nick> | lists users and the number of days since they were last seen (irc|forum|claim). If days is specified it will only list users with at least that amount of idle time.");
+ return;
+ }