/**
  * 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);
 }
예제 #2
0
 /**
  * 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;
 }