diff options
Diffstat (limited to 'src/chat-server/chatchannelmanager.cpp')
-rw-r--r-- | src/chat-server/chatchannelmanager.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/chat-server/chatchannelmanager.cpp b/src/chat-server/chatchannelmanager.cpp index 2b312b75..33db65ca 100644 --- a/src/chat-server/chatchannelmanager.cpp +++ b/src/chat-server/chatchannelmanager.cpp @@ -29,6 +29,8 @@ #include "account-server/dalstorage.hpp" #include "chat-server/chatclient.hpp" #include "chat-server/chathandler.hpp" +#include "chat-server/guildmanager.hpp" +#include "utils/stringfilter.h" ChatChannelManager::ChatChannelManager() : mNextChannelId(1) { @@ -57,6 +59,34 @@ ChatChannelManager::createNewChannel(const std::string &channelName, return channelId; } +bool ChatChannelManager::tryNewPublicChannel(const std::string &name) +{ + if (!stringFilter->filterContent(name)) + { + return false; + } + + // Checking strings for length and double quotes + if (name.empty() || + name.length() > MAX_CHANNEL_NAME || + stringFilter->findDoubleQuotes(name)) + { + return false; + } + else if (guildManager->doesExist(name) || + channelExists(name)) + { + // Channel already exists + return false; + } + else + { + // We attempt to create a new channel + short id = createNewChannel(name, "", "", true); + return id ? true : false; + } +} + bool ChatChannelManager::removeChannel(int channelId) { ChatChannelIterator i = mChatChannels.find(channelId); |