]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_swhois.cpp
Change to use std::string::iterator rather than making a copy of the pointer and...
[user/henk/code/inspircd.git] / src / modules / m_swhois.cpp
index 9d0cb70dc365831a50044aa40c7a09642a8876f5..c868060984175f8afa8f0c15a65e1c44ed051f18 100644 (file)
@@ -2,12 +2,9 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
- *                       E-mail:
- *                <brain@chatspike.net>
- *               <Craig@chatspike.net>
- *     
- * Written by Craig Edwards, Craig McLure, and others.
+ *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
+ *
  * This program is free but copyrighted software; see
  *            the file COPYING for details.
  *
@@ -100,7 +97,7 @@ class ModuleSWhois : public Module
 
        void Implements(char* List)
        {
-               List[I_OnWhois] = List[I_OnSyncUserMetaData] = List[I_OnUserQuit] = List[I_OnCleanup] = List[I_OnRehash] = List[I_OnOper] = 1;
+               List[I_OnWhois] = List[I_OnSyncUserMetaData] = List[I_OnUserQuit] = List[I_OnCleanup] = List[I_OnRehash] = List[I_OnPostCommand] = 1;
        }
 
        // :kenny.chatspike.net 320 Brain Azhrarn :is getting paid to play games.
@@ -110,7 +107,7 @@ class ModuleSWhois : public Module
                dest->GetExt("swhois", swhois);
                if (swhois)
                {
-                       ServerInstance->SendWhoisLine(source, 320, "%s %s :%s",source->nick,dest->nick,swhois->c_str());
+                       ServerInstance->SendWhoisLine(source, dest, 320, "%s %s :%s",source->nick,dest->nick,swhois->c_str());
                }
        }
 
@@ -187,32 +184,50 @@ class ModuleSWhois : public Module
                }
        }
        
-       virtual void OnOper(userrec* user, const std::string &opertype)
+       virtual void OnPostCommand(const std::string &command, const char **params, int pcnt, userrec *user, CmdResult result, const std::string &original_line)
        {
-               for(int i =0; i < Conf->Enumerate("type"); i++)
+               if ((command != "OPER") || (result != CMD_SUCCESS))
+                       return;
+               
+               std::string swhois;
+               
+               for (int i = 0; i < Conf->Enumerate("oper"); i++)
                {
-                       std::string type = Conf->ReadValue("type", "name", i);
+                       std::string name = Conf->ReadValue("oper", "name", i);
                        
-                       if(strcmp(type.c_str(), user->oper) == 0)
+                       if (name == params[0])
                        {
-                               std::string swhois = Conf->ReadValue("type", "swhois", i);
+                               swhois = Conf->ReadValue("oper", "swhois", i);
+                               break;
+                       }
+               }
+               
+               if (!swhois.length())
+               {
+                       for (int i = 0; i < Conf->Enumerate("type"); i++)
+                       {
+                               std::string type = Conf->ReadValue("type", "name", i);
                                
-                               if(swhois.length())
+                               if (type == user->oper)
                                {
-                                       std::string* old;
-                                       if(user->GetExt("swhois", old))
-                                       {
-                                               user->Shrink("swhois");
-                                               DELETE(old);
-                                       }
-                       
-                                       std::string* text = new std::string(swhois);
-                                       user->Extend("swhois", text);
-                                       
+                                       swhois = Conf->ReadValue("type", "swhois", i);
                                        break;
                                }
                        }
-               }               
+               }
+
+               std::string *old;
+               if (user->GetExt("swhois", old))
+               {
+                       user->Shrink("swhois");
+                       DELETE(old);
+               }
+               
+               if (!swhois.length())
+                       return;
+               
+               std::string *text = new std::string(swhois);
+               user->Extend("swhois", text);
        }
        
        virtual ~ModuleSWhois()