Esempio n. 1
0
bool BaseGuildManager::DBSetGuildLeader(uint32 guild_id, uint32 leader) {
	if(m_db == nullptr) {
		Log(Logs::Detail, Logs::Guilds, "Requested to set the leader for guild %d when we have no database object.", guild_id);
		return false;
	}

	std::map<uint32, GuildInfo *>::const_iterator res;
	res = m_guilds.find(guild_id);
	if(res == m_guilds.end())
		return false;
	GuildInfo *info = res->second;

	//insert the new `guilds` entry
    std::string query = StringFormat("UPDATE guilds SET leader='%d' WHERE id=%d",leader, guild_id);
	auto results = m_db->QueryDatabase(query);

	if (!results.Success())
	{
		return false;
	}

	//set the old leader to officer
	if(!DBSetGuildRank(info->leader_char_id, GUILD_OFFICER))
		return false;
	//set the new leader to leader
	if(!DBSetGuildRank(leader, GUILD_LEADER))
		return false;

	Log(Logs::Detail, Logs::Guilds, "Set guild leader for guild %d to %d in the database", guild_id, leader);

	info->leader_char_id = leader;	//update our local record.

	return true;
}
Esempio n. 2
0
//changes rank, but not guild.
bool BaseGuildManager::SetGuildRank(uint32 charid, uint8 rank) {
	if(rank > GUILD_MAX_RANK)
		return(false);

	if(!DBSetGuildRank(charid, rank))
		return(false);

	SendCharRefresh(GUILD_NONE, 0, charid);

	return(true);
}
Esempio n. 3
0
bool BaseGuildManager::DBSetGuildLeader(uint32 guild_id, uint32 leader) {
	if(m_db == nullptr) {
		_log(GUILDS__DB, "Requested to set the leader for guild %d when we have no database object.", guild_id);
		return(false);
	}

	std::map<uint32, GuildInfo *>::const_iterator res;
	res = m_guilds.find(guild_id);
	if(res == m_guilds.end())
		return(false);
	GuildInfo *info = res->second;

	char errbuf[MYSQL_ERRMSG_SIZE];
	char *query = 0;

	//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);
		return(false);
	}
	safe_delete_array(query);

	//set the old leader to officer
	if(!DBSetGuildRank(info->leader_char_id, GUILD_OFFICER))
		return(false);
	//set the new leader to leader
	if(!DBSetGuildRank(leader, GUILD_LEADER))
		return(false);

	_log(GUILDS__DB, "Set guild leader for guild %d to %d in the database", guild_id, leader);

	info->leader_char_id = leader;	//update our local record.

	return(true);
}