$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;
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) = @_;
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');
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');
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');
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');