]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_watch.cpp
Fix cloaking not ignoring the case of a user's hostname.
[user/henk/code/inspircd.git] / src / modules / m_watch.cpp
index 6406f0573cc83ba3488d565a0d3184cfc43d349b..385ec9e02d6cd29577c7a7170c2141c632b06180 100644 (file)
@@ -18,6 +18,7 @@
 
 
 #include "inspircd.h"
+#include "modules/away.h"
 
 #define INSPIRCD_MONITOR_MANAGER_ONLY
 #include "m_monitor.cpp"
@@ -132,10 +133,10 @@ class CommandWatch : public SplitCommand
                , manager(managerref)
        {
                allow_empty_last_param = false;
-               syntax = "[<C|L|S|l|+<nick1>|-<nick>>]";
+               syntax = "C|L|l|S|(+|-)<nick> [(+|-)<nick>]+";
        }
 
-       CmdResult HandleLocal(const std::vector<std::string>& parameters, LocalUser* user) CXX11_OVERRIDE
+       CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE
        {
                if (parameters.empty())
                {
@@ -179,7 +180,9 @@ class CommandWatch : public SplitCommand
        }
 };
 
-class ModuleWatch : public Module
+class ModuleWatch
+       : public Module
+       , public Away::EventListener
 {
        IRCv3::Monitor::Manager manager;
        CommandWatch cmd;
@@ -211,7 +214,8 @@ class ModuleWatch : public Module
 
  public:
        ModuleWatch()
-               : manager(this, "watch")
+               : Away::EventListener(this)
+               , manager(this, "watch")
                , cmd(this, manager)
        {
        }
@@ -245,14 +249,14 @@ class ModuleWatch : public Module
                Offline(user, user->nick);
        }
 
-       ModResult OnSetAway(User* user, const std::string& awaymsg) CXX11_OVERRIDE
+       void OnUserAway(User* user) CXX11_OVERRIDE
        {
-               if (awaymsg.empty())
-                       SendAlert(user, user->nick, RPL_NOTAWAY, "is no longer away", ServerInstance->Time());
-               else
-                       SendAlert(user, user->nick, RPL_GONEAWAY, awaymsg.c_str(), user->awaytime);
+               SendAlert(user, user->nick, RPL_GONEAWAY, user->awaymsg.c_str(), user->awaytime);
+       }
 
-               return MOD_RES_PASSTHRU;
+       void OnUserBack(User* user) CXX11_OVERRIDE
+       {
+               SendAlert(user, user->nick, RPL_NOTAWAY, "is no longer away", ServerInstance->Time());
        }
 
        void On005Numeric(std::map<std::string, std::string>& tokens) CXX11_OVERRIDE