/** * Process config change of survey * * @return array errors */ protected function process_config_change() { if (!check_form_key($this->form_key_name)) { return array($this->user->lang('FORM_INVALID')); } $new_settings = array('caption' => '', 'show_order' => 0, 'reverse_order' => 0, 'allow_change_answer' => 0, 'allow_multiple_answer' => 0, 'visibility' => 0, 'stop_time' => '', 'default_hide' => 0); if ($this->survey->is_moderator()) { $new_settings['topic_poster_right'] = 0; } foreach ($new_settings as $setting => $default) { $new_settings[$setting] = $this->request->variable('survey_setting_' . $setting, $default, true); } if ($new_settings['caption'] == '') { return array($this->user->lang('SURVEY_INVALID_CAPTION')); } if (!in_array($new_settings['show_order'], survey::$SHOW_ORDER_TYPES)) { return array($this->user->lang('SURVEY_INVALID_SHOW_ORDER_TYPE')); } $new_settings['reverse_order'] = $new_settings['reverse_order'] ? 1 : 0; $new_settings['allow_change_answer'] = $new_settings['allow_change_answer'] ? 1 : 0; $new_settings['allow_multiple_answer'] = $new_settings['allow_multiple_answer'] ? 1 : 0; $new_settings['default_hide'] = $new_settings['default_hide'] ? 1 : 0; if (!in_array($new_settings['visibility'], survey::$VISIBILITY_TYPES)) { return array($this->user->lang('SURVEY_INVALID_VISIBILITY_TYPE')); } if ($new_settings['stop_time'] != '') { $orig_input = $new_settings['stop_time']; $new_settings['stop_time'] = $this->user->get_timestamp_from_format('Y-m-d H:i', $new_settings['stop_time']); if ($new_settings['stop_time'] === false || $new_settings['stop_time'] + 60 < $this->survey->fixed_time() && $new_settings['stop_time'] != $this->survey->settings['stop_time']) { return array($this->user->lang('SURVEY_INVALID_STOPDATE', $orig_input)); } } else { $new_settings['stop_time'] = null; } if ($this->survey->is_moderator()) { if (!in_array($new_settings['topic_poster_right'], survey::$TOPIC_POSTER_RIGHT_TYPES)) { return array($this->user->lang('SURVEY_INVALID_TOPIC_POSTER_RIGHT_TYPE')); } } $this->survey->change_config($new_settings); return array(); }