Example #1
0
 /**
  * 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();
 }