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/ms_sendall.c | 101 ++++++++++++++++++++++++++++---------------------- 1 file changed, 56 insertions(+), 45 deletions(-) (limited to 'src/core/ms_sendall.c') diff --git a/src/core/ms_sendall.c b/src/core/ms_sendall.c index e19883b94..cee26e418 100644 --- a/src/core/ms_sendall.c +++ b/src/core/ms_sendall.c @@ -15,70 +15,81 @@ #include "module.h" -int do_sendall(User * u); -void myMemoServHelp(User * u); +void myMemoServHelp(User *u); + +class CommandMSSendAll : public Command +{ + public: + CommandMSSendAll() : Command("SENDALL", 1, 1) + { + } + + CommandResult Execute(User *u, std::vector ¶ms) + { + int i, z = 1; + NickCore *nc; + const char *text = params[0].c_str(); + + if (readonly) + { + notice_lang(s_MemoServ, u, MEMO_SEND_DISABLED); + return MOD_CONT; + } + else if (checkDefCon(DEFCON_NO_NEW_MEMOS)) + { + notice_lang(s_MemoServ, u, OPER_DEFCON_DENIED); + return MOD_CONT; + } + + for (i = 0; i < 1024; ++i) + { + for (nc = nclists[i]; nc; nc = nc->next) + { + if (stricmp(u->nick, nc->display)) + memo_send(u, nc->display, text, z); + } /* /nc */ + } /* /i */ + + notice_lang(s_MemoServ, u, MEMO_MASS_SENT); + return MOD_CONT; + } + + bool OnHelp(User *u, const std::string &subcommand) + { + if (!is_services_admin(u)) + return false; + + notice_lang(s_MemoServ, u, MEMO_HELP_SENDALL); + return true; + } + + void OnSyntaxError(User *u) + { + syntax_error(s_MemoServ, u, "SENDALL", MEMO_SEND_SYNTAX); + } +}; class MSSendAll : public Module { public: MSSendAll(const std::string &modname, const std::string &creator) : Module(modname, creator) { - Command *c; - this->SetAuthor("Anope"); this->SetVersion("$Id$"); this->SetType(CORE); - c = createCommand("SENDALL", do_sendall, is_services_admin, -1, -1, -1, MEMO_HELP_SENDALL, MEMO_HELP_SENDALL); - this->AddCommand(MEMOSERV, c, MOD_UNIQUE); + this->AddCommand(MEMOSERV, new CommandMSSendAll(), MOD_UNIQUE); this->SetMemoHelp(myMemoServHelp); } }; - - /** * Add the help response to anopes /ms help output. * @param u The user who is requesting help **/ -void myMemoServHelp(User * u) +void myMemoServHelp(User *u) { - if (is_services_admin(u)) { + if (is_services_admin(u)) notice_lang(s_MemoServ, u, MEMO_HELP_CMD_SENDALL); - } -} - -/** - * The /ms sendall command. - * @param u The user who issued the command - * @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing. - **/ -int do_sendall(User * u) -{ - int i, z = 1; - NickCore *nc; - char *text = strtok(NULL, ""); - - if (readonly) { - notice_lang(s_MemoServ, u, MEMO_SEND_DISABLED); - return MOD_CONT; - } else if (checkDefCon(DEFCON_NO_NEW_MEMOS)) { - notice_lang(s_MemoServ, u, OPER_DEFCON_DENIED); - return MOD_CONT; - } else if (!text) { - syntax_error(s_MemoServ, u, "SENDALL", MEMO_SEND_SYNTAX); - return MOD_CONT; - } - - - for (i = 0; i < 1024; i++) { - for (nc = nclists[i]; nc; nc = nc->next) { - if (stricmp(u->nick, nc->display) != 0) - memo_send(u, nc->display, text, z); - } /* /nc */ - } /* /i */ - - notice_lang(s_MemoServ, u, MEMO_MASS_SENT); - return MOD_CONT; } MODULE_INIT("ms_sendall", MSSendAll) -- cgit