diff options
author | cyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-02-09 23:01:59 +0000 |
---|---|---|
committer | cyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864> | 2009-02-09 23:01:59 +0000 |
commit | fc0deb2181cfae35eb186c73289131924fd258f6 (patch) | |
tree | 371f42c1af9a88f845cd0257a94cee1b1301fb8b | |
parent | de6a85bdf5b329d16c666d873122b1d76a6ac0df (diff) |
Changed cs_status to use new command API.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1964 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r-- | src/core/cs_status.c | 102 |
1 files changed, 53 insertions, 49 deletions
diff --git a/src/core/cs_status.c b/src/core/cs_status.c index f3bc0c508..bac04bd10 100644 --- a/src/core/cs_status.c +++ b/src/core/cs_status.c @@ -15,76 +15,80 @@ #include "module.h" -int do_status(User * u); -void myChanServHelp(User * u); +void myChanServHelp(User *u); + +class CommandCSStatus : public Command +{ + public: + CommandCSStatus() : Command("STATUS", 2, 2) + { + } + + CommandResult Execute(User *u, std::vector<std::string> ¶ms) + { + ChannelInfo *ci; + User *u2; + const char *nick, *chan; + const char *temp = NULL; + + chan = params[0].c_str(); + nick = params[1].c_str(); + if (!(ci = cs_findchan(chan))) + { + temp = chan; + chan = nick; + nick = temp; + ci = cs_findchan(chan); + } + if (!ci) + notice_lang(s_ChanServ, u, CHAN_STATUS_NOT_REGGED, temp); + else if (ci->flags & CI_VERBOTEN) + notice_lang(s_ChanServ, u, CHAN_STATUS_FORBIDDEN, chan); + else if ((u2 = finduser(nick))) + notice_lang(s_ChanServ, u, CHAN_STATUS_INFO, chan, nick, get_access(u2, ci)); + else /* !u2 */ + notice_lang(s_ChanServ, u, CHAN_STATUS_NOTONLINE, nick); + return MOD_CONT; + } + + bool OnHelp(User *u, const std::string &subcommand) + { + if (!is_services_admin(u)) + return false; + + notice_lang(s_ChanServ, u, CHAN_SERVADMIN_HELP_STATUS); + return true; + } + + void OnSyntaxError(User *u) + { + syntax_error(s_ChanServ, u, "STATUS", CHAN_STATUS_SYNTAX); + } +}; class CSStatus : public Module { public: CSStatus(const std::string &modname, const std::string &creator) : Module(modname, creator) { - Command *c; - this->SetAuthor("Anope"); this->SetVersion("$Id$"); this->SetType(CORE); - c = createCommand("STATUS", do_status, is_services_admin, -1, -1, -1, CHAN_SERVADMIN_HELP_STATUS, CHAN_SERVADMIN_HELP_STATUS); - this->AddCommand(CHANSERV, c, MOD_UNIQUE); + this->AddCommand(CHANSERV, new CommandCSStatus(), MOD_UNIQUE); this->SetChanHelp(myChanServHelp); } }; - - /** * Add the help response to anopes /cs help output. * @param u The user who is requesting help **/ -void myChanServHelp(User * u) +void myChanServHelp(User *u) { - if (is_services_admin(u)) { + if (is_services_admin(u)) notice_lang(s_ChanServ, u, CHAN_HELP_CMD_STATUS); - } -} - -/** - * The /cs status command. - * @param u The user who issued the command - * @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing. - **/ -int do_status(User * u) -{ - ChannelInfo *ci; - User *u2; - char *nick, *chan; - char *temp = NULL; - - chan = strtok(NULL, " "); - nick = strtok(NULL, " "); - if (!nick || strtok(NULL, " ")) { - notice_lang(s_ChanServ, u, CHAN_STATUS_SYNTAX); - return MOD_CONT; - } - if (!(ci = cs_findchan(chan))) { - temp = chan; - chan = nick; - nick = temp; - ci = cs_findchan(chan); - } - if (!ci) { - notice_lang(s_ChanServ, u, CHAN_STATUS_NOT_REGGED, temp); - } else if (ci->flags & CI_VERBOTEN) { - notice_lang(s_ChanServ, u, CHAN_STATUS_FORBIDDEN, chan); - return MOD_CONT; - } else if ((u2 = finduser(nick)) != NULL) { - notice_lang(s_ChanServ, u, CHAN_STATUS_INFO, chan, nick, - get_access(u2, ci)); - } else { /* !u2 */ - notice_lang(s_ChanServ, u, CHAN_STATUS_NOTONLINE, nick); - } - return MOD_CONT; } MODULE_INIT("cs_status", CSStatus) |