void CharacterDatabaseCleaner::CleanDatabase() { // config to disable if (!sWorld.getConfig(CONFIG_BOOL_CLEAN_CHARACTER_DB)) return; sLog.outString("Cleaning character database..."); // check flags which clean ups are necessary QueryResult* result = CharacterDatabase.PQuery("SELECT cleaning_flags FROM saved_variables"); if (!result) return; uint32 flags = (*result)[0].GetUInt32(); delete result; // clean up if (flags & CLEANING_FLAG_ACHIEVEMENT_PROGRESS) CleanCharacterAchievementProgress(); if (flags & CLEANING_FLAG_SKILLS) CleanCharacterSkills(); if (flags & CLEANING_FLAG_SPELLS) CleanCharacterSpell(); if (flags & CLEANING_FLAG_TALENTS) CleanCharacterTalent(); CharacterDatabase.Execute("UPDATE saved_variables SET cleaning_flags = 0"); }
void CharacterDatabaseCleaner::CleanDatabase() { // config to disable if(!sWorld.getBoolConfig(CONFIG_CLEAN_CHARACTER_DB)) return; sLog.outString("Cleaning character database..."); // check flags which clean ups are necessary QueryResult result = CharacterDatabase.Query("SELECT value FROM worldstates WHERE entry=20004"); if(!result) return; uint32 flags = (*result)[0].GetUInt32(); // clean up if(flags & CLEANING_FLAG_ACHIEVEMENT_PROGRESS) CleanCharacterAchievementProgress(); if(flags & CLEANING_FLAG_SKILLS) CleanCharacterSkills(); if(flags & CLEANING_FLAG_SPELLS) CleanCharacterSpell(); if(flags & CLEANING_FLAG_TALENTS) CleanCharacterTalent(); CharacterDatabase.Query("UPDATE worldstates SET value = 0 WHERE entry=20004"); }
void CharacterDatabaseCleaner::CleanDatabase() { // config to disable if (!sWorld->getBoolConfig(CONFIG_CLEAN_CHARACTER_DB)) return; sLog->outString("Cleaning character database..."); uint32 oldMSTime = getMSTime(); // check flags which clean ups are necessary QueryResult result = CharacterDatabase.Query( "SELECT value FROM worldstates WHERE entry = 20004"); if (!result) return; uint32 flags = (*result)[0].GetUInt32(); // clean up if (flags & CLEANING_FLAG_ACHIEVEMENT_PROGRESS) CleanCharacterAchievementProgress(); if (flags & CLEANING_FLAG_SKILLS) CleanCharacterSkills(); if (flags & CLEANING_FLAG_SPELLS) CleanCharacterSpell(); if (flags & CLEANING_FLAG_TALENTS) CleanCharacterTalent(); if (flags & CLEANING_FLAG_QUESTSTATUS) CleanCharacterQuestStatus(); // NOTE: In order to have persistentFlags be set in worldstates for the next cleanup, // you need to define them at least once in worldstates. flags &= sWorld->getIntConfig(CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS); CharacterDatabase.DirectPExecute( "UPDATE worldstates SET value = %u WHERE entry = 20004", flags); sWorld->SetCleaningFlags(flags); sLog->outString(">> Cleaned character database in %u ms", GetMSTimeDiffToNow(oldMSTime)); sLog->outString(); }