diff --git a/CRM/Export/BAO/Export.php b/CRM/Export/BAO/Export.php index b7f06d505bcd..2be84a1d8f46 100644 --- a/CRM/Export/BAO/Export.php +++ b/CRM/Export/BAO/Export.php @@ -118,6 +118,7 @@ public static function exportComponents( } $processor->setComponentTable($componentTable); $processor->setComponentClause($componentClause); + $processor->setIds($ids); list($query, $queryString) = $processor->runQuery($params, $order); diff --git a/CRM/Export/BAO/ExportProcessor.php b/CRM/Export/BAO/ExportProcessor.php index bd9559bbe2a3..86ac5057df0b 100644 --- a/CRM/Export/BAO/ExportProcessor.php +++ b/CRM/Export/BAO/ExportProcessor.php @@ -100,6 +100,13 @@ class CRM_Export_BAO_ExportProcessor { */ protected $contactGreetingFields = []; + /** + * An array of primary IDs of the entity being exported. + * + * @var array + */ + protected $ids = []; + /** * Get additional non-visible fields for address merge purposes. * @@ -585,6 +592,20 @@ public function setQueryOperator($queryOperator) { $this->queryOperator = $queryOperator; } + /** + * @return array + */ + public function getIds() { + return $this->ids; + } + + /** + * @param array $ids + */ + public function setIds($ids) { + $this->ids = $ids; + } + /** * @return array */ @@ -2326,7 +2347,14 @@ public function writeCSVFromTable() { // call export hook $headerRows = $this->getHeaderRows(); $exportTempTable = $this->getTemporaryTable(); + $exportMode = $this->getExportMode(); + $sqlColumns = $this->getSQLColumns(); + $componentTable = $this->getComponentTable(); + $ids = $this->getIds(); CRM_Utils_Hook::export($exportTempTable, $headerRows, $sqlColumns, $exportMode, $componentTable, $ids); + if ($exportMode !== $this->getExportMode() || $componentTable !== $this->getComponentTable()) { + CRM_Core_Error::deprecatedFunctionWarning('altering the export mode and/or component table in the hook is no longer supported.'); + } if ($exportTempTable !== $this->getTemporaryTable()) { CRM_Core_Error::deprecatedFunctionWarning('altering the export table in the hook is deprecated (in some flows the table itself will be)'); $this->setTemporaryTable($exportTempTable); @@ -2355,7 +2383,7 @@ public function writeCSVFromTable() { while ($dao->fetch()) { $row = []; - foreach (array_keys($this->getSQLColumns()) as $column) { + foreach (array_keys($sqlColumns) as $column) { $row[$column] = $dao->$column; } $componentDetails[] = $row;