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.
82 lines
2.6 KiB
82 lines
2.6 KiB
<?php
|
|
/* For licensing terms, see /license.txt */
|
|
/**
|
|
* Responses to AJAX calls for course chat.
|
|
*/
|
|
require_once __DIR__.'/../global.inc.php';
|
|
|
|
if (!api_protect_course_script(false)) {
|
|
exit;
|
|
}
|
|
|
|
$courseId = api_get_course_int_id();
|
|
$userId = api_get_user_id();
|
|
$sessionId = api_get_session_id();
|
|
$groupId = api_get_group_id();
|
|
$json = ['status' => false];
|
|
|
|
$courseChatUtils = new CourseChatUtils($courseId, $userId, $sessionId, $groupId);
|
|
|
|
switch ($_REQUEST['action']) {
|
|
case 'chat_logout':
|
|
$logInfo = [
|
|
'tool' => TOOL_CHAT,
|
|
'action' => 'exit',
|
|
'action_details' => 'exit-chat',
|
|
];
|
|
Event::registerLog($logInfo);
|
|
break;
|
|
case 'track':
|
|
$courseChatUtils->keepUserAsConnected();
|
|
$courseChatUtils->disconnectInactiveUsers();
|
|
|
|
$friend = isset($_REQUEST['friend']) ? (int) $_REQUEST['friend'] : 0;
|
|
$filePath = $courseChatUtils->getFileName(true, $friend);
|
|
$newFileSize = file_exists($filePath) ? filesize($filePath) : 0;
|
|
$oldFileSize = isset($_GET['size']) ? (int) $_GET['size'] : -1;
|
|
$newUsersOnline = $courseChatUtils->countUsersOnline();
|
|
$oldUsersOnline = isset($_GET['users_online']) ? (int) $_GET['users_online'] : 0;
|
|
|
|
$json = [
|
|
'status' => true,
|
|
'data' => [
|
|
'oldFileSize' => file_exists($filePath) ? filesize($filePath) : 0,
|
|
'history' => $newFileSize !== $oldFileSize ? $courseChatUtils->readMessages(false, $friend) : null,
|
|
'usersOnline' => $newUsersOnline,
|
|
'userList' => $newUsersOnline != $oldUsersOnline ? $courseChatUtils->listUsersOnline() : null,
|
|
'currentFriend' => $friend,
|
|
],
|
|
];
|
|
|
|
break;
|
|
case 'preview':
|
|
$json = [
|
|
'status' => true,
|
|
'data' => [
|
|
'message' => CourseChatUtils::prepareMessage($_REQUEST['message']),
|
|
],
|
|
];
|
|
break;
|
|
case 'reset':
|
|
$friend = isset($_REQUEST['friend']) ? (int) $_REQUEST['friend'] : 0;
|
|
|
|
$json = [
|
|
'status' => true,
|
|
'data' => $courseChatUtils->readMessages(true, $friend),
|
|
];
|
|
break;
|
|
case 'write':
|
|
$friend = isset($_REQUEST['friend']) ? (int) $_REQUEST['friend'] : 0;
|
|
$writed = $courseChatUtils->saveMessage($_POST['message'], $friend);
|
|
|
|
$json = [
|
|
'status' => $writed,
|
|
'data' => [
|
|
'writed' => $writed,
|
|
],
|
|
];
|
|
break;
|
|
}
|
|
|
|
header('Content-Type: application/json');
|
|
echo json_encode($json);
|
|
|