diff --git a/main/lp/learnpath.class.php b/main/lp/learnpath.class.php index 720ead5108..65f1c09015 100755 --- a/main/lp/learnpath.class.php +++ b/main/lp/learnpath.class.php @@ -9300,13 +9300,11 @@ class learnpath reset($arrLP); } - if ('edit' === $action) { - if (true !== api_get_configuration_value('lp_item_prerequisite_dates')) { - $excludeExtraFields = array_merge($excludeExtraFields, ['start_date', 'end_date']); - } - $extraField = new ExtraField('lp_item'); - $extraField->addElements($form, $id, $excludeExtraFields); + if (true !== api_get_configuration_value('lp_item_prerequisite_dates')) { + $excludeExtraFields = array_merge($excludeExtraFields, ['start_date', 'end_date']); } + $extraField = new ExtraField('lp_item'); + $extraField->addElements($form, $id, $excludeExtraFields); if ($action !== 'move') { $arrHide = []; diff --git a/main/lp/lp_controller.php b/main/lp/lp_controller.php index cd8bd84f6c..ebe70f798b 100755 --- a/main/lp/lp_controller.php +++ b/main/lp/lp_controller.php @@ -615,6 +615,33 @@ switch ($action) { $maxTimeAllowed = isset($_POST['maxTimeAllowed']) ? $_POST['maxTimeAllowed'] : ''; if ($_POST['type'] == TOOL_DOCUMENT) { + + // form validations after submit. + $error = false; + $errMsg = ''; + if (true === api_get_configuration_value('lp_item_prerequisite_dates')) { + if (!isset($_POST['extra_start_date'])) { + $_POST['extra_start_date'] = 0; + } + if (!isset($_POST['extra_end_date'])) { + $_POST['extra_end_date'] = 0; + } + $extraStartDate = $_POST['extra_start_date']; + $extraEndDate = $_POST['extra_end_date']; + if (!empty($extraStartDate) && !empty($extraEndDate)) { + $error = !(strtotime($extraEndDate) >= strtotime($extraStartDate)); + } + if ($error) { + $errMsg = get_lang('StartDateMustBeBeforeTheEndDate'); + } + } + + if ($error) { + Display::addFlash(Display::return_message($errMsg, 'error')); + header('Location: '.api_request_uri()); + exit; + } + if (isset($_POST['path']) && $_GET['edit'] != 'true') { $document_id = $_POST['path']; } else { @@ -629,7 +656,7 @@ switch ($action) { } } - $_SESSION['oLP']->add_item( + $lastItemId = $_SESSION['oLP']->add_item( $parent, $previous, $type, @@ -638,6 +665,13 @@ switch ($action) { $description, $prerequisites ); + + if (!empty($lastItemId)) { + $params = $_POST; + $params['item_id'] = $lastItemId; + $extraFieldValues = new ExtraFieldValue('lp_item'); + $extraFieldValues->saveFieldValues($params, true); + } } elseif ($_POST['type'] == TOOL_READOUT_TEXT) { if (isset($_POST['path']) && $_GET['edit'] != 'true') { $document_id = $_POST['path'];