static char* neonserv_cmd_set_modes(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument);
static char* neonserv_cmd_set_dynlimit(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument);
static char* neonserv_cmd_set_nodelete(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument);
+static char* neonserv_cmd_set_backupbot(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument);
#define NS_VALID_FUNCTION 0x01
#define NS_VALID_STRING 0x02
{"TOYS", "channel_toys", NS_VALID_OPTIONS | NS_HAS_OPT, "3"},
{"DYNLIMIT", "channel_dynlimit", NS_VALID_NUMERIC | NS_VALID_FUNCTION | NS_HAS_OPT, neonserv_cmd_set_dynlimit},
{"NODELETE", "channel_nodelete", NS_VALID_BOOLEAN | NS_VALID_FUNCTION, neonserv_cmd_set_nodelete},
+ {"BACKUPBOT", NULL, NS_VALID_BOOLEAN | NS_VALID_FUNCTION, neonserv_cmd_set_backupbot},
{NULL, NULL, 0, NULL}
};
while(channel_settings[i].setting) {
if(!stricmp(channel_settings[i].setting, argv[0]) && (!(channel_settings[i].valid & NS_VALID_IF_HALFOP) || with_halfops)) {
//setting found
+ if(!stricmp(channel_settings[i].setting, "BACKUPBOT")) {
+ char setting[128];
+ sprintf(setting, "modules.%s.channel_backup_setting", get_module_name(module_id));
+ if(!get_int_field(setting)) {
+ i++;
+ continue;
+ }
+ }
if(channel_settings[i].valid & NS_VALID_FUNCTION) {
neonserv_cmd_set_function *func = channel_settings[i].parameter;
func(client, user, chan, event, channel_settings[i].setting, args);
struct Table *table;
char *content[2];
int with_halfops = get_int_field("General.have_halfop");
+ int channel_backup_setting;
i = 0;
j = 0;
while(channel_settings[i].setting) {
i++;
continue;
}
+ if(!stricmp(channel_settings[i].setting, "BACKUPBOT")) {
+ char setting[128];
+ sprintf(setting, "modules.%s.channel_backup_setting", get_module_name(module_id));
+ channel_backup_setting = get_int_field(setting);
+ if(!channel_backup_setting) {
+ i++;
+ j++;
+ continue;
+ }
+ }
if(channel_settings[i].chanfield)
querypos += sprintf(query + querypos, ", `%s`", channel_settings[i].chanfield);
i++;
i++;
continue;
}
+ if(!stricmp(channel_settings[i].setting, "BACKUPBOT") && !channel_backup_setting) {
+ i++;
+ continue;
+ }
if(channel_settings[i].chanfield) {
j++;
org_value = (row[j] ? row[j] : defaults[j]);
return value;
}
+static char* neonserv_cmd_set_backupbot(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument) {
+ int backupbot;
+ //get current trigger
+ MYSQL_RES *res;
+ printf_mysql_query("SELECT `botid` FROM `bot_channels` LEFT JOIN `bots` ON `botid` = `bots`.`id` WHERE `chanid` = '%d' AND `botclass` = '%d'", chan->channel_id, NEONBACKUP_BOTID);
+ res = mysql_use();
+ if(mysql_fetch_row(res))
+ backupbot = 1;
+ else
+ backupbot = 0;
+ if(argument) {
+ //change the channel setting
+ if(!strcmp(argument, "0") || !strcmp(argument, "off") || !strcmp(argument, get_language_string(user, "NS_SET_OFF"))) {
+ if(backupbot) {
+ module_global_cmd_unregister_neonbackup(chan->name);
+ backupbot = 0;
+ }
+ } else if(!strcmp(argument, "1") || !strcmp(argument, "on") || !strcmp(argument, get_language_string(user, "NS_SET_ON"))) {
+ if(!backupbot) {
+ module_global_cmd_register_neonbackup(chan->name);
+ backupbot = 1;
+ }
+ } else {
+ reply(getTextBot(), user, "NS_SET_INVALID_BOOLEAN", argument);
+ return NULL;
+ }
+ logEvent(event);
+ }
+ if(setting) {
+ reply(getTextBot(), user, "\002%s\002 %s", setting, (backupbot ? "1" : "0"));
+ }
+ return (backupbot ? "1" : "0");
+}
+
#undef MAX_QUERY_LEN