summaryrefslogtreecommitdiff
path: root/src/modules/m_services.cpp
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2008-05-01 16:12:45 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2008-05-01 16:12:45 +0000
commitf3abcf2bcfe36d3389b74caa9eef8582901fbe15 (patch)
tree2ebd9c1c6615939d850cf95866e9e982cb2b18d1 /src/modules/m_services.cpp
parent61416a1885d1490550175b6a73b724ba0843d729 (diff)
Simple user/channel mode patch
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9596 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_services.cpp')
-rw-r--r--src/modules/m_services.cpp78
1 files changed, 6 insertions, 72 deletions
diff --git a/src/modules/m_services.cpp b/src/modules/m_services.cpp
index 5b39de931..669a87aeb 100644
--- a/src/modules/m_services.cpp
+++ b/src/modules/m_services.cpp
@@ -70,92 +70,26 @@ class User_r : public ModeHandler
/** Channel mode +R - registered users only
*/
-class Channel_R : public ModeHandler
+class Channel_R : public SimpleChannelModeHandler
{
public:
- Channel_R(InspIRCd* Instance) : ModeHandler(Instance, 'R', 0, 0, false, MODETYPE_CHANNEL, false) { }
-
- ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding, bool)
- {
- if (adding)
- {
- if (!channel->IsModeSet('R'))
- {
- channel->SetMode('R',true);
- return MODEACTION_ALLOW;
- }
- }
- else
- {
- if (channel->IsModeSet('R'))
- {
- channel->SetMode('R',false);
- return MODEACTION_ALLOW;
- }
- }
-
- return MODEACTION_DENY;
- }
+ Channel_R(InspIRCd* Instance) : SimpleChannelModeHandler(Instance, 'R') { }
};
/** User mode +R - only allow PRIVMSG and NOTICE from registered users
*/
-class User_R : public ModeHandler
+class User_R : public SimpleUserModeHandler
{
public:
- User_R(InspIRCd* Instance) : ModeHandler(Instance, 'R', 0, 0, false, MODETYPE_USER, false) { }
-
- ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding, bool)
- {
- if (adding)
- {
- if (!dest->IsModeSet('R'))
- {
- dest->SetMode('R',true);
- return MODEACTION_ALLOW;
- }
- }
- else
- {
- if (dest->IsModeSet('R'))
- {
- dest->SetMode('R',false);
- return MODEACTION_ALLOW;
- }
- }
-
- return MODEACTION_DENY;
- }
+ User_R(InspIRCd* Instance) : SimpleUserModeHandler(Instance, 'R') { }
};
/** Channel mode +M - only allow privmsg and notice to channel from registered users
*/
-class Channel_M : public ModeHandler
+class Channel_M : public SimpleChannelModeHandler
{
public:
- Channel_M(InspIRCd* Instance) : ModeHandler(Instance, 'M', 0, 0, false, MODETYPE_CHANNEL, false) { }
-
- ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding, bool)
- {
- if (adding)
- {
- if (!channel->IsModeSet('M'))
- {
- channel->SetMode('M',true);
- return MODEACTION_ALLOW;
- }
- }
- else
- {
- if (channel->IsModeSet('M'))
- {
- channel->SetMode('M',false);
- return MODEACTION_ALLOW;
- }
- }
-
- return MODEACTION_DENY;
- }
+ Channel_M(InspIRCd* Instance) : SimpleChannelModeHandler(Instance, 'M') { }
};
/** Dreamnforge-like services support