aboutsummaryrefslogtreecommitdiff
path: root/src/cmd_notice.cpp
diff options
context:
space:
mode:
authorGravatar brain2006-11-26 18:04:47 +0000
committerGravatar brain2006-11-26 18:04:47 +0000
commit2e52ff280dca14d1598b84fab7a8c2e93fa30910 (patch)
treeb61c54d4e0921b6349ff6b5aeb36008e52973076 /src/cmd_notice.cpp
parent005 tokens: "ESILENCE SILENCE=999" (diff)
Add extra parameter to OnUserPreNotice and OnUserPrePrivmsg, CUList &exempt_list, a list of users NOT to write to. By default it just contains the sender, you can add more.
This also bumps the module api version by one. added "CUList fixme" to peaveys module just so it builds, as this will be refactored to use the new feature that was just added :) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5806 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/cmd_notice.cpp')
-rw-r--r--src/cmd_notice.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/cmd_notice.cpp b/src/cmd_notice.cpp
index d947c70be..c9c06ff67 100644
--- a/src/cmd_notice.cpp
+++ b/src/cmd_notice.cpp
@@ -32,6 +32,8 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user)
userrec *dest;
chanrec *chan;
+ CUList exempt_list;
+
user->idle_lastmsg = ServerInstance->Time();
if (ServerInstance->Parser->LoopCall(user, this, parameters, pcnt, 0))
@@ -40,7 +42,7 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user)
{
int MOD_RESULT = 0;
std::string temp = parameters[1];
- FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,(void*)parameters[0],TYPE_SERVER,temp,0));
+ FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,(void*)parameters[0],TYPE_SERVER,temp,0,exempt_list));
if (MOD_RESULT)
return CMD_FAILURE;
parameters[1] = (char*)temp.c_str();
@@ -62,6 +64,9 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user)
if (*parameters[0] == '#')
{
chan = ServerInstance->FindChan(parameters[0]);
+
+ exempt_list[user] = user;
+
if (chan)
{
if (IS_LOCAL(user))
@@ -81,7 +86,7 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user)
int MOD_RESULT = 0;
std::string temp = parameters[1];
- FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,chan,TYPE_CHANNEL,temp,status));
+ FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,chan,TYPE_CHANNEL,temp,status, exempt_list));
if (MOD_RESULT) {
return CMD_FAILURE;
}
@@ -93,7 +98,7 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user)
return CMD_FAILURE;
}
- chan->WriteAllExceptSender(user, false, status, "NOTICE %s :%s", chan->name, parameters[1]);
+ chan->WriteAllExcept(user, false, status, exempt_list, "NOTICE %s :%s", chan->name, parameters[1]);
FOREACH_MOD(I_OnUserNotice,OnUserNotice(user,chan,TYPE_CHANNEL,parameters[1],status));
}
@@ -112,7 +117,7 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user)
int MOD_RESULT = 0;
std::string temp = parameters[1];
- FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,dest,TYPE_USER,temp,0));
+ FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,dest,TYPE_USER,temp,0,exempt_list));
if (MOD_RESULT) {
return CMD_FAILURE;
}