Example #1
0
void Guild::LoadGuildFromDB(uint32 GuildId)
{

	std::stringstream query, ss;

	query << "SELECT * FROM `guilds` where guildId= " << GuildId;
	QueryResult *result = sDatabase.Query( query.str().c_str() );

	if(!result)
		return;

	Field *fields = result->Fetch();

	Id = fields[0].GetUInt32();
	name = fields[1].GetString();
	leaderGuid = fields[2].GetUInt64();
	EmblemStyle = fields[3].GetUInt32();
	EmblemColor = fields[4].GetUInt32();
	BorderStyle = fields[5].GetUInt32();
	BorderColor = fields[6].GetUInt32();
	BackgroundColor = fields[7].GetUInt32();
	MOTD = fields[8].GetString();
	
	delete result;

	ss << "SELECT DATE_FORMAT(createdate,\"%d\") FROM guilds where guildId= " << GuildId;
	result = sDatabase.Query( ss.str().c_str() );
	if(!result) return;
	fields = result->Fetch();
	CreatedDay = fields[0].GetUInt32();
	
	delete result;
	
	ss.rdbuf()->str("");
	ss << "SELECT DATE_FORMAT(createdate,\"%M\") FROM guilds where guildId= " << GuildId;
	result = sDatabase.Query( ss.str().c_str() );
	if(!result) return;
	fields = result->Fetch();
	CreatedMonth = fields[0].GetUInt32();
	
	delete result;
	
	ss.rdbuf()->str("");
	ss << "SELECT DATE_FORMAT(createdate,\"%Y\") FROM guilds where guildId= " << GuildId;
	result = sDatabase.Query( ss.str().c_str() );
	if(!result) return;
	fields = result->Fetch();
	CreatedYear = fields[0].GetUInt32();
	
	delete result;
	
	LoadRanksFromDB(GuildId);
	LoadMembersFromDB(GuildId);
}
Example #2
0
bool Guild::LoadGuildFromDB(uint32 GuildId)
{
    //set m_Id in case guild data are broken in DB and Guild will be Disbanded (deleted from DB)
    m_Id = GuildId;

    if (!LoadRanksFromDB(GuildId))
        return false;

    if (!LoadMembersFromDB(GuildId))
        return false;

    //                                                     0     1           2            3            4            5
    QueryResult *result = CharacterDatabase.PQuery("SELECT name, leaderguid, EmblemStyle, EmblemColor, BorderStyle, BorderColor,"
    //   6                7     8     9
        "BackgroundColor, info, motd, createdate FROM guild WHERE guildid = '%u'", GuildId);

    if (!result)
        return false;

    Field *fields = result->Fetch();

    m_Name = fields[0].GetCppString();
    m_LeaderGuid  = MAKE_NEW_GUID(fields[1].GetUInt32(), 0, HIGHGUID_PLAYER);

    m_EmblemStyle = fields[2].GetUInt32();
    m_EmblemColor = fields[3].GetUInt32();
    m_BorderStyle = fields[4].GetUInt32();
    m_BorderColor = fields[5].GetUInt32();
    m_BackgroundColor = fields[6].GetUInt32();
    GINFO = fields[7].GetCppString();
    MOTD = fields[8].GetCppString();
    time_t time = fields[9].GetUInt64();

    delete result;

    if (time > 0)
    {
        tm local = *(localtime(&time));                     // dereference and assign
        m_CreatedDay   = local.tm_mday;
        m_CreatedMonth = local.tm_mon + 1;
        m_CreatedYear  = local.tm_year + 1900;
    }

    // Repair the structure of guild
    // If the guildmaster doesn't exist or isn't the member of guild
    // attempt to promote another member
    int32 GM_rights = GetRank(GUID_LOPART(m_LeaderGuid));
    if (GM_rights == -1)
    {
        DelMember(m_LeaderGuid);
        // check no members case (disbanded)
        if (members.empty())
            return false;
    }
    else if (GM_rights != GR_GUILDMASTER)
        SetLeader(m_LeaderGuid);

    // Allow only 1 guildmaster
    for (MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr)
    {
        if (itr->second.RankId == GR_GUILDMASTER && GUID_LOPART(m_LeaderGuid) != itr->first)
            //set right of member to officer
            ChangeRank(itr->first, GR_OFFICER);
    }

    sLog.outDebug("Guild %u Creation time Loaded day: %u, month: %u, year: %u", GuildId, m_CreatedDay, m_CreatedMonth, m_CreatedYear);

    return true;
}
Example #3
0
bool Guild::LoadGuildFromDB(uint32 GuildId)
{
    if(!LoadRanksFromDB(GuildId))
        return false;

    if(!LoadMembersFromDB(GuildId))
        return false;

    QueryResult *result = CharacterDatabase.PQuery("SELECT MAX(TabId) FROM guild_bank_tab WHERE guildid='%u'", GuildId);
    if(result)
    {
        Field *fields = result->Fetch();
        purchased_tabs = fields[0].GetUInt8()+1;            // Because TabId begins at 0
        delete result;
    }
    else
        purchased_tabs = 0;

    LoadBankRightsFromDB(GuildId);                          // Must be after LoadRanksFromDB because it populates rank struct

    //                                        0        1     2           3            4            5           6
    result = CharacterDatabase.PQuery("SELECT guildid, name, leaderguid, EmblemStyle, EmblemColor, BorderStyle, BorderColor,"
    //   7                8     9     10          11
        "BackgroundColor, info, motd, createdate, BankMoney FROM guild WHERE guildid = '%u'", GuildId);

    if(!result)
        return false;

    Field *fields = result->Fetch();

    Id = fields[0].GetUInt32();
    name = fields[1].GetCppString();
    leaderGuid  = MAKE_NEW_GUID(fields[2].GetUInt32(), 0, HIGHGUID_PLAYER);

    EmblemStyle = fields[3].GetUInt32();
    EmblemColor = fields[4].GetUInt32();
    BorderStyle = fields[5].GetUInt32();
    BorderColor = fields[6].GetUInt32();
    BackgroundColor = fields[7].GetUInt32();
    GINFO = fields[8].GetCppString();
    MOTD = fields[9].GetCppString();
    uint64 time = fields[10].GetUInt64();                   //datetime is uint64 type ... YYYYmmdd:hh:mm:ss
    guildbank_money = fields[11].GetUInt64();

    delete result;

    uint64 dTime = time /1000000;
    CreatedDay   = dTime%100;
    CreatedMonth = (dTime/100)%100;
    CreatedYear  = (dTime/10000)%10000;

    // If the leader does not exist attempt to promote another member
    if(!objmgr.GetPlayerAccountIdByGUID(leaderGuid ))
    {
        DelMember(leaderGuid);

        // check no members case (disbanded)
        if(members.empty())
            return false;
    }

    sLog.outDebug("Guild %u Creation time Loaded day: %u, month: %u, year: %u", GuildId, CreatedDay, CreatedMonth, CreatedYear);
    m_bankloaded = false;
    m_eventlogloaded = false;
    m_onlinemembers = 0;
    RenumBankLogs();
    RenumGuildEventlog();
    return true;
}