X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fcmd_neonserv_set.c;h=f77294b149e3d864cfcf5b3231b68697bb51c159;hb=bb5692b9cbff069abbf9573c81e86c3cd2061ceb;hp=07b1cb8cb19797a7d3b024ab3ddb257b5a182071;hpb=95fed4deda0319bee515e44ceec0c77061a2c04e;p=NeonServV5.git diff --git a/src/cmd_neonserv_set.c b/src/cmd_neonserv_set.c index 07b1cb8..f77294b 100644 --- a/src/cmd_neonserv_set.c +++ b/src/cmd_neonserv_set.c @@ -1,5 +1,5 @@ -/* 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 @@ -85,7 +85,7 @@ CMD_BIND(neonserv_cmd_set) { 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; @@ -243,7 +243,7 @@ static void neonserv_cmd_set_setting(struct ClientSocket *client, struct UserNod 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)) { @@ -319,12 +319,12 @@ static char* neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNo //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; @@ -348,6 +348,7 @@ static char* neonserv_cmd_set_trigger(struct ClientSocket *client, struct UserNo 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; @@ -362,7 +363,13 @@ static char* neonserv_cmd_set_modes(struct ClientSocket *client, struct UserNode 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);