X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_deaf.cpp;h=e58d130a52417b429cc46bdf3e87d4befed33de3;hb=f020429fd33ec1a7bf1114b2db1b2fd5d6bc1650;hp=7d716de7e647173c8d8783100a3b498f0be2ba5e;hpb=be3644c74be3f1c40be2d32c6cfcace73689e359;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_deaf.cpp b/src/modules/m_deaf.cpp index 7d716de7e..e58d130a5 100644 --- a/src/modules/m_deaf.cpp +++ b/src/modules/m_deaf.cpp @@ -28,7 +28,7 @@ class User_d : public ModeHandler public: User_d(Module* Creator) : ModeHandler(Creator, "deaf", 'd', PARAM_NONE, MODETYPE_USER) { } - ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding) + ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string& parameter, bool adding) CXX11_OVERRIDE { if (adding == dest->IsModeSet(this)) return MODEACTION_DENY; @@ -60,32 +60,24 @@ class ModuleDeaf : public Module deaf_bypasschars_uline = tag->getString("bypasscharsuline"); } - ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string& text, char status, CUList& exempt_list, MessageType msgtype) CXX11_OVERRIDE + ModResult OnUserPreMessage(User* user, const MessageTarget& target, MessageDetails& details) CXX11_OVERRIDE { - if (target_type == TYPE_CHANNEL) - { - Channel* chan = (Channel*)dest; - if (chan) - this->BuildDeafList(msgtype, chan, user, status, text, exempt_list); - } + if (target.type != MessageTarget::TYPE_CHANNEL) + return MOD_RES_PASSTHRU; - return MOD_RES_PASSTHRU; - } - - void BuildDeafList(MessageType message_type, Channel* chan, User* sender, char status, const std::string &text, CUList &exempt_list) - { - const UserMembList *ulist = chan->GetUsers(); - bool is_bypasschar = (deaf_bypasschars.find(text[0]) != std::string::npos); - bool is_bypasschar_uline = (deaf_bypasschars_uline.find(text[0]) != std::string::npos); + Channel* chan = target.Get(); + bool is_bypasschar = (deaf_bypasschars.find(details.text[0]) != std::string::npos); + bool is_bypasschar_uline = (deaf_bypasschars_uline.find(details.text[0]) != std::string::npos); /* * If we have no bypasschars_uline in config, and this is a bypasschar (regular) * Than it is obviously going to get through +d, no build required */ - if (!deaf_bypasschars_uline.empty() && is_bypasschar) - return; + if (deaf_bypasschars_uline.empty() && is_bypasschar) + return MOD_RES_PASSTHRU; - for (UserMembCIter i = ulist->begin(); i != ulist->end(); i++) + const Channel::MemberMap& ulist = chan->GetUsers(); + for (Channel::MemberMap::const_iterator i = ulist.begin(); i != ulist.end(); ++i) { /* not +d ? */ if (!i->first->IsModeSet(m1)) @@ -102,12 +94,11 @@ class ModuleDeaf : public Module if (is_bypasschar && !is_a_uline) continue; /* deliver message */ - if (status && !strchr(chan->GetAllPrefixChars(i->first), status)) - continue; - /* don't deliver message! */ - exempt_list.insert(i->first); + details.exemptions.insert(i->first); } + + return MOD_RES_PASSTHRU; } Version GetVersion() CXX11_OVERRIDE