protected function makeData()
 {
     if ($this->rowsAreExpandable()) {
         $this->makeDataWithExpandableRows();
     } else {
         parent::makeData();
     }
 }
Ejemplo n.º 2
0
 /**
  * Test for viaSelect and viaModel together
  * @depends testExportSummationAttributes
  */
 public function testViaSelectAndViaModelTogether()
 {
     $reportModelTestItem = new ReportModelTestItem();
     $report = new Report();
     //viaSelect attribute
     $displayAttribute1 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_SUMMATION);
     $displayAttribute1->attributeIndexOrDerivedType = 'integer__Minimum';
     $displayAttribute1->madeViaSelectInsteadOfViaModel = true;
     $this->assertTrue($displayAttribute1->columnAliasName == 'col0');
     //viaModel attribute
     $reportModelTestItem->boolean = true;
     $displayAttribute2 = new DisplayAttributeForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_ROWS_AND_COLUMNS);
     $displayAttribute2->setModelAliasUsingTableAliasName('model1');
     $displayAttribute2->attributeIndexOrDerivedType = 'boolean';
     $reportResultsRowData = new ReportResultsRowData(array($displayAttribute1, $displayAttribute2), 4);
     $reportResultsRowData->addSelectedColumnNameAndValue('col0', 9000);
     $reportResultsRowData->addModelAndAlias($reportModelTestItem, 'model1');
     $adapter = new ReportToExportAdapter($reportResultsRowData, $report);
     $compareHeaderData = array('Integer -(Min)', 'Boolean');
     $compareRowData = array(9000, true);
     $this->assertEquals($compareHeaderData, $adapter->getHeaderData());
     $this->assertEquals($compareRowData, $adapter->getData());
 }
Ejemplo n.º 3
0
 public function actionExport($id, $stickySearchKey = null)
 {
     assert('$stickySearchKey == null || is_string($stickySearchKey)');
     $savedReport = SavedReport::getById((int) $id);
     ControllerSecurityUtil::resolveCanCurrentUserAccessModule($savedReport->moduleClassName);
     ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($savedReport);
     $report = SavedReportToReportAdapter::makeReportBySavedReport($savedReport);
     $dataProvider = $this->getDataProviderForExport($report, $report->getId(), false);
     $totalItems = intval($dataProvider->calculateTotalItemCount());
     $data = array();
     if ($totalItems > 0) {
         if ($totalItems <= ExportModule::$asynchronusThreshold) {
             // Output csv file directly to user browser
             if ($dataProvider) {
                 $data1 = ExportUtil::getDataForExport($dataProvider);
                 $headerData = array();
                 foreach ($data1 as $reportResultsRowData) {
                     $reportToExportAdapter = new ReportToExportAdapter($reportResultsRowData, $report);
                     if (count($headerData) == 0) {
                         $headerData = $reportToExportAdapter->getHeaderData();
                     }
                     $data[] = $reportToExportAdapter->getData();
                 }
             }
             // Output data
             if (count($data)) {
                 $fileName = $this->getModule()->getName() . ".csv";
                 ExportItemToCsvFileUtil::export($data, $headerData, $fileName, true);
             } else {
                 Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'There is no data to export.'));
             }
         } else {
             if ($dataProvider) {
                 $serializedData = ExportUtil::getSerializedDataForExport($dataProvider);
             }
             // Create background job
             $exportItem = new ExportItem();
             $exportItem->isCompleted = 0;
             $exportItem->exportFileType = 'csv';
             $exportItem->exportFileName = $this->getModule()->getName();
             $exportItem->modelClassName = 'SavedReport';
             $exportItem->serializedData = $serializedData;
             $exportItem->save();
             $exportItem->forget();
             Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'A large amount of data has been requested for export.  You will receive ' . 'a notification with the download link when the export is complete.'));
         }
     } else {
         Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'There is no data to export.'));
     }
     $this->redirect(array($this->getId() . '/index'));
 }