]> ruin.nu Git - NDIRC.git/commitdiff
Converted .whois and .flags, removing the redundant functionality
authorMichael Andreen <harv@ruin.nu>
Sat, 16 May 2009 15:53:55 +0000 (17:53 +0200)
committerMichael Andreen <harv@ruin.nu>
Sat, 16 May 2009 15:53:55 +0000 (17:53 +0200)
Commands/Usermgm.pm
Usermgm.pm
database/roles.sql

index 4ea75c1b8d089090a4807061dc9de19bf71f4862..be87acb886493a059a1b2c33284f957e6d917b10 100644 (file)
@@ -128,4 +128,38 @@ WHERE uid = ?
        $f->finish;
 }
 
+sub whois
+       : Help(syntax: .whois [username] | % can be used for wildcards \%arro% will match barrow. If no username is given then all flags will be listed)
+       : Alias(flags)
+       : ACL(irc_whois)
+{
+       my ($self,$c,$msg) = @_;
+       my ($nick) = $msg =~ /^(\S+)?$/ or die 'ARGS';
+       my $dbh = $c->model;
+
+       unless ($nick){
+               my ($flags) = $dbh->selectrow_array(q{
+SELECT TRIM(', ' FROM concat(flag||':'||groupname||', ')) FROM groups
+               });
+               $c->reply("Current flags: $flags");
+               return;
+       }
+
+       my $f = $dbh->prepare(q{
+SELECT username, pnick, hostmask, concat(flag) AS flags
+FROM users u
+       LEFT OUTER JOIN (SELECT uid,flag FROM groupmembers
+               NATURAL JOIN groups ORDER BY uid,flag ) g USING (uid)
+WHERE username ILIKE ?
+GROUP BY username,pnick,hostmask LIMIT 5
+               });
+       $f->execute($nick);
+       while (my $user = $f->fetchrow_hashref){
+               $c->reply("<b>$user->{username} (/$user->{pnick})</b> flags: ($user->{flags}) host: $user->{hostmask}");
+       }
+       if ($f->rows == 0){
+               $c->reply("No hit, maybe spelling mistake, or add % as wildcard");
+       }
+}
+
 1;
index 3c1c9bb3c4dcdf689297871b7107101fad119cd4..493c05c445bfb4a82b9ae244d3204c7173bc8764 100644 (file)
@@ -25,54 +25,7 @@ require Exporter;
 
 our @ISA = qw/Exporter/;
 
-our @EXPORT = qw/whois flags flag laston addPoints chattrG setHost setPNick getShips getFleet/;
-
-sub whois {
-       my ($msg, $command) = @_;
-
-       my ($nick);
-       if(defined $msg && $msg =~ /^(\S+)$/){
-               $nick = $1;
-       }else{
-               $ND::server->command("notice $ND::nick syntax: .$command nick | % can be used for wildcards \%arro% will match barrow");
-               return;
-       }
-       if (officer() || ia()){
-               my $f = $ND::DBH->prepare("SELECT username, hostmask, concat(flag) FROM users u LEFT OUTER JOIN (SELECT uid,flag FROM groupmembers NATURAL JOIN groups ORDER BY uid,flag ) g ON g.uid = u.uid  WHERE username ILIKE ? GROUP BY username,hostmask");
-               $f->execute($nick);
-               while (my @row = $f->fetchrow()){
-                       $ND::server->command("msg $ND::target $row[0] flags: ($row[2]) host: $row[1]");
-               }
-               if ($f->rows == 0){
-                       $ND::server->command("msg $ND::target No hit, maybe spelling mistake, or add % as wildcard");
-               }
-       }else{
-               $ND::server->command("msg $ND::target Only officers are allowed to check that");
-       }
-}
-
-sub flags {
-       my ($msg, $command) = @_;
-
-       my ($nick);
-       if(defined $msg && $msg =~ /^(\S+)$/){
-               $nick = $1;
-       }else{
-               my ($flags) = $ND::DBH->selectrow_array("SELECT TRIM(', ' FROM concat(flag||':'||groupname||', ')) FROM groups");
-               $ND::server->command("notice $ND::nick syntax: .$command nick | % can be used for wildcards \%arro% will match barrow | Current flags: $flags");
-               return;
-       }
-       if (hc()){
-               my $f = $ND::DBH->prepare("SELECT username, concat(flag), TRIM(', ' FROM concat(groupname||', ')) FROM users u LEFT OUTER JOIN (SELECT uid,flag,groupname FROM groupmembers NATURAL JOIN groups ORDER BY uid,flag ) g ON g.uid = u.uid  WHERE username ILIKE ? GROUP BY username,hostmask");
-               $f->execute($nick);
-               while (my @row = $f->fetchrow()){
-                       $ND::server->command("msg $ND::target Flags for $row[0] on: $ND::target: $row[1]| (Global: $row[2])");
-               }
-               if ($f->rows == 0){
-                       $ND::server->command("msg $ND::target No hit, maybe spelling mistake, or add % as wildcard");
-               }
-       }
-}
+our @EXPORT = qw/flag laston addPoints setHost setPNick getShips getFleet/;
 
 sub flag {
        my ($msg, $command) = @_;
index c0007168deb382f2fc1997f3d47206a019969b76..78bf112d40cb5ff629ae8134e562bfdd067cb17f 100644 (file)
@@ -12,6 +12,7 @@ INSERT INTO roles VALUES('irc_sms');
 INSERT INTO roles VALUES('irc_adduser');
 INSERT INTO roles VALUES('irc_deactivateuser');
 INSERT INTO roles VALUES('irc_chattr');
+INSERT INTO roles VALUES('irc_whois');
 
 INSERT INTO group_roles (gid,role) VALUES(1,'irc_p_nick');
 INSERT INTO group_roles (gid,role) VALUES(1,'irc_p_intel');
@@ -25,6 +26,7 @@ INSERT INTO group_roles (gid,role) VALUES(1,'irc_sms');
 INSERT INTO group_roles (gid,role) VALUES(1,'irc_adduser');
 INSERT INTO group_roles (gid,role) VALUES(1,'irc_deactivateuser');
 INSERT INTO group_roles (gid,role) VALUES(1,'irc_chattr');
+INSERT INTO group_roles (gid,role) VALUES(1,'irc_whois');
 
 INSERT INTO group_roles (gid,role) VALUES(2,'irc_gs');
 INSERT INTO group_roles (gid,role) VALUES(2,'irc_scan');
@@ -40,6 +42,7 @@ INSERT INTO group_roles (gid,role) VALUES(3,'irc_sms');
 INSERT INTO group_roles (gid,role) VALUES(3,'irc_adduser');
 INSERT INTO group_roles (gid,role) VALUES(3,'irc_deactivateuser');
 INSERT INTO group_roles (gid,role) VALUES(3,'irc_chattr');
+INSERT INTO group_roles (gid,role) VALUES(3,'irc_whois');
 
 INSERT INTO group_roles (gid,role) VALUES(4,'irc_points_others');
 
@@ -56,5 +59,6 @@ INSERT INTO group_roles (gid,role) VALUES(8,'irc_anonscan');
 INSERT INTO group_roles (gid,role) VALUES(18,'irc_p_nick');
 INSERT INTO group_roles (gid,role) VALUES(18,'irc_p_intel');
 INSERT INTO group_roles (gid,role) VALUES(18,'irc_points_others');
+INSERT INTO group_roles (gid,role) VALUES(18,'irc_whois');
 
 INSERT INTO group_roles (gid,role) VALUES(19,'irc_p_intel');