X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_ircv3.cpp;h=543fb49a40d9c3a275434abe47fec2b3fa67e77e;hb=5076d9d3c4d9cdf9a9124a60e3311d111297d301;hp=123d0706914bc3d10eba68b4a6f79e47fbbad389;hpb=806f48627913db210be7c9104de5afe2f47bdb33;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_ircv3.cpp b/src/modules/m_ircv3.cpp index 123d07069..543fb49a4 100644 --- a/src/modules/m_ircv3.cpp +++ b/src/modules/m_ircv3.cpp @@ -19,32 +19,13 @@ #include "inspircd.h" #include "modules/account.h" #include "modules/cap.h" - -class WriteNeighborsWithCap : public User::ForEachNeighborHandler -{ - const LocalIntExt& cap; - const std::string& msg; - - void Execute(LocalUser* user) CXX11_OVERRIDE - { - if (cap.get(user)) - user->Write(msg); - } - - public: - WriteNeighborsWithCap(User* user, const std::string& message, const GenericCap& capability) - : cap(capability.ext) - , msg(message) - { - user->ForEachNeighbor(*this, false); - } -}; +#include "modules/ircv3.h" class ModuleIRCv3 : public Module, public AccountEventListener { - GenericCap cap_accountnotify; - GenericCap cap_awaynotify; - GenericCap cap_extendedjoin; + Cap::Capability cap_accountnotify; + Cap::Capability cap_awaynotify; + Cap::Capability cap_extendedjoin; CUList last_excepts; @@ -76,7 +57,7 @@ class ModuleIRCv3 : public Module, public AccountEventListener else line += newaccount; - WriteNeighborsWithCap(user, line, cap_accountnotify); + IRCv3::WriteNeighborsWithCap(user, line, cap_accountnotify); } void OnUserJoin(Membership* memb, bool sync, bool created, CUList& excepts) CXX11_OVERRIDE @@ -105,7 +86,7 @@ class ModuleIRCv3 : public Module, public AccountEventListener { // Send the extended join line if the current member is local, has the extended-join cap and isn't excepted User* member = IS_LOCAL(it->first); - if ((member) && (cap_extendedjoin.ext.get(member)) && (excepts.find(member) == excepts.end())) + if ((member) && (cap_extendedjoin.get(member)) && (excepts.find(member) == excepts.end())) { // Construct the lines we're going to send if we haven't constructed them already if (line.empty()) @@ -162,7 +143,7 @@ class ModuleIRCv3 : public Module, public AccountEventListener if (!awaymsg.empty()) line += " :" + awaymsg; - WriteNeighborsWithCap(user, line, cap_awaynotify); + IRCv3::WriteNeighborsWithCap(user, line, cap_awaynotify); } return MOD_RES_PASSTHRU; } @@ -179,7 +160,7 @@ class ModuleIRCv3 : public Module, public AccountEventListener { // Send the away notify line if the current member is local, has the away-notify cap and isn't excepted User* member = IS_LOCAL(it->first); - if ((member) && (cap_awaynotify.ext.get(member)) && (last_excepts.find(member) == last_excepts.end())) + if ((member) && (cap_awaynotify.get(member)) && (last_excepts.find(member) == last_excepts.end()) && (it->second != memb)) { member->Write(line); } @@ -188,7 +169,7 @@ class ModuleIRCv3 : public Module, public AccountEventListener last_excepts.clear(); } - void Prioritize() + void Prioritize() CXX11_OVERRIDE { ServerInstance->Modules->SetPriority(this, I_OnUserJoin, PRIORITY_LAST); }