command_findzone converted to QueryDatabase

This commit is contained in:
Arthur Ice 2014-10-04 10:09:20 -07:00
parent 61cd48ff44
commit 5f5fba1117

View File

@ -3141,63 +3141,48 @@ void command_findnpctype(Client *c, const Seperator *sep)
void command_findzone(Client *c, const Seperator *sep) void command_findzone(Client *c, const Seperator *sep)
{ {
if(sep->arg[1][0] == 0) if(sep->arg[1][0] == 0) {
c->Message(0, "Usage: #findzone [search criteria]"); c->Message(0, "Usage: #findzone [search criteria]");
else return;
{ }
int id;
int count;
const int maxrows = 20;
char errbuf[MYSQL_ERRMSG_SIZE];
char *query;
MYSQL_RES *result;
MYSQL_ROW row;
query = new char[256]; std::string query;
int id = atoi((const char *)sep->arg[1]);
if (id == 0) { // If id evaluates to 0, then search as if user entered a string.
char *escName = new char[strlen(sep->arg[1]) * 2 + 1];
database.DoEscapeString(escName, sep->arg[1], strlen(sep->arg[1]));
// If id evaluates to 0, then search as if user entered a string. query = StringFormat("SELECT zoneidnumber, short_name, long_name FROM zone "
if ((id = atoi((const char *)sep->arg[1])) == 0) "WHERE long_name RLIKE '%s' AND version = 0", escName);
{ safe_delete_array(escName);
char *EscName = new char[strlen(sep->arg[1]) * 2 + 1]; }
database.DoEscapeString(EscName, sep->arg[1], strlen(sep->arg[1])); else // Otherwise, look for just that zoneidnumber.
query = StringFormat("SELECT zoneidnumber, short_name, long_name FROM zone "
"WHERE zoneidnumber = %i AND version = 0", id);
MakeAnyLenString(&query, "SELECT zoneidnumber,short_name,long_name FROM zone WHERE long_name rLIKE '%s' AND version=0", auto results = database.QueryDatabase(query);
EscName); if (!results.Success()) {
safe_delete_array(EscName); c->Message (0, "Error querying database.");
} c->Message (0, query.c_str());
// Otherwise, look for just that zoneidnumber. return;
else }
MakeAnyLenString(&query, "SELECT zoneidnumber,short_name,long_name FROM zone WHERE zoneidnumber=%i AND version=0", id);
if (database.RunQuery(query, strlen(query), errbuf, &result)) int count = 0;
{ const int maxrows = 20;
count = 0;
while((row = mysql_fetch_row(result))) for(auto row = results.begin(); row != results.end(); ++row) {
{ if (++count > maxrows) {
if (++count > maxrows) c->Message (0, "%i zones shown. Too many results.", maxrows);
{ break;
c->Message (0, "%i zones shown. Too many results.", maxrows); }
break;
}
c->Message (0, " %s: %s, %s", row[0], row[1], row[2]);
}
if (count <= maxrows) c->Message (0, " %s: %s, %s", row[0], row[1], row[2]);
c->Message (0, "Query complete. %i rows shown.", count); }
else if (count == 0)
c->Message (0, "No matches found for %s.", sep->arg[1]);
mysql_free_result(result); if (count <= maxrows)
} c->Message (0, "Query complete. %i rows shown.", count);
else else if (count == 0)
{ c->Message (0, "No matches found for %s.", sep->arg[1]);
c->Message (0, "Error querying database.");
c->Message (0, query);
}
safe_delete_array(query);
}
} }
void command_viewnpctype(Client *c, const Seperator *sep) void command_viewnpctype(Client *c, const Seperator *sep)