summaryrefslogtreecommitdiff
path: root/include/mode.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/mode.h')
-rw-r--r--include/mode.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/mode.h b/include/mode.h
index 5cfbe4015..30b28a6b0 100644
--- a/include/mode.h
+++ b/include/mode.h
@@ -359,6 +359,9 @@ class CoreExport PrefixMode : public ModeHandler
*/
unsigned int prefixrank;
+ /** Whether a client with this prefix can remove it from themself. */
+ bool selfremove;
+
public:
/**
* Constructor
@@ -371,6 +374,16 @@ class CoreExport PrefixMode : public ModeHandler
PrefixMode(Module* Creator, const std::string& Name, char ModeLetter, unsigned int Rank = 0, char PrefixChar = 0);
/**
+ * Called when a channel mode change access check for your mode occurs.
+ * @param source Contains the user setting the mode.
+ * @param channel contains the destination channel the modes are being set on.
+ * @param parameter The parameter for your mode. This is modifiable.
+ * @param adding This value is true when the mode is being set, or false when it is being unset.
+ * @return allow, deny, or passthru to check against the required level
+ */
+ ModResult AccessCheck(User* source, Channel* channel, std::string &parameter, bool adding) CXX11_OVERRIDE;
+
+ /**
* Handles setting and unsetting the prefix mode.
* Finds the given member of the given channel, if it's not found an error message is sent to 'source'
* and MODEACTION_DENY is returned. Otherwise the mode change is attempted.
@@ -392,6 +405,12 @@ class CoreExport PrefixMode : public ModeHandler
*/
void RemoveMode(Channel* channel, Modes::ChangeList& changelist);
+
+ /**
+ * Determines whether a user with this prefix mode can remove it.
+ */
+ bool CanSelfRemove() const { return selfremove; }
+
/**
* Mode prefix or 0. If this is defined, you should
* also implement GetPrefixRank() to return an integer