-/* cmd_neonserv_set.c - NeonServ v5.0
- * Copyright (C) 2011 Philipp Kreil (pk910)
+/* cmd_neonserv_set.c - NeonServ v5.3
+ * Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
int i, j;
if(argc && !strcmp(argv[0], "defaults")) {
//reset channel settings
- int uaccess = getChannelAccess(user, chan, 0);
+ int uaccess = getChannelAccess(user, chan);
if(uaccess < 500) {
if(isGodMode(user)) {
event->flags |= CMDFLAG_OPLOG;
reply(getTextBot(), user, "NS_INVALID_ACCESS", caccess);
return;
}
- int uaccess = getChannelAccess(user, chan, 0);
+ int uaccess = getChannelAccess(user, chan);
if(uaccess == 500) uaccess++;
if(atoi(value) > uaccess) {
if(isGodMode(user)) {
//get current trigger
MYSQL_RES *res;
MYSQL_ROW row;
- printf_mysql_query("SELECT `trigger` FROM `bot_channels` WHERE `chanid` = '%d' AND `botid` = '%d'", chan->channel_id, client->clientid);
+ printf_mysql_query("SELECT `trigger`, `defaulttrigger` FROM `bot_channels` LEFT JOIN `bots` ON `botid` = `bots`.`id` WHERE `chanid` = '%d' AND `botid` = '%d'", chan->channel_id, client->clientid);
res = mysql_use();
row = mysql_fetch_row(res);
- trigger = row[0];
+ trigger = (row[0] ? row[0] : row[1]);
if(argument) {
- int uaccess = getChannelAccess(user, chan, 0);
+ int uaccess = getChannelAccess(user, chan);
if(uaccess < 500) {
if(isGodMode(user)) {
event->flags |= CMDFLAG_OPLOG;
static char* neonserv_cmd_set_modes(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan, struct Event *event, const char *setting, char *argument) {
char *value;
+ char valueBuf[MAXLEN];
//get current value
MYSQL_RES *res;
MYSQL_ROW row;
value = row[0];
if(argument) {
//change the channel setting
- //TODO: parse, check and set modelock
+ struct ModeNode *modenode = createModeNode(NULL);
+ parseModeString(modenode, argument);
+ getFullModeString(modenode, valueBuf);
+ value = valueBuf;
+ printf_mysql_query("UPDATE `channels` SET `channel_modes` = '%s' WHERE `channel_id` = '%d'", escape_string(value), chan->channel_id);
+ //TODO: set modelock
+ freeModeNode(modenode);
}
if(setting) {
reply(getTextBot(), user, "\002%s\002 %s", setting, value);