/** * @param $id */ protected function get_questionnaire_for_current_person($id) { $person = new Person(); $person->get_by_id(auth_get_id()); $questionnaire_answers = new Questionnaire_answer(); $questionnaire_answers->select_func('MAX', '@answer_number', 'max_answer'); $questionnaire_answers->group_by('person_id'); $questionnaire_answers->where_related($person); $questionnaire_answers->where_related_questionnaire('id', '${parent}.id'); $questionnaire = new Questionnaire(); $questionnaire->select('*'); $questionnaire->select_subquery($questionnaire_answers, 'max_answer_number'); $questionnaire->where('published', 1); $questionnaire->get_by_id((int) $id); return $questionnaire; }
public function download_questionnaire($id, $format = 'html') { $questionnaire = new Questionnaire(); $questionnaire->get_by_id((int) $id); if (!$questionnaire->exists()) { add_error_flash_message('Dotazník sa nenašiel.'); redirect('questionnaires'); } $questionnaire_answer_max = new Questionnaire_answer(); $questionnaire_answer_max->select_func('MAX', '@answer_number', 'max_answer_number'); $questionnaire_answer_max->where('${parent}.id', 'questionnaire_answers_subquery.id', false); $questionnaire_answers = new Questionnaire_answer(); $questionnaire_answers->where_related($questionnaire); $questionnaire_answers->where_subquery('answer_number', $questionnaire_answer_max); $questionnaire_answers->include_related('person', array('name', 'surname', 'admin')); $questionnaire_answers->order_by_related('person', 'admin', 'asc'); $questionnaire_answers->order_by_related('person', 'surname', 'asc'); $questionnaire_answers->order_by_related('person', 'name', 'asc'); $questionnaire_answers->get_iterated(); if ($format == 'html') { $this->parser->parse('web/controllers/questionnaires/download_questionnaire.tpl', array('questionnaire' => $questionnaire, 'questionnaire_answers' => $questionnaire_answers)); } else { $this->load->helper('general'); $csv = array(); $build_questions_line = true; $questions_line = array(''); foreach ($questionnaire_answers as $questionnaire_answer) { $resolved = $questionnaire->resolve_answers(unserialize($questionnaire_answer->answers)); if (count($resolved) > 0) { $person = array($questionnaire_answer->person_name . ' ' . $questionnaire_answer->person_surname); foreach ($resolved as $one_resolv) { if ($build_questions_line) { $questions_line[] = br2nl(strip_tags($one_resolv['question'])); } $person[] = br2nl(strip_tags($one_resolv['answer'])); } if ($build_questions_line) { $csv[] = $questions_line; } $csv[] = $person; } $build_questions_line = false; } header('content-disposition: attachement; filename=vysledky.csv'); echo array_to_csv($csv); } }