DoEscapeString changed to string for first argument.

RunQuery changed to string for first argument, removed len argument.
This commit is contained in:
Arthur Ice
2013-05-25 21:22:08 -07:00
parent 815c3dc73f
commit 1b9004445d
61 changed files with 5514 additions and 5125 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ namespace ItemField {
enum {
source=0,
#define F(x) x,
#include "item_fieldlist.h"
#include "item_fieldlist.h"
#undef F
updated
};
+550 -716
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -216,12 +216,12 @@ public:
const char *GetRaidLeaderName(uint32 rid);
/*
* Database Varaibles
* Database Variables
*/
bool GetVariable(const char* varname, char* varvalue, uint16 varvalue_len);
bool SetVariable(const char* varname, const char* varvalue);
bool LoadVariables();
uint32 LoadVariables_MQ(char** query);
void LoadVariables_MQ(std::string& query);
bool LoadVariables_result(MYSQL_RES* result);
/*
@@ -256,7 +256,7 @@ private:
void DBInitVars();
uint32 max_zonename;
char** zonename_array;
public: char** zonename_array;
Mutex Mvarcache;
uint32 varcache_max;
+9 -21
View File
@@ -29,9 +29,11 @@ bool DBAsyncCB_LoadVariables(DBAsyncWork* iWork) {
}
void AsyncLoadVariables(DBAsync *dba, Database *db) {
char* query = 0;
std::string query;
DBAsyncWork* dbaw = new DBAsyncWork(db, &DBAsyncCB_LoadVariables, 0, DBAsync::Read);
dbaw->AddQuery(0, &query, db->LoadVariables_MQ(&query));
db->LoadVariables_MQ(query);
dbaw->AddQuery(0, query);
dba->AddWork(&dbaw);
}
@@ -466,8 +468,8 @@ bool DBAsyncWork::AddQuery(DBAsyncQuery** iDBAQ) {
return ret;
}
bool DBAsyncWork::AddQuery(uint32 iQPT, char** iQuery, uint32 iQueryLen, bool iGetResultSet, bool iGetErrbuf) {
DBAsyncQuery* DBAQ = new DBAsyncQuery(iQPT, iQuery, iQueryLen, iGetResultSet, iGetErrbuf);
bool DBAsyncWork::AddQuery(uint32 iQPT, std::string iQuery, bool iGetResultSet, bool iGetErrbuf) {
DBAsyncQuery* DBAQ = new DBAsyncQuery(iQPT, iQuery, iGetResultSet, iGetErrbuf);
if (AddQuery(&DBAQ))
return true;
else {
@@ -587,24 +589,11 @@ void DBAsyncWork::PushAnswer(DBAsyncQuery* iDBAQ) {
}
DBAsyncQuery::DBAsyncQuery(uint32 iQPT, char** iQuery, uint32 iQueryLen, bool iGetResultSet, bool iGetErrbuf) {
if (iQueryLen == 0xFFFFFFFF)
pQueryLen = strlen(*iQuery);
else
pQueryLen = iQueryLen;
pQuery = *iQuery;
*iQuery = 0;
DBAsyncQuery::DBAsyncQuery(uint32 iQPT, std::string iQuery, bool iGetResultSet, bool iGetErrbuf) {
pQuery = iQuery;
Init(iQPT, iGetResultSet, iGetErrbuf);
}
DBAsyncQuery::DBAsyncQuery(uint32 iQPT, const char* iQuery, uint32 iQueryLen, bool iGetResultSet, bool iGetErrbuf) {
if (iQueryLen == 0xFFFFFFFF)
pQueryLen = strlen(iQuery);
else
pQueryLen = iQueryLen;
pQuery = strn0cpy(new char[pQueryLen+1], iQuery, pQueryLen+1);
Init(iQPT, iGetResultSet, iGetErrbuf);
}
void DBAsyncQuery::Init(uint32 iQPT, bool iGetResultSet, bool iGetErrbuf) {
pstatus = DBAsync::AddingWork;
@@ -622,7 +611,6 @@ void DBAsyncQuery::Init(uint32 iQPT, bool iGetResultSet, bool iGetErrbuf) {
DBAsyncQuery::~DBAsyncQuery() {
safe_delete_array(perrbuf);
safe_delete_array(pQuery);
if (presult)
mysql_free_result(presult);
}
@@ -663,7 +651,7 @@ void DBAsyncQuery::Process(DBcore* iDBC) {
MYSQL_RES** resultPP = 0;
if (pGetResultSet)
resultPP = &presult;
pmysqlsuccess = iDBC->RunQuery(pQuery, pQueryLen, perrbuf, resultPP, &paffected_rows, &plast_insert_id, &perrnum);
pmysqlsuccess = iDBC->RunQuery(pQuery, perrbuf, resultPP, &paffected_rows, &plast_insert_id, &perrnum);
pstatus = DBAsync::Finished;
}
+3 -5
View File
@@ -96,7 +96,7 @@ public:
~DBAsyncWork();
bool AddQuery(DBAsyncQuery** iDBAQ);
bool AddQuery(uint32 iQPT, char** iQuery, uint32 iQueryLen = 0xFFFFFFFF, bool iGetResultSet = true, bool iGetErrbuf = true);
bool AddQuery(uint32 iQPT, std::string iQuery, bool iGetResultSet = true, bool iGetErrbuf = true);
uint32 WPT();
DBAsync::Type Type();
@@ -140,8 +140,7 @@ private:
// Container class for the query information
class DBAsyncQuery {
public:
DBAsyncQuery(uint32 iQPT, char** iQuery, uint32 iQueryLen = 0xFFFFFFFF, bool iGetResultSet = true, bool iGetErrbuf = true);
DBAsyncQuery(uint32 iQPT, const char* iQuery, uint32 iQueryLen = 0xFFFFFFFF, bool iGetResultSet = true, bool iGetErrbuf = true);
DBAsyncQuery(uint32 iQPT, std::string iQuery, bool iGetResultSet = true, bool iGetErrbuf = true);
~DBAsyncQuery();
bool GetAnswer(char* errbuf = 0, MYSQL_RES** result = 0, uint32* affected_rows = 0, uint32* last_insert_id = 0, uint32* errnum = 0);
@@ -155,8 +154,7 @@ protected:
void Init(uint32 iQPT, bool iGetResultSet, bool iGetErrbuf);
DBAsync::Status pstatus;
char* pQuery;
uint32 pQueryLen;
std::string pQuery;
bool pGetResultSet;
bool pGetErrbuf;
+10 -6
View File
@@ -12,6 +12,7 @@
#include <string.h>
#include "../common/MiscFunctions.h"
#include <cstdlib>
#include <string>
#ifdef _WINDOWS
#define snprintf _snprintf
@@ -58,7 +59,7 @@ void DBcore::ping() {
MDatabase.unlock();
}
bool DBcore::RunQuery(const char* query, uint32 querylen, char* errbuf, MYSQL_RES** result, uint32* affected_rows, uint32* last_insert_id, uint32* errnum, bool retry) {
bool DBcore::RunQuery(const std::string query, char* errbuf, MYSQL_RES** result, uint32* affected_rows, uint32* last_insert_id, uint32* errnum, bool retry) {
_CP(DBcore_RunQuery);
if (errnum)
*errnum = 0;
@@ -70,16 +71,16 @@ bool DBcore::RunQuery(const char* query, uint32 querylen, char* errbuf, MYSQL_RE
Open();
#if DEBUG_MYSQL_QUERIES >= 1
char tmp[120];
strn0cpy(tmp, query, sizeof(tmp));
strn0cpy(tmp, query.c_str(), sizeof(tmp));
std::cout << "QUERY: " << tmp << std::endl;
#endif
if (mysql_real_query(&mysql, query, querylen)) {
if (mysql_real_query(&mysql, query.c_str(), query.length())) {
if (mysql_errno(&mysql) == CR_SERVER_GONE_ERROR)
pStatus = Error;
if (mysql_errno(&mysql) == CR_SERVER_LOST || mysql_errno(&mysql) == CR_SERVER_GONE_ERROR) {
if (retry) {
std::cout << "Database Error: Lost connection, attempting to recover...." << std::endl;
ret = RunQuery(query, querylen, errbuf, result, affected_rows, last_insert_id, errnum, false);
ret = RunQuery(query, errbuf, result, affected_rows, last_insert_id, errnum, false);
if (ret)
std::cout << "Reconnection to database successful." << std::endl;
}
@@ -152,10 +153,13 @@ bool DBcore::RunQuery(const char* query, uint32 querylen, char* errbuf, MYSQL_RE
return ret;
}
uint32 DBcore::DoEscapeString(char* tobuf, const char* frombuf, uint32 fromlen) {
void DBcore::DoEscapeString(std::string& outString, const char* frombuf, uint32 fromlen) {
// No good reason to lock the DB, we only need it in the first place to check char encoding.
// LockMutex lock(&MDatabase);
return mysql_real_escape_string(&mysql, tobuf, frombuf, fromlen);
char* tobuf = new char[sizeof(frombuf)*fromlen]();
mysql_real_escape_string(&mysql, tobuf, frombuf, fromlen);
outString.assign(tobuf,sizeof(frombuf)*fromlen);
safe_delete_array(tobuf);
}
bool DBcore::Open(const char* iHost, const char* iUser, const char* iPassword, const char* iDatabase,uint32 iPort, uint32* errnum, char* errbuf, bool iCompress, bool iSSL) {
+4 -2
View File
@@ -7,6 +7,8 @@
//#include <winsock.h>
#endif
#include <mysql.h>
#include <string>
#include "../common/DBMemLeak.h"
#include "../common/types.h"
#include "../common/Mutex.h"
@@ -22,8 +24,8 @@ public:
DBcore();
~DBcore();
eStatus GetStatus() { return pStatus; }
bool RunQuery(const char* query, uint32 querylen, char* errbuf = 0, MYSQL_RES** result = 0, uint32* affected_rows = 0, uint32* last_insert_id = 0, uint32* errnum = 0, bool retry = true);
uint32 DoEscapeString(char* tobuf, const char* frombuf, uint32 fromlen);
bool RunQuery(const std::string query, char* errbuf = 0, MYSQL_RES** result = 0, uint32* affected_rows = 0, uint32* last_insert_id = 0, uint32* errnum = 0, bool retry = true);
void DoEscapeString(std::string& outString, const char* frombuf, uint32 fromlen);
void ping();
MYSQL* getMySQL(){ return &mysql; }
+1 -6
View File
@@ -1,16 +1,11 @@
#include <iostream>
#include <string>
#include <cstdarg>
#include <string>
#include <time.h>
#ifdef _WINDOWS
#include <process.h>
#define snprintf _snprintf
#define vsnprintf _vsnprintf
#define strncasecmp _strnicmp
#define strcasecmp _stricmp
#else
#include <sys/types.h>
+185 -236
View File
@@ -50,32 +50,32 @@ bool BaseGuildManager::LoadGuilds() {
}
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
std::map<uint32, GuildInfo *>::iterator res;
StringFormat(query, "SELECT id, name, leader, minstatus, motd, motd_setter,channel, url FROM guilds");
// load up all the guilds
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"SELECT id, name, leader, minstatus, motd, motd_setter,channel,url FROM guilds"), errbuf, &result)) {
_log(GUILDS__ERROR, "Error loading guilds '%s': %s", query, errbuf);
safe_delete_array(query);
if (!m_db->RunQuery(query, errbuf, &result)) {
_log(GUILDS__ERROR, "Error loading guilds '%s': %s", query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
while ((row = mysql_fetch_row(result))) {
_CreateGuild(atoi(row[0]), row[1], atoi(row[2]), atoi(row[3]), row[4], row[5], row[6], row[7]);
}
mysql_free_result(result);
StringFormat(query,"SELECT guild_id, rank, title, can_hear, can_speak, can_invite, can_remove, can_promote,"
"can_demote, can_motd, can_warpeace FROM guild_ranks");
//load up the rank info for each guild.
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"SELECT guild_id,rank,title,can_hear,can_speak,can_invite,can_remove,can_promote,can_demote,can_motd,can_warpeace FROM guild_ranks"), errbuf, &result)) {
_log(GUILDS__ERROR, "Error loading guild ranks '%s': %s", query, errbuf);
safe_delete_array(query);
if (!m_db->RunQuery(query, errbuf, &result)) {
_log(GUILDS__ERROR, "Error loading guild ranks '%s': %s", query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
while ((row = mysql_fetch_row(result))) {
uint32 guild_id = atoi(row[0]);
uint8 rankn = atoi(row[1]);
@@ -114,20 +114,21 @@ bool BaseGuildManager::RefreshGuild(uint32 guild_id) {
}
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
std::map<uint32, GuildInfo *>::iterator res;
GuildInfo *info;
// load up all the guilds
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"SELECT name, leader, minstatus, motd, motd_setter, channel,url FROM guilds WHERE id=%lu", (unsigned long)guild_id), errbuf, &result)) {
_log(GUILDS__ERROR, "Error reloading guilds '%s': %s", query, errbuf);
safe_delete_array(query);
StringFormat(query,"SELECT name, leader, minstatus, motd, motd_setter, channel, url"
" FROM guilds WHERE id=%lu", (unsigned long)guild_id);
if (!m_db->RunQuery(query, errbuf, &result)) {
_log(GUILDS__ERROR, "Error reloading guilds '%s': %s", query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
if ((row = mysql_fetch_row(result))) {
//delete the old entry and create the new one.
info = _CreateGuild(guild_id, row[0], atoi(row[1]), atoi(row[2]), row[3], row[4], row[5], row[6]);
@@ -138,14 +139,13 @@ bool BaseGuildManager::RefreshGuild(uint32 guild_id) {
mysql_free_result(result);
//load up the rank info for each guild.
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"SELECT guild_id,rank,title,can_hear,can_speak,can_invite,can_remove,can_promote,can_demote,can_motd,can_warpeace "
"FROM guild_ranks WHERE guild_id=%lu", (unsigned long)guild_id), errbuf, &result)) {
_log(GUILDS__ERROR, "Error reloading guild ranks '%s': %s", query, errbuf);
safe_delete_array(query);
StringFormat(query,"SELECT guild_id,rank,title,can_hear,can_speak,can_invite,can_remove,can_promote,can_demote,can_motd,can_warpeace "
"FROM guild_ranks WHERE guild_id=%lu", (unsigned long)guild_id);
if (!m_db->RunQuery(query, errbuf, &result)) {
_log(GUILDS__ERROR, "Error reloading guild ranks '%s': %s", query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
while((row = mysql_fetch_row(result))) {
uint8 rankn = atoi(row[1]);
@@ -232,77 +232,62 @@ bool BaseGuildManager::_StoreGuildDB(uint32 guild_id) {
GuildInfo *info = res->second;
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
//clear out old `guilds` entry
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"DELETE FROM guilds WHERE id=%lu", (unsigned long)guild_id), errbuf))
{
_log(GUILDS__ERROR, "Error clearing old guild record when storing %d '%s': %s", guild_id, query, errbuf);
StringFormat(query, "DELETE FROM guilds WHERE id=%lu", (unsigned long)guild_id);
if (!m_db->RunQuery(query, errbuf)) {
_log(GUILDS__ERROR, "Error clearing old guild record when storing %d '%s': %s", guild_id, query.c_str(), errbuf);
}
safe_delete_array(query);
//clear out old `guild_ranks` entries
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"DELETE FROM guild_ranks WHERE guild_id=%lu", (unsigned long)guild_id), errbuf))
{
_log(GUILDS__ERROR, "Error clearing old guild_ranks records when storing %d '%s': %s", guild_id, query, errbuf);
StringFormat(query, "DELETE FROM guild_ranks WHERE guild_id=%lu", (unsigned long)guild_id);
if (!m_db->RunQuery(query, errbuf)) {
_log(GUILDS__ERROR, "Error clearing old guild_ranks records when storing %d '%s': %s", guild_id, query.c_str(), errbuf);
}
safe_delete_array(query);
//escape our strings.
char *name_esc = new char[info->name.length()*2+1];
char *motd_esc = new char[info->motd.length()*2+1];
char *motd_set_esc = new char[info->motd_setter.length()*2+1];
std::string name_esc;
std::string motd_esc;
std::string motd_set_esc;
m_db->DoEscapeString(name_esc, info->name.c_str(), info->name.length());
m_db->DoEscapeString(motd_esc, info->motd.c_str(), info->motd.length());
m_db->DoEscapeString(motd_set_esc, info->motd_setter.c_str(), info->motd_setter.length());
//insert the new `guilds` entry
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"INSERT INTO guilds (id,name,leader,minstatus,motd,motd_setter) VALUES(%lu,'%s',%lu,%d,'%s', '%s')",
(unsigned long)guild_id, name_esc, (unsigned long)info->leader_char_id, info->minstatus, motd_esc, motd_set_esc), errbuf))
StringFormat(query, "INSERT INTO guilds (id,name,leader,minstatus,motd,motd_setter) VALUES(%lu,'%s',%lu,%d,'%s', '%s')",
(unsigned long)guild_id, name_esc.c_str(), (unsigned long)info->leader_char_id, info->minstatus, motd_esc.c_str(), motd_set_esc.c_str());
if (!m_db->RunQuery(query, errbuf))
{
_log(GUILDS__ERROR, "Error inserting new guild record when storing %d. Giving up. '%s': %s", guild_id, query, errbuf);
safe_delete_array(query);
safe_delete_array(name_esc);
safe_delete_array(motd_esc);
safe_delete_array(motd_set_esc);
_log(GUILDS__ERROR, "Error inserting new guild record when storing %d. Giving up. '%s': %s", guild_id, query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
safe_delete_array(name_esc);
safe_delete_array(motd_esc);
safe_delete_array(motd_set_esc);
//now insert the new ranks
uint8 rank;
for(rank = 0; rank <= GUILD_MAX_RANK; rank++) {
const RankInfo &r = info->ranks[rank];
char *title_esc = new char[r.name.length()*2+1];
std::string title_esc;
m_db->DoEscapeString(title_esc, r.name.c_str(), r.name.length());
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"INSERT INTO guild_ranks (guild_id,rank,title,can_hear,can_speak,can_invite,can_remove,can_promote,can_demote,can_motd,can_warpeace)"
" VALUES(%d,%d,'%s',%d,%d,%d,%d,%d,%d,%d,%d)",
guild_id, rank, title_esc,
r.permissions[GUILD_HEAR],
r.permissions[GUILD_SPEAK],
r.permissions[GUILD_INVITE],
r.permissions[GUILD_REMOVE],
r.permissions[GUILD_PROMOTE],
r.permissions[GUILD_DEMOTE],
r.permissions[GUILD_MOTD],
r.permissions[GUILD_WARPEACE]), errbuf))
{
_log(GUILDS__ERROR, "Error inserting new guild rank record when storing %d for %d. Giving up. '%s': %s", rank, guild_id, query, errbuf);
safe_delete_array(query);
safe_delete_array(title_esc);
StringFormat(query,"INSERT INTO guild_ranks (guild_id,rank,title,can_hear,can_speak,can_invite,can_remove,can_promote,can_demote,can_motd,can_warpeace)"
" VALUES(%d,%d,'%s',%d,%d,%d,%d,%d,%d,%d,%d)",
guild_id, rank, title_esc.c_str(),
r.permissions[GUILD_HEAR],
r.permissions[GUILD_SPEAK],
r.permissions[GUILD_INVITE],
r.permissions[GUILD_REMOVE],
r.permissions[GUILD_PROMOTE],
r.permissions[GUILD_DEMOTE],
r.permissions[GUILD_MOTD],
r.permissions[GUILD_WARPEACE]);
if (!m_db->RunQuery(query, errbuf)) {
_log(GUILDS__ERROR, "Error inserting new guild rank record when storing %d for %d. Giving up. '%s': %s", rank, guild_id, query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
safe_delete_array(title_esc);
}
_log(GUILDS__DB, "Stored guild %d in the database", guild_id);
@@ -317,7 +302,7 @@ uint32 BaseGuildManager::_GetFreeGuildID() {
}
char errbuf[MYSQL_ERRMSG_SIZE];
char query[100];
std::string query;
MYSQL_RES *result;
//this has got to be one of the more retarded things I have seen.
@@ -325,9 +310,9 @@ uint32 BaseGuildManager::_GetFreeGuildID() {
uint16 x;
for (x = 1; x < MAX_NUMBER_GUILDS; x++) {
snprintf(query, 100, "SELECT id FROM guilds where id=%i;", x);
StringFormat(query,"SELECT id FROM guilds where id=%i;", x);
if (m_db->RunQuery(query, strlen(query), errbuf, &result)) {
if (m_db->RunQuery(query, errbuf, &result)) {
if (mysql_num_rows(result) == 0) {
mysql_free_result(result);
_log(GUILDS__DB, "Located free guild ID %d in the database", x);
@@ -336,7 +321,7 @@ uint32 BaseGuildManager::_GetFreeGuildID() {
mysql_free_result(result);
}
else {
LogFile->write(EQEMuLog::Error, "Error in _GetFreeGuildID query '%s': %s", query, errbuf);
LogFile->write(EQEMuLog::Error, "Error in _GetFreeGuildID query '%s': %s", query.c_str(), errbuf);
}
}
@@ -529,23 +514,23 @@ bool BaseGuildManager::DBDeleteGuild(uint32 guild_id) {
return(false);
}
char *query = 0;
std::string query;
//clear out old `guilds` entry
_RunQuery(query, MakeAnyLenString(&query,
"DELETE FROM guilds WHERE id=%lu", (unsigned long)guild_id), "clearing old guild record");
StringFormat(query,"DELETE FROM guilds WHERE id=%lu", (unsigned long)guild_id);
_RunQuery(query, "clearing old guild record");
//clear out old `guild_ranks` entries
_RunQuery(query, MakeAnyLenString(&query,
"DELETE FROM guild_ranks WHERE guild_id=%lu", (unsigned long)guild_id), "clearing old guild_ranks records");
StringFormat(query,"DELETE FROM guild_ranks WHERE guild_id=%lu", (unsigned long)guild_id);
_RunQuery(query, "clearing old guild_ranks records");
//clear out people belonging to this guild.
_RunQuery(query, MakeAnyLenString(&query,
"DELETE FROM guild_members WHERE guild_id=%lu", (unsigned long)guild_id), "clearing chars in guild");
StringFormat(query,"DELETE FROM guild_members WHERE guild_id=%lu", (unsigned long)guild_id);
_RunQuery(query, "clearing chars in guild");
// Delete the guild bank
_RunQuery(query, MakeAnyLenString(&query,
"DELETE FROM guild_bank WHERE guildid=%lu", (unsigned long)guild_id), "deleting guild bank");
StringFormat(query,"DELETE FROM guild_bank WHERE guildid=%lu", (unsigned long)guild_id);
_RunQuery(query, "deleting guild bank");
_log(GUILDS__DB, "Deleted guild %d from the database.", guild_id);
@@ -565,25 +550,22 @@ bool BaseGuildManager::DBRenameGuild(uint32 guild_id, const char* name) {
GuildInfo *info = res->second;
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
//escape our strings.
uint32 len = strlen(name);
char *esc = new char[len*2+1];
std::string esc;
m_db->DoEscapeString(esc, name, len);
//insert the new `guilds` entry
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"UPDATE guilds SET name='%s' WHERE id=%d",
esc, guild_id), errbuf))
StringFormat(query, "UPDATE guilds SET name='%s' WHERE id=%d",
esc.c_str(), guild_id);
if (!m_db->RunQuery(query, errbuf))
{
_log(GUILDS__ERROR, "Error renaming guild %d '%s': %s", guild_id, query, errbuf);
safe_delete_array(query);
safe_delete_array(esc);
_log(GUILDS__ERROR, "Error renaming guild %d '%s': %s", guild_id, query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
safe_delete_array(esc);
_log(GUILDS__DB, "Renamed guild %s (%d) to %s in database.", info->name.c_str(), guild_id, name);
@@ -605,18 +587,16 @@ bool BaseGuildManager::DBSetGuildLeader(uint32 guild_id, uint32 leader) {
GuildInfo *info = res->second;
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
//insert the new `guilds` entry
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"UPDATE guilds SET leader='%d' WHERE id=%d",
leader, guild_id), errbuf))
{
_log(GUILDS__ERROR, "Error changing leader on guild %d '%s': %s", guild_id, query, errbuf);
safe_delete_array(query);
StringFormat(query, "UPDATE guilds SET leader='%d' WHERE id=%d",
leader, guild_id);
if (!m_db->RunQuery(query, errbuf)) {
_log(GUILDS__ERROR, "Error changing leader on guild %d '%s': %s", guild_id, query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
//set the old leader to officer
if(!DBSetGuildRank(info->leader_char_id, GUILD_OFFICER))
@@ -645,30 +625,24 @@ bool BaseGuildManager::DBSetGuildMOTD(uint32 guild_id, const char* motd, const c
GuildInfo *info = res->second;
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
//escape our strings.
uint32 len = strlen(motd);
uint32 len2 = strlen(setter);
char *esc = new char[len*2+1];
char *esc_set = new char[len2*2+1];
std::string esc;
std::string esc_set;
m_db->DoEscapeString(esc, motd, len);
m_db->DoEscapeString(esc_set, setter, len2);
//insert the new `guilds` entry
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"UPDATE guilds SET motd='%s',motd_setter='%s' WHERE id=%d",
esc, esc_set, guild_id), errbuf))
{
_log(GUILDS__ERROR, "Error setting MOTD for guild %d '%s': %s", guild_id, query, errbuf);
safe_delete_array(query);
safe_delete_array(esc);
safe_delete_array(esc_set);
StringFormat(query,"UPDATE guilds SET motd='%s',motd_setter='%s' WHERE id=%d",
esc.c_str(), esc_set.c_str(), guild_id);
if (!m_db->RunQuery(query, errbuf)) {
_log(GUILDS__ERROR, "Error setting MOTD for guild %d '%s': %s", guild_id, query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
safe_delete_array(esc);
safe_delete_array(esc_set);
_log(GUILDS__DB, "Set MOTD for guild %d in the database", guild_id);
@@ -693,24 +667,23 @@ bool BaseGuildManager::DBSetGuildURL(uint32 GuildID, const char* URL)
GuildInfo *info = res->second;
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
//escape our strings.
uint32 len = strlen(URL);
char *esc = new char[len*2+1];
std::string esc;
m_db->DoEscapeString(esc, URL, len);
if (!m_db->RunQuery(query, MakeAnyLenString(&query, "UPDATE guilds SET url='%s' WHERE id=%d", esc, GuildID), errbuf))
StringFormat(query, "UPDATE guilds SET url='%s' WHERE id=%d",
esc.c_str(), GuildID);
if (!m_db->RunQuery(query, errbuf))
{
_log(GUILDS__ERROR, "Error setting URL for guild %d '%s': %s", GuildID, query, errbuf);
safe_delete_array(query);
safe_delete_array(esc);
_log(GUILDS__ERROR, "Error setting URL for guild %d '%s': %s", GuildID, query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
safe_delete_array(esc);
_log(GUILDS__DB, "Set URL for guild %d in the database", GuildID);
@@ -734,24 +707,21 @@ bool BaseGuildManager::DBSetGuildChannel(uint32 GuildID, const char* Channel)
GuildInfo *info = res->second;
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
//escape our strings.
uint32 len = strlen(Channel);
char *esc = new char[len*2+1];
std::string esc;
m_db->DoEscapeString(esc, Channel, len);
if (!m_db->RunQuery(query, MakeAnyLenString(&query, "UPDATE guilds SET channel='%s' WHERE id=%d", esc, GuildID), errbuf))
{
_log(GUILDS__ERROR, "Error setting Channel for guild %d '%s': %s", GuildID, query, errbuf);
safe_delete_array(query);
safe_delete_array(esc);
StringFormat(query,"UPDATE guilds SET channel='%s' WHERE id=%d", esc.c_str(), GuildID);
if (!m_db->RunQuery(query, errbuf)) {
_log(GUILDS__ERROR, "Error setting Channel for guild %d '%s': %s", GuildID, query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
safe_delete_array(esc);
_log(GUILDS__DB, "Set Channel for guild %d in the database", GuildID);
@@ -767,28 +737,25 @@ bool BaseGuildManager::DBSetGuild(uint32 charid, uint32 guild_id, uint8 rank) {
}
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
if(guild_id != GUILD_NONE) {
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"REPLACE INTO guild_members (char_id,guild_id,rank) VALUES(%d,%d,%d)",
charid, guild_id, rank), errbuf))
{
_log(GUILDS__ERROR, "Error Changing char %d to guild %d '%s': %s", charid, guild_id, query, errbuf);
safe_delete_array(query);
StringFormat(query, "REPLACE INTO guild_members (char_id,guild_id,rank) VALUES(%d,%d,%d)",
charid, guild_id, rank);
if (!m_db->RunQuery(query, errbuf)) {
_log(GUILDS__ERROR, "Error Changing char %d to guild %d '%s': %s", charid, guild_id, query.c_str(), errbuf);
return(false);
}
} else {
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"DELETE FROM guild_members WHERE char_id=%d",
charid), errbuf))
{
_log(GUILDS__ERROR, "Error removing char %d from guild '%s': %s", charid, guild_id, query, errbuf);
safe_delete_array(query);
}
else {
StringFormat(query, "DELETE FROM guild_members WHERE char_id=%d", charid);
if (!m_db->RunQuery(query, errbuf)) {
_log(GUILDS__ERROR, "Error removing char %d from guild '%s': %s", charid, guild_id, query.c_str(), errbuf);
return(false);
}
}
safe_delete_array(query);
_log(GUILDS__DB, "Set char %d to guild %d and rank %d in the database.", charid, guild_id, rank);
@@ -796,40 +763,38 @@ bool BaseGuildManager::DBSetGuild(uint32 charid, uint32 guild_id, uint8 rank) {
}
bool BaseGuildManager::DBSetGuildRank(uint32 charid, uint8 rank) {
char *query = 0;
return(_RunQuery(query, MakeAnyLenString(&query,
"UPDATE guild_members SET rank=%d WHERE char_id=%d",
rank, charid), "setting a guild member's rank"));
std::string query;
StringFormat(query, "UPDATE guild_members SET rank=%d WHERE char_id=%d", rank, charid);
return(_RunQuery(query, "setting a guild member's rank"));
}
bool BaseGuildManager::DBSetBankerFlag(uint32 charid, bool is_banker) {
char *query = 0;
return(_RunQuery(query, MakeAnyLenString(&query,
"UPDATE guild_members SET banker=%d WHERE char_id=%d",
is_banker?1:0, charid), "setting a guild member's banker flag"));
std::string query;
StringFormat(query, "UPDATE guild_members SET banker=%d WHERE char_id=%d",
is_banker?1:0, charid);
return(_RunQuery(query, "setting a guild member's banker flag"));
}
bool BaseGuildManager::GetBankerFlag(uint32 CharID)
{
char errbuf[MYSQL_ERRMSG_SIZE];
char* query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
if(!m_db)
return false;
if(!m_db->RunQuery(query, MakeAnyLenString(&query, "select `banker` from `guild_members` where char_id=%i LIMIT 1", CharID), errbuf, &result))
{
_log(GUILDS__ERROR, "Error retrieving banker flag '%s': %s", query, errbuf);
StringFormat(query,"select `banker` from `guild_members` where char_id=%i LIMIT 1", CharID);
safe_delete_array(query);
if(!m_db->RunQuery(query, errbuf, &result))
{
_log(GUILDS__ERROR, "Error retrieving banker flag '%s': %s", query.c_str(), errbuf);
return false;
}
safe_delete_array(query);
if(mysql_num_rows(result) != 1)
return false;
@@ -844,34 +809,31 @@ bool BaseGuildManager::GetBankerFlag(uint32 CharID)
bool BaseGuildManager::DBSetAltFlag(uint32 charid, bool is_alt)
{
char *query = 0;
std::string query;
return(_RunQuery(query, MakeAnyLenString(&query,
"UPDATE guild_members SET alt=%d WHERE char_id=%d",
is_alt?1:0, charid), "setting a guild member's alt flag"));
StringFormat(query,"UPDATE guild_members SET alt=%d WHERE char_id=%d",
is_alt?1:0, charid);
return(_RunQuery(query, "setting a guild member's alt flag"));
}
bool BaseGuildManager::GetAltFlag(uint32 CharID)
{
char errbuf[MYSQL_ERRMSG_SIZE];
char* query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
if(!m_db)
return false;
if(!m_db->RunQuery(query, MakeAnyLenString(&query, "select `alt` from `guild_members` where char_id=%i LIMIT 1", CharID), errbuf, &result))
{
_log(GUILDS__ERROR, "Error retrieving alt flag '%s': %s", query, errbuf);
StringFormat(query, "select `alt` from `guild_members` where char_id=%i LIMIT 1", CharID);
safe_delete_array(query);
if(!m_db->RunQuery(query, errbuf, &result)) {
_log(GUILDS__ERROR, "Error retrieving alt flag '%s': %s", query.c_str(), errbuf);
return false;
}
safe_delete_array(query);
if(mysql_num_rows(result) != 1)
return false;
@@ -885,10 +847,11 @@ bool BaseGuildManager::GetAltFlag(uint32 CharID)
}
bool BaseGuildManager::DBSetTributeFlag(uint32 charid, bool enabled) {
char *query = 0;
return(_RunQuery(query, MakeAnyLenString(&query,
"UPDATE guild_members SET tribute_enable=%d WHERE char_id=%d",
enabled?1:0, charid), "setting a guild member's tribute flag"));
std::string query;
StringFormat(query, "UPDATE guild_members SET tribute_enable=%d WHERE char_id=%d",
enabled?1:0, charid);
return(_RunQuery(query,"setting a guild member's tribute flag"));
}
bool BaseGuildManager::DBSetPublicNote(uint32 charid, const char* note) {
@@ -896,44 +859,38 @@ bool BaseGuildManager::DBSetPublicNote(uint32 charid, const char* note) {
return(false);
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
//escape our strings.
uint32 len = strlen(note);
char *esc = new char[len*2+1];
std::string esc;
m_db->DoEscapeString(esc, note, len);
//insert the new `guilds` entry
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
"UPDATE guild_members SET public_note='%s' WHERE char_id=%d",
esc, charid), errbuf))
{
_log(GUILDS__ERROR, "Error setting public note for char %d '%s': %s", charid, query, errbuf);
safe_delete_array(query);
safe_delete_array(esc);
StringFormat(query,"UPDATE guild_members SET public_note='%s' WHERE char_id=%d",
esc.c_str(), charid);
if (!m_db->RunQuery(query, errbuf)) {
_log(GUILDS__ERROR, "Error setting public note for char %d '%s': %s", charid, query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
safe_delete_array(esc);
_log(GUILDS__DB, "Set public not for char %d", charid);
return(true);
}
bool BaseGuildManager::_RunQuery(char *&query, int len, const char *errmsg) {
bool BaseGuildManager::_RunQuery(const std::string query, const char *errmsg) {
if(m_db == nullptr)
return(false);
char errbuf[MYSQL_ERRMSG_SIZE];
if (!m_db->RunQuery(query, len, errbuf))
if (!m_db->RunQuery(query, errbuf))
{
_log(GUILDS__ERROR, "Error %s: '%s': %s", errmsg, query, errbuf);
safe_delete_array(query);
_log(GUILDS__ERROR, "Error %s: '%s': %s", errmsg, query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
return(true);
}
@@ -986,19 +943,17 @@ bool BaseGuildManager::GetEntireGuild(uint32 guild_id, std::vector<CharGuildInfo
return(false);
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
//load up the rank info for each guild.
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
GuildMemberBaseQuery " WHERE g.guild_id=%d", guild_id
), errbuf, &result)) {
_log(GUILDS__ERROR, "Error loading guild member list '%s': %s", query, errbuf);
safe_delete_array(query);
StringFormat(query,GuildMemberBaseQuery " WHERE g.guild_id=%d", guild_id);
if (!m_db->RunQuery(query, errbuf, &result)) {
_log(GUILDS__ERROR, "Error loading guild member list '%s': %s", query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
while ((row = mysql_fetch_row(result))) {
CharGuildInfo *ci = new CharGuildInfo;
@@ -1019,26 +974,22 @@ bool BaseGuildManager::GetCharInfo(const char *char_name, CharGuildInfo &into) {
}
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
//escape our strings.
uint32 nl = strlen(char_name);
char *esc = new char[nl*2+1];
std::string esc;
m_db->DoEscapeString(esc, char_name, nl);
StringFormat(query, GuildMemberBaseQuery " WHERE c.name='%s'", esc.c_str());
//load up the rank info for each guild.
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
GuildMemberBaseQuery " WHERE c.name='%s'", esc
), errbuf, &result)) {
_log(GUILDS__ERROR, "Error loading guild member '%s': %s", query, errbuf);
safe_delete_array(query);
safe_delete_array(esc);
if (!m_db->RunQuery(query, errbuf, &result)) {
_log(GUILDS__ERROR, "Error loading guild member '%s': %s", query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
safe_delete_array(esc);
bool ret = true;
if ((row = mysql_fetch_row(result))) {
@@ -1061,23 +1012,21 @@ bool BaseGuildManager::GetCharInfo(uint32 char_id, CharGuildInfo &into) {
}
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
//load up the rank info for each guild.
if (!m_db->RunQuery(query, MakeAnyLenString(&query,
#ifdef BOTS
GuildMemberBaseQuery " WHERE c.id=%d AND c.mobtype = 'C'", char_id
StringFormat(query, GuildMemberBaseQuery " WHERE c.id=%d AND c.mobtype = 'C'", char_id);
#else
GuildMemberBaseQuery " WHERE c.id=%d", char_id
StringFormat(query, GuildMemberBaseQuery " WHERE c.id=%d", char_id);
#endif
), errbuf, &result)) {
_log(GUILDS__ERROR, "Error loading guild member '%s': %s", query, errbuf);
safe_delete_array(query);
if (!m_db->RunQuery(query, errbuf, &result)) {
_log(GUILDS__ERROR, "Error loading guild member '%s': %s", query.c_str(), errbuf);
return(false);
}
safe_delete_array(query);
bool ret = true;
if ((row = mysql_fetch_row(result))) {
@@ -1317,19 +1266,17 @@ BaseGuildManager::GuildInfo::GuildInfo() {
uint32 BaseGuildManager::DoesAccountContainAGuildLeader(uint32 AccountID)
{
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
if (!m_db->RunQuery(query,
MakeAnyLenString(&query,
"select guild_id from guild_members where char_id in (select id from character_ where account_id = %i) and rank = 2",
AccountID), errbuf, &result))
{
_log(GUILDS__ERROR, "Error executing query '%s': %s", query, errbuf);
safe_delete_array(query);
StringFormat(query, "SELECT guild_id FROM guild_members WHERE char_id in "
"(SELECT id FROM character_ WHERE account_id = %i) AND rank = 2",
AccountID);
if (!m_db->RunQuery(query, errbuf, &result)) {
_log(GUILDS__ERROR, "Error executing query '%s': %s", query.c_str(), errbuf);
return 0;
}
safe_delete_array(query);
uint32 Rows = mysql_num_rows(result);
mysql_free_result(result);
@@ -1342,7 +1289,7 @@ uint32 BaseGuildManager::DoesAccountContainAGuildLeader(uint32 AccountID)
bool Database::LoadGuilds(GuildRanks_Struct* guilds) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
// int i;
MYSQL_RES *result;
MYSQL_ROW row;
@@ -1377,10 +1324,11 @@ bool Database::LoadGuilds(GuildRanks_Struct* guilds) {
Sleep(0);
}
StringFormat(query, "SELECT id, eqid, name, leader, minstatus, rank0title, rank1, rank1title, rank2, "
"rank2title, rank3, rank3title, rank4, rank4title, rank5, rank5title FROM guilds");
if (RunQuery(query, MakeAnyLenString(&query, "SELECT id, eqid, name, leader, minstatus, rank0title, rank1, rank1title, rank2, rank2title, rank3, rank3title, rank4, rank4title, rank5, rank5title from guilds"), errbuf, &result)) {
if (RunQuery(query,errbuf, &result)) {
safe_delete_array(query);
uint32 guildeqid = 0xFFFFFFFF;
while ((row = mysql_fetch_row(result))) {
guildeqid = atoi(row[1]);
@@ -1436,7 +1384,6 @@ bool Database::LoadGuilds(GuildRanks_Struct* guilds) {
else
{
cerr << "Error in LoadGuilds query '" << query << "' " << errbuf << endl;
safe_delete_array(query);
return false;
}
@@ -1446,13 +1393,13 @@ bool Database::LoadGuilds(GuildRanks_Struct* guilds) {
void Database::SetPublicNote(uint32 guild_id,char* charname, char* note){
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
char* notebuf = new char[(strlen(note)*2)+3];
DoEscapeString(notebuf, note, strlen(note)) ;
if (!RunQuery(query, MakeAnyLenString(&query, "update character_ set publicnote='%s' where name='%s' and guild=%i", notebuf,charname,guild_id), errbuf)) {
StringFormat(query,"update character_ set publicnote='%s' where name='%s' and guild=%i", notebuf,charname,guild_id);
if (!RunQuery(query, errbuf)) {
cerr << "Error running SetPublicNote query: " << errbuf << endl;
}
safe_delete_array(query);
safe_delete_array(notebuf);
}
@@ -1460,13 +1407,16 @@ void Database::SetPublicNote(uint32 guild_id,char* charname, char* note){
bool Database::GetGuildRanks(uint32 guildeqid, GuildRanks_Struct* gr) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
if (RunQuery(query, MakeAnyLenString(&query, "SELECT id, eqid, name, leader, minstatus, rank0title, rank1, rank1title, rank2, rank2title, rank3, rank3title, rank4, rank4title, rank5, rank5title from guilds where eqid=%i;", guildeqid), errbuf, &result))
StringFormat(query, "SELECT id, eqid, name, leader, minstatus, rank0title, rank1, rank1title, "
"rank2, rank2title, rank3, rank3title, rank4, rank4title, rank5, rank5title "
"FROM guilds WHERE eqid=%i;", guildeqid);
if (RunQuery(query, errbuf, &result))
{
safe_delete_array(query);
if (mysql_num_rows(result) == 1) {
row = mysql_fetch_row(result);
gr->leader = atoi(row[3]);
@@ -1545,7 +1495,6 @@ bool Database::GetGuildRanks(uint32 guildeqid, GuildRanks_Struct* gr) {
}
else {
cerr << "Error in GetGuildRank query '" << query << "' " << errbuf << endl;
safe_delete_array(query);
return false;
}
+1 -1
View File
@@ -108,7 +108,7 @@ protected:
bool DBSetAltFlag(uint32 charid, bool is_alt);
bool DBSetTributeFlag(uint32 charid, bool enabled);
bool DBSetPublicNote(uint32 charid, const char *note);
bool _RunQuery(char *&query, int len, const char *errmsg);
bool _RunQuery(const std::string query, const char *errmsg);
// void DBSetPublicNote(uint32 guild_id,char* charname, char* note);
bool LocalDeleteGuild(uint32 guild_id);
+31 -40
View File
@@ -130,25 +130,24 @@ bool PersistentTimer::Load(Database *db) {
char errbuf[MYSQL_ERRMSG_SIZE];
MYSQL_RES *result;
MYSQL_ROW row;
char *query = 0;
std::string query;
uint32 qlen = 0;
uint32 qcount = 0;
qlen = MakeAnyLenString(&query, "SELECT start,duration,enable "
" FROM timers WHERE char_id=%lu AND type=%u", (unsigned long)_char_id, _type);
StringFormat(query, "SELECT start,duration,enable "
" FROM timers WHERE char_id=%lu AND type=%u",
(unsigned long)_char_id, _type);
#ifdef DEBUG_PTIMERS
printf("Loading timer: char %lu of type %u\n", (unsigned long)_char_id, _type);
#endif
if (!db->RunQuery(query, qlen, errbuf, &result)) {
safe_delete_array(query);
if (!db->RunQuery(query, errbuf, &result)) {
#if EQDEBUG > 5
LogFile->write(EQEMuLog::Error, "Error in PersistentTimer::Load, error: %s", errbuf);
#endif
return(false);
}
safe_delete_array(query);
bool res = false;
qcount = mysql_num_rows(result);
@@ -169,55 +168,51 @@ bool PersistentTimer::Store(Database *db) {
return(true);
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
uint32 qlen = 0;
qlen = MakeAnyLenString(&query, "REPLACE INTO timers "
" (char_id,type,start,duration,enable) "
" VALUES(%lu,%u,%lu,%lu,%d)",
(unsigned long)_char_id, _type, (unsigned long)start_time, (unsigned long)timer_time, enabled?1:0);
StringFormat(query, "REPLACE INTO timers "
"(char_id, type, start, duration, enable) "
"VALUES (%lu, %u, %lu, %lu, %d) ",
(unsigned long)_char_id, _type, (unsigned long)start_time,
(unsigned long)timer_time, enabled?1:0);
#ifdef DEBUG_PTIMERS
printf("Storing timer: char %lu of type %u: '%s'\n", (unsigned long)_char_id, _type, query);
#endif
if (!db->RunQuery(query, qlen, errbuf)) {
safe_delete_array(query);
if (!db->RunQuery(query, errbuf)) {
#if EQDEBUG > 5
LogFile->write(EQEMuLog::Error, "Error in PersistentTimer::Store, error: %s", errbuf);
#endif
return(false);
}
safe_delete_array(query);
return(true);
}
bool PersistentTimer::Clear(Database *db) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
uint32 qlen = 0;
qlen = MakeAnyLenString(&query, "DELETE FROM timers "
" WHERE char_id=%lu AND type=%u ",
(unsigned long)_char_id, _type);
StringFormat(query, "DELETE FROM timers "
" WHERE char_id=%lu AND type=%u ",
(unsigned long)_char_id, _type);
#ifdef DEBUG_PTIMERS
printf("Clearing timer: char %lu of type %u: '%s'\n", (unsigned long)_char_id, _type, query);
#endif
if (!db->RunQuery(query, qlen, errbuf)) {
safe_delete_array(query);
if (!db->RunQuery(query, errbuf)) {
#if EQDEBUG > 5
LogFile->write(EQEMuLog::Error, "Error in PersistentTimer::Clear, error: %s", errbuf);
#endif
return(false);
}
safe_delete_array(query);
return(true);
}
/* This function checks if the timer triggered */
@@ -312,25 +307,24 @@ bool PTimerList::Load(Database *db) {
char errbuf[MYSQL_ERRMSG_SIZE];
MYSQL_RES *result;
MYSQL_ROW row;
char *query = 0;
std::string query;
uint32 qlen = 0;
uint32 qcount = 0;
qlen = MakeAnyLenString(&query, "SELECT type,start,duration,enable "
" FROM timers WHERE char_id=%lu", (unsigned long)_char_id);
StringFormat(query, "SELECT type,start,duration,enable "
"FROM timers WHERE char_id=%lu",
(unsigned long)_char_id);
#ifdef DEBUG_PTIMERS
printf("Loading all timers for char %lu\n", (unsigned long)_char_id);
#endif
if (!db->RunQuery(query, qlen, errbuf, &result)) {
safe_delete_array(query);
if (!db->RunQuery(query, errbuf, &result)) {
#if EQDEBUG > 5
LogFile->write(EQEMuLog::Error, "Error in PersistentTimer::Load, error: %s", errbuf);
#endif
return(false);
}
safe_delete_array(query);
pTimerType type;
uint32 start_time, timer_time;
@@ -382,24 +376,23 @@ bool PTimerList::Clear(Database *db) {
_list.clear();
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
uint32 qlen = 0;
qlen = MakeAnyLenString(&query, "DELETE FROM timers "
" WHERE char_id=%lu ", (unsigned long)_char_id);
StringFormat(query, "DELETE FROM timers "
"WHERE char_id=%lu ",
(unsigned long)_char_id);
#ifdef DEBUG_PTIMERS
printf("Storing all timers for char %lu: '%s'\n", (unsigned long)_char_id, query);
#endif
if (!db->RunQuery(query, qlen, errbuf)) {
safe_delete_array(query);
if (!db->RunQuery(query, errbuf)) {
#if EQDEBUG > 5
LogFile->write(EQEMuLog::Error, "Error in PersistentTimer::Clear, error: %s", errbuf);
#endif
return(false);
}
safe_delete_array(query);
return(true);
}
@@ -480,23 +473,21 @@ void PTimerList::ToVector(std::vector< std::pair<pTimerType, PersistentTimer *>
bool PTimerList::ClearOffline(Database *db, uint32 char_id, pTimerType type) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
uint32 qlen = 0;
std::string query;
qlen = MakeAnyLenString(&query, "DELETE FROM timers WHERE char_id=%lu AND type=%u ",(unsigned long)char_id, type);
StringFormat(query, "DELETE FROM timers WHERE char_id=%lu AND type=%u ",
(unsigned long)char_id, type);
#ifdef DEBUG_PTIMERS
printf("Clearing timer (offline): char %lu of type %u: '%s'\n", (unsigned long)char_id, type, query);
#endif
if (!db->RunQuery(query, qlen, errbuf)) {
safe_delete_array(query);
if (!db->RunQuery(query, errbuf)) {
#if EQDEBUG > 5
LogFile->write(EQEMuLog::Error, "Error in PTimerList::ClearOffline, error: %s", errbuf);
#endif
return(false);
}
safe_delete_array(query);
return(true);
+43 -47
View File
@@ -267,7 +267,7 @@ void RuleManager::SaveRules(Database *db, const char *ruleset) {
bool RuleManager::LoadRules(Database *db, const char *ruleset) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
@@ -282,20 +282,20 @@ bool RuleManager::LoadRules(Database *db, const char *ruleset) {
m_activeRuleset = rsid;
m_activeName = ruleset;
if (db->RunQuery(query, MakeAnyLenString(&query,
StringFormat(query,
"SELECT rule_name, rule_value"
" FROM rule_values"
" WHERE ruleset_id=%d", rsid), errbuf, &result))
" WHERE ruleset_id=%d", rsid);
if (db->RunQuery(query, errbuf, &result))
{
safe_delete_array(query);
while((row = mysql_fetch_row(result))) {
if(!SetRule(row[0], row[1], nullptr, false))
_log(RULES__ERROR, "Unable to interpret rule record for %s", row[0]);
}
mysql_free_result(result);
} else {
safe_delete_array(query);
LogFile->write(EQEMuLog::Error, "Error in LoadRules query %s: %s", query, errbuf);
LogFile->write(EQEMuLog::Error, "Error in LoadRules query %s: %s", query.c_str(), errbuf);
return(false);
}
@@ -318,44 +318,44 @@ void RuleManager::_SaveRule(Database *db, RuleType type, uint16 index) {
}
char errbuf[MYSQL_ERRMSG_SIZE];
char* query = 0;
if (!db->RunQuery(query, MakeAnyLenString(&query,
"REPLACE INTO rule_values (ruleset_id, rule_name, rule_value) "
std::string query;
StringFormat(query,"REPLACE INTO rule_values (ruleset_id, rule_name, rule_value) "
" VALUES(%d, '%s', '%s')",
m_activeRuleset, _GetRuleName(type, index), vstr),errbuf))
m_activeRuleset, _GetRuleName(type, index), vstr);
if (!db->RunQuery(query, errbuf))
{
_log(RULES__ERROR, "Fauled to set rule in the database: %s: %s", query,errbuf);
_log(RULES__ERROR, "Fauled to set rule in the database: %s: %s", query.c_str(),errbuf);
}
safe_delete_array(query);
}
int RuleManager::GetRulesetID(Database *db, const char *rulesetname) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
uint32 len = strlen(rulesetname);
char* rst = new char[2*len+1];
std::string rst;
db->DoEscapeString(rst, rulesetname, len);
int res = -1;
if (db->RunQuery(query, MakeAnyLenString(&query,
"SELECT ruleset_id"
" FROM rule_sets"
" WHERE name='%s'", rst), errbuf, &result))
StringFormat(query,"SELECT ruleset_id"
" FROM rule_sets"
" WHERE name='%s'", rst.c_str());
if (db->RunQuery(query, errbuf, &result))
{
if((row = mysql_fetch_row(result))) {
res = atoi(row[0]);
}
mysql_free_result(result);
} else {
LogFile->write(EQEMuLog::Error, "Error in LoadRules query %s: %s", query, errbuf);
LogFile->write(EQEMuLog::Error, "Error in LoadRules query %s: %s", query.c_str(), errbuf);
}
safe_delete_array(query);
safe_delete_array(rst);
return(res);
}
@@ -368,73 +368,69 @@ int RuleManager::_FindOrCreateRuleset(Database *db, const char *ruleset) {
return(res); //found and existing one...
uint32 len = strlen(ruleset);
char* rst = new char[2*len+1];
std::string rst;
db->DoEscapeString(rst, ruleset, len);
uint32 new_id;
char errbuf[MYSQL_ERRMSG_SIZE];
char* query = 0;
if (!db->RunQuery(query, MakeAnyLenString(&query,
"INSERT INTO rule_sets (ruleset_id, name) "
" VALUES(0, '%s')",
rst),errbuf,nullptr,nullptr,&new_id))
std::string query;
StringFormat(query,"INSERT INTO rule_sets (ruleset_id, name) "
" VALUES(0, '%s')",rst.c_str());
if (!db->RunQuery(query,errbuf,nullptr,nullptr,&new_id))
{
_log(RULES__ERROR, "Fauled to create rule set in the database: %s: %s", query,errbuf);
_log(RULES__ERROR, "Failed to create rule set in the database: %s: %s", query.c_str(),errbuf);
res = -1;
} else {
res = new_id;
}
safe_delete_array(query);
return(res);
}
std::string RuleManager::GetRulesetName(Database *db, int id) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
std::string res;
if (db->RunQuery(query, MakeAnyLenString(&query,
"SELECT name"
" FROM rule_sets"
" WHERE ruleset_id=%d", id), errbuf, &result))
{
StringFormat(query,"SELECT name"
" FROM rule_sets"
" WHERE ruleset_id=%d", id);
if (db->RunQuery(query, errbuf, &result)){
if((row = mysql_fetch_row(result))) {
res = row[0];
}
mysql_free_result(result);
} else {
LogFile->write(EQEMuLog::Error, "Error in LoadRules query %s: %s", query, errbuf);
}
else {
LogFile->write(EQEMuLog::Error, "Error in LoadRules query %s: %s", query.c_str(), errbuf);
}
safe_delete_array(query);
return(res);
}
bool RuleManager::ListRulesets(Database *db, std::map<int, std::string> &into) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
std::string query;
MYSQL_RES *result;
MYSQL_ROW row;
//start out with the default set which is always present.
into[0] = "default";
StringFormat(query,"SELECT ruleset_id , name FROM rule_sets");
if (db->RunQuery(query, MakeAnyLenString(&query,
"SELECT ruleset_id,name"
" FROM rule_sets"), errbuf, &result))
{
if (db->RunQuery(query, errbuf, &result)) {
while((row = mysql_fetch_row(result))) {
into[ atoi(row[0]) ] = row[1];
}
mysql_free_result(result);
safe_delete_array(query);
} else {
LogFile->write(EQEMuLog::Error, "Error in ListRulesets query %s: %s", query, errbuf);
safe_delete_array(query);
}
else {
LogFile->write(EQEMuLog::Error, "Error in ListRulesets query %s: %s", query.c_str(), errbuf);
return(false);
}
return(true);
+290 -256
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -41,7 +41,7 @@ public:
bool SetHideMe(uint32 account_id, uint8 hideme);
bool GetPlayerProfile(uint32 account_id, char* name, PlayerProfile_Struct* pp, Inventory* inv, ExtendedProfile_Struct *ext, char* current_zone = 0, uint32 *current_instance = 0);
bool SetPlayerProfile(uint32 account_id, uint32 charid, PlayerProfile_Struct* pp, Inventory* inv, ExtendedProfile_Struct *ext, uint32 current_zone, uint32 current_instance, uint8 MaxXTargets);
uint32 SetPlayerProfile_MQ(char** query, uint32 account_id, uint32 charid, PlayerProfile_Struct* pp, Inventory* inv, ExtendedProfile_Struct *ext, uint32 current_zone, uint32 current_instance, uint8 MaxXTargets);
uint32 SetPlayerProfile_MQ(std::string& query, uint32 account_id, uint32 charid, PlayerProfile_Struct* pp, Inventory* inv, ExtendedProfile_Struct *ext, uint32 current_zone, uint32 current_instance, uint8 MaxXTargets);
int32 DeleteStalePlayerCorpses();
int32 DeleteStalePlayerBackups();
void GetPlayerInspectMessage(char* playername, InspectMessage_Struct* message);