getRequestVar('password')) { // Check if we have a valid registered user: $userName = $this->getRequestVar('userName'); $userName = $this->convertEncoding($userName, $this->getConfig('contentEncoding'), $this->getConfig('sourceEncoding')); $password = $this->getRequestVar('password'); $password = $this->convertEncoding($password, $this->getConfig('contentEncoding'), $this->getConfig('sourceEncoding')); $flashiiConfig = parse_ini_file('/www/flashii.net/config/config.ini', true, INI_SCANNER_TYPED); if (!empty($flashiiConfig['Database'])) { $dbConfig = $flashiiConfig['Database']; $flashiiDb = new PDO( "mysql:unix_socket={$dbConfig['unix_socket']};dbname={$dbConfig['database']}", $dbConfig['username'], $dbConfig['password'], [ PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT, PDO::ATTR_EMULATE_PREPARES => false, ] ); $getFlashiiUser = $flashiiDb->prepare(' SELECT `user_id` as `userID`, `username` as `userName`, `display_role` as `userRole`, `password` FROM `msz_users` WHERE LOWER(`username`) = LOWER(:username) '); $getFlashiiUser->bindValue('username', $userName); $flashiiUser = $getFlashiiUser->execute() ? $getFlashiiUser->fetch(PDO::FETCH_ASSOC) : []; if (!empty($flashiiUser) && password_verify($password, $flashiiUser['password'])) { unset($flashiiUser['password']); // corrections, i'm not going to update the random IDs scattered about switch ($flashiiUser['userRole']) { case 2: $flashiiUser['userRole'] = AJAX_CHAT_MODERATOR; break; case 3: $flashiiUser['userRole'] = AJAX_CHAT_ADMIN; break; case 4: $flashiiUser['userRole'] = BOTS; break; case 5: $flashiiUser['userRole'] = AJAX_CHAT_GUEST; break; case 6: case 7: $flashiiUser['userRole'] = DONATOR; break; default: $flashiiUser['userRole'] = AJAX_CHAT_USER; } /*if ($flashiiUser['userID'] === 2) { $flashiiUser['userRole'] = CMOD; } else*/if ($flashiiUser['userID'] === 3) { $flashiiUser['userRole'] = AJAX_CHAT_MODERATOR; } return $flashiiUser; } } return null; } else { // Guest users: return $this->getGuestUser(); } } // Store the channels the current user has access to // Make sure channel names don't contain any whitespace function &getChannels() { if($this->_channels === null) { $this->_channels = array(); /*$customUsers = $this->getCustomUsers(); // Get the channels, the user has access to: if($this->getUserRole() == AJAX_CHAT_GUEST) { $validChannels = $customUsers[0]['channels']; } else { $validChannels = $customUsers[$this->getUserID()]['channels']; }*/ // Add the valid channels to the channel list (the defaultChannelID is always valid): foreach($this->getAllChannels() as $key=>$value) { // Check if we have to limit the available channels: if($this->getConfig('limitChannelList') && !in_array($value, $this->getConfig('limitChannelList'))) { continue; } //if(in_array($value, $validChannels) || $value == $this->getConfig('defaultChannelID')) { $this->_channels[$key] = $value; //} } } return $this->_channels; } // Store all existing channels // Make sure channel names don't contain any whitespace function &getAllChannels() { if($this->_allChannels === null) { // Get all existing channels: $customChannels = $this->getCustomChannels(); $defaultChannelFound = false; foreach($customChannels as $key=>$value) { $forumName = $this->trimChannelName($value); $this->_allChannels[$forumName] = $key; if($key == $this->getConfig('defaultChannelID')) { $defaultChannelFound = true; } } if(!$defaultChannelFound) { // Add the default channel as first array element to the channel list: $this->_allChannels = array_merge( array( $this->trimChannelName($this->getConfig('defaultChannelName'))=>$this->getConfig('defaultChannelID') ), $this->_allChannels ); } } return $this->_allChannels; } /*function &getCustomUsers() { global $database; $userlist = $database->query("SELECT * FROM `accounts`.`flashii_users` WHERE `userrole` != '0'")->fetch_all(MYSQLI_ASSOC); $users = array(); $users[0] = array(); $users[0]['userRole'] = AJAX_CHAT_GUEST; $users[0]['userName'] = null; $users[0]['password'] = null; $users[0]['channels'] = array(0,1); foreach($userlist as $user) { $users[$user['id']] = array(); $users[$user['id']]['userName'] = $user['username']; $users[$user['id']]['password'] = $user['password']; switch($user['userrole']) { // Tenshi case 7: $users[$user['id']]['userRole'] = DONATOR; $users[$user['id']]['channels'] = array(0, 1); break; // Chat Moderators case 6: $users[$user['id']]['userRole'] = CMOD; $users[$user['id']]['channels'] = array(0, 1, 2); break; // Bots case 5: $users[$user['id']]['userRole'] = BOTS; $users[$user['id']]['channels'] = array(0, 1, 2); break; // Developers case 4: $users[$user['id']]['userRole'] = PURPLE; $users[$user['id']]['channels'] = array(0, 1, 2); break; // Administrator case 3: $users[$user['id']]['userRole'] = AJAX_CHAT_ADMIN; $users[$user['id']]['channels'] = array(0, 1, 2); break; // Site Moderators case 2: $users[$user['id']]['userRole'] = AJAX_CHAT_MODERATOR; $users[$user['id']]['channels'] = array(0, 1, 2); break; // Regular Users case 1: $users[$user['id']]['userRole'] = AJAX_CHAT_USER; $users[$user['id']]['channels'] = array(0, 1); break; // Unknown and Deactivated Users case 0: default: $users[$user['id']]['userRole'] = AJAX_CHAT_GUEST; $users[$user['id']]['channels'] = array(0); } } return $users; }*/ function &getCustomChannels() { $channels = [ 0 => 'Public', ]; /*$result = $this->db->sqlQuery("SELECT * FROM ajax_chat_channels")->_result->fetch_all(MYSQLI_ASSOC); foreach($result as $channel) { $channels[$channel['id']] = $channel['name']; }*/ if($this->isLoggedIn()) $channels[9001] = 'Secret'; return $channels; } function parseCustomCommands($text, $textParts) { switch($textParts[0]) { case '/afk': $this->setUserName('_' . $this->getUserName()); $this->updateOnlineList(); $this->addInfoMessage($this->getUserName(), 'userName'); $this->setSessionVar('AwayFromKeyboard', true); return true; default: return false; } } function onNewMessage($text) { if($this->getSessionVar('AwayFromKeyboard')) { $this->setUserName(substr($this->getUserName(), 6)); $this->updateOnlineList(); $this->addInfoMessage($this->getUserName(), 'userName'); $this->setSessionVar('AwayFromKeyboard', false); } return true; } }