From b3eb95bb62a67ca59e55ec4eed7a64d73861bf80 Mon Sep 17 00:00:00 2001 From: Alexander Guth Date: Tue, 2 Apr 2019 03:00:41 +0800 Subject: [PATCH] Make default format options in ImportExportBehaviour configurable (#4200) Credit to @alxy. If the default format mode is selected, there is no chance to configure the format options for delimiter, enclosure, escape and encoding. This considers a new config file item `defaultFormatOptions` and falls back to `null` if it is not specified. To keep things consistent, the old default values remain untouched. --- .../backend/behaviors/ImportExportController.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/backend/behaviors/ImportExportController.php b/modules/backend/behaviors/ImportExportController.php index 2e1e38a7e..7b726e1ff 100644 --- a/modules/backend/behaviors/ImportExportController.php +++ b/modules/backend/behaviors/ImportExportController.php @@ -601,8 +601,9 @@ class ImportExportController extends ControllerBehavior */ $defaultOptions = [ 'fileName' => $this->exportFileName, - 'delimiter' => ',', - 'enclosure' => '"' + 'delimiter' => $this->getConfig('defaultFormatOptions[delimiter]', ','), + 'enclosure' => $this->getConfig('defaultFormatOptions[enclosure]', '"'), + 'escape' => $this->getConfig('defaultFormatOptions[escape]', '\\'), ]; $options = array_merge($defaultOptions, $options); @@ -615,6 +616,7 @@ class ImportExportController extends ControllerBehavior $csv = CsvWriter::createFromFileObject(new SplTempFileObject); $csv->setDelimiter($options['delimiter']); $csv->setEnclosure($options['enclosure']); + $csv->setEscape($options['escape']); /* * Add headers @@ -815,10 +817,10 @@ class ImportExportController extends ControllerBehavior $presetMode = post('format_preset'); $options = [ - 'delimiter' => null, - 'enclosure' => null, - 'escape' => null, - 'encoding' => null + 'delimiter' => $this->getConfig('defaultFormatOptions[delimiter]'), + 'enclosure' => $this->getConfig('defaultFormatOptions[enclosure]'), + 'escape' => $this->getConfig('defaultFormatOptions[escape]'), + 'encoding' => $this->getConfig('defaultFormatOptions[encoding]'), ]; if ($presetMode == 'custom') {