ModeAction ModeUserOperator::OnModeChange(User* source, User* dest, Channel*, std::string&, bool adding, bool servermode)
{
/* Only opers can execute this class at all */
- if (!ServerInstance->ULine(source->nick) &&
+ if (!ServerInstance->ULine(source->nick.c_str()) &&
!ServerInstance->ULine(source->server) &&
- !*source->oper)
+ source->oper.empty())
return MODEACTION_DENY;
/* Not even opers can GIVE the +o mode, only take it away */
* verifying as an oper and getting an opertype assigned
* to your User!
*/
- ServerInstance->SNO->WriteToSnoMask('o', "User %s de-opered (by %s)", dest->nick.c_str(), source->nick.c_str());
+ if (IS_LOCAL(dest))
+ ServerInstance->SNO->WriteToSnoMask('o', "User %s de-opered (by %s)", dest->nick.c_str(), source->nick.c_str());
+ else
+ ServerInstance->SNO->WriteToSnoMask('O', "User %s de-opered (by %s)", dest->nick.c_str(), source->nick.c_str());
dest->UnOper();
return MODEACTION_ALLOW;