diff options
Diffstat (limited to 'src/server/game/Battlegrounds/ArenaTeam.cpp')
-rw-r--r-- | src/server/game/Battlegrounds/ArenaTeam.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index af76ff71223..a84e7ec30db 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -269,6 +269,19 @@ bool ArenaTeam::LoadMembersFromDB(QueryResult result) return true; } +bool ArenaTeam::SetName(std::string const& name) +{ + if (TeamName == name || name.empty() || name.length() > 24 || sObjectMgr->IsReservedName(name) || !ObjectMgr::IsValidCharterName(name)) + return false; + + TeamName = name; + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_NAME); + stmt->setString(0, TeamName); + stmt->setUInt32(1, GetId()); + CharacterDatabase.Execute(stmt); + return true; +} + void ArenaTeam::SetCaptain(uint64 guid) { // Disable remove/promote buttons @@ -360,6 +373,29 @@ void ArenaTeam::Disband(WorldSession* session) sArenaTeamMgr->RemoveArenaTeam(TeamId); } +void ArenaTeam::Disband() +{ + // Remove all members from arena team + while (!Members.empty()) + DelMember(Members.front().Guid, false); + + // Update database + SQLTransaction trans = CharacterDatabase.BeginTransaction(); + + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM); + stmt->setUInt32(0, TeamId); + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM_MEMBERS); + stmt->setUInt32(0, TeamId); + trans->Append(stmt); + + CharacterDatabase.CommitTransaction(trans); + + // Remove arena team from ObjectMgr + sArenaTeamMgr->RemoveArenaTeam(TeamId); +} + void ArenaTeam::Roster(WorldSession* session) { Player* player = NULL; |