X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_operprefix.cpp;h=640f2c5d8dcf98a5f07b33692c365f2e0e99d0a1;hb=8cebe2878f3878afce6f643d93668155cb26801d;hp=60ada833b7b7def1ee4bba4e1b6697b724c53b62;hpb=254910b9b200c64d8b379c217d35f887876a8ee9;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_operprefix.cpp b/src/modules/m_operprefix.cpp index 60ada833b..640f2c5d8 100644 --- a/src/modules/m_operprefix.cpp +++ b/src/modules/m_operprefix.cpp @@ -2,8 +2,8 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -14,12 +14,12 @@ /* * Originally by Chernov-Phoenix Alexey (Phoenix@RusNet) mailto:phoenix /email address separator/ pravmail.ru */ - + /* $ModDesc: Gives opers cmode +y which provides a staff prefix. */ #include "inspircd.h" -static char prefixchar; +#define OPERPREFIX_VALUE 1000000 std::set* SetupExt(User* user) { @@ -51,11 +51,11 @@ void AddPrefixChan(User* user, Channel* channel) class OperPrefixMode : public ModeHandler { public: - OperPrefixMode(InspIRCd* Instance) : ModeHandler(Instance, 'y', 1, 1, true, MODETYPE_CHANNEL, false, prefixchar) { } + OperPrefixMode(InspIRCd* Instance, char pfx) : ModeHandler(Instance, 'y', 1, 1, true, MODETYPE_CHANNEL, false, pfx, pfx, TR_NICK) { } unsigned int GetPrefixRank() { - return 40000; + return OPERPREFIX_VALUE; } ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding, bool servermode) @@ -111,27 +111,25 @@ class ModuleOperPrefixMode : public Module ModuleOperPrefixMode(InspIRCd* Me) : Module(Me) { ConfigReader Conf(ServerInstance); - std::string tmp; - tmp = Conf.ReadValue("operprefix", "prefix", "!", 0, false); - strlcpy(&prefixchar,tmp.c_str(),2); + std::string pfx = Conf.ReadValue("operprefix", "prefix", "!", 0, false); - opm = new OperPrefixMode(ServerInstance); + opm = new OperPrefixMode(ServerInstance, pfx[0]); if ((!ServerInstance->Modes->AddMode(opm))) throw ModuleException("Could not add a new mode!"); - + Implementation eventlist[] = { I_OnPostJoin, I_OnCleanup, I_OnUserQuit, I_OnUserKick, I_OnUserPart, I_OnOper }; ServerInstance->Modules->Attach(eventlist, this, 6); } - virtual void PushChanMode(Channel* channel, User* user, bool negate = false) + void PushChanMode(Channel* channel, User* user, bool negate = false) { if (negate) DelPrefixChan(user, channel); else AddPrefixChan(user, channel); - char modeline[]="+y"; + char modeline[] = "+y"; if (negate) - modeline [0]='-'; + modeline[0] = '-'; std::vector modechange; modechange.push_back(channel->name); modechange.push_back(modeline); @@ -141,10 +139,6 @@ class ModuleOperPrefixMode : public Module virtual void OnPostJoin(User *user, Channel *channel) { - // This may look wrong, but I don't think it is.. PushChanMode will send FMODE which should sort it all out. - if (!IS_LOCAL(user)) - return; - if (user && IS_OPER(user)) { if (user->IsModeSet('H')) @@ -167,7 +161,7 @@ class ModuleOperPrefixMode : public Module virtual void OnOper(User *user, const std::string&) { - if (user && IS_LOCAL(user) && !user->IsModeSet('H')) + if (user && !user->IsModeSet('H')) { for (UCListIter v = user->chans.begin(); v != user->chans.end(); v++) { @@ -182,10 +176,8 @@ class ModuleOperPrefixMode : public Module delete opm; } - virtual void CleanUser(User* user, bool quitting=false) + void CleanUser(User* user, bool quitting) { - if (!IS_LOCAL(user)) - return; std::set* ext; if (user->GetExt("m_operprefix",ext)) @@ -195,7 +187,7 @@ class ModuleOperPrefixMode : public Module { for (UCListIter v = user->chans.begin(); v != user->chans.end(); v++) { - ModePair ms=opm->ModeSet(NULL, NULL , v->first, user->nick); + ModePair ms = opm->ModeSet(NULL, NULL , v->first, user->nick); if (ms.first) { PushChanMode(v->first, user, true); @@ -213,7 +205,7 @@ class ModuleOperPrefixMode : public Module if (target_type == TYPE_USER) { User* user = (User*)item; - CleanUser(user); + CleanUser(user, false); } } @@ -239,4 +231,3 @@ class ModuleOperPrefixMode : public Module }; MODULE_INIT(ModuleOperPrefixMode) -