aboutsummaryrefslogtreecommitdiffstats
path: root/src/mode.cpp
diff options
context:
space:
mode:
authorGravatar danieldg2009-11-15 18:26:44 +0000
committerGravatar danieldg2009-11-15 18:26:44 +0000
commit8ab1381e8d277152d99a72f33f3d1c0564060fee (patch)
tree3dda11a9bb46c2f2142330c042ff43c4378ad33a /src/mode.cpp
parentAdd ModeHandler* versions of channel mode access (diff)
downloadinspircd++-8ab1381e8d277152d99a72f33f3d1c0564060fee.tar.gz
inspircd++-8ab1381e8d277152d99a72f33f3d1c0564060fee.tar.bz2
inspircd++-8ab1381e8d277152d99a72f33f3d1c0564060fee.zip
Add ParamChannelModeHandler
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12134 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/mode.cpp')
-rw-r--r--src/mode.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/mode.cpp b/src/mode.cpp
index fb154d5e2..e9635364e 100644
--- a/src/mode.cpp
+++ b/src/mode.cpp
@@ -176,6 +176,25 @@ ModeAction SimpleChannelModeHandler::OnModeChange(User* source, User* dest, Chan
return MODEACTION_DENY;
}
+ModeAction ParamChannelModeHandler::OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding)
+{
+ if (adding && !ParamValidate(parameter))
+ return MODEACTION_DENY;
+ std::string now = channel->GetModeParameter(this);
+ if (parameter == now)
+ return MODEACTION_DENY;
+ if (adding)
+ channel->SetModeParam(this, parameter);
+ else
+ channel->SetModeParam(this, "");
+ return MODEACTION_ALLOW;
+}
+
+bool ParamChannelModeHandler::ParamValidate(std::string& parameter)
+{
+ return true;
+}
+
ModeWatcher::ModeWatcher(Module* Creator, char modeletter, ModeType type)
: mode(modeletter), m_type(type), creator(Creator)
{