mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-23 10:15:12 +00:00
124 lines
3.6 KiB
PHP
124 lines
3.6 KiB
PHP
|
<?php
|
||
|
/*
|
||
|
* @package AJAX_Chat
|
||
|
* @author Sebastian Tschan
|
||
|
* @copyright (c) Sebastian Tschan
|
||
|
* @license Modified MIT License
|
||
|
* @link https://blueimp.net/ajax/
|
||
|
*/
|
||
|
|
||
|
class CustomAJAXChat extends AJAXChat {
|
||
|
|
||
|
// Returns an associative array containing userName, userID and userRole
|
||
|
// Returns null if login is invalid
|
||
|
function getValidLoginUserData() {
|
||
|
|
||
|
$customUsers = $this->getCustomUsers();
|
||
|
|
||
|
if($this->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'));
|
||
|
|
||
|
foreach($customUsers as $key=>$value) {
|
||
|
if(($value['userName'] == $userName) && ($value['password'] == $password)) {
|
||
|
$userData = array();
|
||
|
$userData['userID'] = $key;
|
||
|
$userData['userName'] = $this->trimUserName($value['userName']);
|
||
|
$userData['userRole'] = $value['userRole'];
|
||
|
return $userData;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
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) {
|
||
|
if ($value == $this->getConfig('defaultChannelID')) {
|
||
|
$this->_channels[$key] = $value;
|
||
|
continue;
|
||
|
}
|
||
|
// 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)) {
|
||
|
$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 $name=>$id) {
|
||
|
$this->_allChannels[$this->trimChannelName($name)] = $id;
|
||
|
if($id == $this->getConfig('defaultChannelID')) {
|
||
|
$defaultChannelFound = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(!$defaultChannelFound) {
|
||
|
// Add the default channel as first array element to the channel list
|
||
|
// First remove it in case it appeard under a different ID
|
||
|
unset($this->_allChannels[$this->getConfig('defaultChannelName')]);
|
||
|
$this->_allChannels = array_merge(
|
||
|
array(
|
||
|
$this->trimChannelName($this->getConfig('defaultChannelName'))=>$this->getConfig('defaultChannelID')
|
||
|
),
|
||
|
$this->_allChannels
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
return $this->_allChannels;
|
||
|
}
|
||
|
|
||
|
function &getCustomUsers() {
|
||
|
// List containing the registered chat users:
|
||
|
$users = null;
|
||
|
require(AJAX_CHAT_PATH.'lib/data/users.php');
|
||
|
return $users;
|
||
|
}
|
||
|
|
||
|
function getCustomChannels() {
|
||
|
// List containing the custom channels:
|
||
|
$channels = null;
|
||
|
require(AJAX_CHAT_PATH.'lib/data/channels.php');
|
||
|
// Channel array structure should be:
|
||
|
// ChannelName => ChannelID
|
||
|
return array_flip($channels);
|
||
|
}
|
||
|
|
||
|
}
|