From 50315d87140a478bc2881c44d0010f228c1ebe99 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Tue, 5 Nov 2019 16:49:59 +0100 Subject: [PATCH] ImportSource: fix cloning fixes #2005 fixes #1997 --- application/controllers/ImportsourceController.php | 3 +++ library/Director/Objects/ImportSource.php | 11 +++++++---- library/Director/Web/Form/CloneImportSourceForm.php | 2 -- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/application/controllers/ImportsourceController.php b/application/controllers/ImportsourceController.php index 613ad95a..d259281e 100644 --- a/application/controllers/ImportsourceController.php +++ b/application/controllers/ImportsourceController.php @@ -125,6 +125,9 @@ class ImportsourceController extends ActionController $this->addTitle('Clone: %s', $source->get('source_name')); $form = new CloneImportSourceForm($source); $this->content()->add($form); + $form->on(CloneImportSourceForm::ON_SUCCESS, function (CloneImportSourceForm $form) { + $this->getResponse()->redirectAndExit($form->getSuccessUrl()); + }); $form->handleRequest($this->getServerRequest()); } diff --git a/library/Director/Objects/ImportSource.php b/library/Director/Objects/ImportSource.php index 117c90ac..a58aa195 100644 --- a/library/Director/Objects/ImportSource.php +++ b/library/Director/Objects/ImportSource.php @@ -115,11 +115,11 @@ class ImportSource extends DbObjectWithSettings implements ExportInterface public function setModifiers(array $modifiers) { - if ($this->loadedRowModifiers === null) { + if ($this->loadedRowModifiers === null && $this->hasBeenLoadedFromDb()) { $this->loadedRowModifiers = $this->fetchRowModifiers(); } $current = $this->loadedRowModifiers; - if (count($current) !== count($modifiers)) { + if ($current !== null && count($current) !== count($modifiers)) { $this->newRowModifiers = $modifiers; } else { $i = 0; @@ -394,7 +394,6 @@ class ImportSource extends DbObjectWithSettings implements ExportInterface public function fetchRowModifiers() { $db = $this->getDb(); - $modifiers = ImportRowModifier::loadAll( $this->getConnection(), $db->select() @@ -403,7 +402,11 @@ class ImportSource extends DbObjectWithSettings implements ExportInterface ->order('priority ASC') ); - return $modifiers; + if ($modifiers) { + return $modifiers; + } else { + return []; + } } protected function fetchFlatRowModifiers() diff --git a/library/Director/Web/Form/CloneImportSourceForm.php b/library/Director/Web/Form/CloneImportSourceForm.php index 415ba611..bce92023 100644 --- a/library/Director/Web/Form/CloneImportSourceForm.php +++ b/library/Director/Web/Form/CloneImportSourceForm.php @@ -52,13 +52,11 @@ class CloneImportSourceForm extends Form $newName = $this->getElement('source_name')->getValue(); $export->source_name = $newName; unset($export->originalId); - if (ImportSource::existsWithName($newName, $this->source->getConnection())) { $this->getElement('source_name')->addMessage('Name already exists'); } $this->newSource = ImportSource::import($export, $this->getTargetDb()); $this->newSource->store(); - $this->redirectOnSuccess(); } public function getSuccessUrl()