/** * Process addition or modification of question * * @return array errors */ protected function process_question_addition_or_modification() { if (!check_form_key($this->form_key_name)) { return array($this->user->lang('FORM_INVALID')); } $question_id = self::NEW_QUESTION_ID; if ($this->request->is_set_post('survey-submit-question-modify')) { $question_id = (int) $this->request->variable('question_to_modify', ''); if (!$this->survey->question_exists($question_id)) { return array(); } } $question = array('label' => '', 'example_answer' => '', 'type' => 0, 'random_choice_order' => 0, 'sum_type' => 0, 'sum_by' => '', 'average' => 0, 'cap' => 0); foreach ($question as $key => $value) { $question[$key] = $this->request->variable('question_' . $key, $question[$key], true); } $question = array_map('trim', $question); if ($question['label'] == '') { return array($this->user->lang('SURVEY_INVALID_QUESTION_NO_LABEL')); } if ($this->survey->get_question_id_from_label($question['label'], $question_id) != $question_id) { return array($this->user->lang('SURVEY_QUESTION_ALREADY_ADDED', $question['label'])); } $question['random_choice_order'] = $question['random_choice_order'] ? 1 : 0; $question['average'] = $question['average'] ? 1 : 0; $question['cap'] = $question['cap'] != '' ? $question['cap'] : 0; if (!in_array($question['type'], survey::$QUESTION_TYPES)) { return array($this->user->lang('SURVEY_INVALID_QUESTION_TYPE')); } if (!in_array($question['sum_type'], survey::$QUESTION_SUM_TYPES)) { return array($this->user->lang('SURVEY_INVALID_QUESTION_SUM_TYPE')); } if ($question['sum_type'] == survey::$QUESTION_SUM_TYPES['MATCHING_TEXT'] && $question['sum_by'] == '') { return array($this->user->lang('SURVEY_INVALID_QUESTION_SUM_BY')); } if ($question['sum_type'] != survey::$QUESTION_SUM_TYPES['MATCHING_TEXT']) { $question['sum_by'] = ''; } if ($question['sum_type'] == survey::$QUESTION_SUM_TYPES['NO_SUM']) { $question['average'] = 0; $question['cap'] = 0; } $choices_input = $this->request->variable('question_choices', '', true); $choices = array(); if ($question['type'] == survey::$QUESTION_TYPES['DROP_DOWN_MENU'] || $question['type'] == survey::$QUESTION_TYPES['MULTIPLE_CHOICE']) { if ($choices_input == '') { return array($this->user->lang('SURVEY_INVALID_QUESTION_CHOICES')); } $choices = array_unique(explode(",", $choices_input)); } else { $question['random_choice_order'] = 0; } $choices = array_map('trim', $choices); if ($question_id == self::NEW_QUESTION_ID) { $this->survey->add_question($question, $choices); } else { $this->survey->modify_question($question_id, $question, $choices); } return array(); }