#include <deque>
#include "connection.h"
#include "users.h"
-#include "servers.h"
#include "ctables.h"
#include "globals.h"
#include "modules.h"
{
log(DEBUG,"Local mode change");
WriteChannelLocal(chan, user, "MODE %s %s",chan->name,outstr);
+ FOREACH_MOD OnMode(user, chan, TYPE_CHANNEL, outstr);
}
else
{
if (!silent)
{
WriteChannel(chan,user,"MODE %s %s",chan->name,outstr);
+ FOREACH_MOD OnMode(user, chan, TYPE_CHANNEL, outstr);
}
}
}
can_change = 0;
if (user != dest)
{
- if (strchr(user->modes,'o'))
+ if ((strchr(user->modes,'o')) || (is_uline(user->server)))
{
can_change = 1;
}
if (strcmp(b,""))
{
WriteTo(user, dest, "MODE %s :%s", dest->nick, b);
+ FOREACH_MOD OnMode(user, dest, TYPE_USER, b);
}
if (strlen(dmodes)>MAXMODES)
}
}
- if ((Ptr) && (!has_channel(user,Ptr)))
+ if (((Ptr) && (!has_channel(user,Ptr))) && (!is_uline(user->server)))
{
WriteServ(user->fd,"442 %s %s :You're not on that channel!",user->nick, Ptr->name);
return;
if (strcmp(b,""))
{
WriteTo(user, dest, "MODE %s :%s", dest->nick, b);
+ FOREACH_MOD OnMode(user, dest, TYPE_USER, b);
}
if (strlen(dmodes)>MAXMODES)
if (strcmp(b,""))
{
WriteTo(user,dest,"MODE %s :%s",dest->nick,b);
- log(DEBUG,"Sent: :%s MODE %s",user->nick,b);
+ FOREACH_MOD OnMode(user, dest, TYPE_USER, b);
}
if (strlen(dmodes)>MAXMODES)