/** * Heart of the Controller. This is where all the action takes place * * - The rows are fetched and stored depending on the type of output needed * * - For export/printing all rows are selected. * * - for displaying on screen paging parameters are used to display the * required rows. * * - also depending on output type of session or template rows are appropriately stored in session * or template variables are updated. * * * @return void * */ function run() { // get the column headers $columnHeaders =& $this->_object->getColumnHeaders($this->_action, $this->_output); // we need to get the rows if we are exporting or printing them if ($this->_output == self::EXPORT || $this->_output == self::SCREEN) { // get rows (without paging criteria) $rows = self::getRows($this); if ($this->_output == self::EXPORT) { // export the rows. CRM_Core_Report_Excel::writeCSVFile($this->_object->getExportFileName(), $columnHeaders, $rows); exit(1); } else { // assign to template and display them. self::$_template->assign_by_ref('rows', $rows); self::$_template->assign_by_ref('columnHeaders', $columnHeaders); } } else { // output requires paging/sorting capability $rows = self::getRows($this); $rowsEmpty = count($rows) ? false : true; $qill = $this->getQill(); $summary = $this->getSummary(); // if we need to store in session, lets update session if ($this->_output & self::SESSION) { $this->_store->set("{$this->_prefix}columnHeaders", $columnHeaders); $this->_store->set("{$this->_prefix}rows", $rows); $this->_store->set("{$this->_prefix}rowCount", $this->_total); $this->_store->set("{$this->_prefix}rowsEmpty", $rowsEmpty); $this->_store->set("{$this->_prefix}qill", $qill); $this->_store->set("{$this->_prefix}summary", $summary); } else { self::$_template->assign_by_ref("{$this->_prefix}pager", $this->_pager); self::$_template->assign_by_ref("{$this->_prefix}sort", $this->_sort); self::$_template->assign_by_ref("{$this->_prefix}columnHeaders", $columnHeaders); self::$_template->assign_by_ref("{$this->_prefix}rows", $rows); self::$_template->assign("{$this->_prefix}rowsEmpty", $rowsEmpty); self::$_template->assign("{$this->_prefix}qill", $qill); self::$_template->assign("{$this->_prefix}summary", $summary); } // always store the current pageID and sortID $this->_store->set($this->_prefix . CRM_Utils_Pager::PAGE_ID, $this->_pager->getCurrentPageID()); $this->_store->set($this->_prefix . CRM_Utils_Sort::SORT_ID, $this->_sort->getCurrentSortID()); $this->_store->set($this->_prefix . CRM_Utils_Sort::SORT_DIRECTION, $this->_sort->getCurrentSortDirection()); $this->_store->set($this->_prefix . CRM_Utils_Sort::SORT_ORDER, $this->_sort->orderBy()); $this->_store->set($this->_prefix . CRM_Utils_Pager::PAGE_ROWCOUNT, $this->_pager->_perPage); } }
/** * Heart of the Controller. This is where all the action takes place * * - The rows are fetched and stored depending on the type of output needed * * - For export/printing all rows are selected. * * - for displaying on screen paging parameters are used to display the * required rows. * * - also depending on output type of session or template rows are appropriately stored in session * or template variables are updated. * * * @return void * */ function run() { // get the column headers $columnHeaders =& $this->_object->getColumnHeaders($this->_action, $this->_output); // we need to get the rows if we are exporting or printing them if ($this->_output == CRM_CORE_SELECTOR_CONTROLLER_EXPORT || $this->_output == CRM_CORE_SELECTOR_CONTROLLER_SCREEN) { // get rows (without paging criteria) $rows =& $this->_object->getRows($this->_action, 0, 0, $this->_sort, $this->_output); if ($this->_output == CRM_CORE_SELECTOR_CONTROLLER_EXPORT) { // export the rows. CRM_Core_Report_Excel::writeCSVFile($this->_object->getExportFileName(), $columnHeaders, $rows); exit(1); } else { // assign to template and display them. $GLOBALS['_CRM_CORE_SELECTOR_CONTROLLER']['_template']->assign_by_ref('rows', $rows); } } else { // output requires paging/sorting capability // get rows with paging criteria $rows =& $this->_object->getRows($this->_action, $this->_pagerOffset, $this->_pagerRowCount, $this->_sort, $this->_output); $rowsEmpty = count($rows) ? false : true; $qill = $this->getQill(); // if we need to store in session, lets update session if ($this->_output & CRM_CORE_SELECTOR_CONTROLLER_SESSION) { $this->_store->set('columnHeaders', $columnHeaders); $this->_store->set('rows', $rows); $this->_store->set('rowCount', $this->_total); $this->_store->set('rowsEmpty', $rowsEmpty); $this->_store->set('qill', $qill); } else { $GLOBALS['_CRM_CORE_SELECTOR_CONTROLLER']['_template']->assign_by_ref('pager', $this->_pager); $GLOBALS['_CRM_CORE_SELECTOR_CONTROLLER']['_template']->assign_by_ref('sort', $this->_sort); $GLOBALS['_CRM_CORE_SELECTOR_CONTROLLER']['_template']->assign_by_ref('columnHeaders', $columnHeaders); $GLOBALS['_CRM_CORE_SELECTOR_CONTROLLER']['_template']->assign_by_ref('rows', $rows); $GLOBALS['_CRM_CORE_SELECTOR_CONTROLLER']['_template']->assign('rowsEmpty', $rowsEmpty); $GLOBALS['_CRM_CORE_SELECTOR_CONTROLLER']['_template']->assign('qill', $qill); } // always store the current pageID and sortID $this->_store->set(CRM_UTILS_PAGER_PAGE_ID, $this->_pager->getCurrentPageID()); $this->_store->set(CRM_UTILS_SORT_SORT_ID, $this->_sort->getCurrentSortID()); $this->_store->set(CRM_UTILS_SORT_SORT_DIRECTION, $this->_sort->getCurrentSortDirection()); $this->_store->set(CRM_UTILS_SORT_SORT_ORDER, $this->_sort->orderBy()); $this->_store->set(CRM_UTILS_PAGER_PAGE_ROWCOUNT, $this->_pager->_perPage); } }
/** * Heart of the Controller. This is where all the action takes place * * - The rows are fetched and stored depending on the type of output needed * * - For export/printing all rows are selected. * * - for displaying on screen paging parameters are used to display the * required rows. * * - also depending on output type of session or template rows are appropriately stored in session * or template variables are updated. * * * @return void * */ function run() { // get the column headers $columnHeaders =& $this->_object->getColumnHeaders($this->_action, $this->_output); $contextArray = explode('_', get_class($this->_object)); $contextName = strtolower($contextArray[1]); // fix contribute and member if ($contextName == 'contribute') { $contextName = 'contribution'; } elseif ($contextName == 'member') { $contextName = 'membership'; } // we need to get the rows if we are exporting or printing them if ($this->_output == self::EXPORT || $this->_output == self::SCREEN) { // get rows (without paging criteria) $rows = self::getRows($this); CRM_Utils_Hook::searchColumns($contextName, $columnHeaders, $rows, $this); if ($this->_output == self::EXPORT) { // export the rows. CRM_Core_Report_Excel::writeCSVFile($this->_object->getExportFileName(), $columnHeaders, $rows); CRM_Utils_System::civiExit(); } else { // assign to template and display them. self::$_template->assign_by_ref('rows', $rows); self::$_template->assign_by_ref('columnHeaders', $columnHeaders); } } else { // output requires paging/sorting capability $rows = self::getRows($this); CRM_Utils_Hook::searchColumns($contextName, $columnHeaders, $rows, $this); $rowsEmpty = count($rows) ? FALSE : TRUE; $qill = $this->getQill(); $summary = $this->getSummary(); // if we need to store in session, lets update session if ($this->_output & self::SESSION) { $this->_store->set("{$this->_prefix}columnHeaders", $columnHeaders); if ($this->_dynamicAction) { $this->_object->removeActions($rows); } $this->_store->set("{$this->_prefix}rows", $rows); $this->_store->set("{$this->_prefix}rowCount", $this->_total); $this->_store->set("{$this->_prefix}rowsEmpty", $rowsEmpty); $this->_store->set("{$this->_prefix}qill", $qill); $this->_store->set("{$this->_prefix}summary", $summary); } else { self::$_template->assign_by_ref("{$this->_prefix}pager", $this->_pager); self::$_template->assign_by_ref("{$this->_prefix}sort", $this->_sort); self::$_template->assign_by_ref("{$this->_prefix}columnHeaders", $columnHeaders); self::$_template->assign_by_ref("{$this->_prefix}rows", $rows); self::$_template->assign("{$this->_prefix}rowsEmpty", $rowsEmpty); self::$_template->assign("{$this->_prefix}qill", $qill); self::$_template->assign("{$this->_prefix}summary", $summary); } // always store the current pageID and sortID $this->_store->set($this->_prefix . CRM_Utils_Pager::PAGE_ID, $this->_pager->getCurrentPageID()); $this->_store->set($this->_prefix . CRM_Utils_Sort::SORT_ID, $this->_sort->getCurrentSortID()); $this->_store->set($this->_prefix . CRM_Utils_Sort::SORT_DIRECTION, $this->_sort->getCurrentSortDirection()); $this->_store->set($this->_prefix . CRM_Utils_Sort::SORT_ORDER, $this->_sort->orderBy()); $this->_store->set($this->_prefix . CRM_Utils_Pager::PAGE_ROWCOUNT, $this->_pager->_perPage); } }