]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_operlevels.cpp
Probably wont compile yet - purge_empty_channels refactor
[user/henk/code/inspircd.git] / src / modules / m_operlevels.cpp
index 3a97caa3be0501d771ef93c5f8a6695c39f6faa7..b598dec1fdd834d6a6606c4edc00b139f2d9cff5 100644 (file)
@@ -1,35 +1,42 @@
+using namespace std;
+
 #include "users.h"
 #include "channels.h"
 #include "modules.h"
 #include <string>
+#include "helperfuncs.h"
 
 /* $ModDesc: Gives each oper type a 'level', cannot kill opers 'above' your level. */
 
-Server *Srv;
-
 class ModuleOperLevels : public Module
 {
 
        private:
 
+               Server* Srv;
                ConfigReader* conf;
 
        public:
 
-               ModuleOperLevels()
+               ModuleOperLevels(Server* Me)
+                       : Module::Module(Me)
                {
 
-                       Srv = new Server;
+                       Srv = Me;
                        conf = new ConfigReader;
                }
 
                virtual ~ModuleOperLevels()
                {
-                       delete Srv;
                        delete conf;
                }
 
-               virtual void OnRehash()
+               void Implements(char* List)
+               {
+                       List[I_OnRehash] = List[I_OnKill] = 1;
+               }
+
+               virtual void OnRehash(std::string parameter)
                {
                        delete conf;
                        conf = new ConfigReader;
@@ -37,14 +44,14 @@ class ModuleOperLevels : public Module
 
                virtual Version GetVersion()
                {
-                       return Version(1,0,0,0,0);
+                       return Version(1,0,0,1,VF_VENDOR);
                }
 
                virtual int OnKill(userrec* source, userrec* dest, std::string reason)
                {
                        long dest_level = 0,source_level = 0;
                        // oper killing an oper?
-                       if (strchr(dest->modes,'o'))
+                       if (*dest->oper)
                        {
                                for (int j =0; j < conf->Enumerate("type"); j++)
                                {
@@ -71,8 +78,8 @@ class ModuleOperLevels : public Module
                                        WriteServ(source->fd,"481 %s :Permission Denied- Oper %s is a higher level than you",source->nick,dest->nick);
                                        return 1;
                                }
-                               return 0;
                        }
+                       return 0;
                }
 
 };
@@ -88,9 +95,9 @@ class ModuleOperLevelsFactory : public ModuleFactory
         {
         }
 
-        virtual Module * CreateModule()
+        virtual Module * CreateModule(Server* Me)
         {
-                return new ModuleOperLevels;
+                return new ModuleOperLevels(Me);
         }
 
 };