diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-02 00:48:09 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-02 00:48:09 +0000 |
commit | a1f48c0d46d01415e9e93bfd8bfdba9d52ca795e (patch) | |
tree | 0e0eb5c452846355b27d871ccc848fda90ffe5d1 /src | |
parent | 8eeb07be8cd397ea9b54f965ae72d8939ffdccc2 (diff) |
Allow voice or higher users to speak even when a matching muteban exists
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11626 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_muteban.cpp | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/src/modules/m_muteban.cpp b/src/modules/m_muteban.cpp index 8a3d40896..03203cfc7 100644 --- a/src/modules/m_muteban.cpp +++ b/src/modules/m_muteban.cpp @@ -36,16 +36,14 @@ class ModuleQuietBan : public Module virtual int OnUserPreMessage(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list) { - if (!IS_LOCAL(user)) + if (!IS_LOCAL(user) || target_type != TYPE_CHANNEL) return 0; - if (target_type == TYPE_CHANNEL) + Channel* chan = static_cast<Channel*>(dest); + if (chan->GetExtBanStatus(user, 'm') < 0 && chan->GetStatus(user) < STATUS_VOICE) { - if (((Channel *)dest)->GetExtBanStatus(user, 'm') < 0) - { - user->WriteNumeric(404, "%s %s :Cannot send to channel (you're muted)",user->nick.c_str(), ((Channel *)dest)->name.c_str()); - return 1; - } + user->WriteNumeric(404, "%s %s :Cannot send to channel (you're muted)",user->nick.c_str(), ((Channel *)dest)->name.c_str()); + return 1; } return 0; @@ -53,19 +51,7 @@ class ModuleQuietBan : public Module virtual int OnUserPreNotice(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list) { - if (!IS_LOCAL(user)) - return 0; - - if (target_type == TYPE_CHANNEL) - { - if (((Channel *)dest)->GetExtBanStatus(user, 'm') < 0) - { - user->WriteNumeric(404, "%s %s :Cannot send to channel (you're muted)",user->nick.c_str(), ((Channel *)dest)->name.c_str()); - return 1; - } - } - - return 0; + return OnUserPreMessage(user, dest, target_type, text, status, exempt_list); } virtual void On005Numeric(std::string &output) |