class CoreExport SimpleUserModeHandler : public ModeHandler
{
public:
- SimpleUserModeHandler(Module* Creator, const std::string& Name, char modeletter)
- : ModeHandler(Creator, Name, modeletter, PARAM_NONE, MODETYPE_USER) {}
+ SimpleUserModeHandler(Module* Creator, const std::string& Name, char modeletter, bool operonly = false)
+ : ModeHandler(Creator, Name, modeletter, PARAM_NONE, MODETYPE_USER)
+ {
+ oper = operonly;
+ }
+
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE;
};
class CoreExport SimpleChannelModeHandler : public ModeHandler
{
public:
- SimpleChannelModeHandler(Module* Creator, const std::string& Name, char modeletter)
- : ModeHandler(Creator, Name, modeletter, PARAM_NONE, MODETYPE_CHANNEL) {}
+ SimpleChannelModeHandler(Module* Creator, const std::string& Name, char modeletter, bool operonly = false)
+ : ModeHandler(Creator, Name, modeletter, PARAM_NONE, MODETYPE_CHANNEL)
+ {
+ oper = operonly;
+ }
+
ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE;
};
typedef std::map<std::string, std::string, irc::insensitive_swo> HelpopMap;
static HelpopMap helpop_map;
-/** Handles user mode +h
- */
-class Helpop : public SimpleUserModeHandler
-{
- public:
- Helpop(Module* Creator) : SimpleUserModeHandler(Creator, "helpop", 'h')
- {
- oper = true;
- }
-};
-
/** Handles /HELPOP
*/
class CommandHelpop : public Command
}
};
-class ModuleHelpop : public Module, public Whois::EventListener
+class ModuleHelpop
+ : public Module
+ , public Whois::EventListener
{
+ private:
CommandHelpop cmd;
- Helpop ho;
+ SimpleUserModeHandler ho;
public:
ModuleHelpop()
: Whois::EventListener(this)
, cmd(this)
- , ho(this)
+ , ho(this, "helpop", 'h', true)
{
}
ERR_CANTJOINOPERSONLY = 520
};
-class OperChans : public SimpleChannelModeHandler
-{
- public:
- /* This is an oper-only mode */
- OperChans(Module* Creator) : SimpleChannelModeHandler(Creator, "operonly", 'O')
- {
- oper = true;
- }
-};
-
class ModuleOperChans : public Module
{
private:
- OperChans oc;
+ SimpleChannelModeHandler oc;
std::string space;
std::string underscore;
public:
ModuleOperChans()
- : oc(this)
+ : oc(this, "operonly", 'O', true)
, space(" ")
, underscore("_")
{