]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_ojoin.cpp
Tidy up keywords on module methods.
[user/henk/code/inspircd.git] / src / modules / m_ojoin.cpp
index fcb26775017ef391a5d80117a92820d129f4b1f0..c99e24b0f953a98c9b953ab9c8df16acc30975f3 100644 (file)
@@ -45,28 +45,30 @@ bool op;
 
 /** Handle /OJOIN
  */
-class CommandOjoin : public Command
+class CommandOjoin : public SplitCommand
 {
  public:
        bool active;
-       CommandOjoin(Module* parent) : Command(parent,"OJOIN", 1)
+       CommandOjoin(Module* parent) :
+               SplitCommand(parent, "OJOIN", 1)
        {
                flags_needed = 'o'; Penalty = 0; syntax = "<channel>";
                active = false;
                TRANSLATE3(TR_NICK, TR_TEXT, TR_END);
        }
 
-       CmdResult Handle (const std::vector<std::string>& parameters, User *user)
+       CmdResult HandleLocal(const std::vector<std::string>& parameters, LocalUser* user)
        {
                // Make sure the channel name is allowable.
-               if (!ServerInstance->IsChannel(parameters[0].c_str(), ServerInstance->Config->Limits.ChanMax))
+               if (!ServerInstance->IsChannel(parameters[0], ServerInstance->Config->Limits.ChanMax))
                {
-                       user->WriteServ("NOTICE "+user->nick+" :*** Invalid characters in channel name or name too long");
+                       user->WriteNotice("*** Invalid characters in channel name or name too long");
                        return CMD_FAILURE;
                }
 
                active = true;
-               Channel* channel = Channel::JoinUser(user, parameters[0].c_str(), false, "", false);
+               // override is false because we want OnUserPreJoin to run
+               Channel* channel = Channel::JoinUser(user, parameters[0], false);
                active = false;
 
                if (channel)
@@ -76,7 +78,7 @@ class CommandOjoin : public Command
                        if (notice)
                        {
                                channel = ServerInstance->FindChan(parameters[0]);
-                               channel->WriteChannelWithServ(ServerInstance->Config->ServerName.c_str(), "NOTICE %s :%s joined on official network business.",
+                               channel->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s joined on official network business.",
                                        parameters[0].c_str(), user->nick.c_str());
                                ServerInstance->PI->SendChannelNotice(channel, 0, user->nick + " joined on official network business.");
                        }
@@ -87,8 +89,10 @@ class CommandOjoin : public Command
                        // they're already in the channel
                        std::vector<std::string> modes;
                        modes.push_back(parameters[0]);
-                       modes.push_back("+Y");
+                       modes.push_back(op ? "+Yo" : "+Y");
                        modes.push_back(user->nick);
+                       if (op)
+                               modes.push_back(user->nick);
                        ServerInstance->SendGlobalMode(modes, ServerInstance->FakeClient);
                }
                return CMD_SUCCESS;
@@ -114,7 +118,7 @@ class NetworkPrefix : public ModeHandler
                std::vector<std::string> mode_junk;
                mode_junk.push_back(channel->name);
                irc::modestacker modestack(false);
-               std::deque<std::string> stackresult;
+               std::vector<std::string> stackresult;
 
                for (UserMembCIter i = cl->begin(); i != cl->end(); i++)
                {
@@ -176,7 +180,7 @@ class ModuleOjoin : public Module
        {
        }
 
-       void init()
+       void init() CXX11_OVERRIDE
        {
                /* Load config stuff */
                OnRehash(NULL);
@@ -188,10 +192,10 @@ class ModuleOjoin : public Module
                ServerInstance->Modules->AddService(mycommand);
 
                Implementation eventlist[] = { I_OnUserPreJoin, I_OnUserPreKick, I_OnRehash };
-               ServerInstance->Modules->Attach(eventlist, this, 3);
+               ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
        }
 
-       ModResult OnUserPreJoin(User *user, Channel *chan, const char *cname, std::string &privs, const std::string &keygiven)
+       ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) CXX11_OVERRIDE
        {
                if (mycommand.active)
                {
@@ -204,7 +208,7 @@ class ModuleOjoin : public Module
                return MOD_RES_PASSTHRU;
        }
 
-       void OnRehash(User* user)
+       void OnRehash(User* user) CXX11_OVERRIDE
        {
                ConfigTag* Conf = ServerInstance->Config->ConfValue("ojoin");
 
@@ -222,7 +226,7 @@ class ModuleOjoin : public Module
                op = Conf->getBool("op", true);
        }
 
-       ModResult OnUserPreKick(User* source, Membership* memb, const std::string &reason)
+       ModResult OnUserPreKick(User* source, Membership* memb, const std::string &reason) CXX11_OVERRIDE
        {
                // Don't do anything if they're not +Y
                if (!memb->hasMode('Y'))
@@ -246,11 +250,10 @@ class ModuleOjoin : public Module
                ServerInstance->Modules->SetPriority(this, I_OnUserPreJoin, PRIORITY_FIRST);
        }
 
-       Version GetVersion()
+       Version GetVersion() CXX11_OVERRIDE
        {
                return Version("Network Business Join", VF_VENDOR);
        }
 };
 
 MODULE_INIT(ModuleOjoin)
-