} $chat = new Chat(); if (chat::disableChat()) { exit; } if ($chat->is_chat_blocked_by_exercises()) { // Disconnecting the user $chat->setUserStatus(0); exit; } switch ($action) { case 'chatheartbeat': $chat->heartbeat(); break; case 'closechat': $chat->close(); break; case 'sendchat': $chat->send(api_get_user_id(), $to_user_id, $message); break; case 'startchatsession': $chat->startSession(); break; case 'set_status': $status = isset($_REQUEST['status']) ? intval($_REQUEST['status']) : 0; $chat->setUserStatus($status); break; case 'start_video': $room = VideoChat::getChatRoomByUsers(api_get_user_id(), $to_user_id); if ($room !== false) { $videoChatLink = Display::url(Display::tag('i', null, ['class' => 'fa fa-video-camera']) . " " . get_lang('StartVideoChat'), api_get_path(WEB_LIBRARY_JS_PATH) . "chat/video.php?room={$room['room_name']}");
$db = new Database($dbHost, $dbUser, $dbPassword, $dbName); $c = new Chat($db); $req = new RequestHandler(); $json = new JsonSender(true); // Check that a user is logged in. $loggedIn = $session->getUser(); if ($loggedIn === NULL) { throw new RuntimeException("No user is logged in."); } // Insert submitted message. if (!$req->check("message")) { throw new RuntimeException("No chat message given."); } $msg = $req->getString("message"); $c->submitMessage($loggedIn, $msg); // Query for messages and send them. $obj = $json->sendObject(); $arr = $obj->sendArray("messages"); if ($req->check("since")) { $c->queryNew($arr, $req->getInteger("since")); } else { $c->queryNew($arr); } $arr->close(); $obj->close(); // Close everything. $json->close(); $req->close(); $c->close(); $db->close(); $session->close();