diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b88bfcb..ac452d55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,8 @@ ## Unreleased -- Fixed a bug that prevent some feeds from importing. ([#786](https://github.com/craftcms/feed-me/issues/786)) +- Fixed a bug that prevented some feeds from importing. ([#786](https://github.com/craftcms/feed-me/issues/786)) +- Fixed a PHP error that would occur when importing into a custom field named `variants`. ([#616](https://github.com/craftcms/feed-me/issues/616)) ## 4.3.3 - 2020-12-10 diff --git a/src/elements/CalenderEvent.php b/src/elements/CalenderEvent.php index 98dae7d1..95009ccc 100644 --- a/src/elements/CalenderEvent.php +++ b/src/elements/CalenderEvent.php @@ -90,12 +90,18 @@ public function getMappingTemplate() */ public function init() { + parent::init(); + Event::on(Process::class, Process::EVENT_STEP_BEFORE_ELEMENT_SAVE, function(FeedProcessEvent $event) { - $this->_onBeforeElementSave($event); + if ($event->feed['elementType'] === EventElement::class) { + $this->_onBeforeElementSave($event); + } }); Event::on(Process::class, Process::EVENT_STEP_AFTER_ELEMENT_SAVE, function(FeedProcessEvent $event) { - $this->_onAfterElementSave($event); + if ($event->feed['elementType'] === EventElement::class) { + $this->_onAfterElementSave($event); + } }); } diff --git a/src/elements/CommerceProduct.php b/src/elements/CommerceProduct.php index e5ce79df..7457ba17 100644 --- a/src/elements/CommerceProduct.php +++ b/src/elements/CommerceProduct.php @@ -80,18 +80,26 @@ public function getMappingTemplate() */ public function init() { + parent::init(); + // Hook into the process service on each step - we need to re-arrange the feed mapping Event::on(Process::class, Process::EVENT_STEP_BEFORE_PARSE_CONTENT, function(FeedProcessEvent $event) { - $this->_preParseVariants($event); + if ($event->feed['elementType'] === ProductElement::class) { + $this->_preParseVariants($event); + } }); Event::on(Process::class, Process::EVENT_STEP_BEFORE_ELEMENT_MATCH, function(FeedProcessEvent $event) { - $this->_checkForVariantMatches($event); + if ($event->feed['elementType'] === ProductElement::class) { + $this->_checkForVariantMatches($event); + } }); // Hook into the before element save event, because we need to do lots to prepare variant data Event::on(Process::class, Process::EVENT_STEP_BEFORE_ELEMENT_SAVE, function(FeedProcessEvent $event) { - $this->_parseVariants($event); + if ($event->feed['elementType'] === ProductElement::class) { + $this->_parseVariants($event); + } }); }