27 SF_LOG_INFO(
"server.loading",
"Loading guild finder guild-related settings...");
29 QueryResult result =
CharacterDatabase.Query(
"SELECT gfgs.guildId, gfgs.availability, gfgs.classRoles, gfgs.interests, gfgs.level, gfgs.listed, gfgs.comment, c.race "
30 "FROM guild_finder_guild_settings gfgs "
31 "LEFT JOIN guild_member gm ON gm.guildid=gfgs.guildId "
32 "LEFT JOIN characters c ON c.guid = gm.guid LIMIT 1");
36 SF_LOG_INFO(
"server.loading",
">> Loaded 0 guild finder guild-related settings. Table `guild_finder_guild_settings` is empty.");
44 Field* fields = result->Fetch();
50 bool listed = (fields[5].
GetUInt8() != 0);
51 std::string comment = fields[6].
GetString();
55 if (raceEntry->TeamID == 1)
58 LFGuildSettings settings(listed, guildTeam, guildId, classRoles, availability, interests, level, comment);
62 }
while (result->NextRow());
69 SF_LOG_INFO(
"server.loading",
"Loading guild finder membership requests...");
72 "FROM guild_finder_applicant");
76 SF_LOG_INFO(
"server.loading",
">> Loaded 0 guild finder membership requests. Table `guild_finder_applicant` is empty.");
84 Field* fields = result->Fetch();
90 std::string comment = fields[5].
GetString();
93 MembershipRequest request(playerId, guildId, availability, classRoles, interests, comment, time_t(submitTime));
98 }
while (result->NextRow());
132 std::vector<MembershipRequest>::iterator itr2 = itr->second.begin();
133 for (; itr2 != itr->second.end(); ++itr2)
134 if (itr2->GetPlayerGUID() == playerId)
137 if (itr2 == itr->second.end())
143 stmt->
setUInt32(1, itr2->GetPlayerGUID());
147 itr->second.erase(itr2);
159 if (itr->GetPlayerGUID() == playerId)
169 stmt->
setUInt32(1, itr->GetPlayerGUID());
187 std::list<MembershipRequest> resultSet;
190 std::vector<MembershipRequest>
const& guildReqs = itr->second;
191 for (std::vector<MembershipRequest>::const_iterator itr2 = guildReqs.begin(); itr2 != guildReqs.end(); ++itr2)
193 if (itr2->GetPlayerGUID() == playerGuid)
195 resultSet.push_back(*itr2);
208 for (std::vector<MembershipRequest>::const_iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
210 if (itr2->GetPlayerGUID() != playerId)
226 if (guildSettings.
GetTeam() != faction)
241 resultSet.insert(std::make_pair(itr->first, guildSettings));
250 if (itr->GetPlayerGUID() == playerId)
281 uint32 applicant = itr->GetPlayerGUID();
313 player->SendDirectMessage(&data);
@ CHAR_REP_GUILD_FINDER_APPLICANT
@ CHAR_DEL_GUILD_FINDER_APPLICANT
@ CHAR_DEL_GUILD_FINDER_GUILD_SETTINGS
@ CHAR_REP_GUILD_FINDER_GUILD_SETTINGS
DBCStorage< ChrRacesEntry > sChrRacesStore(ChrRacesEntryfmt)
std::map< uint32, LFGuildSettings > LFGuildStore
#define SF_LOG_INFO(filterType__,...)
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
Skyfire::AutoPtr< ResultSet, Skyfire::Mutex > QueryResult
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
std::string GetString() const
void SetGuildSettings(uint32 guildGuid, LFGuildSettings const &settings)
Stores guild settings and begins an asynchronous database insert.
void LoadMembershipRequests()
MembershipRequestStore _membershipRequests
void RemoveMembershipRequest(uint32 playerId, uint32 guildId)
Removes a membership request to a guild.
void AddMembershipRequest(uint32 guildGuid, MembershipRequest const &request)
Files a membership request to a guild.
bool HasRequest(uint32 playerId, uint32 guildId)
Provided a player DB guid and a guild DB guid, determines if a pending request is filed with these ke...
LFGuildStore GetGuildsMatchingSetting(LFGuildPlayer &settings, TeamId faction)
Returns a store of guilds matching the settings provided, using bitmask operators.
uint8 CountRequestsFromPlayer(uint32 playerId)
Counts the amount of pending membership requests, given the player's db guid.
void SendMembershipRequestListUpdate(Player &player)
std::list< MembershipRequest > GetAllMembershipRequestsForPlayer(uint32 playerGuid)
Returns a list of membership requests for a player.
void RemoveAllMembershipRequestsFromPlayer(uint32 playerId)
Removes all membership request from a player.
LFGuildStore _guildSettings
void SendApplicantListUpdate(Guild &guild)
void DeleteGuild(uint32 guildId)
Wipes everything related to a guild. Used when that guild is disbanded.
uint64 GetLeaderGUID() const
void BroadcastPacketToRank(WorldPacket *packet, uint8 rankId) const
static Player * FindPlayer(uint64)
void SendDirectMessage(WorldPacket *data)
void setString(const uint8 index, const std::string &value)
void setUInt32(const uint8 index, const uint32 value)
void setUInt8(const uint8 index, const uint8 value)
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
@ SMSG_LF_GUILD_APPLICANT_LIST_UPDATED
@ SMSG_LF_GUILD_APPLICATIONS_LIST_CHANGED
Holds all informations about a player's finder settings. NOT stored in database.
uint8 GetAvailability() const
std::string const & GetComment() const
uint8 GetClassRoles() const
uint8 GetInterests() const
Holds settings for a guild in the finder system. Saved to database.
Holds all required informations about a membership request.
uint32 GetGuildId() const
uint8 GetClassRoles() const
time_t GetSubmitTime() const
uint8 GetInterests() const
uint32 GetPlayerGUID() const
std::string const & GetComment() const
uint8 GetAvailability() const