From: Michael Andreen Date: Wed, 20 May 2009 19:26:43 +0000 (+0200) Subject: Converted .calltake, .callcov and .callignore X-Git-Url: https://ruin.nu/git/?a=commitdiff_plain;h=5e02deb33fbdb994d72da23e8de85e633ec6654c;p=NDIRC.git Converted .calltake, .callcov and .callignore --- diff --git a/Commands/Def.pm b/Commands/Def.pm index e8067dd..89ceeee 100644 --- a/Commands/Def.pm +++ b/Commands/Def.pm @@ -150,5 +150,42 @@ WHERE i.id = ? } } +sub calltake + : Help(Usage: .calltake callid | sets the dc. also markes as covered/ignored with .callcov and .callignore) + : Type(def) + : ACL(irc_calltake) + : Alias(qw/callcov callignore/) +{ + my ($self,$c,$msg) = @_; + my ($id) = $msg =~ /^(\d+)$/ or die 'ARGS'; + my $dbh = $c->model; + + my $extra = ''; + + given ($self->{name}){ + when('callignore'){ + $extra = ',covered = FALSE, open = FALSE' + } + when('callcov'){ + $extra = ',covered = TRUE, open = FALSE' + } + } + + $dbh->begin_work; + my $rows = $dbh->do(q{ +UPDATE calls SET dc = (SELECT uid FROM users WHERE hostmask ILIKE $1) + }. $extra .q{ +WHERE id = $2 + },undef,$c->host,$id); + if ($rows == 1){ + $c->reply("Marked call $id with ".$self->name); + $c->def_log($id , "Used: [B]".$self->name."[/B]"); + $dbh->commit; + }else{ + $c->reply("$id is not a valid call"); + $dbh->rollback; + } +} + 1; diff --git a/Def.pm b/Def.pm index f2285d1..512d637 100644 --- a/Def.pm +++ b/Def.pm @@ -58,60 +58,6 @@ SQL } } -sub takeCall { - my ($msg,$command) = @_; - my ($id); - if (defined $msg && $msg =~ /^(\d+)$/){ - $id = $1; - }else{ - $ND::server->command("notice $ND::nick Usage: $command callid"); - return; - } - if (my $user = dc()){ - if ($ND::DBH->do(q{UPDATE calls SET dc = (SELECT uid FROM users WHERE hostmask ILIKE ?) WHERE id = ?} - ,undef,$ND::address,$id) == 1){ - $ND::server->command("msg $ND::target Updated the DC for call $id"); - def_log $user->{uid}, $id , "Used: [B] $command [/B]"; - } - } -} - -sub covCall { - my ($msg,$command) = @_; - my ($id); - if (defined $msg && $msg =~ /^(\d+)$/){ - $id = $1; - }else{ - $ND::server->command("notice $ND::nick Usage: $command callid"); - return; - } - if (my $user = dc()){ - if($ND::DBH->do(q{UPDATE calls SET dc = (SELECT uid FROM users WHERE hostmask ILIKE ?), covered = TRUE, open = FALSE WHERE id = ?} - ,undef,$ND::address,$id) == 1){ - $ND::server->command("msg $ND::target Marked call $id as covered"); - def_log $user->{uid}, $id , "Used: [B] $command [/B]"; - } - } -} - -sub ignoreCall { - my ($msg,$command) = @_; - my ($id); - if (defined $msg && $msg =~ /^(\d+)$/){ - $id = $1; - }else{ - $ND::server->command("notice $ND::nick Usage: $command callid"); - return; - } - if (my $user = dc()){ - if($ND::DBH->do(q{UPDATE calls SET dc = (SELECT uid FROM users WHERE hostmask ILIKE ?), covered = FALSE, open = FALSE WHERE id = ?} - ,undef,$ND::address,$id) == 1){ - $ND::server->command("msg $ND::target Marked call $id as ignored"); - def_log $user->{uid}, $id , "Used: [B] $command [/B]"; - } - } -} - sub setCalc { my ($msg,$command) = @_; my ($id, $calc); diff --git a/database/roles.sql b/database/roles.sql index e238160..4e1fa63 100644 --- a/database/roles.sql +++ b/database/roles.sql @@ -31,6 +31,7 @@ INSERT INTO roles VALUES('irc_setchannel'); INSERT INTO roles VALUES('irc_anondef'); INSERT INTO roles VALUES('irc_defcall'); INSERT INTO roles VALUES('irc_settype'); +INSERT INTO roles VALUES('irc_calltake'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_p_nick'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_p_intel'); @@ -63,6 +64,7 @@ INSERT INTO group_roles (gid,role) VALUES(1,'irc_setchannel'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_anondef'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_defcall'); INSERT INTO group_roles (gid,role) VALUES(1,'irc_settype'); +INSERT INTO group_roles (gid,role) VALUES(1,'irc_calltake'); INSERT INTO group_roles (gid,role) VALUES(2,'irc_gs'); INSERT INTO group_roles (gid,role) VALUES(2,'irc_scan'); @@ -97,6 +99,7 @@ INSERT INTO group_roles (gid,role) VALUES(3,'irc_setchannel'); INSERT INTO group_roles (gid,role) VALUES(3,'irc_anondef'); INSERT INTO group_roles (gid,role) VALUES(3,'irc_defcall'); INSERT INTO group_roles (gid,role) VALUES(3,'irc_settype'); +INSERT INTO group_roles (gid,role) VALUES(3,'irc_calltake'); INSERT INTO group_roles (gid,role) VALUES(4,'irc_points_others'); INSERT INTO group_roles (gid,role) VALUES(4,'irc_a'); @@ -118,6 +121,7 @@ INSERT INTO group_roles (gid,role) VALUES(6,'irc_sethostile'); INSERT INTO group_roles (gid,role) VALUES(6,'irc_anondef'); INSERT INTO group_roles (gid,role) VALUES(6,'irc_defcall'); INSERT INTO group_roles (gid,role) VALUES(6,'irc_settype'); +INSERT INTO group_roles (gid,role) VALUES(6,'irc_calltake'); INSERT INTO group_roles (gid,role) VALUES(8,'irc_scanreqs'); INSERT INTO group_roles (gid,role) VALUES(8,'irc_anonscan');