+static char* getSetting(struct UserNode *user, struct ChanNode *chan, const char *setting) {
+ char *uname = "";
+ int cid = 0;
+ MYSQL_RES *res;
+ MYSQL_ROW row;
+ if(user) {
+ uname = ((user->flags & USERFLAG_ISAUTHED) ? user->auth : "*");
+ }
+ if(chan) {
+ loadChannelSettings(chan);
+ if(chan->flags & CHANFLAG_CHAN_REGISTERED)
+ cid = chan->channel_id;
+ }
+ printf_mysql_query("SELECT `value` FROM `fundata` WHERE `user` = '%s' AND `cid` = '%d' AND `name` = '%s'", escape_string(uname), cid, escape_string(setting));
+ res = mysql_use();
+ if ((row = mysql_fetch_row(res)) != NULL) {
+ return row[0];
+ } else
+ return NULL;
+}
+
+static void setSetting(struct UserNode *user, struct ChanNode *chan, const char *setting, const char *value) {
+ char *uname = "";
+ int cid = 0;
+ MYSQL_RES *res;
+ MYSQL_ROW row;
+ if(user) {
+ uname = ((user->flags & USERFLAG_ISAUTHED) ? user->auth : "*");
+ }
+ if(chan) {
+ loadChannelSettings(chan);
+ if(chan->flags & CHANFLAG_CHAN_REGISTERED)
+ cid = chan->channel_id;
+ }
+ printf_mysql_query("SELECT `id`, `value` FROM `fundata` WHERE `user` = '%s' AND `cid` = '%d' AND `name` = '%s'", escape_string(uname), cid, escape_string(setting));
+ res = mysql_use();
+ if ((row = mysql_fetch_row(res)) != NULL) {
+ if(strcmp(row[1], value))
+ printf_mysql_query("UPDATE `fundata` SET `value` = '%s' WHERE `id` = '%s'", escape_string(value), row[0]);
+ } else
+ printf_mysql_query("INSERT INTO `fundata` (`user`, `cid`, `name`, `value`) VALUES ('%s', '%d', '%s', '%s')", escape_string(uname), cid, escape_string(setting), escape_string(value));
+}
+