From 68c7b00cc58fed916f2a35a8aee94e3e9a94e91f Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Mon, 16 Jul 2018 11:19:07 +0100 Subject: [PATCH] Issue #2981225 by maxocub, RumyanaRuseva, mpp: Migration fails to create instance when non-bundleable entity type exists --- .../migrate/EntityReferenceTranslationDeriver.php | 10 +++++++--- core/modules/migrate_drupal/tests/fixtures/drupal7.php | 9 +++++++++ .../tests/src/Functional/d7/MigrateUpgrade7Test.php | 4 ++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/EntityReferenceTranslationDeriver.php b/core/modules/migrate_drupal/src/Plugin/migrate/EntityReferenceTranslationDeriver.php index d81b92cc1069..bc3369586076 100644 --- a/core/modules/migrate_drupal/src/Plugin/migrate/EntityReferenceTranslationDeriver.php +++ b/core/modules/migrate_drupal/src/Plugin/migrate/EntityReferenceTranslationDeriver.php @@ -109,6 +109,7 @@ class EntityReferenceTranslationDeriver extends DeriverBase implements Container $derivative_key = $entity_type . '__' . $bundle; $derivative = $base_plugin_definition; + $entity_type_definition = $this->entityTypeManager->getDefinition($entity_type); // Set the migration label. $derivative['label'] = $this->t('@label (@derivative)', [ @@ -118,10 +119,11 @@ class EntityReferenceTranslationDeriver extends DeriverBase implements Container // Set the source plugin. $derivative['source']['plugin'] = 'content_entity' . PluginBase::DERIVATIVE_SEPARATOR . $entity_type; - $derivative['source']['bundle'] = $bundle; + if ($entity_type_definition->hasKey('bundle')) { + $derivative['source']['bundle'] = $bundle; + } // Set the process pipeline. - $entity_type_definition = $this->entityTypeManager->getDefinition($entity_type); $id_key = $entity_type_definition->getKey('id'); $derivative['process'][$id_key] = $id_key; if ($entity_type_definition->isRevisionable()) { @@ -135,7 +137,9 @@ class EntityReferenceTranslationDeriver extends DeriverBase implements Container // Set the destination plugin. $derivative['destination']['plugin'] = 'entity' . PluginBase::DERIVATIVE_SEPARATOR . $entity_type; - $derivative['destination']['default_bundle'] = $bundle; + if ($entity_type_definition->hasKey('bundle')) { + $derivative['destination']['default_bundle'] = $bundle; + } if ($entity_type_definition->isTranslatable()) { $derivative['destination']['translations'] = TRUE; } diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php index 3bd7e7020878..5311407980ff 100644 --- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php +++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php @@ -4492,6 +4492,15 @@ $connection->insert('field_config_instance') 'data' => 'a:6:{s:5:"label";s:11:"Reference 2";s:6:"widget";a:4:{s:4:"type";s:14:"options_select";s:6:"weight";s:2:"21";s:8:"settings";a:0:{}s:6:"module";s:7:"options";}s:8:"settings";a:1:{s:18:"user_register_form";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:21:"entityreference_label";s:8:"settings";a:2:{s:4:"link";b:0;s:13:"bypass_access";b:0;}s:6:"module";s:15:"entityreference";s:6:"weight";i:21;}}s:8:"required";b:0;s:11:"description";s:0:"";}', 'deleted' => '0', )) +->values(array( + 'id' => '66', + 'field_id' => '38', + 'field_name' => 'field_reference', + 'entity_type' => 'user', + 'bundle' => 'user', + 'data' => 'a:7:{s:5:"label";s:9:"Reference";s:6:"widget";a:5:{s:6:"weight";s:2:"11";s:4:"type";s:14:"options_select";s:6:"module";s:7:"options";s:6:"active";i:1;s:8:"settings";a:0:{}}s:8:"settings";a:2:{s:18:"user_register_form";i:0;s:23:"entity_translation_sync";b:0;}s:7:"display";a:1:{s:7:"default";a:5:{s:5:"label";s:5:"above";s:4:"type";s:21:"entityreference_label";s:8:"settings";a:2:{s:4:"link";b:0;s:13:"bypass_access";b:0;}s:6:"module";s:15:"entityreference";s:6:"weight";i:9;}}s:8:"required";i:0;s:11:"description";s:0:"";s:13:"default_value";N;}', + 'deleted' => '0', +)) ->execute(); $connection->schema()->createTable('field_data_body', array( diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php index 762dc191a20a..e651af99af17 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php @@ -66,8 +66,8 @@ class MigrateUpgrade7Test extends MigrateUpgradeExecuteTestBase { 'configurable_language' => 4, 'contact_form' => 3, 'editor' => 2, - 'field_config' => 66, - 'field_storage_config' => 49, + 'field_config' => 67, + 'field_storage_config' => 50, 'file' => 3, 'filter_format' => 7, 'image_style' => 6,