EnableTask converted to QueryDatabase

This commit is contained in:
Arthur Ice 2014-10-08 13:07:03 -07:00
parent ad921d01d8
commit 2c275f603a

View File

@ -679,32 +679,33 @@ bool TaskManager::LoadClientState(Client *c, ClientTaskState *state) {
return true; return true;
} }
void ClientTaskState::EnableTask(int CharID, int TaskCount, int *TaskList) { void ClientTaskState::EnableTask(int characterID, int taskCount, int *tasks) {
// Check if the Task is already enabled for this client // Check if the Task is already enabled for this client
// //
std::vector<int> TasksEnabled; std::vector<int> tasksEnabled;
std::vector<int>::iterator Iterator;
for(int i=0; i<TaskCount; i++) { for(int i=0; i<taskCount; i++) {
Iterator = EnabledTasks.begin(); auto iterator = EnabledTasks.begin();
bool AddTask = true; bool addTask = true;
while(Iterator != EnabledTasks.end()) { while(iterator != EnabledTasks.end()) {
// If this task is already enabled, stop looking // If this task is already enabled, stop looking
if((*Iterator) == TaskList[i]) { if((*iterator) == tasks[i]) {
AddTask = false; addTask = false;
break; break;
} }
// Our list of enabled tasks is sorted, so we can quit if we find a taskid higher than // Our list of enabled tasks is sorted, so we can quit if we find a taskid higher than
// the one we are looking for. // the one we are looking for.
if((*Iterator) > TaskList[i]) break; if((*iterator) > tasks[i])
++Iterator; break;
++iterator;
} }
if(AddTask) {
EnabledTasks.insert(Iterator, TaskList[i]); if(addTask) {
EnabledTasks.insert(iterator, tasks[i]);
// Make a note of the task we enabled, for later SQL generation // Make a note of the task we enabled, for later SQL generation
TasksEnabled.push_back(TaskList[i]); tasksEnabled.push_back(tasks[i]);
} }
} }
@ -712,35 +713,19 @@ void ClientTaskState::EnableTask(int CharID, int TaskCount, int *TaskList) {
for(unsigned int i=0; i<EnabledTasks.size(); i++) for(unsigned int i=0; i<EnabledTasks.size(); i++)
_log(TASKS__UPDATE, "%i ", EnabledTasks[i]); _log(TASKS__UPDATE, "%i ", EnabledTasks[i]);
if(TasksEnabled.size() == 0 ) return; if(tasksEnabled.size() == 0 )
return;
std::string TaskQuery="REPLACE INTO character_enabledtasks (charid, taskid) VALUES "; std::stringstream queryStream("REPLACE INTO character_enabledtasks (charid, taskid) VALUES ");
for(unsigned int i=0; i<tasksEnabled.size(); i++)
queryStream << ( i ? ", " : "" ) << StringFormat("(%i, %i)", characterID, tasksEnabled[i]);
const char *ERR_MYSQLERROR = "[TASKS]Error in ClientTaskState::EnableTask %s %s"; std::string query = queryStream.str();
_log(TASKS__UPDATE, "Executing query %s", query.c_str());
auto results = database.QueryDatabase(query);
if(!results.Success())
LogFile->write(EQEMuLog::Error, "[TASKS]Error in ClientTaskState::EnableTask %s %s", query.c_str(), results.ErrorMessage().c_str());
char errbuf[MYSQL_ERRMSG_SIZE];
char* query = 0;
char *buf = 0;
for(unsigned int i=0; i<TasksEnabled.size(); i++) {
if(i==0)
MakeAnyLenString(&buf, "(%i, %i)", CharID, TasksEnabled[i]);
else
MakeAnyLenString(&buf, ",(%i, %i)", CharID, TasksEnabled[i]);
TaskQuery += buf;
safe_delete_array(buf);
}
_log(TASKS__UPDATE, "Executing query %s", TaskQuery.c_str());
if(!database.RunQuery(query,MakeAnyLenString(&query, TaskQuery.c_str()), errbuf)) {
LogFile->write(EQEMuLog::Error, ERR_MYSQLERROR, query, errbuf);
}
safe_delete_array(query);
} }
void ClientTaskState::DisableTask(int CharID, int TaskCount, int *TaskList) { void ClientTaskState::DisableTask(int CharID, int TaskCount, int *TaskList) {