]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_ircv3_servertime.cpp
Fix the cloaking module on C++98 compilers.
[user/henk/code/inspircd.git] / src / modules / m_ircv3_servertime.cpp
index ec6e48daaa219d0870e96fd0dfce2382004db67c..0cc29436e8d440041213d263ea24d11c991f4498 100644 (file)
@@ -1,7 +1,8 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
- *   Copyright (C) 2016 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2018-2019 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2018 Attila Molnar <attilamolnar@hush.com>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
 #include "inspircd.h"
 #include "modules/ircv3.h"
 #include "modules/ircv3_servertime.h"
+#include "modules/server.h"
 
-class ServerTimeTag : public IRCv3::ServerTime::Manager, public IRCv3::CapTag<ServerTimeTag>
+class ServerTimeTag
+       : public IRCv3::ServerTime::Manager
+       , public IRCv3::CapTag<ServerTimeTag>
+       , public ServerProtocol::MessageEventListener
 {
        time_t lasttime;
        long lasttimens;
@@ -42,9 +47,12 @@ class ServerTimeTag : public IRCv3::ServerTime::Manager, public IRCv3::CapTag<Se
        }
 
  public:
+       using ServerProtocol::MessageEventListener::OnBuildMessage;
+
        ServerTimeTag(Module* mod)
                : IRCv3::ServerTime::Manager(mod)
                , IRCv3::CapTag<ServerTimeTag>(mod, "server-time", "time")
+               , ServerProtocol::MessageEventListener(mod)
                , lasttime(0)
                , lasttimens(0)
        {
@@ -53,9 +61,18 @@ class ServerTimeTag : public IRCv3::ServerTime::Manager, public IRCv3::CapTag<Se
 
        const std::string* GetValue(const ClientProtocol::Message& msg)
        {
+               // Client protocol.
                RefreshTimeString();
                return &lasttimestring;
        }
+
+       void OnBuildMessage(User* source, const char* command, ClientProtocol::TagMap& tags) CXX11_OVERRIDE
+       {
+               // Server protocol.
+               RefreshTimeString();
+               tags.insert(std::make_pair(tagname, ClientProtocol::MessageTagData(this, lasttimestring)));
+       }
+
 };
 
 class ModuleIRCv3ServerTime : public Module
@@ -70,7 +87,7 @@ class ModuleIRCv3ServerTime : public Module
 
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Provides the server-time IRCv3 extension", VF_VENDOR);
+               return Version("Provides the IRCv3 server-time client capability.", VF_VENDOR);
        }
 };