/***********************************************************************
X3 ChangeLog
+2008-12-27 Neil Spierling <sirvulcan@sirvulcan.co.nz>
+
+ * src/global.c: Added RCHANNELS which will send notices to all
+ registered channels. Also changed CHANNELS to notice all channels
+ instead of registered ones only.
+
+ * src/global.h: Added RCHANNELS.
+
+ * src/global.help: Added RCHANNELS target.
+
2008-12-27 Neil Spierling <sirvulcan@sirvulcan.co.nz>
* src/global.c: Added AUTHED target.
flags |= MESSAGE_RECIPIENT_STAFF;
} else if(!irccasecmp(argv[i], "channels")) {
flags |= MESSAGE_RECIPIENT_CHANNELS;
+ } else if(!irccasecmp(argv[i], "rchannels")) {
+ flags |= MESSAGE_RECIPIENT_RCHANNELS;
} else if(!irccasecmp(argv[i], "announcement") || !irccasecmp(argv[i], "announce")) {
flags |= MESSAGE_RECIPIENT_ANNOUNCE;
} else {
{
return "authed";
}
+ else if(message->flags & MESSAGE_RECIPIENT_RCHANNELS)
+ {
+ return "rchannels";
+ }
else
{
return "channels";
if(message->flags & MESSAGE_RECIPIENT_CHANNELS)
{
- dict_foreach(channels, notice_channel, message);
+ dict_iterator_t it;
+
+ for (it = dict_first(channels); it; it = iter_next(it)) {
+ struct chanNode *chan = iter_data(it);
+
+ notice_target(chan->name, message);
+ }
+ }
+
+ if(message->flags & MESSAGE_RECIPIENT_RCHANNELS)
+ {
+ dict_iterator_t it;
+
+ for (it = dict_first(channels); it; it = iter_next(it)) {
+ struct chanNode *chan = iter_data(it);
+
+ if (chan->channel_info)
+ notice_target(chan->name, message);
+ }
}
if(message->flags & MESSAGE_RECIPIENT_LUSERS)
target |= MESSAGE_RECIPIENT_ANNOUNCE;
} else if(!irccasecmp(argv[1], "channels")) {
target = MESSAGE_RECIPIENT_CHANNELS;
+ } else if(!irccasecmp(argv[1], "rchannels")) {
+ target = MESSAGE_RECIPIENT_RCHANNELS;
} else {
global_notice(user, "GMSG_INVALID_TARGET", argv[1]);
return 0;
static GLOBAL_FUNC(cmd_messages)
{
- long mask = MESSAGE_RECIPIENT_AUTHED | MESSAGE_RECIPIENT_LUSERS | MESSAGE_RECIPIENT_CHANNELS;
+ long mask = MESSAGE_RECIPIENT_AUTHED | MESSAGE_RECIPIENT_LUSERS | MESSAGE_RECIPIENT_CHANNELS | MESSAGE_RECIPIENT_RCHANNELS;
unsigned int count;
if(IsOper(user))
#define MESSAGE_RECIPIENT_CHANNELS 0x008
#define MESSAGE_RECIPIENT_ANNOUNCE 0x040
#define MESSAGE_RECIPIENT_AUTHED 0x080
+#define MESSAGE_RECIPIENT_RCHANNELS 0x100
#define MESSAGE_OPTION_SOURCELESS 0x010
#define MESSAGE_OPTION_IMMEDIATE 0x020
"$bOPERS$b: The message will be sent to opers only.",
"$bSTAFF$b: The message will be sent to helpers and opers.",
"$bCHANNELS$b: The message will be sent to all channels.",
+ "$bRCHANNELS$b: The message will be sent to all registered channels.",
"$bALL$b: A combination of USERS and CHANNELS.");