X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_services_account.cpp;h=26a53b4d7038eaabf881dcb124ca20d456e5840e;hb=76608ff23d515fbf5fcdbdc17b7f261339b2a276;hp=edb6f6ef5b0b828d22828e72cb77d4eca6ec7508;hpb=9ca7437e8faa192d26e1170e5825318ea0088be2;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index edb6f6ef5..26a53b4d7 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -104,17 +104,18 @@ class AChannel_M : public SimpleChannelModeHandler class AccountExtItemImpl : public AccountExtItem { + Events::ModuleEventProvider eventprov; + public: AccountExtItemImpl(Module* mod) - : AccountExtItem("accountname", mod) + : AccountExtItem("accountname", ExtensionItem::EXT_USER, mod) + , eventprov(mod, "event/account") { } void unserialize(SerializeFormat format, Extensible* container, const std::string& value) { - User* user = dynamic_cast(container); - if (!user) - return; + User* user = static_cast(container); StringExtItem::unserialize(format, container, value); if (!value.empty()) @@ -125,14 +126,10 @@ class AccountExtItemImpl : public AccountExtItem user->WriteNumeric(900, "%s %s :You are now logged in as %s", user->GetFullHost().c_str(), value.c_str(), value.c_str()); } - - AccountEvent(creator, user, value).Send(); - } - else - { - // Logged out - AccountEvent(creator, user, "").Send(); } + // If value is empty then logged out + + FOREACH_MOD_CUSTOM(eventprov, AccountEventListener, OnAccountChange, (user, value)); } }; @@ -148,6 +145,7 @@ class ModuleServicesAccount : public Module public: ModuleServicesAccount() : m1(this), m2(this), m3(this), m4(this), m5(this), accountname(this) + , checking_ban(false) { } @@ -178,12 +176,7 @@ class ModuleServicesAccount : public Module { /* On nickchange, if they have +r, remove it */ if (user->IsModeSet(m5) && assign(user->nick) != oldnick) - { - std::vector modechange; - modechange.push_back(user->nick); - modechange.push_back("-r"); - ServerInstance->Modes->Process(modechange, ServerInstance->FakeClient, ModeParser::MODE_LOCALONLY); - } + m5.RemoveMode(user); } ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string& text, char status, CUList& exempt_list, MessageType msgtype) CXX11_OVERRIDE