X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcoremods%2Fcore_user%2Fcmd_part.cpp;h=4da2787d902b13f4d958e1d65ab0d1c8d86bdd2e;hb=b9e11915a976daaf790ebc763aff56e19fd49e0f;hp=f427063ead8b49c96daef8d510da6268d1d832b2;hpb=c67d3103e9f7397f0ab9631bf07a5e5547deb2c3;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/coremods/core_user/cmd_part.cpp b/src/coremods/core_user/cmd_part.cpp index f427063ea..4da2787d9 100644 --- a/src/coremods/core_user/cmd_part.cpp +++ b/src/coremods/core_user/cmd_part.cpp @@ -19,41 +19,23 @@ #include "inspircd.h" +#include "core_user.h" -/** Handle /PART. - */ -class CommandPart : public Command +CommandPart::CommandPart(Module* parent) + : Command(parent, "PART", 1, 2) { - public: - /** Constructor for part. - */ - CommandPart (Module* parent) : Command(parent,"PART", 1, 2) { Penalty = 5; syntax = "{,} []"; } - /** Handle command. - * @param parameters The parameters to the command - * @param user The user issuing the command - * @return A value from CmdResult to indicate command success or failure. - */ - CmdResult Handle(const std::vector& parameters, User *user); - RouteDescriptor GetRouting(User* user, const std::vector& parameters) - { - return (IS_LOCAL(user) ? ROUTE_LOCALONLY : ROUTE_BROADCAST); - } -}; + Penalty = 5; + syntax = "{,} []"; +} CmdResult CommandPart::Handle (const std::vector& parameters, User *user) { std::string reason; - - if (IS_LOCAL(user)) + if (parameters.size() > 1) { - if (!ServerInstance->Config->FixedPart.empty()) - reason = ServerInstance->Config->FixedPart; - else if (parameters.size() > 1) - reason = ServerInstance->Config->PrefixPart + parameters[1] + ServerInstance->Config->SuffixPart; - } - else - { - if (parameters.size() > 1) + if (IS_LOCAL(user)) + msgwrap.Wrap(parameters[1], reason); + else reason = parameters[1]; } @@ -62,17 +44,22 @@ CmdResult CommandPart::Handle (const std::vector& parameters, User Channel* c = ServerInstance->FindChan(parameters[0]); - if (c) + if (!c) { - c->PartUser(user, reason); + user->WriteNumeric(Numerics::NoSuchNick(parameters[0])); + return CMD_FAILURE; } - else + + if (!c->PartUser(user, reason)) { - user->WriteNumeric(ERR_NOSUCHNICK, "%s :No such nick/channel", parameters[0].c_str()); + user->WriteNumeric(ERR_NOTONCHANNEL, c->name, "You're not on that channel"); return CMD_FAILURE; } return CMD_SUCCESS; } -COMMAND_INIT(CommandPart) +RouteDescriptor CommandPart::GetRouting(User* user, const std::vector& parameters) +{ + return (IS_LOCAL(user) ? ROUTE_LOCALONLY : ROUTE_BROADCAST); +}