You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							145 lines
						
					
					
						
							3.8 KiB
						
					
					
				
			
		
		
	
	
							145 lines
						
					
					
						
							3.8 KiB
						
					
					
				<?php
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
 | 
						|
/**
 | 
						|
 * Responses to AJAX calls.
 | 
						|
 */
 | 
						|
$_dont_save_user_course_access = true;
 | 
						|
 | 
						|
require_once __DIR__.'/../global.inc.php';
 | 
						|
 | 
						|
api_block_anonymous_users();
 | 
						|
 | 
						|
if ('false' == api_get_setting('allow_global_chat')) {
 | 
						|
    exit;
 | 
						|
}
 | 
						|
 | 
						|
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
 | 
						|
 | 
						|
// Course Chat
 | 
						|
if ('preview' === $action) {
 | 
						|
    echo CourseChatUtils::prepareMessage($_REQUEST['message']);
 | 
						|
    exit;
 | 
						|
}
 | 
						|
 | 
						|
$toUserId = isset($_REQUEST['to']) ? $_REQUEST['to'] : null;
 | 
						|
$message = isset($_REQUEST['message']) ? $_REQUEST['message'] : null;
 | 
						|
$currentUserId = api_get_user_id();
 | 
						|
 | 
						|
$chat = new Chat();
 | 
						|
 | 
						|
if (Chat::disableChat()) {
 | 
						|
    exit;
 | 
						|
}
 | 
						|
 | 
						|
if ($chat->isChatBlockedByExercises()) {
 | 
						|
    // Disconnecting the user
 | 
						|
    $chat->setUserStatus(0);
 | 
						|
    exit;
 | 
						|
}
 | 
						|
 | 
						|
switch ($action) {
 | 
						|
    case 'get_message_status':
 | 
						|
        $messageId = isset($_REQUEST['message_id']) ? $_REQUEST['message_id'] : 0;
 | 
						|
        $messageInfo = $chat->get($messageId);
 | 
						|
        if ($messageInfo && $messageInfo['from_user'] == $currentUserId) {
 | 
						|
            echo json_encode($messageInfo);
 | 
						|
        }
 | 
						|
        break;
 | 
						|
    case 'chatheartbeat':
 | 
						|
        $chat->heartbeat();
 | 
						|
        break;
 | 
						|
    case 'close_window':
 | 
						|
        // Closes friend window
 | 
						|
        $chatId = isset($_POST['chatbox']) ? $_POST['chatbox'] : '';
 | 
						|
        $chat->closeWindow($chatId);
 | 
						|
        echo '1';
 | 
						|
        exit;
 | 
						|
        break;
 | 
						|
    case 'close':
 | 
						|
        // Disconnects user from all chat
 | 
						|
        $chat->close();
 | 
						|
 | 
						|
        echo '1';
 | 
						|
        exit;
 | 
						|
        break;
 | 
						|
    case 'create_room':
 | 
						|
        if ('true' === api_get_setting('chat.hide_chat_video')) {
 | 
						|
            api_not_allowed();
 | 
						|
        }
 | 
						|
        /*$room = VideoChat::getChatRoomByUsers(api_get_user_id(), $toUserId);
 | 
						|
 | 
						|
        if ($room === false) {
 | 
						|
            $createdRoom = VideoChat::createRoom(api_get_user_id(), $toUserId);
 | 
						|
 | 
						|
            if ($createdRoom === false) {
 | 
						|
                echo Display::return_message(
 | 
						|
                    get_lang('Chatroom could not be created'),
 | 
						|
                    'error'
 | 
						|
                );
 | 
						|
                break;
 | 
						|
            }
 | 
						|
 | 
						|
            $room = VideoChat::getChatRoomByUsers(api_get_user_id(), $toUserId);
 | 
						|
        }
 | 
						|
 | 
						|
        $videoChatUrl = api_get_path(WEB_LIBRARY_JS_PATH)."chat/video.php?room={$room['id']}";
 | 
						|
        $videoChatLink = Display::url(
 | 
						|
            Display::returnFontAwesomeIcon('video-camera').get_lang('Start video call'),
 | 
						|
            $videoChatUrl
 | 
						|
        );
 | 
						|
 | 
						|
        $chat->send(
 | 
						|
            api_get_user_id(),
 | 
						|
            $toUserId,
 | 
						|
            $videoChatLink,
 | 
						|
            false,
 | 
						|
            false
 | 
						|
        );
 | 
						|
        echo Display::tag('p', $videoChatLink, ['class' => 'lead']);*/
 | 
						|
        break;
 | 
						|
    case 'get_contacts':
 | 
						|
        echo $chat->getContacts();
 | 
						|
        break;
 | 
						|
    case 'get_previous_messages':
 | 
						|
        $userId = isset($_REQUEST['user_id']) ? $_REQUEST['user_id'] : 0;
 | 
						|
        $visibleMessages = isset($_REQUEST['visible_messages']) ? $_REQUEST['visible_messages'] : 0;
 | 
						|
        if (empty($userId)) {
 | 
						|
            return '';
 | 
						|
        }
 | 
						|
 | 
						|
        $items = $chat->getPreviousMessages(
 | 
						|
            $userId,
 | 
						|
            $currentUserId,
 | 
						|
            $visibleMessages
 | 
						|
        );
 | 
						|
 | 
						|
        if (!empty($items)) {
 | 
						|
            sort($items);
 | 
						|
            echo json_encode($items);
 | 
						|
            exit;
 | 
						|
        }
 | 
						|
        echo json_encode([]);
 | 
						|
        exit;
 | 
						|
        break;
 | 
						|
    case 'notify_not_support':
 | 
						|
        $chat->send(
 | 
						|
            $currentUserId,
 | 
						|
            $toUserId,
 | 
						|
            get_lang('The browser of %s does not support native video transmission. Sorry.')
 | 
						|
        );
 | 
						|
        break;
 | 
						|
    case 'sendchat':
 | 
						|
        $chat->send($currentUserId, $toUserId, $message);
 | 
						|
        break;
 | 
						|
    case 'startchatsession':
 | 
						|
        $chat->startSession();
 | 
						|
        break;
 | 
						|
    case 'set_status':
 | 
						|
        $status = isset($_REQUEST['status']) ? (int) $_REQUEST['status'] : 0;
 | 
						|
        $chat->setUserStatus($status);
 | 
						|
        break;
 | 
						|
    default:
 | 
						|
        echo '';
 | 
						|
}
 | 
						|
exit;
 | 
						|
 |