diff --git a/main/survey/create_new_survey.php b/main/survey/create_new_survey.php index 575f24ba8b..fab4d3c658 100755 --- a/main/survey/create_new_survey.php +++ b/main/survey/create_new_survey.php @@ -74,9 +74,13 @@ if ($action == 'edit' && isset($survey_id) && is_numeric($survey_id)) { if ($allowSurveyAvailabilityDatetime) { $defaults['avail_from'] = api_get_local_time($defaults['avail_from']); - $defaults['avail_till'] = api_get_local_time($defaults['avail_till']); + + if (!empty($defaults['avail_till'])) { + $defaults['avail_till'] = api_get_local_time($defaults['avail_till']); + } else { + $defaults['end_date'] = null; + } $defaults['start_date'] = $defaults['avail_from']; - $defaults['end_date'] = $defaults['avail_till']; } $link_info = GradebookUtils::isResourceInCourseGradebook( @@ -176,7 +180,6 @@ if ($allowSurveyAvailabilityDatetime) { } $form->setRequired($startDateElement); -$form->setRequired($endDateElement); $form->addElement('checkbox', 'anonymous', null, get_lang('Anonymous')); $visibleResults = [ @@ -344,12 +347,15 @@ if ($action == 'add') { $form->addRule('survey_title', get_lang('ThisFieldIsRequired'), 'required'); $form->addRule('start_date', get_lang('InvalidDate'), $allowSurveyAvailabilityDatetime ? 'datetime' : 'date'); $form->addRule('end_date', get_lang('InvalidDate'), $allowSurveyAvailabilityDatetime ? 'datetime' : 'date'); -$form->addRule( - ['start_date', 'end_date'], - get_lang('StartDateShouldBeBeforeEndDate'), - 'date_compare', - 'lte' -); + +if (!empty($endDateElement->getCleanValue())) { + $form->addRule( + ['start_date', 'end_date'], + get_lang('StartDateShouldBeBeforeEndDate'), + 'date_compare', + 'lte' + ); +} // Setting the default values $form->setDefaults($defaults); diff --git a/main/survey/survey.lib.php b/main/survey/survey.lib.php index 344a61e41e..084441ad37 100755 --- a/main/survey/survey.lib.php +++ b/main/survey/survey.lib.php @@ -465,6 +465,14 @@ class SurveyManager $extraParams['form_fields'] = ''; } + if (!empty($values['end_date'])) { + $availTill = $allowSurveyAvailabilityDatetime + ? api_get_utc_datetime($values['end_date'].':59') + : $values['end_date']; + } else { + $availTill = null; + } + $params = [ 'title' => $values['survey_title'], 'subtitle' => $values['survey_subtitle'], @@ -473,9 +481,7 @@ class SurveyManager 'avail_from' => $allowSurveyAvailabilityDatetime ? api_get_utc_datetime($values['start_date'].':00') : $values['start_date'], - 'avail_till' => $allowSurveyAvailabilityDatetime - ? api_get_utc_datetime($values['end_date'].':59') - : $values['end_date'], + 'avail_till' => $availTill, 'is_shared' => $shared_survey_id, 'template' => 'template', 'intro' => $values['survey_introduction'], diff --git a/main/survey/surveyUtil.class.php b/main/survey/surveyUtil.class.php index fe5d7a3248..6e16e90b08 100755 --- a/main/survey/surveyUtil.class.php +++ b/main/survey/surveyUtil.class.php @@ -4009,7 +4009,8 @@ class SurveyUtil WHERE survey_invitation.user = $user_id AND survey.avail_from <= '$filterDate' AND - survey.avail_till >= '$filterDate' AND + (survey.avail_till >= '$filterDate' OR + survey.avail_till IS NULL) AND survey.c_id = $course_id AND survey_invitation.c_id = $course_id $sessionCondition ";