Show number of user online in session #2084

pull/2487/head
Angel Fernando Quiroz Campos 8 years ago
parent 8bfd542650
commit cd16e6ce99
  1. 42
      main/inc/lib/banner.lib.php
  2. 32
      main/inc/lib/online.inc.php

@ -215,6 +215,7 @@ function returnNotificationMenu()
}
$user_id = api_get_user_id();
$sessionId = api_get_session_id();
$html = '';
@ -250,11 +251,15 @@ function returnNotificationMenu()
.' '.$number_online_in_course.' </a></li>';
}
if (isset($user_id) && api_get_session_id() != 0) {
if (isset($user_id) && $sessionId != 0) {
$numberOnlineInSession = getOnlineUsersInSessionCount($sessionId);
$html .= '<li><a href="'.api_get_path(WEB_PATH)
.'whoisonlinesession.php?id_coach='.$user_id.'&amp;referer='.urlencode($_SERVER['REQUEST_URI'])
.'" target="_self">'
.Display::return_icon('session.png', get_lang('UsersConnectedToMySessions'), array(), ICON_SIZE_TINY)
.' '.$numberOnlineInSession
.'</a></li>';
}
}
@ -887,3 +892,38 @@ function getOnlineUsersInCourseCount($userId, $_course)
return $numberOnlineInCourse;
}
/**
* Helper function to get the number of users online in a session, using cache if available
* @param int $sessionId The session ID
* @return int The number of users currently online
*/
function getOnlineUsersInSessionCount($sessionId)
{
$cacheAvailable = api_get_configuration_value('apc');
if (!$sessionId) {
return 0;
}
if ($cacheAvailable === true) {
$apcVar = api_get_configuration_value('apc_prefix').'my_campus_whoisonline_session_count_simple_'.$sessionId;
if (apcu_exists($apcVar)) {
return apcu_fetch($apcVar);
}
$numberOnlineInCourse = whoIsOnlineInIhisSessionCount(
api_get_setting('time_limit_whosonline'),
$sessionId
);
apcu_store($apcVar, $numberOnlineInCourse, 15);
return $numberOnlineInCourse;
}
return whoIsOnlineInIhisSessionCount(
api_get_setting('time_limit_whosonline'),
$sessionId
);
}

@ -461,6 +461,38 @@ function who_is_online_in_this_course_count($uid, $time_limit, $coursecode = nul
}
}
/**
* @param string $timeLimit
* @param int $sessionId
* @return bool
* @internal param int $uid
*/
function whoIsOnlineInIhisSessionCount($timeLimit, $sessionId)
{
if (!$sessionId) {
return 0;
}
$tblTrackOnline = Database::get_main_table(TABLE_STATISTIC_TRACK_E_ONLINE);
$timeLimit = Database::escape_string($timeLimit);
$online_time = time() - $timeLimit * 60;
$current_date = api_get_utc_datetime($online_time);
$query = "SELECT count(login_user_id) as count
FROM $tblTrackOnline
WHERE login_user_id <> 2 AND session_id = $sessionId AND login_date >= '$current_date' ";
$result = Database::query($query);
if (Database::num_rows($result) > 0) {
$row = Database::fetch_assoc($result);
return $row['count'];
}
return 0;
}
/**
* Register the logout of the course (usually when logging out of the platform)
* from the track_e_course_access table

Loading…
Cancel
Save