mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-13 23:28:21 +00:00
DoEscapeString changed to string for first argument.
RunQuery changed to string for first argument, removed len argument.
This commit is contained in:
+1
-1
@@ -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
File diff suppressed because it is too large
Load Diff
+3
-3
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user