]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/modules/ctctags.h
Fix STATUSMSG tag messages not including the status in the target.
[user/henk/code/inspircd.git] / include / modules / ctctags.h
index d0f0f83bd8a87ad21af0446fbef6d5627ebb8faa..6b7f81a4c312ba5fee33ac8f7bc9792b4fdfb766 100644 (file)
@@ -30,11 +30,24 @@ namespace CTCTags
 
 class CTCTags::TagMessage : public ClientProtocol::Message
 {
+private:
+       void PushTarget(const char* target, char status)
+       {
+               if (status)
+               {
+                       std::string rawtarget(1, status);
+                       rawtarget.append(target);
+                       PushParam(rawtarget);
+               }
+               else
+                       PushParamRef(target);
+       }
+
  public:
-       TagMessage(User* source, const Channel* targetchan, const ClientProtocol::TagMap& Tags)
+       TagMessage(User* source, const Channel* targetchan, const ClientProtocol::TagMap& Tags, char status = 0)
                : ClientProtocol::Message("TAGMSG", source)
        {
-               PushParamRef(targetchan->name);
+               PushTarget(targetchan->name.c_str(), status);
                AddTags(Tags);
        }
 
@@ -48,10 +61,17 @@ class CTCTags::TagMessage : public ClientProtocol::Message
                AddTags(Tags);
        }
 
-       TagMessage(User* source, const char* targetstr, const ClientProtocol::TagMap& Tags)
+       TagMessage(User* source, const char* targetstr, const ClientProtocol::TagMap& Tags, char status = 0)
                : ClientProtocol::Message("TAGMSG", source)
        {
-               PushParam(targetstr);
+               PushTarget(targetstr, status);
+               AddTags(Tags);
+       }
+
+       TagMessage(const char* sourcestr, const char* targetstr, const ClientProtocol::TagMap& Tags, char status = 0)
+               : ClientProtocol::Message("TAGMSG", sourcestr)
+       {
+               PushTarget(targetstr, status);
                AddTags(Tags);
        }
 };