diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-05 23:27:46 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-05 23:27:46 +0000 |
commit | 085a8bc6605d3d07bfe5137423c4a7a02978cd88 (patch) | |
tree | 6c9d084d7705cc43b51e3ee9f85d9d38d1357e32 /src/modules/m_auditorium.cpp | |
parent | a082f5a3234bc9f3225824001d8bcae9e56cf189 (diff) |
Add OnBuildNeighborList hook, replaces all uses of OnHostCycle
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11802 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_auditorium.cpp')
-rw-r--r-- | src/modules/m_auditorium.cpp | 36 |
1 files changed, 8 insertions, 28 deletions
diff --git a/src/modules/m_auditorium.cpp b/src/modules/m_auditorium.cpp index d27ccfaad..ec321bb35 100644 --- a/src/modules/m_auditorium.cpp +++ b/src/modules/m_auditorium.cpp @@ -52,8 +52,8 @@ class ModuleAuditorium : public Module OnRehash(NULL); - Implementation eventlist[] = { I_OnUserJoin, I_OnUserPart, I_OnUserKick, I_OnUserQuit, I_OnNamesListItem, I_OnRehash, I_OnHostCycle }; - ServerInstance->Modules->Attach(eventlist, this, 7); + Implementation eventlist[] = { I_OnUserJoin, I_OnUserPart, I_OnUserKick, I_OnBuildNeighborList, I_OnNamesListItem, I_OnRehash }; + ServerInstance->Modules->Attach(eventlist, this, 6); } @@ -137,34 +137,14 @@ class ModuleAuditorium : public Module BuildExcept(memb, excepts); } - ModResult OnHostCycle(User* user) + void OnBuildNeighborList(User* source, UserChanList &include, std::map<User*,bool> &exception) { - for (UCListIter f = user->chans.begin(); f != user->chans.end(); f++) - if ((*f)->IsModeSet('u')) - return MOD_RES_DENY; - - return MOD_RES_PASSTHRU; - } - - void OnUserQuit(User* user, const std::string &reason, const std::string &oper_message) - { - Command* parthandler = ServerInstance->Parser->GetHandler("PART"); - std::vector<std::string> to_leave; - if (parthandler) + UCListIter i = include.begin(); + while (i != include.end()) { - for (UCListIter f = user->chans.begin(); f != user->chans.end(); f++) - { - if ((*f)->IsModeSet('u')) - to_leave.push_back((*f)->name); - } - /* We cant do this neatly in one loop, as we are modifying the map we are iterating */ - for (std::vector<std::string>::iterator n = to_leave.begin(); n != to_leave.end(); n++) - { - std::vector<std::string> parameters; - parameters.push_back(*n); - /* This triggers our OnUserPart, above, making the PART silent */ - parthandler->Handle(parameters, user); - } + Channel* c = *i++; + if (c->IsModeSet('u')) + include.erase(c); } } }; |