/** * Add a new page * * Do this in a deperate funciton so it can call itself * @param \Jazzee\Entity\Page $previousPage * @return \Jazzee\Entity\Page */ protected function addPage(\Jazzee\Entity\Page $previousPage) { if ($previousPage->isGlobal()) { $page = $previousPage; } else { $page = new \Jazzee\Entity\Page(); $page->setType($previousPage->getType()); $page->setTitle($previousPage->getTitle()); $page->setMin($previousPage->getMin()); $page->setMax($previousPage->getMax()); if ($previousPage->isRequired()) { $page->required(); } else { $page->optional(); } if ($previousPage->answerStatusDisplay()) { $page->showAnswerStatus(); } else { $page->hideAnswerStatus(); } $page->setInstructions($previousPage->getInstructions()); $page->setLeadingText($previousPage->getLeadingText()); $page->setTrailingText($previousPage->getTrailingText()); $page->notGlobal(); $this->_em->persist($page); foreach ($previousPage->getElements() as $previousElement) { $element = new \Jazzee\Entity\Element(); $element->setType($previousElement->getType()); $element->setFixedId($previousElement->getFixedId()); $element->setTitle($previousElement->getTitle()); $element->setMin($previousElement->getMin()); $element->setMax($previousElement->getMax()); $element->setName($previousElement->getName()); if ($previousElement->isRequired()) { $element->required(); } else { $element->optional(); } $element->setInstructions($previousElement->getInstructions()); $element->setFormat($previousElement->getFormat()); $element->setWeight($previousElement->getWeight()); $page->addElement($element); foreach ($previousElement->getListItems() as $previousItem) { $listItem = new \Jazzee\Entity\ElementListItem(); $listItem->setValue($previousItem->getValue()); $listItem->setWeight($previousItem->getWeight()); $listItem->setName($previousItem->getName()); if ($previousItem->isActive()) { $listItem->activate(); } else { $listItem->deactivate(); } $element->addItem($listItem); $this->_em->persist($listItem); } $this->_em->persist($element); } foreach ($previousPage->getVariables() as $previousVar) { $var = $page->setVar($previousVar->getName(), $previousVar->getValue()); $this->_em->persist($var); } foreach ($previousPage->getChildren() as $previousChild) { $childPage = $this->addPage($previousChild); $page->addChild($childPage); } } return $page; }
/** * Copy a Page * @param \Doctrine\ORM\EntityManager $em * @param \Jazzee\Entity\Page $page * @return \Jazzee\Entity\Page */ public function copyPage(\Doctrine\ORM\EntityManager $em, \Jazzee\Entity\Page $page) { $newPage = new \Jazzee\Entity\Page(); $newPage->setTitle($page->getTitle()); $newPage->setMax($page->getMax()); $newPage->setInstructions($page->getInstructions()); $newPage->setLeadingText($page->getLeadingText()); $newPage->setTrailingText($page->getTrailingText()); $newPage->setFixedId($page->getFixedId()); $newPage->setType($em->getRepository('\\Jazzee\\Entity\\PageType')->findOneByClass($page->getType()->getClass())); if ($page->isGlobal()) { $newPage->makeGlobal(); } else { $newPage->notGlobal(); } if ($page->isRequired()) { $newPage->required(); } else { $newPage->optional(); } foreach ($page->getChildren() as $child) { $newPage->addChild($this->copyPage($em, $child)); } foreach ($page->getVariables() as $variable) { $newPage->setVar($variable->getName(), $variable->getValue()); } foreach ($newPage->getVariables() as $variable) { $em->persist($variable); } foreach ($page->getElements() as $element) { $newElement = new \Jazzee\Entity\Element(); $newElement->setType($em->getRepository('\\Jazzee\\Entity\\ElementType')->findOneByClass($element->getType()->getClass())); $newElement->setWeight($element->getWeight()); $newElement->setFixedId($element->getFixedId()); $newElement->setTitle($element->getTitle()); $newElement->setMax($element->getMax()); $newElement->setMin($element->getMin()); $newElement->setInstructions($element->getInstructions()); $newElement->setDefaultValue($element->getDefaultValue()); $newElement->setFormat($element->getFormat()); if ($element->isRequired()) { $newElement->required(); } else { $newElement->optional(); } foreach ($element->getListItems() as $item) { $newItem = new \Jazzee\Entity\ElementListItem(); $newItem->setValue($item->getValue()); $newItem->setWeight($item->getWeight()); $newElement->addItem($newItem); $em->persist($newItem); } $em->persist($newElement); $newPage->addElement($newElement); } $em->persist($newPage); return $newPage; }
/** * Render a single answer in the PDF * @param \Jazzee\ApplicantPDF $pdf * @param \Jazzee\Entity\Page $page * @param \Jazzee\Entity\Answer $answer */ protected function renderPdfAnswerFromArray(\Jazzee\Entity\Page $page, \Jazzee\ApplicantPDF $pdf, array $answerData) { if (!empty($answerData['elements'])) { $pdf->addText("{$this->_applicationPage->getPage()->getVar('branchingElementLabel')}: ", 'b'); $pdf->addText("{$answerData['elements'][0]['displayValue']}\n", 'p'); foreach ($page->getChildren() as $childPage) { $jazzeePage = $childPage->getApplicationPageJazzeePage(); $jazzeePage->setController($this->_controller); $jazzeePage->renderPdfAnswerFromArray($childPage, $pdf, $answerData); } if ($attachment = $answerData['attachment']) { $pdf->addPdf(\Jazzee\Globals::getFileStore()->getFileContents($attachment["attachmentHash"])); } } else { if (!empty($answerData['children'][0])) { $childAnswer = $answerData['children'][0]; $childPage = $page->getChildById($childAnswer['page_id']); $pdf->addText("{$this->_applicationPage->getPage()->getVar('branchingElementLabel')}: ", 'b'); $pdf->addText("{$childPage->getTitle()}\n", 'p'); $jazzeePage = $childPage->getApplicationPageJazzeePage(); $jazzeePage->setController($this->_controller); $jazzeePage->renderPdfAnswerFromArray($childPage, $pdf, $childAnswer); } } }