Learnpath: Improve dates as item prerequisites - refs BT#20639

pull/4674/head
Christian 2 years ago
parent b3f92b0885
commit 6ccdfbb20c
  1. 2
      main/inc/lib/extra_field.lib.php
  2. 11
      main/lp/blank.php
  3. 17
      main/lp/learnpath.class.php

@ -1239,7 +1239,7 @@ class ExtraField extends Model
$field_details['display_text'] $field_details['display_text']
); );
$defaults['extra_'.$field_details['variable']] = api_get_local_time(); $defaults['extra_'.$field_details['variable']] = (EntityExtraField::LP_ITEM_FIELD_TYPE == $field_details['extra_field_type'] ? '' : api_get_local_time());
if (!isset($form->_defaultValues['extra_'.$field_details['variable']])) { if (!isset($form->_defaultValues['extra_'.$field_details['variable']])) {
$form->setDefaults($defaults); $form->setDefaults($defaults);
} }

@ -34,6 +34,17 @@ if (isset($_GET['error'])) {
$message = Display::return_message(Security::remove_XSS($prerequisiteMessage), 'warning'); $message = Display::return_message(Security::remove_XSS($prerequisiteMessage), 'warning');
} }
// Validates and display error message for prerequisite dates.
/** @var learnpath $lp */
$lp = Session::read('oLP');
$itemId = $lp->get_current_item_id();
$datesMatch = $lp->prerequistesDatesMatch($itemId);
if (!$datesMatch) {
$currentItem = $lp->getItem($itemId);
if (!empty($currentItem->prereq_alert)) {
$message = Display::return_message($currentItem->prereq_alert, 'warning');
}
}
break; break;
case 'document_not_found': case 'document_not_found':
$message = Display::return_message(get_lang('FileNotFound'), 'warning'); $message = Display::return_message(get_lang('FileNotFound'), 'warning');

@ -4463,19 +4463,30 @@ class learnpath
'end_date' 'end_date'
); );
$now = time();
$start = 0;
$end = 0;
$result = true; $result = true;
if ( if (
!empty($startDate) && isset($startDate['value']) && !empty($startDate['value']) && !empty($startDate) && isset($startDate['value']) && !empty($startDate['value']) &&
!empty($endDate) && isset($endDate['value']) && !empty($endDate['value']) !empty($endDate) && isset($endDate['value']) && !empty($endDate['value'])
) { ) {
$now = time();
$start = api_strtotime($startDate['value']); $start = api_strtotime($startDate['value']);
$end = api_strtotime($endDate['value']); $end = api_strtotime($endDate['value']);
$result = ($now > $start && $now < $end); $result = ($now > $start && $now < $end);
} }
if (!$result) { if (!$result) {
$this->set_error_msg(get_lang('ItemCanNotBeAccessedPrerequisiteDates')); $errMsg = get_lang('ItemCanNotBeAccessedPrerequisiteDates');
if ($start > $now) {
$errMsg = get_lang('AccessibleFrom').' '.api_format_date($start, DATE_TIME_FORMAT_LONG);
}
if ($end < $now) {
$errMsg = get_lang('NoMoreAccessible');
}
$this->set_error_msg($errMsg);
$currentItem = $this->getItem($itemId);
$currentItem->prereq_alert = $errMsg;
} }
return $result; return $result;
@ -10247,7 +10258,7 @@ class learnpath
$form->addHidden('type', TOOL_STUDENTPUBLICATION); $form->addHidden('type', TOOL_STUDENTPUBLICATION);
$form->addHidden('post_time', time()); $form->addHidden('post_time', time());
$this->setAuthorLpItem($form); $this->setAuthorLpItem($form);
$form->setDefaults(['title' => $item_title]); $form->setDefaults(['title' => $item_title, 'start_date' => null]);
$return = '<div class="sectioncomment">'; $return = '<div class="sectioncomment">';
$return .= $form->returnForm(); $return .= $form->returnForm();

Loading…
Cancel
Save