open('questionnaire/question_types/freetext/freetext_answer.php'); $template->vote = $this; return $template; } /** * Creates an answer by the parameters of the request. Called when a user clicked to answer * the questionnaire. * @return QuestionnaireAnswer */ public function createAnswer() { $answer = $this->getMyAnswer(); $answers = Request::getArray('answers'); $userAnswerText = $answers[$this->getId()]['answerdata']['text']; $answer->setData(['answerData' => ['text' => $userAnswerText]]); return $answer; } public function getUserIdsOfFilteredAnswer($answer_option) { return []; } /** * Returns the template with the answers of the question so far. * * @param null $only_user_ids : array of user_ids * * @return Flexi\Template * @throws Flexi\TemplateNotFoundException if there is no template. */ public function getResultTemplate($only_user_ids = null) { $answers = $this->answers; if ($only_user_ids !== null) { foreach ($answers as $key => $answer) { if (!in_array($answer['user_id'], $only_user_ids)) { unset($answers[$key]); } } } $factory = new Flexi\Factory(realpath(__DIR__ . '/../../app/views')); $template = $factory->open('questionnaire/question_types/freetext/freetext_evaluation.php'); $template->vote = $this; $template->set_attribute('answers', $answers); return $template; } /** * Returns an array of the answers to be put into a CSV-file. * @return array */ public function getResultArray() { $output = []; $countNobodys = 0; $question = trim(strip_tags($this->questiondata['description'])); foreach ($this->answers as $answer) { if ($answer['user_id'] && $answer['user_id'] != 'nobody') { $userId = $answer['user_id']; } else { $countNobodys++; $userId = _('unbekannt').' '.$countNobodys; } $output[$question][$userId] = $answer['answerdata']['text']; } return $output; } /** * Called after the questionnaire gets closed. Does nothing for this QuestionType Freetext. */ public function onEnding() { //Nothing to do here. } }