0) { foreach ($list_info_user_in_chat as $list_info_user) { $date_db_date = date('Y-m-d', api_strtotime($list_info_user['last_connection'], 'UTC')); $date_db_h = date('H', api_strtotime($list_info_user['last_connection'], 'UTC')); $date_db_m = date('i', api_strtotime($list_info_user['last_connection'], 'UTC')); $date_db_s = date('s', api_strtotime($list_info_user['last_connection'], 'UTC')); $date_count_time_seconds = $date_db_h * 3600 + $date_db_m * 60 + $date_db_s; if ($cd_date == $date_db_date) { if (($cd_count_time_seconds - $date_count_time_seconds) > 5) { $tbl_chat_connected = Database::get_course_table(TABLE_CHAT_CONNECTED); $sql = 'DELETE FROM '.$tbl_chat_connected.' WHERE c_id = '.$course_id.' AND user_id = '.$list_info_user['user_id'].' AND to_group_id = '.$groupId.' '; Database::query($sql); } } } } } /** * @return array user list in chat */ function users_list_in_chat() { $list_users_in_chat = array(); $tbl_chat_connected = Database::get_course_table(TABLE_CHAT_CONNECTED); $course_id = api_get_course_int_id(); $session_id = api_get_session_id(); $group_id = api_get_group_id(); if (!empty($group_id)) { $extra_condition = " WHERE to_group_id = '$group_id'"; } else{ $extra_condition = api_get_session_condition($session_id, false); } $extra_condition.= " AND c_id = $course_id "; $sql = 'SELECT user_id, last_connection FROM '.$tbl_chat_connected.$extra_condition; $result = Database::query($sql); while ($row = Database::fetch_array($result, 'ASSOC')) { $list_users_in_chat[] = $row; } return $list_users_in_chat; } /** * @param string $message * @param array $_course * @param int $group_id * @param int $session_id * @param bool $preview */ function saveMessage($message, $userId, $_course, $session_id, $group_id, $preview = true) { $userInfo = api_get_user_info($userId); $fullName = $userInfo['complete_name']; $isMaster = (bool)api_is_course_admin(); $document_path = api_get_path(SYS_COURSE_PATH).$_course['path'].'/document'; if (!empty($group_id)) { $group_info = GroupManager :: get_group_properties($group_id); $basepath_chat = $group_info['directory'].'/chat_files'; } else { $basepath_chat = '/chat_files'; } $chat_path = $document_path.$basepath_chat.'/'; if (!is_dir($chat_path)) { if (is_file($chat_path)) { @unlink($chat_path); } } $date_now = date('Y-m-d'); $message = trim($message); $timeNow = date('d/m/y H:i:s'); if (!empty($group_id)) { $basename_chat = 'messages-'.$date_now.'_gid-'.$group_id; } elseif (!empty($session_id)) { $basename_chat = 'messages-'.$date_now.'_sid-'.$session_id; } else { $basename_chat = 'messages-'.$date_now; } if (!api_is_anonymous()) { if (!empty($message)) { Emojione\Emojione::$imagePathPNG = api_get_path(WEB_LIBRARY_PATH).'javascript/emojione/png/'; Emojione\Emojione::$ascii = true; // Parsing emojis $message = Emojione\Emojione::toImage($message); // Parsing text to understand markdown (code highlight) $message = MarkdownExtra::defaultTransform($message); // Security XSS $message = Security::remove_XSS($message); if ($preview == true) { return $message; } if (!file_exists($chat_path.$basename_chat.'.log.html')) { $doc_id = add_document( $_course, $basepath_chat . '/' . $basename_chat . '.log.html', 'file', 0, $basename_chat . '.log.html' ); api_item_property_update( $_course, TOOL_DOCUMENT, $doc_id, 'DocumentAdded', $userId, $group_id, null, null, null, $session_id ); api_item_property_update( $_course, TOOL_DOCUMENT, $doc_id, 'invisible', $userId, $group_id, null, null, null, $session_id ); item_property_update_on_folder( $_course, $basepath_chat, $userId ); } else { $doc_id = DocumentManager::get_document_id( $_course, $basepath_chat.'/'.$basename_chat.'.log.html' ); } $fp = fopen($chat_path.$basename_chat.'.log.html', 'a'); $userPhoto = UserManager::getUserPicture($userId, USER_IMAGE_SIZE_MEDIUM); $filePhoto = ''; if ($isMaster) { fputs($fp, '
'.$fullName.'
'.$message.'
'.$timeNow.'
'.$filePhoto.'
'."\n"); } else { fputs($fp, '
'.$filePhoto.'
'.$fullName.'
'.$message.'
'.$timeNow.'
'."\n"); } fclose($fp); $chat_size = filesize($chat_path.$basename_chat.'.log.html'); update_existing_document($_course, $doc_id, $chat_size); item_property_update_on_folder($_course, $basepath_chat, $userId); } } }