diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-07-26 21:54:36 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-07-26 21:54:36 +0000 |
commit | f4d202cdbbcaa9e17c21e3f74d7816f58b2ffc6a (patch) | |
tree | 82709f66aa42e3ffcd96cd261a368d66f65a186c /src/modes/cmode_h.cpp | |
parent | deb290af0f0200d530ba10e4c6c3f6a45b4971c5 (diff) |
Add extra method to mode handler, ModeHandler::ModeSet().
Returns a std::pair<bool,string>.
if the bool is true, the mode is set, and the second item in the pair is the parameter set on it, if any
If the bool is false, the mode is not set, and the parameter given is returned as the second item of the pair
To be used in mode bouncing, to build a safe set of bounced modes (dont ask yet)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4549 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modes/cmode_h.cpp')
-rw-r--r-- | src/modes/cmode_h.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/modes/cmode_h.cpp b/src/modes/cmode_h.cpp index 2c96b4224..4a2c5fa69 100644 --- a/src/modes/cmode_h.cpp +++ b/src/modes/cmode_h.cpp @@ -26,6 +26,23 @@ ModeChannelHalfOp::ModeChannelHalfOp() : ModeHandler('h', 1, 1, true, MODETYPE_C { } +std::pair<bool,std::string> ModeChannelHalfOp::ModeSet(userrec* source, userrec* dest, chanrec* channel, const std::string ¶meter) +{ + userrec* x = Find(parameter); + if (x) + { + if (cstatus(x, channel) == STATUS_HOP) + { + return std::make_pair(true, x->nick); + } + else + { + return std::make_pair(false, parameter); + } + } + return std::make_pair(false, parameter); +} + ModeAction ModeChannelHalfOp::OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding) { /* If halfops are not enabled in the conf, we don't execute |