/**************************************************************
* 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;
}