diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_ojoin.cpp | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/src/modules/m_ojoin.cpp b/src/modules/m_ojoin.cpp index e26646c3a..3710757aa 100644 --- a/src/modules/m_ojoin.cpp +++ b/src/modules/m_ojoin.cpp @@ -30,8 +30,9 @@ class CommandOjoin : public SplitCommand bool notice; bool op; ModeHandler* npmh; - CommandOjoin(Module* parent) : - SplitCommand(parent, "OJOIN", 1) + CommandOjoin(Module* parent, ModeHandler& mode) + : SplitCommand(parent, "OJOIN", 1) + , npmh(&mode) { flags_needed = 'o'; Penalty = 0; syntax = "<channel>"; active = false; @@ -105,33 +106,22 @@ class NetworkPrefix : public PrefixMode class ModuleOjoin : public Module { - NetworkPrefix* np; + NetworkPrefix np; CommandOjoin mycommand; public: ModuleOjoin() - : np(NULL), mycommand(this) + : np(this, ServerInstance->Config->ConfValue("ojoin")->getString("prefix").c_str()[0]) + , mycommand(this, np) { } - void init() CXX11_OVERRIDE - { - std::string npre = ServerInstance->Config->ConfValue("ojoin")->getString("prefix"); - char NPrefix = npre.empty() ? 0 : npre[0]; - - /* Initialise module variables */ - np = new NetworkPrefix(this, NPrefix); - mycommand.npmh = np; - - ServerInstance->Modules->AddService(*np); - } - ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) CXX11_OVERRIDE { if (mycommand.active) { - privs += np->GetModeChar(); + privs += np.GetModeChar(); if (mycommand.op) privs += 'o'; return MOD_RES_ALLOW; @@ -150,7 +140,7 @@ class ModuleOjoin : public Module ModResult OnUserPreKick(User* source, Membership* memb, const std::string &reason) CXX11_OVERRIDE { // Don't do anything if they're not +Y - if (!memb->hasMode(np->GetModeChar())) + if (!memb->hasMode(np.GetModeChar())) return MOD_RES_PASSTHRU; // Let them do whatever they want to themselves. @@ -161,11 +151,6 @@ class ModuleOjoin : public Module return MOD_RES_DENY; } - ~ModuleOjoin() - { - delete np; - } - void Prioritize() { ServerInstance->Modules->SetPriority(this, I_OnUserPreJoin, PRIORITY_FIRST); |