/** * Get or set the single instance of CRM_Utils_GlobalStack. * * @return CRM_Utils_GlobalStack */ public static function singleton() { if (self::$_singleton === NULL) { self::$_singleton = new CRM_Utils_GlobalStack(); } return self::$_singleton; }
function getReportOutputAsCsv($reportClass, $inputParams) { $config = CRM_Core_Config::singleton(); $config->keyDisable = TRUE; $controller = new CRM_Core_Controller_Simple($reportClass, ts('some title')); $tmpReportVal = explode('_', $reportClass); $reportName = array_pop($tmpReportVal); $reportObj =& $controller->_pages[$reportName]; $tmpGlobals = array(); $tmpGlobals['_REQUEST']['force'] = 1; $tmpGlobals['_GET'][$config->userFrameworkURLVar] = 'civicrm/placeholder'; $tmpGlobals['_SERVER']['QUERY_STRING'] = ''; if (!empty($inputParams['fields'])) { $fields = implode(',', $inputParams['fields']); $tmpGlobals['_GET']['fld'] = $fields; $tmpGlobals['_GET']['ufld'] = 1; } if (!empty($inputParams['filters'])) { foreach ($inputParams['filters'] as $key => $val) { $tmpGlobals['_GET'][$key] = $val; } } if (!empty($inputParams['group_bys'])) { $groupByFields = implode(' ', $inputParams['group_bys']); $tmpGlobals['_GET']['gby'] = $groupByFields; } CRM_Utils_GlobalStack::singleton()->push($tmpGlobals); try { $reportObj->storeResultSet(); $reportObj->buildForm(); $rows = $reportObj->getResultSet(); $tmpFile = $this->createTempDir() . CRM_Utils_File::makeFileName('CiviReport.csv'); $csvContent = CRM_Report_Utils_Report::makeCsv($reportObj, $rows); file_put_contents($tmpFile, $csvContent); } catch (Exception $e) { // print_r($e->getCause()->getUserInfo()); CRM_Utils_GlobalStack::singleton()->pop(); throw $e; } CRM_Utils_GlobalStack::singleton()->pop(); return $tmpFile; }
/** * Temporarily override global variables and ensure that the variable data. * is set as expected (before/during/after the override). */ public function testPushPop() { global $_FOO, $_EXTRA; $_FOO['bar'] = 1; $_FOO['whiz'] = 1; $_EXTRA = 1; $this->assertEquals(1, $_FOO['bar']); $this->assertEquals(1, $_FOO['whiz']); $this->assertFalse(isset($_FOO['bang'])); $this->assertEquals(1, $_EXTRA); CRM_Utils_GlobalStack::singleton()->push(array('_FOO' => array('bar' => 2, 'bang' => 2), '_EXTRA' => 2)); $this->assertEquals(2, $_FOO['bar']); $this->assertEquals(1, $_FOO['whiz']); $this->assertEquals(2, $_FOO['bang']); $this->assertEquals(2, $_EXTRA); CRM_Utils_GlobalStack::singleton()->pop(); $this->assertEquals(1, $_FOO['bar']); $this->assertEquals(1, $_FOO['whiz']); $this->assertEquals(NULL, $_FOO['bang']); $this->assertEquals(1, $_EXTRA); }