X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_deaf.cpp;h=53085271a06c3c373123f400581feaa62c6d9187;hb=6d03943426dcce76ba66567a9b18425a5ebb4c0c;hp=a291189fa537ff844b7c92da4f08c7e9bc590e49;hpb=b6dbd6caab62bc2c0d11ce5a45d511611eb9c2ef;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_deaf.cpp b/src/modules/m_deaf.cpp index a291189fa..53085271a 100644 --- a/src/modules/m_deaf.cpp +++ b/src/modules/m_deaf.cpp @@ -20,9 +20,9 @@ class User_d : public ModeHandler { public: - User_d(InspIRCd* Instance) : ModeHandler(Instance, 'd', 0, 0, false, MODETYPE_USER, false) { } + User_d(Module* Creator) : ModeHandler(Creator, 'd', PARAM_NONE, MODETYPE_USER) { } - ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding, bool) + ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding) { if (adding) { @@ -47,35 +47,34 @@ class User_d : public ModeHandler class ModuleDeaf : public Module { - User_d* m1; + User_d m1; std::string deaf_bypasschars; std::string deaf_bypasschars_uline; public: - ModuleDeaf(InspIRCd* Me) - : Module(Me) + ModuleDeaf() + : m1(this) { - m1 = new User_d(ServerInstance); - if (!ServerInstance->Modes->AddMode(m1)) + if (!ServerInstance->Modes->AddMode(&m1)) throw ModuleException("Could not add new modes!"); - OnRehash(NULL, ""); + OnRehash(NULL); Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash, I_OnBuildExemptList }; ServerInstance->Modules->Attach(eventlist, this, 4); } - virtual void OnRehash(User* user, const std::string&) + virtual void OnRehash(User* user) { - ConfigReader* conf = new ConfigReader(ServerInstance); + ConfigReader* conf = new ConfigReader; deaf_bypasschars = conf->ReadValue("deaf", "bypasschars", 0); deaf_bypasschars_uline = conf->ReadValue("deaf", "bypasscharsuline", 0); delete conf; } - virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) + virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_CHANNEL) { @@ -84,10 +83,10 @@ class ModuleDeaf : public Module this->BuildDeafList(MSG_NOTICE, chan, user, status, text, exempt_list); } - return 0; + return MOD_RES_PASSTHRU; } - virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) + virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_CHANNEL) { @@ -96,7 +95,7 @@ class ModuleDeaf : public Module this->BuildDeafList(MSG_PRIVMSG, chan, user, status, text, exempt_list); } - return 0; + return MOD_RES_PASSTHRU; } virtual void OnBuildExemptList(MessageType message_type, Channel* chan, User* sender, char status, CUList &exempt_list, const std::string &text) @@ -106,7 +105,7 @@ class ModuleDeaf : public Module virtual void BuildDeafList(MessageType message_type, Channel* chan, User* sender, char status, const std::string &text, CUList &exempt_list) { - CUList *ulist = chan->GetUsers(); + const UserMembList *ulist = chan->GetUsers(); bool is_a_uline; bool is_bypasschar, is_bypasschar_avail; bool is_bypasschar_uline, is_bypasschar_uline_avail; @@ -132,7 +131,7 @@ class ModuleDeaf : public Module if (!is_bypasschar_uline_avail && is_bypasschar) return; - for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++) + for (UserMembCIter i = ulist->begin(); i != ulist->end(); i++) { /* not +d ? */ if (!i->first->IsModeSet('d')) @@ -153,19 +152,18 @@ class ModuleDeaf : public Module continue; /* don't deliver message! */ - exempt_list[i->first] = i->first->nick; + exempt_list.insert(i->first); } } virtual ~ModuleDeaf() { - ServerInstance->Modes->DelMode(m1); - delete m1; + ServerInstance->Modes->DelMode(&m1); } virtual Version GetVersion() { - return Version("$Id$", VF_COMMON|VF_VENDOR,API_VERSION); + return Version("Provides support for ircu style usermode +d (deaf to channel messages and channel notices)", VF_COMMON|VF_VENDOR,API_VERSION); } };