From bd2faaf667b1547cdc5f73052e85d52a12543bab Mon Sep 17 00:00:00 2001 From: Brandon Kelly Date: Sun, 7 Jul 2019 08:15:51 -0700 Subject: [PATCH] Always propagate when saving elements Fixes #564 --- CHANGELOG.md | 5 +++++ src/base/Element.php | 4 +--- src/base/Field.php | 6 +----- src/fields/Categories.php | 3 +-- src/fields/Entries.php | 4 +--- src/fields/Tags.php | 3 +-- src/fields/Users.php | 3 +-- src/helpers/AssetHelper.php | 5 +---- 8 files changed, 12 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 551e6413..94f29f24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## Unreleased + +### Fixed +- Fixed a bug where multi-site elements were only getting saved in the site chosen in the feed settings. ([#564](https://github.com/craftcms/feed-me/issues/564)) + ## 4.1.1 - 2019-07-06 ### Changed diff --git a/src/base/Element.php b/src/base/Element.php index 4099221a..78b954e7 100644 --- a/src/base/Element.php +++ b/src/base/Element.php @@ -190,13 +190,11 @@ public function save($element, $settings) return true; } - $propagate = isset($settings['siteId']) && $settings['siteId'] ? false : true; - if (Craft::$app->getIsMultiSite()) { $this->element->enabledForSite = $this->element->enabled; } - if (!Craft::$app->getElements()->saveElement($this->element, true, $propagate)) { + if (!Craft::$app->getElements()->saveElement($this->element)) { return false; } diff --git a/src/base/Field.php b/src/base/Field.php index 275f3687..e2a74fd7 100644 --- a/src/base/Field.php +++ b/src/base/Field.php @@ -115,15 +115,11 @@ protected function populateElementFields($elementIds) ] ]); - $propagate = isset($this->feed['siteId']) && $this->feed['siteId'] ? false : true; - - if (!$elementsService->saveElement($element, true, $propagate)) { + if (!$elementsService->saveElement($element)) { Plugin::error('`{handle}` - Unable to save sub-field: `{e}`.', ['e' => json_encode($element->getErrors()), 'handle' => $this->fieldHandle]); } Plugin::info('`{handle}` - Processed {name} [`#{id}`]({url}) sub-fields with content: `{content}`.', ['name' => $element->displayName(), 'id' => $elementId, 'url' => $element->cpEditUrl, 'handle' => $this->fieldHandle, 'content' => json_encode($fieldContent)]); } } - - } diff --git a/src/fields/Categories.php b/src/fields/Categories.php index 07f72543..7bafc1f6 100644 --- a/src/fields/Categories.php +++ b/src/fields/Categories.php @@ -145,7 +145,6 @@ private function _createElement($dataValue, $groupId) $element->groupId = $groupId; $siteId = Hash::get($this->feed, 'siteId'); - $propagate = $siteId ? false : true; if ($siteId) { $element->siteId = $siteId; @@ -153,7 +152,7 @@ private function _createElement($dataValue, $groupId) $element->setScenario(BaseElement::SCENARIO_ESSENTIALS); - if (!Craft::$app->getElements()->saveElement($element, true, $propagate)) { + if (!Craft::$app->getElements()->saveElement($element)) { Plugin::error('`{handle}` - Category error: Could not create - `{e}`.', ['e' => json_encode($element->getErrors()), 'handle' => $this->field->handle]); } else { Plugin::info('`{handle}` - Category `#{id}` added.', ['id' => $element->id, 'handle' => $this->field->handle]); diff --git a/src/fields/Entries.php b/src/fields/Entries.php index 3b899eea..fd876fc2 100644 --- a/src/fields/Entries.php +++ b/src/fields/Entries.php @@ -172,8 +172,6 @@ private function _createElement($dataValue, $sources) $element->typeId = $typeId; $siteId = Hash::get($this->feed, 'siteId'); - $propagate = $siteId ? false : true; - $section = Craft::$app->sections->getSectionById($element->sectionId); if ($siteId) { @@ -199,7 +197,7 @@ private function _createElement($dataValue, $sources) $element->setScenario(BaseElement::SCENARIO_ESSENTIALS); - if (!Craft::$app->getElements()->saveElement($element, true, $propagate)) { + if (!Craft::$app->getElements()->saveElement($element)) { Plugin::error('`{handle}` - Entry error: Could not create - `{e}`.', ['e' => json_encode($element->getErrors()), 'handle' => $this->field->handle]); } else { Plugin::info('`{handle}` - Entry `#{id}` added.', ['id' => $element->id, 'handle' => $this->field->handle]); diff --git a/src/fields/Tags.php b/src/fields/Tags.php index 2d3d6876..efaa4665 100644 --- a/src/fields/Tags.php +++ b/src/fields/Tags.php @@ -145,7 +145,6 @@ private function _createElement($dataValue, $groupId) $element->groupId = $groupId; $siteId = Hash::get($this->feed, 'siteId'); - $propagate = $siteId ? false : true; if ($siteId) { $element->siteId = $siteId; @@ -153,7 +152,7 @@ private function _createElement($dataValue, $groupId) $element->setScenario(BaseElement::SCENARIO_ESSENTIALS); - if (!Craft::$app->getElements()->saveElement($element, true, $propagate)) { + if (!Craft::$app->getElements()->saveElement($element)) { Plugin::error('`{handle}` - Tag error: Could not create - `{e}`.', ['e' => json_encode($element->getErrors()), 'handle' => $this->field->handle]); } else { Plugin::info('`{handle}` - Tag `#{id}` added.', ['id' => $element->id, 'handle' => $this->field->handle]); diff --git a/src/fields/Users.php b/src/fields/Users.php index 7da65e80..858d12d5 100644 --- a/src/fields/Users.php +++ b/src/fields/Users.php @@ -144,7 +144,6 @@ private function _createElement($dataValue, $groupId) } $siteId = Hash::get($this->feed, 'siteId'); - $propagate = $siteId ? false : true; if ($siteId) { $element->siteId = $siteId; @@ -152,7 +151,7 @@ private function _createElement($dataValue, $groupId) $element->setScenario(BaseElement::SCENARIO_ESSENTIALS); - if (!Craft::$app->getElements()->saveElement($element, true, $propagate)) { + if (!Craft::$app->getElements()->saveElement($element)) { Plugin::error('`{handle}` - User error: Could not create - `{e}`.', ['e' => json_encode($element->getErrors()), 'handle' => $this->field->handle]); } else { Plugin::info('`{handle}` - User `#{id}` added.', ['id' => $element->id, 'handle' => $this->field->handle]); diff --git a/src/helpers/AssetHelper.php b/src/helpers/AssetHelper.php index 13f762d4..ebbbb394 100644 --- a/src/helpers/AssetHelper.php +++ b/src/helpers/AssetHelper.php @@ -186,8 +186,6 @@ private static function createAsset($tempFilePath, $filename, $folderId, $feed, $asset->avoidFilenameConflicts = true; $asset->setScenario(AssetElement::SCENARIO_CREATE); - $propagate = isset($feed['siteId']) && $feed['siteId'] ? false : true; - Plugin::info('Creating asset with content `{i}`', [ 'i' => json_encode([ 'tempFilePath' => $tempFilePath, @@ -196,12 +194,11 @@ private static function createAsset($tempFilePath, $filename, $folderId, $feed, 'volumeId' => $folder->volumeId, 'avoidFilenameConflicts' => true, 'scenario' => AssetElement::SCENARIO_CREATE, - 'propagate' => $propagate, 'conflict' => $conflict, ]) ]); - $result = Craft::$app->getElements()->saveElement($asset, true, $propagate); + $result = Craft::$app->getElements()->saveElement($asset); if ($result) { // Annoyingly, you have to create the asset field, then move it to the temp directly, then replace the conflicting