diff --git a/main/inc/lib/online.inc.php b/main/inc/lib/online.inc.php index a5929f7954..3521ff9c94 100755 --- a/main/inc/lib/online.inc.php +++ b/main/inc/lib/online.inc.php @@ -536,17 +536,29 @@ function whoIsOnlineInThisSessionCount($timeLimit, $sessionId) $tableUser = Database::get_main_table(TABLE_MAIN_USER); $timeLimit = Database::escape_string($timeLimit); - $online_time = time() - $timeLimit * 60; $current_date = api_get_utc_datetime($online_time); + $urlCondition = ''; + $urlJoin = ''; + if (api_is_multiple_url_enabled()) { + $accessUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); + $urlId = api_get_current_access_url_id(); + $urlJoin = " INNER JOIN $accessUrlUser a ON (a.user_id = u.id) "; + $urlCondition = " AND a.access_url_id = $urlId "; + } + $query = "SELECT count(login_user_id) as count - FROM $tblTrackOnline o INNER JOIN $tableUser u + FROM $tblTrackOnline o + INNER JOIN $tableUser u ON (login_user_id = u.id) + $urlJoin WHERE u.status <> '".ANONYMOUS."' AND session_id = $sessionId AND - login_date >= '$current_date' "; + login_date >= '$current_date' + $urlCondition + "; $result = Database::query($query); if (Database::num_rows($result) > 0) { diff --git a/whoisonlinesession.php b/whoisonlinesession.php index 87a6779411..5c5d83a90b 100755 --- a/whoisonlinesession.php +++ b/whoisonlinesession.php @@ -6,9 +6,15 @@ * * @package chamilo.main */ -include_once './main/inc/global.inc.php'; +require_once './main/inc/global.inc.php'; + api_block_anonymous_users(); +$userId = api_get_user_id(); +if (empty($userId)) { + api_not_allowed(true); +} + $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); @@ -41,103 +47,115 @@ Display::display_header(get_lang('UserOnlineListSession')); = '$current_date' - GROUP BY access_user_id"; +$urlCondition = ''; +$urlJoin = ''; +if (api_is_multiple_url_enabled()) { + $accessUrlUser = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); + $urlId = api_get_current_access_url_id(); + $urlJoin = " INNER JOIN $accessUrlUser a ON (a.user_id = user.id) "; + $urlCondition = " AND a.access_url_id = $urlId "; +} - $result = Database::query($sql); - while ($user_list = Database::fetch_array($result)) { - $students_online[$user_list['access_user_id']] = $user_list; - } +$online_time = time() - $time_limit * 60; +$current_date = api_get_utc_datetime($online_time); +$students_online = []; +foreach ($session_is_coach as $session) { + $sql = "SELECT DISTINCT last_access.login_user_id, + last_access.login_date, + last_access.c_id, + last_access.session_id, + ".(api_is_western_name_order() ? "CONCAT(user.firstname,' ',user.lastname)" : "CONCAT(user.lastname,' ',user.firstname)")." as name, + user.email + FROM ".Database::get_main_table(TABLE_STATISTIC_TRACK_E_ONLINE)." AS last_access + INNER JOIN ".Database::get_main_table(TABLE_MAIN_USER)." AS user + ON user.id = last_access.login_user_id + $urlJoin + WHERE + session_id ='".$session['id']."' AND + login_date >= '$current_date' + $urlCondition + GROUP BY login_user_id"; + + $result = Database::query($sql); + while ($user_list = Database::fetch_array($result)) { + $students_online[$user_list['login_user_id']] = $user_list; } +} - if (count($students_online) > 0) { - foreach ($students_online as $student_online) { - echo "