summaryrefslogtreecommitdiff
path: root/src/core/cs_modes.c
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-04-10 22:58:46 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-04-10 22:58:46 +0000
commitaa677072e0b2a7f003e6c3cdb7b5831c4765d254 (patch)
tree50ae7a95779345a43379b954557cd05c338ee184 /src/core/cs_modes.c
parentc424dce517be537bd154565bca5e3a87ddb8c406 (diff)
Fixed cs_modes to add commands after the modes requiring them are introduced
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2883 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/core/cs_modes.c')
-rw-r--r--src/core/cs_modes.c34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/core/cs_modes.c b/src/core/cs_modes.c
index e2d6028bf..128c1fb8e 100644
--- a/src/core/cs_modes.c
+++ b/src/core/cs_modes.c
@@ -381,10 +381,21 @@ class CSModes : public Module
this->AddCommand(CHANSERV, new CommandCSVoice());
this->AddCommand(CHANSERV, new CommandCSDeVoice());
- if (ModeManager::FindChannelModeByName(CMODE_HALFOP))
+ if (serv_uplink && is_sync(serv_uplink))
+ OnUplinkSync();
+
+ Implementation i[] = {
+ I_OnUplinkSync, I_OnServerDisconnect, I_OnChanServHelp
+ };
+ ModuleManager::Attach(i, this, 3);
+ }
+
+ void OnUplinkSync()
+ {
+ if (ModeManager::FindChannelModeByName(CMODE_OWNER))
{
- this->AddCommand(CHANSERV, new CommandCSHalfOp());
- this->AddCommand(CHANSERV, new CommandCSDeHalfOp());
+ this->AddCommand(CHANSERV, new CommandCSOwner());
+ this->AddCommand(CHANSERV, new CommandCSDeOwner());
}
if (ModeManager::FindChannelModeByName(CMODE_PROTECT))
@@ -393,14 +404,23 @@ class CSModes : public Module
this->AddCommand(CHANSERV, new CommandCSDeProtect());
}
- if (ModeManager::FindChannelModeByName(CMODE_OWNER))
+ if (ModeManager::FindChannelModeByName(CMODE_HALFOP))
{
- this->AddCommand(CHANSERV, new CommandCSOwner());
- this->AddCommand(CHANSERV, new CommandCSDeOwner());
+ this->AddCommand(CHANSERV, new CommandCSHalfOp());
+ this->AddCommand(CHANSERV, new CommandCSDeHalfOp());
}
+ }
- ModuleManager::Attach(I_OnChanServHelp, this);
+ void OnServerDisconnect()
+ {
+ this->DelCommand(CHANSERV, "OWNER");
+ this->DelCommand(CHANSERV, "DEOWNER");
+ this->DelCommand(CHANSERV, "PROTECT");
+ this->DelCommand(CHANSERV, "DEPROTECT");
+ this->DelCommand(CHANSERV, "HALFOP");
+ this->DelCommand(CHANSERV, "DEHALFOP");
}
+
void OnChanServHelp(User *u)
{
if (ModeManager::FindChannelModeByName(CMODE_OWNER))