Skip to content

Commit

Permalink
Fix issues with display_start/end_date for sessions - refs #7719
Browse files Browse the repository at this point in the history
  • Loading branch information
ywarnier committed May 30, 2015
1 parent b13a4a9 commit 03910a3
Show file tree
Hide file tree
Showing 14 changed files with 435 additions and 429 deletions.
37 changes: 18 additions & 19 deletions main/cron/import_csv.php
Expand Up @@ -1033,12 +1033,8 @@ private function importSessionsStatic($file)
if (empty($sessionId)) {
$result = SessionManager::create_session(
$session['SessionName'],
$dateStart[0],
$dateStart[1],
$dateStart[2],
$dateEnd[0],
$dateEnd[1],
$dateEnd[2],
$dateStart,
$dateEnd,
$this->daysCoachAccessBeforeBeginning,
$this->daysCoachAccessAfterBeginning,
null,
Expand All @@ -1060,19 +1056,26 @@ private function importSessionsStatic($file)

$sessionInfo = api_get_session_info($sessionId);
$accessBefore = null;
$accessAfter = null;

if (empty($sessionInfo['nb_days_access_before_beginning']) ||
(!empty($sessionInfo['nb_days_access_before_beginning']) &&
$sessionInfo['nb_days_access_before_beginning'] < $this->daysCoachAccessBeforeBeginning)
$start_date_for_coach = new DateTime($sessionInfo['coach_access_start_date']);
$start_date = new DateTime($sessionInfo['access_start_date']);
$start_diff = $start_date->diff($start_date_for_coach)->d;

if (empty($sessionInfo['coach_access_start_date']) ||
(!empty($sessionInfo['coach_access_start_date']) &&
$start_diff < $this->daysCoachAccessBeforeBeginning)
) {
$accessBefore = intval($this->daysCoachAccessBeforeBeginning);
}

$accessAfter = null;
if (empty($sessionInfo['nb_days_access_after_end']) ||
(!empty($sessionInfo['nb_days_access_after_end']) &&
$sessionInfo['nb_days_access_after_end'] < $this->daysCoachAccessAfterBeginning)
$end_date_for_coach = new DateTime($sessionInfo['coach_access_end_date']);
$end_date = new DateTime($sessionInfo['access_end_date']);
$end_diff = $end_date->diff($end_date_for_coach)->d;

if (empty($sessionInfo['coach_access_end_date']) ||
(!empty($sessionInfo['coach_access_end_date']) &&
$end_diff < $this->daysCoachAccessAfterBeginning)
) {
$accessAfter = intval($this->daysCoachAccessAfterBeginning);
}
Expand All @@ -1082,12 +1085,8 @@ private function importSessionsStatic($file)
$result = SessionManager::edit_session(
$sessionId,
$session['SessionName'],
$dateStart[0],
$dateStart[1],
$dateStart[2],
$dateEnd[0],
$dateEnd[1],
$dateEnd[2],
$dateStart,
$dateEnd,
$accessBefore,
$accessAfter,
null,
Expand Down
14 changes: 5 additions & 9 deletions main/inc/lib/api.lib.php
Expand Up @@ -2292,19 +2292,17 @@ function api_get_session_visibility(
}

/* If I'm a coach the visibility can change in my favor depending in
the nb_days_access_after_end and nb_days_access_before_beginning */
the coach_access_start_date and coach_access_end_date */
$is_coach = api_is_coach($session_id, $courseId);

if ($is_coach) {
// Test end date.
if (isset($row['access_end_date']) &&
!empty($row['access_end_date']) &&
$row['access_end_date'] != '0000-00-00' &&
$row['nb_days_access_after_end'] != '0'
$row['coach_access_end_date'] != $row['access_end_date']
) {
$end_date_for_coach = new DateTime(substr($row['access_end_date'], 0 ,10).' 23:59:59');
$number_of_days = "P".intval($row['nb_days_access_after_end']).'D';
$end_date_for_coach->add(new DateInterval($number_of_days));
$end_date_for_coach = new DateTime($row['coach_access_end_date']);

if ($end_date_for_coach->getTimestamp() >= $now) {
$visibility = SESSION_AVAILABLE;
Expand All @@ -2317,11 +2315,9 @@ function api_get_session_visibility(
if (isset($row['access_start_date']) &&
!empty($row['access_start_date']) &&
$row['access_start_date'] != '0000-00-00' &&
$row['nb_days_access_before_beginning'] != '0'
$row['coach_access_start_date'] != $row['access_start_date']
) {
$start_date_for_coach = new DateTime(substr($row['access_start_date'], 0, 10).' 00:00:00');
$number_of_days = "P".intval($row['nb_days_access_before_beginning']).'D';
$start_date_for_coach->sub(new DateInterval($number_of_days));
$start_date_for_coach = new DateTime($row['coach_access_start_date']);
if ($start_date_for_coach->getTimestamp() < $now) {
$visibility = SESSION_AVAILABLE;
} else {
Expand Down

0 comments on commit 03910a3

Please sign in to comment.