Ejemplo n.º 1
0
 /**
  * @return Questionnaire
  */
 protected function get_questionnaires()
 {
     $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');
     $questonnaires = new Questionnaire();
     $questonnaires->select('*');
     $questonnaires->select_subquery($questionnaire_answers, 'max_answer_number');
     $questonnaires->where('published', 1);
     $questonnaires->get_iterated();
     return $questonnaires;
 }
Ejemplo n.º 2
0
 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);
     }
 }