]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/coremods/core_channel/cmd_topic.cpp
Add User::WriteRemoteNumeric() and switch code using SendText() to send numerics...
[user/henk/code/inspircd.git] / src / coremods / core_channel / cmd_topic.cpp
index ea723c0244fff1712263959463951e0c0371422a..b421489399953867c169af5712d60a418d5e9d05 100644 (file)
@@ -37,7 +37,7 @@ CmdResult CommandTopic::HandleLocal(const std::vector<std::string>& parameters,
        Channel* c = ServerInstance->FindChan(parameters[0]);
        if (!c)
        {
-               user->WriteNumeric(ERR_NOSUCHNICK, "%s :No such nick/channel", parameters[0].c_str());
+               user->WriteNumeric(Numerics::NoSuchNick(parameters[0]));
                return CMD_FAILURE;
        }
 
@@ -45,18 +45,17 @@ CmdResult CommandTopic::HandleLocal(const std::vector<std::string>& parameters,
        {
                if ((c->IsModeSet(secretmode)) && (!c->HasUser(user)))
                {
-                       user->WriteNumeric(ERR_NOSUCHNICK, "%s :No such nick/channel", c->name.c_str());
+                       user->WriteNumeric(Numerics::NoSuchNick(c->name));
                        return CMD_FAILURE;
                }
 
                if (c->topic.length())
                {
-                       user->WriteNumeric(RPL_TOPIC, "%s :%s", c->name.c_str(), c->topic.c_str());
-                       user->WriteNumeric(RPL_TOPICTIME, "%s %s %lu", c->name.c_str(), c->setby.c_str(), (unsigned long)c->topicset);
+                       Topic::ShowTopic(user, c);
                }
                else
                {
-                       user->WriteNumeric(RPL_NOTOPICSET, "%s :No topic is set.", c->name.c_str());
+                       user->WriteNumeric(RPL_NOTOPICSET, c->name, "No topic is set.");
                }
                return CMD_SUCCESS;
        }
@@ -71,12 +70,12 @@ CmdResult CommandTopic::HandleLocal(const std::vector<std::string>& parameters,
        {
                if (!c->HasUser(user))
                {
-                       user->WriteNumeric(ERR_NOTONCHANNEL, "%s :You're not on that channel!", c->name.c_str());
+                       user->WriteNumeric(ERR_NOTONCHANNEL, c->name, "You're not on that channel!");
                        return CMD_FAILURE;
                }
                if (c->IsModeSet(topiclockmode) && !ServerInstance->OnCheckExemption(user, c, "topiclock").check(c->GetPrefixValue(user) >= HALFOP_VALUE))
                {
-                       user->WriteNumeric(ERR_CHANOPRIVSNEEDED, "%s :You do not have access to change the topic on this channel", c->name.c_str());
+                       user->WriteNumeric(ERR_CHANOPRIVSNEEDED, c->name, "You do not have access to change the topic on this channel");
                        return CMD_FAILURE;
                }
        }
@@ -84,3 +83,9 @@ CmdResult CommandTopic::HandleLocal(const std::vector<std::string>& parameters,
        c->SetTopic(user, t);
        return CMD_SUCCESS;
 }
+
+void Topic::ShowTopic(LocalUser* user, Channel* chan)
+{
+       user->WriteNumeric(RPL_TOPIC, chan->name, chan->topic);
+       user->WriteNumeric(RPL_TOPICTIME, chan->name, chan->setby, (unsigned long)chan->topicset);
+}