1 /* +------------------------------------+
2 * | Inspire Internet Relay Chat Daemon |
3 * +------------------------------------+
5 * InspIRCd: (C) 2002-2009 InspIRCd Development Team
6 * See: http://wiki.inspircd.org/Credits
8 * This program is free but copyrighted software; see
9 * the file COPYING for details.
11 * ---------------------------------------------------
18 #include "modes/umode_s.h"
20 ModeUserServerNoticeMask::ModeUserServerNoticeMask() : ModeHandler(NULL, 's', PARAM_SETONLY, MODETYPE_USER)
25 ModeAction ModeUserServerNoticeMask::OnModeChange(User* source, User* dest, Channel*, std::string ¶meter, bool adding)
27 /* Set the array fields */
30 /* Fix for bug #310 reported by Smartys */
31 if (!dest->modes[UM_SNOMASK])
32 dest->snomasks.reset();
34 dest->modes[UM_SNOMASK] = true;
35 parameter = dest->ProcessNoticeMasks(parameter.c_str());
36 return MODEACTION_ALLOW;
40 if (dest->modes[UM_SNOMASK] != false)
42 dest->modes[UM_SNOMASK] = false;
43 return MODEACTION_ALLOW;
47 /* Allow the change */
48 return MODEACTION_DENY;
51 std::string ModeUserServerNoticeMask::GetUserParameter(User* user)
53 std::string masks = user->FormatNoticeMasks();
59 void ModeUserServerNoticeMask::OnParameterMissing(User* user, User* dest, Channel* channel)
61 user->WriteServ("NOTICE %s :*** The user mode +s requires a parameter (server notice mask). Please provide a parameter, e.g. '+s +*'.",