diff options
author | Attila Molnar <attilamolnar@hush.com> | 2014-09-10 14:59:00 +0200 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2014-09-10 14:59:00 +0200 |
commit | 02158b649035ba9d1e6fb36895d393580972b1e1 (patch) | |
tree | 3bcaeec3b2fe040ec30b0d414fcfe61c6e80920d /src | |
parent | c2fb4e4b9d7dc6f2ecc5d8f0054350ae8c9be986 (diff) |
m_hidelist Make minimum rank required to view lists configurable
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_hidelist.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/modules/m_hidelist.cpp b/src/modules/m_hidelist.cpp index f7a05ed0a..cde8371fc 100644 --- a/src/modules/m_hidelist.cpp +++ b/src/modules/m_hidelist.cpp @@ -21,9 +21,13 @@ class ListWatcher : public ModeWatcher { + // Minimum rank required to view the list + const unsigned int minrank; + public: - ListWatcher(Module* mod, const std::string& modename) + ListWatcher(Module* mod, const std::string& modename, unsigned int rank) : ModeWatcher(mod, modename, MODETYPE_CHANNEL) + , minrank(rank) { } @@ -36,7 +40,7 @@ class ListWatcher : public ModeWatcher // If the user requesting the list is a member of the channel see if they have the // rank required to view the list Membership* memb = chan->GetUser(user); - if ((memb) && (memb->getRank() >= HALFOP_VALUE)) + if ((memb) && (memb->getRank() >= minrank)) return true; if (user->HasPrivPermission("channels/auspex")) @@ -62,7 +66,10 @@ class ModuleHideList : public Module { ConfigTag* tag = i->second; std::string modename = tag->getString("mode"); - watchers.push_back(new ListWatcher(this, modename)); + // If rank is set to 0 everyone inside the channel can view the list, + // but non-members may not + unsigned int rank = tag->getInt("rank", HALFOP_VALUE, 0); + watchers.push_back(new ListWatcher(this, modename, rank)); } } |