/** * @param Form $form */ public function colorSelectFormSubmitted(Form $form) { $values = $form->getValues(); $subquestion = $this->subquestion_service->saveBaseProperties($values); // rekonstrukce puvodnich id_pages $id_page = $this->question_service->get($subquestion->id_question)->id_page; $options = array(); if ($subquestion->id_page_related !== null) { $related = $this->page_service->getRelatedPagesByFilter(new PageRelated(array(PageRelated::IDS_PAGE_RELATED => array($subquestion->id_page_related), \App\Base\Filter::GROUP_BY => true))); if (count($related) === 1 && $related[0] !== null) { $pages = $related[0]->getPagesRelatedAsArray(); $options = array($pages[0]->getPage()->id_page => "", $pages[1]->getPage()->id_page => ""); } } // $pages = $this->page_service->getRelatedPages($id_page); // $options = array($id_page=>"",$pages[0]->id_page); $form->getComponent("id_pages")->setItems($options); $values = $form->getValues(); $subquestion->state = $values->id_pages === (int) $id_page ? \App\Model\Subquestion::STATE_CORRECT : \App\Model\Subquestion::STATE_WRONG; $subquestion->answer = $values->id_pages; $this->subquestion_service->save($subquestion); if ($form['cancel']->isSubmittedBy()) { $this->redirect("Survey:final"); } if ($this->sessionSection->id_respondent === null) { $this->sessionSection->id_question = $subquestion->id_question; $this->redirect("Survey:personal"); } else { $this->redirect("Survey:question"); } }
/** * @param int $id_respondent * @return \App\Holder\PageRelated[] */ public function getDuelsPagesByIdRespondent($id_respondent) { $subquestions = $this->database->getSubquestionHoldersByIdRespondent($id_respondent); $ids_page_related = array(); foreach ($subquestions as $subquestion) { if ($subquestion->getSubquestion()->id_page_related !== null && !in_array($subquestion->getSubquestion()->id_page_related, $ids_page_related)) { $ids_page_related[] = $subquestion->getSubquestion()->id_page_related; } } if (count($ids_page_related) === 0) { $ids_page_related[] = null; } return $this->page_service->getRelatedPagesByFilter(new PageRelated(array(PageRelated::DUEL => true, PageRelated::IDS_PAGE_RELATED => $ids_page_related, Filter::GROUP_BY => true))); }