]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_delayjoin.cpp
Some more to fix still, modules probably wont load correctly atm
[user/henk/code/inspircd.git] / src / modules / m_delayjoin.cpp
index 286cef59be88587e29ca52302f197546ced449d8..18ae5c289bcb4c95f6dfc081fac3773bde4fcf7a 100644 (file)
@@ -67,6 +67,8 @@ class ModuleDelayJoin : public Module
                djm = new DelayJoinMode(ServerInstance, this);
                if (!ServerInstance->AddMode(djm))
                        throw ModuleException("Could not add new modes!");
+               Implementation eventlist[] = { I_OnUserJoin, I_OnUserPart, I_OnUserKick, I_OnUserQuit, I_OnUserList, I_OnText };
+               ServerInstance->Modules->Attach(eventlist, this, 6);
        }
        
        virtual ~ModuleDelayJoin()
@@ -75,10 +77,11 @@ class ModuleDelayJoin : public Module
                DELETE(djm);
        }
 
-       Priority Prioritize()
+       void Prioritize()
        {
-               /* To ensure that we get priority over namesx for names list generation on +u channels */
-               return (Priority)ServerInstance->Modules->PriorityBefore("m_namesx.so");
+               /* To ensure that we get priority over namesx for names list generation */
+               Module* namesx = ServerInstance->Modules->Find("m_namesx.so");
+               ServerInstance->Modules->SetPriority(this, I_OnUserList, PRIO_BEFORE, &namesx);
        }
 
        virtual Version GetVersion()
@@ -220,11 +223,15 @@ class ModuleDelayJoin : public Module
 
                for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++)
                {
-                       /* User only appears to vanish for non-opers */
+                       /* User doesnt get a JOIN sent to themselves */
+                       if (user == i->first)
+                               continue;
+
+                       /* Users with a visibility state that hides them dont appear */
                        if (user->Visibility && !user->Visibility->VisibleTo(i->first))
-                       {
-                               i->first->Write(std::string(tb));
-                       }
+                               continue;
+
+                       i->first->Write(std::string(tb));
                }
        }