#include "Join.hpp" #include "../IRC.hpp" #include bool Join::validate(const User &user, const std::string &msg) { size_t pos; size_t leng; leng = msg.length(); pos = msg.find(" "); name = msg.substr(pos + 1, leng - pos); this->channel = IRCManager::getChannel(name); if (this->channel) // Check if the channel exists { if (this->channel->getInviteStatus()) // If it exists do we need an invite? { if (this->channel->checkUserInvite(user)) // Does the user have the invite to join this chat? { return (true); } return (false); } } else // The Channel doesn't exist yet return (true); } int Join::run(User &user, IRC::t_send_f &send) { if (!this->channel) // Check if the channel exists { IRCManager::addChannel(name); // create the channel this->channel = IRCManager::getChannel(name); this->channel->AddUser(user); IRCManager::makeOper(user, this->channel); } else // Channel exists { this->channel->AddUser(user); } std::istringstream iss(this->channel->getUserList()); std::string target; iss >> target; while (target[0]) { send(IRCManager::getUserFromName(target), user.getNickName() + "!~" + user.getUserName() + "@" + user.getHostName() + " JOIN " + this->targetChannel->getChannelName() + " * :" + user->getRealName()); iss >> target; } std::cout << user.getUserName() + " Joined " + this->channel->getChannelName(); return (0); }