Calculate total session duration when calculate duration days left - refs BT#12539

pull/2487/head
Angel Fernando Quiroz Campos 8 years ago
parent cf248fb2ce
commit fdab116cf5
  1. 14
      main/inc/lib/display.lib.php
  2. 12
      main/inc/lib/sessionmanager.lib.php
  3. 5
      main/session/about.php
  4. 19
      main/session/session_user_edit.php

@ -1567,19 +1567,7 @@ class Display
(empty($session_info['access_end_date']) && empty($session_info['access_start_date']))
) {
if (isset($session_info['duration']) && !empty($session_info['duration'])) {
$userDurationData = SessionManager::getUserSession(
api_get_user_id(),
$session_id
);
$userDuration = isset($userDurationData['duration']) ? (int) $userDurationData['duration'] : 0;
$totalDuration = $session_info['duration'] + $userDuration;
$daysLeft = SessionManager::getDayLeftInSession(
$session_id,
api_get_user_id(),
$totalDuration
);
$daysLeft = SessionManager::getDayLeftInSession($session_info, api_get_user_id());
$session['duration'] = sprintf(get_lang('SessionDurationXDaysLeft'), $daysLeft);
}
$active = true;

@ -6158,13 +6158,15 @@ class SessionManager
/**
* Returns the number of days the student has left in a session when using
* sessions durations
* @param int $userId
* @param int $sessionId
* @param int $duration in days
* @return int
*/
public static function getDayLeftInSession($sessionId, $userId, $duration)
public static function getDayLeftInSession(array $sessionInfo, $userId)
{
$sessionId = $sessionInfo['id'];
$userSubsubscription = SessionManager::getUserSession($userId, $sessionId);
$duration = empty($userSubsubscription['duration'])
? $sessionInfo['duration']
: $sessionInfo['duration'] + $userSubsubscription['duration'];
// Get an array with the details of the first access of the student to
// this session
$courseAccess = CourseManager::getFirstCourseAccessPerSessionAndUser(

@ -191,9 +191,8 @@ $template->assign(
$template->assign(
'user_session_time',
SessionManager::getDayLeftInSession(
$session->getId(),
api_get_user_id(),
$session->getDuration()
['id' => $session->getId(), 'duration' => $session->getDuration()],
api_get_user_id()
)
);

@ -36,7 +36,6 @@ $interbreadcrumb[] = array(
$form = new FormValidator('edit', 'post', api_get_self().'?session_id='.$sessionId.'&user_id='.$userId);
$form->addHeader(get_lang('EditUserSessionDuration'));
$data = SessionManager::getUserSession($userId, $sessionId);
$userInfo = api_get_user_info($userId);
// Show current end date for the session for this user, if any
@ -50,14 +49,17 @@ if (count($userAccess) == 0) {
$msg = sprintf(get_lang('UserNeverAccessedSessionDefaultDurationIsX'), $sessionInfo['duration']);
} else {
// The user already accessed the session. Show a clear detail of the days count.
$duration = $sessionInfo['duration'];
if (!empty($data['duration'])) {
$duration = $duration + $data['duration'];
}
$days = SessionManager::getDayLeftInSession($sessionId, $userId, $duration);
$days = SessionManager::getDayLeftInSession($sessionInfo, $userId);
$firstAccess = api_strtotime($userAccess['login_course_date'], 'UTC');
$firstAccessString = api_convert_and_format_date($userAccess['login_course_date'], DATE_FORMAT_SHORT, 'UTC');
if ($days > 0) {
$userSubscription = SessionManager::getUserSession($userId, $sessionId);
$duration = $sessionInfo['duration'];
if (!empty($userSubscription['duration'])) {
$duration = $duration + $userSubscription['duration'];
}
$msg = sprintf(get_lang('FirstAccessWasXSessionDurationYEndDateInZDays'), $firstAccessString, $duration, $days);
} else {
$endDateInSeconds = $firstAccess + $duration * 24 * 60 * 60;
@ -72,10 +74,7 @@ $form->addElement('html', $msg);
$form->addElement('text', 'duration', array(get_lang('ExtraDurationForUser'), null, get_lang('Days')));
$form->addButtonSave(get_lang('Save'));
if (empty($data['duration'])) {
$data['duration'] = 0;
}
$form->setDefaults($data);
$form->setDefaults(['duration' => 0]);
$message = null;
if ($form->validate()) {
$duration = $form->getSubmitValue('duration');

Loading…
Cancel
Save