]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_sapart.cpp
Convert remaining InspIRCd::Log() calls to new logging system
[user/henk/code/inspircd.git] / src / modules / m_sapart.cpp
index e90a1de11645a7543ea554b4407c2bb88fcf0748..f7807824f980f9e04d58da3d92840f3192b8a7dd 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
  * See: http://www.inspircd.org/wiki/index.php/Credits
  *
  * This program is free but copyrighted software; see
 
 /** Handle /SAPART
  */
-class cmd_sapart : public command_t
+class CommandSapart : public Command
 {
  public:
-       cmd_sapart (InspIRCd* Instance) : command_t(Instance,"SAPART", 'o', 2)
+       CommandSapart (InspIRCd* Instance) : Command(Instance,"SAPART", "o", 2, false, 0)
        {
                this->source = "m_sapart.so";
-               syntax = "<nick> <channel>";
+               syntax = "<nick> <channel> [reason]";
+               TRANSLATE4(TR_NICK, TR_TEXT, TR_TEXT, TR_END);
        }
 
-       CmdResult Handle (const char** parameters, int pcnt, userrec *user)
+       CmdResult Handle (const char* const* parameters, int pcnt, User *user)
        {
-               userrec* dest = ServerInstance->FindNick(parameters[0]);
-               chanrec* channel = ServerInstance->FindChan(parameters[1]);
+               User* dest = ServerInstance->FindNick(parameters[0]);
+               Channel* channel = ServerInstance->FindChan(parameters[1]);
+               std::string reason;
+
                if (dest && channel)
                {
+                       ServerInstance->Logs->Log("m_sapart",DEBUG, "SAPART: pcnt is %d", pcnt);
+                       if (pcnt == 3)
+                               reason = parameters[2];
+                       else
+                               reason = dest->nick;
+
                        if (ServerInstance->ULine(dest->server))
                        {
                                user->WriteServ("990 %s :Cannot use an SA command on a u-lined client",user->nick);
@@ -44,19 +53,19 @@ class cmd_sapart : public command_t
                         */
                        if (IS_LOCAL(dest))
                        {
-                               if (!channel->PartUser(dest, dest->nick))
+                               if (!channel->PartUser(dest, reason.c_str()))
                                        delete channel;
-                               chanrec* n = ServerInstance->FindChan(parameters[1]);
+                               Channel* n = ServerInstance->FindChan(parameters[1]);
                                if (!n)
                                {
-                                       ServerInstance->WriteOpers("*** "+std::string(user->nick)+" used SAPART to make "+dest->nick+" part "+parameters[1]);
+                                       ServerInstance->SNO->WriteToSnoMask('A', std::string(user->nick)+" used SAPART to make "+dest->nick+" part "+parameters[1]);
                                        return CMD_SUCCESS;
                                }
                                else
                                {
                                        if (!n->HasUser(dest))
                                        {
-                                               ServerInstance->WriteOpers("*** "+std::string(user->nick)+" used SAPART to make "+dest->nick+" part "+parameters[1]);
+                                               ServerInstance->SNO->WriteToSnoMask('A', std::string(user->nick)+" used SAPART to make "+dest->nick+" part "+parameters[1]);
                                                return CMD_SUCCESS;
                                        }
                                        else
@@ -68,7 +77,7 @@ class cmd_sapart : public command_t
                        }
                        else
                        {
-                               ServerInstance->WriteOpers("*** "+std::string(user->nick)+" sent remote SAPART to make "+dest->nick+" part "+parameters[1]);
+                               ServerInstance->SNO->WriteToSnoMask('A', std::string(user->nick)+" sent remote SAPART to make "+dest->nick+" part "+parameters[1]);
                        }
 
                        return CMD_SUCCESS;
@@ -85,14 +94,15 @@ class cmd_sapart : public command_t
 
 class ModuleSapart : public Module
 {
-       cmd_sapart*     mycommand;
+       CommandSapart*  mycommand;
  public:
        ModuleSapart(InspIRCd* Me)
                : Module(Me)
        {
                
-               mycommand = new cmd_sapart(ServerInstance);
+               mycommand = new CommandSapart(ServerInstance);
                ServerInstance->AddCommand(mycommand);
+
        }
        
        virtual ~ModuleSapart()