diff options
Diffstat (limited to 'src/game/Channel.cpp')
-rw-r--r-- | src/game/Channel.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/game/Channel.cpp b/src/game/Channel.cpp index 3b32f29371c..5b0ce8ffa04 100644 --- a/src/game/Channel.cpp +++ b/src/game/Channel.cpp @@ -53,7 +53,7 @@ Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team) //load not built in channel if saved std::string _name(name); CharacterDatabase.escape_string(_name); - QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT m_name, m_team, m_announce, m_moderate, m_password, BannedList FROM channels WHERE m_name = '%s' AND m_team = '%u'", _name.c_str(), m_Team); + QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT m_name, m_team, m_announce, m_moderate, m_public, m_password, BannedList FROM channels WHERE m_name = '%s' AND m_team = '%u'", _name.c_str(), m_Team); if (result)//load { Field *fields = result->Fetch(); @@ -61,8 +61,9 @@ Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team) uint32 db_team = fields[1].GetUInt32(); m_announce = fields[2].GetBool(); m_moderate = fields[3].GetBool(); - m_password = fields[4].GetString(); - const char* db_BannedList = fields[5].GetString(); + m_public = fields[4].GetBool(); + m_password = fields[5].GetString(); + const char* db_BannedList = fields[6].GetString(); m_IsSaved = true; @@ -84,8 +85,8 @@ Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team) else // save { // _name is already escaped at this point. - if (CharacterDatabase.PExecute("INSERT INTO channels (m_name, m_team, m_announce, m_moderate, m_password) " - "VALUES ('%s', '%u', '1', '0', '')", _name.c_str(), m_Team)) + if (CharacterDatabase.PExecute("INSERT INTO channels (m_name, m_team, m_announce, m_moderate, m_public, m_password) " + "VALUES ('%s', '%u', '1', '0', '1', '')", _name.c_str(), m_Team)) { sLog.outDebug("New Channel(%s) saved", name.c_str()); m_IsSaved = true; @@ -360,11 +361,20 @@ void Channel::UnBan(uint64 good, const char *badname) void Channel::Password(uint64 p, const char *pass) { + std::string plName; uint32 sec = 0; Player *plr = objmgr.GetPlayer(p); if(plr) sec = plr->GetSession()->GetSecurity(); + if(!m_public && sec <= SEC_MODERATOR) + { + plName = plr->GetName(); + normalizePlayerName(plName); + PSendSysMessage(LANG_CHANNEL_NOT_PUBLIC, plName.c_str()); + return; + } + if(!IsOn(p)) { WorldPacket data; |