/** * Renders the entire report (including layout) * * @param array|string[] $respondentId * @param boolean $group Group same surveys or not * @param string $format html|pdf, the output format to use */ public function render($respondents, $group = true, $format = 'html') { $this->_group = $group; $this->html->snippet($this->_reportHeader); $respondentCount = count($respondents); $respondentIdx = 0; foreach ($respondents as $respondentId) { $respondentIdx++; $this->_exportRespondent($respondentId); if ($respondentIdx < $respondentCount) { // Add some whitespace between patients $this->html->div('', array('style' => 'height: 100px')); } } $this->html->snippet($this->_reportFooter, 'respondents', $respondents); $this->menu->setVisible(false); if ($this->escort instanceof \Gems_Project_Layout_MultiLayoutInterface) { $this->escort->layoutSwitch(); } $this->escort->postDispatch(\Zend_Controller_Front::getInstance()->getRequest()); \Zend_Controller_Action_HelperBroker::getExistingHelper('layout')->disableLayout(); \Zend_Controller_Action_HelperBroker::getExistingHelper('viewRenderer')->setNoRender(true); $this->view->layout()->content = $this->html->render($this->view); $content = $this->view->layout->render(); if ($format == 'pdf') { if (is_array($respondentId) && isset($respondentId['gr2o_id_organization'])) { $respondentId = $respondentId['gr2o_patient_nr']; } $filename = 'respondent-export-' . strtolower($respondentId) . '.pdf'; $content = $this->_pdf->convertFromHtml($content); $this->_pdf->echoPdfContent($content, $filename, true); } else { echo $content; } $this->menu->setVisible(true); }
/** * Redirects the user to his/her start page. * * @param \Gems_Menu $menu * @param \Zend_Controller_Request_Abstract $request * @return \Gems_Menu_SubMenuItem */ public function gotoStartPage(\Gems_Menu $menu, \Zend_Controller_Request_Abstract $request) { if ($this->isPasswordResetRequired()) { // Set menu OFF $menu->setVisible(false); $menuItem = $menu->findController('option', 'change-password'); // This may not yet be true, but is needed for the redirect. $menuItem->set('allowed', true); $menuItem->set('visible', true); } else { $menuItem = $menu->findFirst(array('allowed' => true, 'visible' => true)); } if ($menuItem) { // Prevent redirecting to the current page. if (!($menuItem->is('controller', $request->getControllerName()) && $menuItem->is('action', $request->getActionName()))) { if (!$menuItem->has('controller')) { //This is a container, try to find first active child $item = $menuItem; foreach ($item->sortByOrder()->getChildren() as $menuItem) { if ($menuItem->isAllowed() && $menuItem->has('controller')) { break; } $menuItem = null; } } if ($menuItem) { $redirector = \Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); $redirector->gotoRoute($menuItem->toRouteUrl($request), null, true); } } } return $menuItem; }