my $noreply = $data->{NOREPLY};
my $acc = $data->{ACC};
my $overrideMsg = $data->{OVERRIDE_MSG};
+
if(my $nick = __can_do($chan, $perm, $user, $acc)) {
# This is becoming increasingly complicated
# and checking if an override was used is becoming tricky.
sub __can_do($$$;$) {
my ($chan, $perm, $user, $acc) = @_;
- if(my ($nick, undef) = __can_do($chan, $perm, $acc, $user, $noreply)) {
- return (wantarray ? ($nick, 0) : $nick);
- } elsif ( $user and adminserv::is_svsop($user, adminserv::S_HELP()) ) {
- #$set_lastused->execute($cn, get_user_id($user));
- my ($nick, $override) = check_override($user, $perm);
- if(services_conf_log_overrides && $override) {
- # FIXME: This doesn't log enough information, and likely needs to be pushed up in the call-chain
- my $src = get_user_nick($user);
- my $cn = $chan->{CHAN};
- wlog($csnick, LOG_INFO(), "\002$src\002 used override \002$perm\002 on \002$cn\002");
- }
- return (wantarray ? ($nick, $override) : $nick) if $override;
- }
- return 0;
-}
-
-sub __can_do($$$;$$) {
- my ($chan, $perm, $acc, $user, $noreply) = @_;
my $nick;
my $cn = $chan->{CHAN};
$perm = uc $perm;
+
my $level;
unless(exists($chan->{"PERM::$perm"})) {
$level = $chan->{"PERM::$perm"} = get_level($chan, $perm);
}
}
$nick = 1 unless $nick;
- print "ACcc $acc $level\n";
+
if($acc >= $level and !cr_chk_flag($chan, (CRF_CLOSE | CRF_FREEZE | CRF_DRONE))) {
set_lastused($cn, get_user_id($user)) if $user;
return (wantarray ? ($nick, 0) : $nick);