/************************************************************** * FFTacticsMUD : ignore.cpp * ************************************************************** * (c) 2002 Damien Dailidenas (Trenton). All rights reserved. * **************************************************************/ #include "main.h" #include <set> #include <strstream> #include <mysql/mysql.h> void CH::ignore_add(const string name) { for(short x = 0; x < MAX_IGNORE; ++x) { if(ignore[x].empty()) { ignore[x] = name; printf("Now ignoring " + name + "!\n\r"); return; } } return; } void CH::ignore_remove(const string name) { for(short x = 0; x < MAX_IGNORE; ++x) { if(ignore[x] == name) { ignore[x] = ""; printf("No longer ignoring " + name + ".\n\r"); return; } } return; } void CH::ignore_list() { string str; set<string> s_set; set<string>::iterator x; for(short n = 0; n < MAX_IGNORE; ++n) if(!ignore[n].empty()) s_set.insert(ignore[n]); for(x = s_set.begin(); x != s_set.end(); ++x) { str += *x; if(++x != s_set.end()) str += ", "; --x; } if(s_set.empty()) return; ostrstream ost; ost << header("IGNORING") << f_str_box(str, false, false) << ends; printf(ost.str()); return; } bool CH::ignoring(const string name) { for(short x = 0; x < MAX_IGNORE; ++x) if(ignore[x] == name) return true; return false; } void CH::save_ignored() { MYSQL mysql; mysql_init(&mysql); if(npc || !mysql_real_connect(&mysql, DB_LOC, DB_USER, DB_PASS, DB_NAME, 0, NULL, 0)) return; ostrstream ost; ost << "DELETE FROM ignore_data WHERE ch='" + name + "'" << ends; mysql_query(&mysql, ost.str()); for(short x = 0; x < MAX_IGNORE; ++x) { ost.freeze(false); ost.seekp(0, ios::beg); ost << "INSERT INTO ignore_data(ch, ignored) values('" + name + "', '" + ignore[x] + "')" << ends; mysql_query(&mysql, ost.str()); } mysql_close(&mysql); return; } void CH::load_ignored() { MYSQL mysql; MYSQL_RES *res; MYSQL_ROW row; mysql_init(&mysql); if(!mysql_real_connect(&mysql, DB_LOC, DB_USER, DB_PASS, DB_NAME, 0, NULL, 0)) return; ostrstream ost; ost << "SELECT ignored FROM ignore_data WHERE ch='" << name << "'" << ends; mysql_query(&mysql, ost.str()); res = mysql_store_result(&mysql); short x = 0; while((row = mysql_fetch_row(res))) ignore[x++] = row[0]; mysql_free_result(res); mysql_close(&mysql); return; } void do_ignore(CH *ch, string argument = "") { CH *ch2 = NULL; if(argument.empty() || !(ch2 = get_ch(argument)) || ch2 == ch || ch2->npc) { ch->printf("Usage: ignore [name]\n\r"); return; } if(ch->ignoring(ch2->name)) { ch->printf("ignore: ERROR: " + ch2->name + " already ignored.\n\r"); return; } ch->ignore_add(ch2->name); return; } void do_acknowledge(CH *ch, string argument = "") { if(argument.empty() || !ch->ignoring(capitalize(argument))) { ch->printf("Usage: acknowledge [name]\n\r"); ch->ignore_list(); return; } ch->ignore_remove(capitalize(argument)); return; }