chamilo /
chamilo-lms
| 1 | <?php |
||
| 2 | /* For licensing terms, see /license.txt */ |
||
| 3 | |||
| 4 | require_once __DIR__.'/../inc/global.inc.php'; |
||
| 5 | |||
| 6 | $this_section = SECTION_COURSES; |
||
| 7 | |||
| 8 | if (!api_is_allowed_to_edit()) { |
||
| 9 | api_not_allowed(true); |
||
| 10 | } |
||
| 11 | |||
| 12 | $htmlHeadXtra[] = api_get_css_asset('jt.timepicker/jquery.timepicker.css'); |
||
| 13 | $htmlHeadXtra[] = api_get_asset('jt.timepicker/jquery.timepicker.js'); |
||
| 14 | $htmlHeadXtra[] = api_get_asset('datepair.js/dist/datepair.js'); |
||
| 15 | $htmlHeadXtra[] = api_get_asset('datepair.js/dist/jquery.datepair.js'); |
||
| 16 | |||
| 17 | $interbreadcrumb[] = [ |
||
| 18 | 'url' => api_get_path(WEB_CODE_PATH).'survey/survey_list.php?'.api_get_cidreq(), |
||
| 19 | 'name' => get_lang('SurveyList'), |
||
| 20 | ]; |
||
| 21 | |||
| 22 | $courseInfo = api_get_course_info(); |
||
| 23 | |||
| 24 | $tool_name = get_lang('CreateMeeting'); |
||
| 25 | |||
| 26 | $form = new FormValidator( |
||
| 27 | 'survey', |
||
| 28 | 'post', |
||
| 29 | api_get_self().'?action=add&'.api_get_cidreq() |
||
| 30 | ); |
||
| 31 | |||
| 32 | $form->addElement('header', $tool_name); |
||
| 33 | $form->addHidden('anonymous', 0); |
||
| 34 | $form->addHidden('survey_language', $courseInfo['language']); |
||
| 35 | $form->addHidden('survey_subtitle', ''); |
||
| 36 | $form->addHidden('survey_thanks', ''); |
||
| 37 | $form->addHidden('visible_results', '0'); |
||
| 38 | $form->addHidden('survey_type', 3); |
||
| 39 | |||
| 40 | $text = $form->addText( |
||
| 41 | 'survey_title', |
||
| 42 | get_lang('Title') |
||
| 43 | ); |
||
| 44 | |||
| 45 | $allowSurveyAvailabilityDatetime = api_get_configuration_value('allow_survey_availability_datetime'); |
||
| 46 | |||
| 47 | if ($allowSurveyAvailabilityDatetime) { |
||
| 48 | $startDateElement = $form->addDateTimePicker('start_date', get_lang('StartDate')); |
||
| 49 | $endDateElement = $form->addDateTimePicker('end_date', get_lang('EndDate')); |
||
| 50 | $form->addRule('start_date', get_lang('InvalidDate'), 'datetime'); |
||
| 51 | $form->addRule('end_date', get_lang('InvalidDate'), 'datetime'); |
||
| 52 | } else { |
||
| 53 | $startDateElement = $form->addElement('date_picker', 'start_date', get_lang('StartDate')); |
||
| 54 | $endDateElement = $form->addElement('date_picker', 'end_date', get_lang('EndDate')); |
||
| 55 | $form->addRule('start_date', get_lang('InvalidDate'), 'date'); |
||
| 56 | $form->addRule('end_date', get_lang('InvalidDate'), 'date'); |
||
| 57 | } |
||
| 58 | |||
| 59 | $form->addRule( |
||
| 60 | ['start_date', 'end_date'], |
||
| 61 | get_lang('StartDateShouldBeBeforeEndDate'), |
||
| 62 | 'date_compare', |
||
| 63 | 'lte' |
||
| 64 | ); |
||
| 65 | |||
| 66 | $form->setRequired($startDateElement); |
||
| 67 | $form->setRequired($endDateElement); |
||
| 68 | |||
| 69 | $form->addHtmlEditor('survey_introduction', get_lang('Description'), false); |
||
| 70 | $form->setRequired($text); |
||
| 71 | |||
| 72 | $hideList = ''; |
||
| 73 | $maxEvents = 20; |
||
| 74 | for ($i = 1; $i <= $maxEvents; $i++) { |
||
| 75 | $name = 'time_'.$i; |
||
| 76 | $form->addDateTimeRangePicker($name, get_lang('Date')); |
||
| 77 | if ($i > 3) { |
||
| 78 | $hideList .= "$('#".$name."_date_time_wrapper').hide();"; |
||
| 79 | } |
||
| 80 | } |
||
| 81 | |||
| 82 | $form->addHtml('<script> |
||
| 83 | $(function() { |
||
| 84 | '.$hideList.' |
||
| 85 | var number = 3; |
||
| 86 | $("#add_button").on("click", function() { |
||
| 87 | number++; |
||
| 88 | $("#time_" + number + "_date_time_wrapper").show(); |
||
| 89 | }); |
||
| 90 | |||
| 91 | $("#remove_button").on("click", function() { |
||
| 92 | if (number > 1) { |
||
| 93 | $("#time_" + number + "_date_time_wrapper").hide(); |
||
| 94 | number--; |
||
| 95 | } |
||
| 96 | }); |
||
| 97 | }); |
||
| 98 | </script>'); |
||
| 99 | |||
| 100 | $form->addLabel( |
||
| 101 | '', |
||
| 102 | Display::url(get_lang('Add'), 'javascript:void(0)', ['id' => 'add_button', 'class' => 'btn btn-default']) |
||
| 103 | .' '. |
||
| 104 | Display::url( |
||
| 105 | get_lang('Remove'), |
||
| 106 | 'javascript:void(0)', |
||
| 107 | ['id' => 'remove_button', 'class' => 'btn btn-danger'] |
||
| 108 | ) |
||
| 109 | ); |
||
| 110 | |||
| 111 | $form->addButtonCreate(get_lang('CreateSurvey'), 'submit_survey'); |
||
| 112 | |||
| 113 | $defaults = []; |
||
| 114 | $form->setDefaults($defaults); |
||
| 115 | |||
| 116 | // The validation or display |
||
| 117 | if ($form->validate()) { |
||
| 118 | // Exporting the values |
||
| 119 | $values = $form->getSubmitValues(); |
||
| 120 | $values['survey_code'] = SurveyManager::generateSurveyCode($values['survey_title']); |
||
| 121 | // Storing the survey |
||
| 122 | $surveyData = SurveyManager::store_survey($values); |
||
| 123 | |||
| 124 | $dates = []; |
||
| 125 | for ($i = 1; $i <= $maxEvents; $i++) { |
||
| 126 | $name = 'time_'.$i; |
||
| 127 | if (isset($values[$name]) && !empty($values[$name])) { |
||
| 128 | $date = $values[$name]; |
||
| 129 | |||
| 130 | if (empty($date)) { |
||
| 131 | continue; |
||
| 132 | } |
||
| 133 | |||
| 134 | $start = $name.'_time_range_start'; |
||
| 135 | $end = $name.'_time_range_end'; |
||
| 136 | |||
| 137 | $start = $values[$start]; |
||
| 138 | $end = $values[$end]; |
||
| 139 | |||
| 140 | $start = api_get_utc_datetime($values[$name].' '.$start, true); |
||
| 141 | $end = api_get_utc_datetime($values[$name].' '.$end, true); |
||
| 142 | |||
| 143 | if (!empty($start) && !empty($start)) { |
||
| 144 | $row = [ |
||
| 145 | 'start' => $start, |
||
| 146 | 'end' => $end, |
||
| 147 | ]; |
||
| 148 | $dates[] = $row; |
||
| 149 | } |
||
| 150 | } |
||
| 151 | } |
||
| 152 | |||
| 153 | $questionTable = Database::get_course_table(TABLE_SURVEY_QUESTION); |
||
| 154 | $counter = 1; |
||
| 155 | if (!empty($surveyData['id'])) { |
||
| 156 | foreach ($dates as $date) { |
||
| 157 | $params = [ |
||
| 158 | 'c_id' => api_get_course_int_id(), |
||
| 159 | 'survey_id' => $surveyData['id'], |
||
| 160 | 'survey_question' => $date['start'].'@@'.$date['end'], |
||
| 161 | 'survey_question_comment' => '', |
||
| 162 | 'type' => 'doodle', |
||
| 163 | 'display' => 'horizontal', |
||
| 164 | 'sort' => $counter, |
||
| 165 | 'shared_question_id' => '0', |
||
| 166 | 'max_value' => 0, |
||
| 167 | ]; |
||
| 168 | $questionId = Database::insert($questionTable, $params); |
||
| 169 | if ($questionId) { |
||
|
0 ignored issues
–
show
|
|||
| 170 | $sql = "UPDATE $questionTable SET question_id = $questionId |
||
| 171 | WHERE iid = $questionId"; |
||
| 172 | Database::query($sql); |
||
| 173 | } |
||
| 174 | $counter++; |
||
| 175 | } |
||
| 176 | } |
||
| 177 | |||
| 178 | // Redirecting to the survey page (whilst showing the return message) |
||
| 179 | header('Location: '.api_get_path(WEB_CODE_PATH).'survey/survey_list.php?'.api_get_cidreq()); |
||
| 180 | exit; |
||
| 181 | } else { |
||
| 182 | // Displaying the header |
||
| 183 | Display::display_header($tool_name); |
||
| 184 | $form->display(); |
||
| 185 | } |
||
| 186 | |||
| 187 | Display::display_footer(); |
||
| 188 |
In PHP, under loose comparison (like
==, or!=, orswitchconditions), values of different types might be equal.For
integervalues, zero is a special case, in particular the following results might be unexpected: