From 8c0efd39804c2e918ff577d0736aa6236121d1b9 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Fri, 14 May 2021 08:51:21 +1200 Subject: [PATCH] Extension hooks for CsvBulkLoader Required for versioned-snapshots integration --- src/Dev/CsvBulkLoader.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Dev/CsvBulkLoader.php b/src/Dev/CsvBulkLoader.php index efa3773a0e1..07b12b867e4 100644 --- a/src/Dev/CsvBulkLoader.php +++ b/src/Dev/CsvBulkLoader.php @@ -69,8 +69,10 @@ public function preview($filepath) protected function processAll($filepath, $preview = false) { $previousDetectLE = ini_get('auto_detect_line_endings'); - ini_set('auto_detect_line_endings', true); + + $this->extend('onBeforeProcessAll', $filepath, $preview); + $result = BulkLoader_Result::create(); try { @@ -145,6 +147,9 @@ protected function processAll($filepath, $preview = false) } finally { ini_set('auto_detect_line_endings', $previousDetectLE); } + + $this->extend('onAfterProcessAll', $result, $preview); + return $result; } @@ -382,6 +387,8 @@ protected function processRecord($record, $columnMap, &$results, $preview = fals } } + $isChanged = $obj->isChanged(); + // write record if (!$preview) { $obj->write(); @@ -392,11 +399,15 @@ protected function processRecord($record, $columnMap, &$results, $preview = fals // save to results if ($existingObj) { + // We mark as updated regardless of isChanged, since custom formatters and importers + // might have affected relationships and other records. $results->addUpdated($obj, $message); } else { $results->addCreated($obj, $message); } + $this->extend('onAfterProcessRecord', $obj, $preview, $isChanged); + $objID = $obj->ID; $obj->destroy();