From 0f77dc4cebe133011c4bc00a0d9f806723d4a869 Mon Sep 17 00:00:00 2001
From: catch <catch@35733.no-reply.drupal.org>
Date: Fri, 26 May 2023 10:39:42 +0100
Subject: [PATCH] Issue #3000717 by Grevil, Anybody, quietone, Gauravvvv,
 edysmp, benjifisher, larowlan: Missing mapping for "nodereference_url" widget

(cherry picked from commit 1a9a16cf2aca59bdebd1e5750bfc365ad28d55f1)
---
 core/modules/field/migrations/d6_field.yml    |  1 +
 .../d6_field_instance_widget_settings.yml     |  1 +
 .../migrations/state/field.migrate_drupal.yml |  1 +
 .../Kernel/Migrate/d6/MigrateFieldTest.php    |  6 +++
 .../d6/MigrateFieldWidgetSettingsTest.php     |  5 ++
 .../migrate_drupal/tests/fixtures/drupal6.php | 49 +++++++++++++++++++
 .../src/Kernel/d6/FieldDiscoveryTest.php      |  1 +
 .../d6/MultilingualReviewPageTest.php         |  1 +
 .../d6/NoMultilingualReviewPageTest.php       |  1 +
 .../tests/src/Functional/d6/Upgrade6Test.php  |  5 +-
 10 files changed, 69 insertions(+), 2 deletions(-)

diff --git a/core/modules/field/migrations/d6_field.yml b/core/modules/field/migrations/d6_field.yml
index fa611f2ed69..8ede3cbf32a 100644
--- a/core/modules/field/migrations/d6_field.yml
+++ b/core/modules/field/migrations/d6_field.yml
@@ -28,6 +28,7 @@ process:
         userreference_autocomplete: entity_reference
       nodereference:
         nodereference_select: entity_reference
+        nodereference_url: entity_reference
       number_integer:
         number: integer
         optionwidgets_select: list_integer
diff --git a/core/modules/field/migrations/d6_field_instance_widget_settings.yml b/core/modules/field/migrations/d6_field_instance_widget_settings.yml
index 815e8316b58..248c4289e50 100644
--- a/core/modules/field/migrations/d6_field_instance_widget_settings.yml
+++ b/core/modules/field/migrations/d6_field_instance_widget_settings.yml
@@ -58,6 +58,7 @@ process:
         optionwidgets_buttons: options_buttons
         optionwidgets_select: options_select
         nodereference_select: options_select
+        nodereference_url: entity_reference_autocomplete
         nodereference_buttons: options_buttons
         nodereference_autocomplete: entity_reference_autocomplete_tags
         userreference_select: options_select
diff --git a/core/modules/field/migrations/state/field.migrate_drupal.yml b/core/modules/field/migrations/state/field.migrate_drupal.yml
index 0ec481972fd..1928868c021 100644
--- a/core/modules/field/migrations/state/field.migrate_drupal.yml
+++ b/core/modules/field/migrations/state/field.migrate_drupal.yml
@@ -2,6 +2,7 @@
 finished:
   6:
     nodereference: core
+    nodereference_url: core
     userreference: core
     content: field
     email: core
diff --git a/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldTest.php b/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldTest.php
index e78c3506cc7..d931004b50f 100644
--- a/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldTest.php
+++ b/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldTest.php
@@ -102,6 +102,12 @@ class MigrateFieldTest extends MigrateDrupal6TestBase {
     $this->assertSame('entity_reference', $field_storage->getType());
     $this->assertSame('node', $field_storage->getSetting('target_type'));
 
+    // Test a second node reference field.
+    $field_storage = FieldStorageConfig::load('node.field_company_4');
+    $this->assertInstanceOf(FieldStorageConfig::class, $field_storage);
+    $this->assertSame('entity_reference', $field_storage->getType());
+    $this->assertSame('node', $field_storage->getSetting('target_type'));
+
     // Test a user reference field.
     $field_storage = FieldStorageConfig::load('node.field_commander');
     $this->assertInstanceOf(FieldStorageConfig::class, $field_storage);
diff --git a/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldWidgetSettingsTest.php b/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldWidgetSettingsTest.php
index c986b0c3736..b986260363b 100644
--- a/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldWidgetSettingsTest.php
+++ b/core/modules/field/tests/src/Kernel/Migrate/d6/MigrateFieldWidgetSettingsTest.php
@@ -128,6 +128,11 @@ class MigrateFieldWidgetSettingsTest extends MigrateDrupal6TestBase {
     $this->assertIsArray($component);
     $this->assertSame('entity_reference_autocomplete_tags', $component['type']);
 
+    $component = $display_repository->getFormDisplay('node', 'employee', 'default')
+      ->getComponent('field_company_4');
+    $this->assertIsArray($component);
+    $this->assertSame('entity_reference_autocomplete', $component['type']);
+
     $component = $display_repository->getFormDisplay('node', 'employee', 'default')
       ->getComponent('field_commander');
     $this->assertIsArray($component);
diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal6.php b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
index 0badecba795..85503493cf7 100644
--- a/core/modules/migrate_drupal/tests/fixtures/drupal6.php
+++ b/core/modules/migrate_drupal/tests/fixtures/drupal6.php
@@ -2963,6 +2963,18 @@ $connection->insert('content_node_field')
   'active' => '1',
   'locked' => '0',
 ))
+->values(array(
+  'field_name' => 'field_company_4',
+  'type' => 'nodereference',
+  'global_settings' => 'a:1:{s:19:"referenceable_types";a:10:{s:7:"company";s:7:"company";s:7:"article";i:0;s:8:"employee";i:0;s:5:"forum";i:0;s:10:"test_event";i:0;s:9:"test_page";i:0;s:11:"test_planet";i:0;s:10:"test_story";i:0;s:7:"sponsor";i:0;s:5:"story";i:0;}}',
+  'required' => '0',
+  'multiple' => '0',
+  'db_storage' => '1',
+  'module' => 'nodereference',
+  'db_columns' => 'a:1:{s:3:"nid";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:0;s:5:"index";b:1;}}',
+  'active' => '1',
+  'locked' => '0',
+))
 ->values(array(
   'field_name' => 'field_multivalue',
   'type' => 'number_decimal',
@@ -3440,6 +3452,18 @@ $connection->insert('content_node_field_instance')
   'widget_module' => 'nodereference',
   'widget_active' => '1',
 ))
+->values(array(
+  'field_name' => 'field_company_4',
+  'type_name' => 'employee',
+  'weight' => '36',
+  'label' => 'Company 4',
+  'widget_type' => 'nodereference_url',
+  'widget_settings' => 'a:7:{s:18:"autocomplete_match";s:8:"contains";s:4:"size";s:2:"60";s:13:"default_value";a:1:{i:0;a:2:{s:3:"nid";N;s:14:"_error_element";s:50:"default_value_widget][field_company_4][0][nid][nid";}}s:17:"default_value_php";N;s:9:"node_link";a:5:{s:6:"teaser";i:0;s:4:"full";i:1;s:5:"title";s:14:"Company create";s:11:"hover_title";s:0:"";s:11:"destination";s:4:"node";}s:8:"fallback";s:12:"autocomplete";s:13:"edit_fallback";i:1;}',
+  'display_settings' => 'a:5:{s:5:"label";a:2:{s:6:"format";s:5:"above";s:7:"exclude";i:0;}i:5;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:6:"teaser";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}s:4:"full";a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}i:4;a:2:{s:6:"format";s:7:"default";s:7:"exclude";i:0;}}',
+  'description' => '',
+  'widget_module' => 'nodereference',
+  'widget_active' => '1',
+))
 ->values(array(
   'field_name' => 'field_multivalue',
   'type_name' => 'test_planet',
@@ -3847,6 +3871,12 @@ $connection->schema()->createTable('content_type_employee', array(
       'size' => 'normal',
       'unsigned' => TRUE,
     ),
+    'field_company_4_nid' => array(
+      'type' => 'int',
+      'not null' => FALSE,
+      'size' => 'normal',
+      'unsigned' => TRUE,
+    ),
     'field_sync_email' => array(
       'type' => 'varchar',
       'not null' => FALSE,
@@ -3869,6 +3899,9 @@ $connection->schema()->createTable('content_type_employee', array(
     'field_company_3_nid' => array(
       'field_company_3_nid',
     ),
+    'field_company_4_nid' => array(
+      'field_company_4_nid',
+    ),
   ),
   'mysql_character_set' => 'utf8',
 ));
@@ -3880,6 +3913,7 @@ $connection->insert('content_type_employee')
   'field_commander_uid',
   'field_company_2_nid',
   'field_company_3_nid',
+  'field_company_4_nid',
   'field_sync_email',
 ))
 ->values(array(
@@ -3888,6 +3922,7 @@ $connection->insert('content_type_employee')
   'field_commander_uid' => '8',
   'field_company_2_nid' => '15',
   'field_company_3_nid' => '16',
+  'field_company_4_nid' => '16',
   'field_sync_email' => NULL,
 ))
 ->values(array(
@@ -3896,6 +3931,7 @@ $connection->insert('content_type_employee')
   'field_commander_uid' => NULL,
   'field_company_2_nid' => NULL,
   'field_company_3_nid' => NULL,
+  'field_company_4_nid' => NULL,
   'field_sync_email' => 'jsmith@example.com',
 ))
 ->values(array(
@@ -3904,6 +3940,7 @@ $connection->insert('content_type_employee')
   'field_commander_uid' => NULL,
   'field_company_2_nid' => NULL,
   'field_company_3_nid' => NULL,
+  'field_company_4_nid' => NULL,
   'field_sync_email' => 'jsmith@example.com',
 ))
 ->execute();
@@ -48073,6 +48110,18 @@ $connection->insert('system')
   'weight' => '0',
   'info' => 'a:13:{s:4:"name";s:10:"Pushbutton";s:11:"description";s:52:"Tabled, multi-column theme in blue and orange tones.";s:7:"version";s:4:"6.38";s:4:"core";s:3:"6.x";s:6:"engine";s:11:"phptemplate";s:7:"project";s:6:"drupal";s:9:"datestamp";s:10:"1456343372";s:7:"regions";a:5:{s:4:"left";s:12:"Left sidebar";s:5:"right";s:13:"Right sidebar";s:7:"content";s:7:"Content";s:6:"header";s:6:"Header";s:6:"footer";s:6:"Footer";}s:8:"features";a:10:{i:0;s:20:"comment_user_picture";i:1;s:7:"favicon";i:2;s:7:"mission";i:3;s:4:"logo";i:4;s:4:"name";i:5;s:17:"node_user_picture";i:6;s:6:"search";i:7;s:6:"slogan";i:8;s:13:"primary_links";i:9;s:15:"secondary_links";}s:11:"stylesheets";a:1:{s:3:"all";a:1:{s:9:"style.css";s:27:"themes/pushbutton/style.css";}}s:7:"scripts";a:1:{s:9:"script.js";s:27:"themes/pushbutton/script.js";}s:10:"screenshot";s:32:"themes/pushbutton/screenshot.png";s:3:"php";s:5:"4.3.5";}',
 ))
+->values(array(
+  'filename' => 'sites/all/modules/nodereference_url/nodereference_url.module',
+  'name' => 'nodereference_url',
+  'type' => 'module',
+  'owner' => '',
+  'status' => '1',
+  'throttle' => '0',
+  'bootstrap' => '0',
+  'schema_version' => '6100',
+  'weight' => '0',
+  'info' => 'a:8:{s:4:"name";s:25:"Node Reference URL Widget";s:11:"description";s:99:"Adds an additional widget to the CCK Node Reference field that prepopulates a reference by the URL.";s:12:"dependencies";a:1:{i:0;s:13:"nodereference";}s:7:"package";s:3:"CCK";s:4:"core";s:3:"6.x";s:10:"dependents";a:0:{}s:7:"version";N;s:3:"php";s:5:"4.3.5";}',
+))
 ->execute();
 $connection->schema()->createTable('term_data', array(
   'fields' => array(
diff --git a/core/modules/migrate_drupal/tests/src/Kernel/d6/FieldDiscoveryTest.php b/core/modules/migrate_drupal/tests/src/Kernel/d6/FieldDiscoveryTest.php
index 7085fa7239e..d29d763ea57 100644
--- a/core/modules/migrate_drupal/tests/src/Kernel/d6/FieldDiscoveryTest.php
+++ b/core/modules/migrate_drupal/tests/src/Kernel/d6/FieldDiscoveryTest.php
@@ -89,6 +89,7 @@ class FieldDiscoveryTest extends MigrateDrupal6TestBase {
       'field_company',
       'field_company_2',
       'field_company_3',
+      'field_company_4',
       'field_sync',
       'field_multivalue',
       'field_test_text_single_checkbox',
diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php
index 92136beb9ed..241c72964d9 100644
--- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php
+++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/MultilingualReviewPageTest.php
@@ -107,6 +107,7 @@ class MultilingualReviewPageTest extends MultilingualReviewPageTestBase {
       'Menu translation',
       'Node',
       'Node Reference',
+      'Node Reference URL Widget',
       'Nodeaccess',
       'Number',
       'OpenID',
diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php
index d00a238c01c..7fa0e217709 100644
--- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php
+++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/NoMultilingualReviewPageTest.php
@@ -99,6 +99,7 @@ class NoMultilingualReviewPageTest extends NoMultilingualReviewPageTestBase {
       'Node',
       'Nodeaccess',
       'Node Reference',
+      'Node Reference URL Widget',
       'Number',
       'OpenID',
       'PHP filter',
diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php
index fb85520432b..1da8b95b4f6 100644
--- a/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php
+++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d6/Upgrade6Test.php
@@ -78,8 +78,8 @@ class Upgrade6Test extends MigrateUpgradeExecuteTestBase {
       'contact_message' => 0,
       'configurable_language' => 5,
       'editor' => 2,
-      'field_config' => 103,
-      'field_storage_config' => 71,
+      'field_config' => 104,
+      'field_storage_config' => 72,
       'file' => 7,
       'filter_format' => 7,
       'image_style' => 6,
@@ -152,6 +152,7 @@ class Upgrade6Test extends MigrateUpgradeExecuteTestBase {
       'Menu translation',
       'Node',
       'Node Reference',
+      'Node Reference URL Widget',
       'Option Widgets',
       'Path',
       'Profile translation',