public function execute($request)
 {
     $this->form = $this->getForm();
     $this->mode = $this->getMode();
     $runReport = false;
     $values = array();
     if ($request->isMethod('post')) {
         $this->form->bind($request->getParameter($this->form->getName()));
         if ($this->form->isValid()) {
             $reportType = $this->form->getValue('report_type');
             if ($reportType != 0) {
                 $values = $this->form->getValues();
                 // check permission
                 if (!$this->checkPermissions($this->mode, $reportType, $values)) {
                     //$this->getUser()->setFlash('warning', TopLevelMessages::ACCESS_DENIED);
                     return sfView::SUCCESS;
                 }
                 $runReport = true;
             }
         }
     } else {
         if ($this->mode == 'my') {
             $reportType = LeaveBalanceReportForm::REPORT_TYPE_EMPLOYEE;
             $values = $this->getFormDefaults();
             $runReport = true;
         }
     }
     if ($runReport) {
         $this->reportType = $reportType;
         $reportId = $reportType == LeaveBalanceReportForm::REPORT_TYPE_LEAVE_TYPE ? 2 : 1;
         $values = $this->convertValues($reportType, $values);
         $reportBuilder = new ReportBuilder();
         $numOfRecords = $reportBuilder->getNumOfRecords($reportId, $values);
         $maxPageLimit = $noOfRecords = sfConfig::get('app_items_per_page');
         //$reportBuilder->getMaxPageLimit($reportId);
         $this->pager = new SimplePager('Report', $maxPageLimit);
         $this->pager->setPage($request->getParameter('pageNo') != '' ? $request->getParameter('pageNo') : 0);
         $this->pager->setNumResults($numOfRecords);
         $this->pager->init();
         $offset = $this->pager->getOffset();
         $offset = empty($offset) ? 0 : $offset;
         $limit = $this->pager->getMaxPerPage();
         $this->resultsSet = $reportBuilder->buildReport($reportId, $offset, $limit, $values);
         $this->fixResultset($values);
         $this->reportName = $this->getReportName($reportId);
         $headers = $reportBuilder->getDisplayHeaders($reportId);
         $this->tableHeaders = $this->fixTableHeaders($reportType, $headers);
         $this->headerInfo = $reportBuilder->getHeaderInfo($reportId);
         $this->tableWidthInfo = $reportBuilder->getTableWidth($reportId);
         $this->linkParams = $this->getLinkParams($reportType, $values);
     }
 }