void Chat::removeUserFromAllChannels(Player* player) { ChannelList list = getChannelList(player); while (!list.empty()) { ChatChannel* channel = list.front(); list.pop_front(); channel->removeUser(player); if (channel->getOwner() == player->getGUID()) { deleteChannel(player, channel->getId()); } } for (NormalChannelMap::iterator it = m_normalChannels.begin(); it != m_normalChannels.end(); ++it) { it->second->removeUser(player); } for (GuildChannelMap::iterator it = m_guildChannels.begin(); it != m_guildChannels.end(); ++it) { it->second->removeUser(player); } }
bool Chat::removeUserFromChannel(Player* player, uint16_t channelId) { ChatChannel* channel = getChannel(player, channelId); if(!channel || !channel->removeUser(player)) return false; if(channel->getOwner() == player->getGUID()) deleteChannel(player, channelId); return true; }
bool Chat::removeUserFromChannel(const Player& player, uint16_t channelId) { ChatChannel* channel = getChannel(player, channelId); if (!channel || !channel->removeUser(player)) { return false; } if (channel->getOwner() == player.getGUID()) { deleteChannel(player, channelId); } return true; }
void Chat::removeUserFromAllChannels(Player* player) { ChannelList list = getChannelList(player); while(list.size()){ ChatChannel *channel = list.front(); list.pop_front(); channel->removeUser(player); if(channel->getOwner() == player->getGUID()) deleteChannel(player, channel->getId()); } }
void ChatHandler::handleQuitChannelMessage(ChatClient &client, MessageIn &msg) { MessageOut reply(CPMSG_QUIT_CHANNEL_RESPONSE); short channelId = msg.readShort(); ChatChannel *channel = chatChannelManager->getChannel(channelId); if (channelId == 0 || !channel) { reply.writeByte(ERRMSG_INVALID_ARGUMENT); } else if (!channel->removeUser(&client)) { reply.writeByte(ERRMSG_FAILURE); } else { reply.writeByte(ERRMSG_OK); reply.writeShort(channelId); // Send an CPMSG_UPDATE_CHANNEL to warn other clients a user left // the channel. warnUsersAboutPlayerEventInChat(channel, client.characterName, CHAT_EVENT_LEAVING_PLAYER); // log transaction Transaction trans; trans.mCharacterId = client.characterId; trans.mAction = TRANS_CHANNEL_QUIT; trans.mMessage = "User left " + channel->getName(); storage->addTransaction(trans); if (channel->getUserList().empty()) { chatChannelManager->removeChannel(channel->getId()); } } client.send(reply); }
bool Chat::removeUserFromChannel(Player* player, const uint16_t& channelId) { ChatChannel* channel = getChannel(player, channelId); if (!channel) { return false; } if (channel->removeUser(player)) { if (channel->getOwner() == player->getGUID()) { deleteChannel(player, channelId); } return true; } else { return false; } }
void ChatHandler::handleKickUserMessage(ChatClient &client, MessageIn &msg) { short channelId = msg.readShort(); ChatChannel *channel = chatChannelManager->getChannel(channelId); if (channelId == 0 || !channel) { // invalid channel return; } if (channel->getUserMode(&client).find('o') == std::string::npos) { // invalid permissions return; } // get the user whos being kicked std::string user = msg.readString(); if (channel->removeUser(getClient(user))) { std::stringstream ss; ss << client.characterName << ":" << user; warnUsersAboutPlayerEventInChat(channel, ss.str(), CHAT_EVENT_KICKED_PLAYER); } // log transaction Transaction trans; trans.mCharacterId = client.characterId; trans.mAction = TRANS_CHANNEL_KICK; trans.mMessage = "User kicked " + user; storage->addTransaction(trans); }