ZoneGuildManager::~ZoneGuildManager() { ClearGuilds(); }
BaseGuildManager::~BaseGuildManager() { ClearGuilds(); }
bool BaseGuildManager::LoadGuilds() { ClearGuilds(); if(m_db == nullptr) { _log(GUILDS__DB, "Requested to load guilds when we have no database object."); return(false); } char errbuf[MYSQL_ERRMSG_SIZE]; char *query = 0; MYSQL_RES *result; MYSQL_ROW row; std::map<uint32, GuildInfo *>::iterator res; // 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); 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); //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); return(false); } safe_delete_array(query); while ((row = mysql_fetch_row(result))) { uint32 guild_id = atoi(row[0]); uint8 rankn = atoi(row[1]); if(rankn > GUILD_MAX_RANK) { _log(GUILDS__ERROR, "Found invalid (too high) rank %d for guild %d, skipping.", rankn, guild_id); continue; } res = m_guilds.find(guild_id); if(res == m_guilds.end()) { _log(GUILDS__ERROR, "Found rank %d for non-existent guild %d, skipping.", rankn, guild_id); continue; } RankInfo &rank = res->second->ranks[rankn]; rank.name = row[2]; rank.permissions[GUILD_HEAR] = (row[3][0] == '1')?true:false; rank.permissions[GUILD_SPEAK] = (row[4][0] == '1')?true:false; rank.permissions[GUILD_INVITE] = (row[5][0] == '1')?true:false; rank.permissions[GUILD_REMOVE] = (row[6][0] == '1')?true:false; rank.permissions[GUILD_PROMOTE] = (row[7][0] == '1')?true:false; rank.permissions[GUILD_DEMOTE] = (row[8][0] == '1')?true:false; rank.permissions[GUILD_MOTD] = (row[9][0] == '1')?true:false; rank.permissions[GUILD_WARPEACE] = (row[10][0] == '1')?true:false; } mysql_free_result(result); return(true); }
bool BaseGuildManager::LoadGuilds() { ClearGuilds(); if(m_db == nullptr) { Log(Logs::Detail, Logs::Guilds, "Requested to load guilds when we have no database object."); return(false); } std::string query("SELECT id, name, leader, minstatus, motd, motd_setter,channel,url FROM guilds"); std::map<uint32, GuildInfo *>::iterator res; auto results = m_db->QueryDatabase(query); if (!results.Success()) { return false; } for (auto row=results.begin();row!=results.end();++row) _CreateGuild(atoi(row[0]), row[1], atoi(row[2]), atoi(row[3]), row[4], row[5], row[6], row[7]); 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"; results = m_db->QueryDatabase(query); if (!results.Success()) { return false; } for (auto row=results.begin();row!=results.end();++row) { uint32 guild_id = atoi(row[0]); uint8 rankn = atoi(row[1]); if(rankn > GUILD_MAX_RANK) { Log(Logs::Detail, Logs::Guilds, "Found invalid (too high) rank %d for guild %d, skipping.", rankn, guild_id); continue; } res = m_guilds.find(guild_id); if(res == m_guilds.end()) { Log(Logs::Detail, Logs::Guilds, "Found rank %d for non-existent guild %d, skipping.", rankn, guild_id); continue; } RankInfo &rank = res->second->ranks[rankn]; rank.name = row[2]; rank.permissions[GUILD_HEAR] = (row[3][0] == '1')?true:false; rank.permissions[GUILD_SPEAK] = (row[4][0] == '1')?true:false; rank.permissions[GUILD_INVITE] = (row[5][0] == '1')?true:false; rank.permissions[GUILD_REMOVE] = (row[6][0] == '1')?true:false; rank.permissions[GUILD_PROMOTE] = (row[7][0] == '1')?true:false; rank.permissions[GUILD_DEMOTE] = (row[8][0] == '1')?true:false; rank.permissions[GUILD_MOTD] = (row[9][0] == '1')?true:false; rank.permissions[GUILD_WARPEACE] = (row[10][0] == '1')?true:false; } return true; }