}
sub as_svs_add($$$) {
- my ($user, $nick, $level) = @_;
+ my ($user, $target_nick, $target_level) = @_;
my $src = get_user_nick($user);
+ my $target_nickreg = nickserv::get_root_nick($target_nick);
+ my ($src_level, $user_oper) = get_best_svs_level($user);
- my ($root, $oper) = validate_chg($user, $nick);
- return unless $oper;
-
- if(get_svs_level($root) >= S_ROOT) {
+ if($target_level >= $src_level) {
notice($user, $err_deny);
return;
}
- $create_svsop->execute($root);
- $set_svs_level->execute($level, $oper, $root);
-
- notice($user, "\002$nick\002 is now a \002Services $levels[$level]\002.");
- wlog($asnick, LOG_INFO(), "$src added $root as a Services $levels[$level].");
+ $create_svsop->execute($target_nickreg);
+ $set_svs_level->execute($target_level, $user_oper, $target_nickreg);
+
+ notice($user, "\002$target_nick\002 is now a \002Services $levels[$target_level]\002.");
+ wlog($asnick, LOG_INFO(), "$src added $target_nickreg as a Services $levels[$target_level].");
}
sub as_svs_del($$) {
- my ($user, $nick) = @_;
+ my ($user, $target_nick) = @_;
my $src = get_user_nick($user);
+ my $target_nickreg = nickserv::get_root_nick($target_nick);
- my ($root, $oper) = validate_chg($user, $nick);
- return unless $oper;
-
- if(get_svs_level($root) >= S_ROOT) {
+ if(get_svs_level($target_nickreg) >= get_svs_level($src)) {
notice($user, $err_deny);
return;
}
-
- $delete_svsop->execute($root);
- notice($user, "\002$nick\002 has been stripped of services rank.");
- wlog($asnick, LOG_INFO(), "$src stripped $root of services rank.")
+
+ $delete_svsop->execute($target_nickreg);
+ notice($user, "\002$target_nickreg\002 has been stripped of services rank.");
+ wlog($asnick, LOG_INFO(), "$src stripped $target_nickreg of services rank.")
}
sub as_svs_list($$) {
### DATABASE UTILITY FUNCTIONS ###
sub validate_chg($$) {
- my ($user, $nick) = @_;
- my ($oper);
+ my ($user, $target_nick) = @_;
+ my ($user_oper);
- unless($oper = is_svsop($user, S_ROOT)) {
+ unless($user_oper = is_svsop($user, S_ROOT)) {
notice($user, $err_deny);
return undef;
}
- my $root = nickserv::get_root_nick($nick);
- unless($root) {
- notice($user, "The nick \002$nick\002 is not registered.");
+ my $target_nickreg = nickserv::get_root_nick($target_nick);
+ unless($target_nickreg) {
+ notice($user, "The nick \002$target_nick\002 is not registered.");
return undef;
}
- return ($root, $oper);
+ return ($target_nickreg, $user_oper);
}
sub can_do($$) {