From d7d01bdc5c667a1fafd95241282b58e03b4caa5b Mon Sep 17 00:00:00 2001 From: rburchell Date: Mon, 9 Feb 2009 21:01:05 +0000 Subject: Squashed commit: merge next (1.9.1) back to trunk. SVN users, NOTE: THIS WILL NOT BUILD, NOR SHOULD YOU RUN IT YET. git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1953 5417fbe8-f217-4b02-8779-1006273d7864 --- src/core/cs_invite.c | 111 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 67 insertions(+), 44 deletions(-) (limited to 'src/core/cs_invite.c') diff --git a/src/core/cs_invite.c b/src/core/cs_invite.c index 4fbe90c54..b50716a0c 100644 --- a/src/core/cs_invite.c +++ b/src/core/cs_invite.c @@ -15,65 +15,88 @@ #include "module.h" -void myChanServHelp(User * u); -int do_invite(User * u); -class CSInvite : public Module +/** + * Add the help response to anopes /cs help output. + * @param u The user who is requesting help + **/ +void myChanServHelp(User * u) +{ + notice_lang(s_ChanServ, u, CHAN_HELP_CMD_INVITE); +} + +class CommandCSInvite : public Command { public: - CSInvite(const std::string &modname, const std::string &creator) : Module(modname, creator) + CommandCSInvite() : Command("INVITE", 1, 1) { - Command *c; - this->SetAuthor("Anope"); - this->SetVersion("$Id$"); - this->SetType(CORE); + } + CommandReturn Execute(User *u, std::vector ¶ms) + { + const char *chan = params[0].c_str(); + Channel *c; + ChannelInfo *ci; - c = createCommand("INVITE", do_invite, NULL, CHAN_HELP_INVITE, -1, -1, -1, -1); - this->AddCommand(CHANSERV, c, MOD_UNIQUE); + if (!(c = findchan(chan))) + { + notice_lang(s_ChanServ, u, CHAN_X_NOT_IN_USE, chan); + return MOD_CONT; + } + else if (!(ci = c->ci)) + { + notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan); + return MOD_CONT; + } + else if (ci->flags & CI_VERBOTEN) + { + notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan); + return MOD_CONT; + } + else if (ci->flags & CI_SUSPENDED) + { + notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan); + return MOD_CONT; + } + else if (!u || !check_access(u, ci, CA_INVITE)) + { + notice_lang(s_ChanServ, u, PERMISSION_DENIED); + return MOD_CONT; + } - this->SetChanHelp(myChanServHelp); + ircdproto->SendInvite(whosends(ci), chan, u->nick); + return MOD_CONT; + } + + bool OnHelp(User *u, const std::string &subcommand) + { + notice_lang(s_ChanServ, u, CHAN_HELP_INVITE); + return true; + } + + void OnSyntaxError(User *u) + { + syntax_error(s_ChanServ, u, "INVITE", CHAN_INVITE_SYNTAX); } }; -/** - * Add the help response to anopes /cs help output. - * @param u The user who is requesting help - **/ -void myChanServHelp(User * u) -{ - notice_lang(s_ChanServ, u, CHAN_HELP_CMD_INVITE); -} -/** - * The /cs invite command. - * @param u The user who issued the command - * @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing. - **/ -int do_invite(User * u) +class CSInvite : public Module { - char *chan = strtok(NULL, " "); - Channel *c; - ChannelInfo *ci; + public: + CSInvite(const std::string &modname, const std::string &creator) : Module(modname, creator) + { + this->SetAuthor("Anope"); + this->SetVersion("$Id$"); + this->SetType(CORE); + this->AddCommand(CHANSERV, new CommandCSInvite(), MOD_UNIQUE); - if (!chan) { - syntax_error(s_ChanServ, u, "INVITE", CHAN_INVITE_SYNTAX); - } else if (!(c = findchan(chan))) { - notice_lang(s_ChanServ, u, CHAN_X_NOT_IN_USE, chan); - } else if (!(ci = c->ci)) { - notice_lang(s_ChanServ, u, CHAN_X_NOT_REGISTERED, chan); - } else if (ci->flags & CI_VERBOTEN) { - notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan); - } else if (ci->flags & CI_SUSPENDED) { - notice_lang(s_ChanServ, u, CHAN_X_FORBIDDEN, chan); - } else if (!u || !check_access(u, ci, CA_INVITE)) { - notice_lang(s_ChanServ, u, PERMISSION_DENIED); - } else { - ircdproto->SendInvite(whosends(ci), chan, u->nick); + this->SetChanHelp(myChanServHelp); } - return MOD_CONT; -} +}; + + MODULE_INIT("cs_invite", CSInvite) -- cgit