ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding, bool)
{
- if (source != dest)
- return MODEACTION_DENY;
-
if (dest->IsModeSet('Q') != adding)
{
bool ok = false;
- for (int j = 0; j < conf->Enumerate("type"); j++)
+ if (IS_LOCAL(source))
{
- std::string opertype = conf->ReadValue("type","name",j);
- if (opertype == source->oper)
+ for (int j = 0; j < conf->Enumerate("type"); j++)
{
- ok = conf->ReadFlag("type", "canquiet", j);
- break;
+ std::string opertype = conf->ReadValue("type","name",j);
+ if (opertype == source->oper)
+ {
+ ok = conf->ReadFlag("type", "canquiet", j);
+ break;
+ }
}
- }
- if (!ok)
- {
- source->WriteNumeric(481, "%s :Permission Denied - You do not have access to become invisible via user mode +Q", source->nick.c_str());
- return MODEACTION_DENY;
+ if (!ok)
+ {
+ source->WriteNumeric(481, "%s :Permission Denied - You do not have access to become invisible via user mode +Q", source->nick.c_str());
+ return MODEACTION_DENY;
+ }
}
dest->SetMode('Q', adding);
/* Yeah i know people can take this out. I'm not about to obfuscate code just to be a pain in the ass. */
ServerInstance->Users->ServerNoticeAll("*** m_invisible.so has just been loaded on this network. For more information, please visit http://inspircd.org/wiki/Modules/invisible");
- Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnUserJoin, I_OnUserPart, I_OnUserQuit, I_OnRehash };
- ServerInstance->Modules->Attach(eventlist, this, 6);
+ Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnUserJoin, I_OnUserPart, I_OnUserQuit, I_OnRehash, I_OnHostCycle };
+ ServerInstance->Modules->Attach(eventlist, this, 7);
};
virtual ~ModuleInvisible()