]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Add an oper only parameter to Simple{Channel,User}ModeHandler.
authorSadie Powell <sadie@witchery.services>
Sun, 5 Jan 2020 15:22:40 +0000 (15:22 +0000)
committerSadie Powell <sadie@witchery.services>
Sun, 5 Jan 2020 15:22:40 +0000 (15:22 +0000)
include/mode.h
src/modules/m_helpop.cpp
src/modules/m_operchans.cpp

index 7dc7feaec88234d323e6888bec449aec03e4e5f2..7ef4548af5642cfe3496dd94a0491ebb67a6e3f8 100644 (file)
@@ -451,8 +451,12 @@ class CoreExport PrefixMode : public ModeHandler
 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;
 };
 
@@ -464,8 +468,12 @@ class CoreExport SimpleUserModeHandler : public ModeHandler
 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;
 };
 
index 5aa719c2f678fe84f46ad21dff078b951664fd4e..d957fb786e1003c8decc7328f27bb23eed65f383 100644 (file)
@@ -39,17 +39,6 @@ enum
 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
@@ -107,16 +96,19 @@ 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)
                {
                }
 
index 8f600392302803f6be6ee046014bd03376177425..6863fc2441bf6858f4e65a140ef8ad8d674189e7 100644 (file)
@@ -28,26 +28,16 @@ enum
        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("_")
        {