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); } }