diff --git a/CRM/DataprocessorOutputExport/AbstractOutputExport.php b/CRM/DataprocessorOutputExport/AbstractOutputExport.php index 3c2ac179850d4a8170531166d2588d183df29dfc..9642afbe2a40323c042670eb88c6d06f9832b2a2 100644 --- a/CRM/DataprocessorOutputExport/AbstractOutputExport.php +++ b/CRM/DataprocessorOutputExport/AbstractOutputExport.php @@ -46,16 +46,14 @@ abstract class CRM_DataprocessorOutputExport_AbstractOutputExport implements Exp /** * Run the export of the data processor. * - * @param $filename - * @param \Civi\DataProcessor\ProcessorType\AbstractProcessorType $dataProcessor - * @param $configuration - * @param $idField + * @param string $filename + * @param AbstractProcessorType $dataProcessor + * @param array $configuration + * @param string|null $idField * @param array $selectedIds * @param array $formValues - * - * @return mixed */ - abstract protected function exportRecords($filename, AbstractProcessorType $dataProcessor, $configuration, $idField=null, array $selectedIds=[], array $formValues=[]); + abstract protected function exportRecords(string $filename, AbstractProcessorType $dataProcessor, array $configuration, string $idField=null, array $selectedIds=[], array $formValues=[]); /** * Returns the class name of the form with the export options. @@ -125,7 +123,7 @@ abstract class CRM_DataprocessorOutputExport_AbstractOutputExport implements Exp * * @return false|string */ - public function getConfigurationTemplateFileName() { + public function getConfigurationTemplateFileName():? string { return "CRM/DataprocessorOutputExport/Form/Configuration/GenericOutputExport.tpl"; } @@ -241,8 +239,8 @@ abstract class CRM_DataprocessorOutputExport_AbstractOutputExport implements Exp } $this->createHeader($path, $dataProcessorClass, $outputBAO['configuration'], $dataProcessor, $idField, $selectedIds, []); - $this->exportDataProcessor($path, $dataProcessorClass, $outputBAO['configuration'], $idField, $selectedIds, []); - $this->createFooter($path, $dataProcessorClass, $outputBAO['configuration'], $dataProcessor, $idField, $selectedIds, []); + $this->exportRecords($path, $dataProcessorClass, $outputBAO['configuration'], $idField, $selectedIds); + $this->createFooter($path, $dataProcessorClass, $outputBAO['configuration'], $dataProcessor, $idField, $selectedIds); $mimeType = $this->mimeType(); @@ -377,7 +375,7 @@ abstract class CRM_DataprocessorOutputExport_AbstractOutputExport implements Exp } $outputClass->queueCtx = $ctx; - $outputClass->exportDataProcessor($filename, $dataProcessorClass, $output['configuration'], $idField, $selectedIds, $formValues); + $outputClass->exportRecords($filename, $dataProcessorClass, $output['configuration'], $idField, $selectedIds, $formValues); return TRUE; } @@ -475,6 +473,7 @@ abstract class CRM_DataprocessorOutputExport_AbstractOutputExport implements Exp * Checks whether the current user has access to this output * * @param array $output + * @param array $dataProcessor * @return bool */ public function checkPermission(array $output, array $dataProcessor): bool { diff --git a/CRM/DataprocessorOutputExport/CSV.php b/CRM/DataprocessorOutputExport/CSV.php index ccf452169f011f0069f262b0b9c2c3b4a021a152..36f970e35f7a776863afb816a4fce36cc6fbce4c 100644 --- a/CRM/DataprocessorOutputExport/CSV.php +++ b/CRM/DataprocessorOutputExport/CSV.php @@ -178,7 +178,7 @@ class CRM_DataprocessorOutputExport_CSV extends CRM_DataprocessorOutputExport_Ab fclose($file); } - protected function exportRecords($filename, AbstractProcessorType $dataProcessor, $configuration, $idField=null, $selectedIds=array(), $formValues=array()) { + protected function exportRecords(string $filename, AbstractProcessorType $dataProcessor, array $configuration, string $idField=null, array $selectedIds=array(), array $formValues=array()) { $file = fopen($filename. '.'.$this->getExtension(), 'a'); try { while($record = $dataProcessor->getDataFlow()->nextRecord()) { diff --git a/CRM/DataprocessorOutputExport/Form/OutputExport.php b/CRM/DataprocessorOutputExport/Form/OutputExport.php index ebbbfd911fb49eec07b46b9a9c9223ebbb3dee2e..895400400011d8d9a2d11c1d0c7ac23f95f1bc68 100644 --- a/CRM/DataprocessorOutputExport/Form/OutputExport.php +++ b/CRM/DataprocessorOutputExport/Form/OutputExport.php @@ -85,15 +85,16 @@ class CRM_DataprocessorOutputExport_Form_OutputExport extends CRM_Core_Form { $factory = dataprocessor_get_factory(); $dataProcessorSearchForm = $this->controller->getPage('Search'); - if (!$dataProcessorSearchForm instanceof CRM_DataprocessorSearch_Form_AbstractSearch) { - throw new Exception('Invalid search form'); - } - $this->setDataProcessorSearchForm($dataProcessorSearchForm); - - $this->output = civicrm_api3("DataProcessorOutput", "getsingle", array('id' => $export_id)); - $this->outputClass = $factory->getOutputByName($this->output['type']); - if ($this->outputClass instanceof DirectDownloadExportOutputInterface) { - $this->runExport(); + if ($dataProcessorSearchForm instanceof CRM_DataprocessorSearch_Form_AbstractSearch) { + $this->setDataProcessorSearchForm($dataProcessorSearchForm); + try { + $this->output = civicrm_api3("DataProcessorOutput", "getsingle", ['id' => $export_id]); + $this->outputClass = $factory->getOutputByName($this->output['type']); + if ($this->outputClass instanceof DirectDownloadExportOutputInterface) { + $this->runExport(); + } + } catch (CiviCRM_API3_Exception $e) { + } } } diff --git a/CRM/DataprocessorOutputExport/PDF.php b/CRM/DataprocessorOutputExport/PDF.php index d90925528bd5bb3ca13a1966a8599566afc4fd83..67c0f026e18e58f50437014ff92cfe10ec896082 100644 --- a/CRM/DataprocessorOutputExport/PDF.php +++ b/CRM/DataprocessorOutputExport/PDF.php @@ -344,7 +344,7 @@ class CRM_DataprocessorOutputExport_PDF extends CRM_DataprocessorOutputExport_Ab return $pdfFilename; } - protected function exportRecords($filename, AbstractProcessorType $dataProcessor, $configuration, $idField=null, $selectedIds=array(), $formValues=array()) { + protected function exportRecords(string $filename, AbstractProcessorType $dataProcessor, array $configuration, string $idField=null, array $selectedIds=array(), array $formValues=array()) { $hiddenFields = array(); if (isset($configuration['hidden_fields']) && is_array($configuration['hidden_fields'])) { $hiddenFields = $configuration['hidden_fields']; diff --git a/CRM/DataprocessorSearch/StateMachine/Search.php b/CRM/DataprocessorSearch/StateMachine/Search.php index be9e91b21a09da9c6fb6cb53a14532b79bc3fbd3..4b8f976eb0ce586c2534cc71f46f8724503df48c 100644 --- a/CRM/DataprocessorSearch/StateMachine/Search.php +++ b/CRM/DataprocessorSearch/StateMachine/Search.php @@ -102,12 +102,12 @@ class CRM_DataprocessorSearch_StateMachine_Search extends CRM_Core_StateMachine * @return string|null */ private function getExportFormClass(CRM_DataprocessorSearch_Controller_Search $controller):? string { - $export_id = $controller->get('export_id'); + try { + $export_id = CRM_Utils_Request::retrieve('export_id', 'Integer'); + } catch (CRM_Core_Exception $e) { + } if (empty($export_id)) { - try { - $export_id = CRM_Utils_Request::retrieve('export_id', 'Integer'); - } catch (CRM_Core_Exception $e) { - } + $export_id = $controller->get('export_id'); } if ($export_id) { $controller->set('export_id', $export_id);