Fix session coach end date see BT#12099

pull/2487/head
jmontoyaa 9 years ago
parent aed449bb7d
commit a99b36d557
  1. 22
      main/inc/lib/sessionmanager.lib.php
  2. 33
      main/inc/lib/usermanager.lib.php
  3. 74
      main/inc/lib/userportal.lib.php

@ -6822,7 +6822,7 @@ class SessionManager
*/
public static function getSessionVisibility($sessionInfo)
{
switch($sessionInfo['visibility']) {
switch ($sessionInfo['visibility']) {
case 1:
return get_lang('ReadOnly');
case 2:
@ -6844,12 +6844,25 @@ class SessionManager
private static function convertSessionDateToString($startDate, $endDate, $showTime, $dateHuman)
{
// api_get_local_time returns empty if date is invalid like 0000-00-00 00:00:00
$startDateToLocal = api_get_local_time($startDate, null, null, true, $showTime, $dateHuman);
$endDateToLocal = api_get_local_time($endDate, null, null, true, $showTime, $dateHuman);
$startDateToLocal = api_get_local_time(
$startDate,
null,
null,
true,
$showTime,
$dateHuman
);
$endDateToLocal = api_get_local_time(
$endDate,
null,
null,
true,
$showTime,
$dateHuman
);
$result = '';
if (!empty($startDateToLocal) && !empty($endDateToLocal)) {
//$result = sprintf(get_lang('FromDateXToDateY'), $startDateToLocal, $endDateToLocal);
$result = sprintf(
get_lang('FromDateXToDateY'),
api_format_date($startDateToLocal, DATE_TIME_FORMAT_LONG_24H),
@ -6866,6 +6879,7 @@ class SessionManager
if (empty($result)) {
$result = get_lang('NoTimeLimits');
}
return $result;
}

@ -1717,7 +1717,6 @@ class UserManager
$gravatarEnabled = api_get_setting('gravatar_enabled');
$anonymousPath = Display::returnIconPath('unknown.png', $pictureAnonymousSize);
if ($pictureWebFile == 'unknown.jpg' || empty($pictureWebFile)) {
if ($gravatarEnabled === 'true') {
$file = self::getGravatar(
$imageWebPath['email'],
@ -2631,23 +2630,34 @@ class UserManager
$categories = [];
foreach ($sessionData as $row) {
$session_id = $row['id'];
$coachList = SessionManager::getCoachesBySession($session_id);
$categoryStart = $row['session_category_date_start'] ? $row['session_category_date_start']->format('Y-m-d') : '';
$categoryEnd = $row['session_category_date_end'] ? $row['session_category_date_end']->format('Y-m-d') : '';
$courseList = UserManager::get_courses_list_by_session(
$user_id,
$session_id
);
// User portal filters:
if ($ignoreTimeLimit === false) {
if ($is_time_over) {
// History
if (empty($row['access_end_date'])) {
continue;
}
if (!empty($row['access_end_date'])) {
} else {
if ($row['access_end_date'] > $now) {
continue;
}
}
} else {
// Current user portal
if (api_is_allowed_to_create_course()) {
$isGeneralCoach = SessionManager::user_is_general_coach($user_id, $row['id']);
$isCoachOfCourse = in_array($user_id, $coachList);
if (api_is_platform_admin() || $isGeneralCoach || $isCoachOfCourse) {
// Teachers can access the session depending in the access_coach date
} else {
if (isset($row['access_end_date']) &&
@ -2661,9 +2671,6 @@ class UserManager
}
}
$categoryStart = $row['session_category_date_start'] ? $row['session_category_date_start']->format('Y-m-d') : '';
$categoryEnd = $row['session_category_date_end'] ? $row['session_category_date_end']->format('Y-m-d') : '';
$categories[$row['session_category_id']]['session_category'] = array(
'id' => $row['session_category_id'],
'name' => $row['session_category_name'],
@ -2671,12 +2678,6 @@ class UserManager
'date_end' => $categoryEnd
);
$session_id = $row['id'];
$courseList = UserManager::get_courses_list_by_session(
$user_id,
$session_id
);
$visibility = api_get_session_visibility(
$session_id,
null,
@ -3006,7 +3007,7 @@ class UserManager
scu.user_id = $user_id AND
scu.session_id = $session_id
$where_access_url
ORDER BY sc.position ASC";
ORDER BY sc.position ASC, c.id";
$personal_course_list = array();
$courses = array();

@ -1177,6 +1177,8 @@ class IndexManager
// Declared listSession variable
$listSession = [];
$session_now = time();
if (is_array($session_categories)) {
foreach ($session_categories as $session_category) {
$session_category_id = $session_category['session_category']['id'];
@ -1195,12 +1197,10 @@ class IndexManager
}
// Courses inside the current session.
$date_session_start = api_get_local_time($session['access_start_date']);
$date_session_end = api_get_local_time($session['access_end_date']);
$coachAccessStartDate = api_get_local_time($session['coach_access_start_date']);
$coachAccessEndDate = api_get_local_time($session['coach_access_end_date']);
$session_now = time();
$date_session_start = $session['access_start_date'];
$date_session_end = $session['access_end_date'];
$coachAccessStartDate = $session['coach_access_start_date'];
$coachAccessEndDate = $session['coach_access_end_date'];
$count_courses_session = 0;
// Loop course content
@ -1211,6 +1211,7 @@ class IndexManager
$is_coach_course = api_is_coach($session_id, $course['real_id']);
$allowed_time = 0;
$allowedEndTime = true;
if (!empty($date_session_start)) {
if ($is_coach_course) {
$allowed_time = api_strtotime($coachAccessStartDate);
@ -1220,13 +1221,29 @@ class IndexManager
if (!isset($_GET['history'])) {
if (!empty($date_session_end)) {
$endSessionToTms = api_strtotime($date_session_end);
if ($session_now > $endSessionToTms) {
$allowedEndTime = false;
if ($is_coach_course) {
// if coach end date is empty we use the default end date
if (empty($coachAccessEndDate)) {
$endSessionToTms = api_strtotime($date_session_end);
if ($session_now > $endSessionToTms) {
$allowedEndTime = false;
}
} else {
$endSessionToTms = api_strtotime($coachAccessEndDate);
if ($session_now > $endSessionToTms) {
$allowedEndTime = false;
}
}
} else {
$endSessionToTms = api_strtotime($date_session_end);
if ($session_now > $endSessionToTms) {
$allowedEndTime = false;
}
}
}
}
}
if ($session_now >= $allowed_time && $allowedEndTime) {
// Read only and accessible.
$atLeastOneCourseIsVisible = true;
@ -1321,35 +1338,44 @@ class IndexManager
$coachAccessStartDate = $session['coach_access_start_date'];
$coachAccessEndDate = $session['coach_access_end_date'];
$session_now = time();
$html_courses_session = [];
$count = 0;
foreach ($session['courses'] as $course) {
$is_coach_course = api_is_coach(
$session_id,
$course['real_id']
);
$is_coach_course = api_is_coach($session_id, $course['real_id']);
$allowed_time = 0;
$allowedEndTime = true;
if ($is_coach_course) {
if (!empty($date_session_start)) {
if (!empty($date_session_start)) {
if ($is_coach_course) {
$allowed_time = api_strtotime($coachAccessStartDate);
} else {
$allowed_time = api_strtotime($date_session_start);
}
if (!isset($_GET['history'])) {
if (!empty($date_session_end)) {
$endSessionToTms = api_strtotime($date_session_end);
if ($session_now > $endSessionToTms) {
$allowedEndTime = false;
if ($is_coach_course) {
// if coach end date is empty we use the default end date
if (empty($coachAccessEndDate)) {
$endSessionToTms = api_strtotime($date_session_end);
if ($session_now > $endSessionToTms) {
$allowedEndTime = false;
}
} else {
$endSessionToTms = api_strtotime($coachAccessEndDate);
if ($session_now > $endSessionToTms) {
$allowedEndTime = false;
}
}
} else {
$endSessionToTms = api_strtotime($date_session_end);
if ($session_now > $endSessionToTms) {
$allowedEndTime = false;
}
}
}
}
} else {
$allowed_time = api_strtotime(
$date_session_start
);
}
if ($session_now >= $allowed_time && $allowedEndTime) {

Loading…
Cancel
Save