- Srv->PartUserFromChannel(target,std::string(parameters[1]), "Remove by "+std::string(user->nick)+":"+result);
- Srv->SendTo(NULL,user,"NOTICE "+std::string(channel->name)+" : "+std::string(user->nick)+" removed "+std::string(target->nick)+ " from the channel");
- Srv->SendTo(NULL,target,"NOTICE "+std::string(target->nick)+" :*** "+std::string(user->nick)+" removed you from "+std::string(channel->name)+" with the message:"+std::string(result));
+ // no you can't just go from a std::ostringstream to a std::string, Om. -nenolod
+ // but you can do this, nenolod -brain
+
+ std::string reasonparam("No reason given");
+
+ /* If a reason is given, use it */
+ if(parameters.size() > 2)
+ {
+ /* Join params 2 ... pcnt - 1 (inclusive) into one */
+ irc::stringjoiner reason_join(" ", parameters, 2, parameters.size() - 1);
+ reasonparam = reason_join.GetJoined();
+ }
+
+ /* Build up the part reason string. */
+ reason = std::string("Removed by ") + user->nick + ": " + reasonparam;
+
+ channel->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s removed %s from the channel", channel->name.c_str(), user->nick.c_str(), target->nick.c_str());
+ target->WriteServ("NOTICE %s :*** %s removed you from %s with the message: %s", target->nick.c_str(), user->nick.c_str(), channel->name.c_str(), reasonparam.c_str());
+
+ if (!channel->PartUser(target, reason))
+ delete channel;