Issue #2625696 by chx, alexpott, benjy, mikeryan, andypost, phenaproxima: Make migrations themselves plugins instead of config entities
							parent
							
								
									2d59601447
								
							
						
					
					
						commit
						694994fe9b
					
				| 
						 | 
					@ -16,15 +16,3 @@ block_content.type.*:
 | 
				
			||||||
    description:
 | 
					    description:
 | 
				
			||||||
      type: text
 | 
					      type: text
 | 
				
			||||||
      label: 'Description'
 | 
					      label: 'Description'
 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_box:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 box'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: mapping
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
      mapping:
 | 
					 | 
				
			||||||
        type:
 | 
					 | 
				
			||||||
          type: string
 | 
					 | 
				
			||||||
          label: 'Type'
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@ class MigrateBookTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
    $this->installSchema('book', ['book']);
 | 
					    $this->installSchema('book', ['book']);
 | 
				
			||||||
    $this->installSchema('node', ['node_access']);
 | 
					    $this->installSchema('node', ['node_access']);
 | 
				
			||||||
    $this->migrateContent();
 | 
					    $this->migrateContent();
 | 
				
			||||||
    $this->executeMigration('d6_book');
 | 
					    $this->executeMigrations(['d6_node', 'd6_book']);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,35 +0,0 @@
 | 
				
			||||||
migrate.source.d6_comment:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 comment'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: mapping
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
      mapping:
 | 
					 | 
				
			||||||
        entity_type:
 | 
					 | 
				
			||||||
          type: string
 | 
					 | 
				
			||||||
          label: 'Entity type'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_comment_variable_per_comment_type:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 comment variable'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_comment_entity_form_display_subject:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 comment subject entity form display'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_comment_variable:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 comment variable'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -40,6 +40,7 @@ class MigrateCommentTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->migrateContent();
 | 
					    $this->migrateContent();
 | 
				
			||||||
    $this->executeMigrations([
 | 
					    $this->executeMigrations([
 | 
				
			||||||
 | 
					      'd6_node',
 | 
				
			||||||
      'd6_comment_type',
 | 
					      'd6_comment_type',
 | 
				
			||||||
      'd6_comment_field',
 | 
					      'd6_comment_field',
 | 
				
			||||||
      'd6_comment_field_instance',
 | 
					      'd6_comment_field_instance',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,12 +40,12 @@ class MigrateCommentTest extends MigrateDrupal7TestBase {
 | 
				
			||||||
    // We only need the test_content_type node migration to run for real, so
 | 
					    // We only need the test_content_type node migration to run for real, so
 | 
				
			||||||
    // mock all the others.
 | 
					    // mock all the others.
 | 
				
			||||||
    $this->prepareMigrations(array(
 | 
					    $this->prepareMigrations(array(
 | 
				
			||||||
      'd7_node:*' => array(
 | 
					      'd7_node' => array(
 | 
				
			||||||
        array(array(0), array(0)),
 | 
					        array(array(0), array(0)),
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
    ));
 | 
					    ));
 | 
				
			||||||
    $this->executeMigrations([
 | 
					    $this->executeMigrations([
 | 
				
			||||||
      'd7_node__test_content_type',
 | 
					      'd7_node:test_content_type',
 | 
				
			||||||
      'd7_comment_type',
 | 
					      'd7_comment_type',
 | 
				
			||||||
      'd7_comment',
 | 
					      'd7_comment',
 | 
				
			||||||
    ]);
 | 
					    ]);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,6 @@ namespace Drupal\comment\Tests\Migrate\d7;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\comment\CommentTypeInterface;
 | 
					use Drupal\comment\CommentTypeInterface;
 | 
				
			||||||
use Drupal\comment\Entity\CommentType;
 | 
					use Drupal\comment\Entity\CommentType;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -60,9 +59,8 @@ class MigrateCommentTypeTest extends MigrateDrupal7TestBase {
 | 
				
			||||||
    $this->assertEntity('comment_node_forum', 'Forum topic comment');
 | 
					    $this->assertEntity('comment_node_forum', 'Forum topic comment');
 | 
				
			||||||
    $this->assertEntity('comment_node_test_content_type', 'Test content type comment');
 | 
					    $this->assertEntity('comment_node_test_content_type', 'Test content type comment');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $migration = $this->getMigration('d7_comment_type');
 | 
				
			||||||
    // Validate that the source count and processed count match up.
 | 
					    // Validate that the source count and processed count match up.
 | 
				
			||||||
    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
					 | 
				
			||||||
    $migration = Migration::load('d7_comment_type');
 | 
					 | 
				
			||||||
    $this->assertIdentical($migration->getSourcePlugin()->count(), $migration->getIdMap()->processedCount());
 | 
					    $this->assertIdentical($migration->getSourcePlugin()->count(), $migration->getIdMap()->processedCount());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +0,0 @@
 | 
				
			||||||
# Schema for the migration source plugins.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.contact_settings:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal contact settings'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    variables:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Variables'
 | 
					 | 
				
			||||||
      sequence:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        label: 'Variable'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,71 +0,0 @@
 | 
				
			||||||
migrate.source.d6_field_instance_per_form_display:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 field instance form display'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_field:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 field'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_field_formatter_settings:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 field formatter settings'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_field_instance:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 field instance'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_field_instance_per_view_mode:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 field formatter'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d7_field:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 7 field'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d7_field_instance:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 7 field instance'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d7_field_instance_per_form_display:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 7 field instance per form display'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d7_field_instance_per_view_mode:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 7 field instance per view mode'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -2,9 +2,8 @@ id: d6_field
 | 
				
			||||||
label: Field configuration
 | 
					label: Field configuration
 | 
				
			||||||
migration_tags:
 | 
					migration_tags:
 | 
				
			||||||
  - Drupal 6
 | 
					  - Drupal 6
 | 
				
			||||||
builder:
 | 
					class: Drupal\migrate_drupal\Plugin\migrate\CckMigration
 | 
				
			||||||
  plugin: d6_cck_migration
 | 
					cck_plugin_method: processField
 | 
				
			||||||
  cck_plugin_method: processField
 | 
					 | 
				
			||||||
source:
 | 
					source:
 | 
				
			||||||
  plugin: d6_field
 | 
					  plugin: d6_field
 | 
				
			||||||
  constants:
 | 
					  constants:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,9 +2,8 @@ id: d6_field_formatter_settings
 | 
				
			||||||
label: Field formatter configuration
 | 
					label: Field formatter configuration
 | 
				
			||||||
migration_tags:
 | 
					migration_tags:
 | 
				
			||||||
  - Drupal 6
 | 
					  - Drupal 6
 | 
				
			||||||
builder:
 | 
					class: Drupal\migrate_drupal\Plugin\migrate\CckMigration
 | 
				
			||||||
  plugin: d6_cck_migration
 | 
					cck_plugin_method: processFieldFormatter
 | 
				
			||||||
  cck_plugin_method: processFieldFormatter
 | 
					 | 
				
			||||||
source:
 | 
					source:
 | 
				
			||||||
  plugin: d6_field_instance_per_view_mode
 | 
					  plugin: d6_field_instance_per_view_mode
 | 
				
			||||||
  constants:
 | 
					  constants:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,9 +2,8 @@ id: d6_field_instance
 | 
				
			||||||
label: Field instance configuration
 | 
					label: Field instance configuration
 | 
				
			||||||
migration_tags:
 | 
					migration_tags:
 | 
				
			||||||
  - Drupal 6
 | 
					  - Drupal 6
 | 
				
			||||||
builder:
 | 
					class: Drupal\migrate_drupal\Plugin\migrate\CckMigration
 | 
				
			||||||
  plugin: d6_cck_migration
 | 
					cck_plugin_method: processFieldInstance
 | 
				
			||||||
  cck_plugin_method: processFieldInstance
 | 
					 | 
				
			||||||
source:
 | 
					source:
 | 
				
			||||||
  plugin: d6_field_instance
 | 
					  plugin: d6_field_instance
 | 
				
			||||||
  constants:
 | 
					  constants:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,9 +2,8 @@ id: d6_field_instance_widget_settings
 | 
				
			||||||
label: Field instance widget configuration
 | 
					label: Field instance widget configuration
 | 
				
			||||||
migration_tags:
 | 
					migration_tags:
 | 
				
			||||||
  - Drupal 6
 | 
					  - Drupal 6
 | 
				
			||||||
builder:
 | 
					class: Drupal\migrate_drupal\Plugin\migrate\CckMigration
 | 
				
			||||||
  plugin: d6_cck_migration
 | 
					cck_plugin_method: processFieldWidget
 | 
				
			||||||
  cck_plugin_method: processFieldWidget
 | 
					 | 
				
			||||||
source:
 | 
					source:
 | 
				
			||||||
  plugin: d6_field_instance_per_form_display
 | 
					  plugin: d6_field_instance_per_form_display
 | 
				
			||||||
  constants:
 | 
					  constants:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\field\Tests\Migrate\d6;
 | 
					namespace Drupal\field\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Entity\Entity\EntityViewDisplay;
 | 
					use Drupal\Core\Entity\Entity\EntityViewDisplay;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -181,7 +180,7 @@ class MigrateFieldFormatterSettingsTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
    $component = $display->getComponent('field_test_datetime');
 | 
					    $component = $display->getComponent('field_test_datetime');
 | 
				
			||||||
    $this->assertIdentical($expected, $component);
 | 
					    $this->assertIdentical($expected, $component);
 | 
				
			||||||
    // Test that our Id map has the correct data.
 | 
					    // Test that our Id map has the correct data.
 | 
				
			||||||
    $this->assertIdentical(array('node', 'story', 'teaser', 'field_test'), Migration::load('d6_field_formatter_settings')->getIdMap()->lookupDestinationID(array('story', 'teaser', 'node', 'field_test')));
 | 
					    $this->assertIdentical(array('node', 'story', 'teaser', 'field_test'), $this->getMigration('d6_field_formatter_settings')->getIdMap()->lookupDestinationID(array('story', 'teaser', 'node', 'field_test')));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\field\Tests\Migrate\d6;
 | 
					namespace Drupal\field\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\field\Entity\FieldStorageConfig;
 | 
					use Drupal\field\Entity\FieldStorageConfig;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -98,7 +97,7 @@ class MigrateFieldTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Validate that the source count and processed count match up.
 | 
					    // Validate that the source count and processed count match up.
 | 
				
			||||||
    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
					    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
				
			||||||
    $migration = Migration::load('d6_field');
 | 
					    $migration = $this->getMigration('d6_field');
 | 
				
			||||||
    $this->assertIdentical($migration->getSourcePlugin()->count(), $migration->getIdMap()->processedCount());
 | 
					    $this->assertIdentical($migration->getSourcePlugin()->count(), $migration->getIdMap()->processedCount());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Check that we've reported on a conflict in widget_types.
 | 
					    // Check that we've reported on a conflict in widget_types.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,6 @@ namespace Drupal\field\Tests\Migrate\d7;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\field\Entity\FieldStorageConfig;
 | 
					use Drupal\field\Entity\FieldStorageConfig;
 | 
				
			||||||
use Drupal\field\FieldStorageConfigInterface;
 | 
					use Drupal\field\FieldStorageConfigInterface;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -116,8 +115,9 @@ class MigrateFieldTest extends MigrateDrupal7TestBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Validate that the source count and processed count match up.
 | 
					    // Validate that the source count and processed count match up.
 | 
				
			||||||
    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
					    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
				
			||||||
    $migration = Migration::load('d7_field');
 | 
					    $migration = $this->getMigration('d7_field');
 | 
				
			||||||
    $this->assertIdentical($migration->getSourcePlugin()->count(), $migration->getIdMap()->processedCount());
 | 
					    $this->assertIdentical($migration->getSourcePlugin()->count(), $migration->getIdMap()->processedCount());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,10 +0,0 @@
 | 
				
			||||||
migrate.destination.entity:file:
 | 
					 | 
				
			||||||
  type: migrate_destination
 | 
					 | 
				
			||||||
  label: 'File'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    source_path_property:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Source path'
 | 
					 | 
				
			||||||
    urlencode:
 | 
					 | 
				
			||||||
      type: boolean
 | 
					 | 
				
			||||||
      label: 'Whether to urlencode incoming file paths'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -121,11 +121,3 @@ field.formatter.settings.file_extension:
 | 
				
			||||||
    extension_detect_tar:
 | 
					    extension_detect_tar:
 | 
				
			||||||
      type: boolean
 | 
					      type: boolean
 | 
				
			||||||
      label: 'Detect tar'
 | 
					      label: 'Detect tar'
 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_upload_instance:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 upload form display'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Contains \Drupal\file\Tests\Migrate\d6\FileMigrationTestTrait.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Drupal\file\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Helper for setting up a file migration test.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					trait FileMigrationTestTrait {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Setup and execute d6_file migration.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected function setUpMigratedFiles() {
 | 
				
			||||||
 | 
					    $this->installEntitySchema('file');
 | 
				
			||||||
 | 
					    $this->installConfig(['file']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
				
			||||||
 | 
					    $migration_plugin_manager = $this->container->get('plugin.manager.migration');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** @var \Drupal\migrate\Plugin\migration $migration */
 | 
				
			||||||
 | 
					    $migration = $migration_plugin_manager->createInstance('d6_file');
 | 
				
			||||||
 | 
					    $source = $migration->get('source');
 | 
				
			||||||
 | 
					    $source['site_path'] = 'core/modules/simpletest';
 | 
				
			||||||
 | 
					    $migration->set('source', $source);
 | 
				
			||||||
 | 
					    $this->executeMigration($migration);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,6 @@ namespace Drupal\file\Tests\Migrate\d6;
 | 
				
			||||||
use Drupal\Component\Utility\Random;
 | 
					use Drupal\Component\Utility\Random;
 | 
				
			||||||
use Drupal\file\Entity\File;
 | 
					use Drupal\file\Entity\File;
 | 
				
			||||||
use Drupal\file\FileInterface;
 | 
					use Drupal\file\FileInterface;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\Tests\MigrateDumpAlterInterface;
 | 
					use Drupal\migrate\Tests\MigrateDumpAlterInterface;
 | 
				
			||||||
use Drupal\Core\Database\Database;
 | 
					use Drupal\Core\Database\Database;
 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
| 
						 | 
					@ -23,6 +22,8 @@ use Drupal\simpletest\TestBase;
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class MigrateFileTest extends MigrateDrupal6TestBase implements MigrateDumpAlterInterface {
 | 
					class MigrateFileTest extends MigrateDrupal6TestBase implements MigrateDumpAlterInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  use FileMigrationTestTrait;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The filename of a file used to test temporary file migration.
 | 
					   * The filename of a file used to test temporary file migration.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
| 
						 | 
					@ -36,15 +37,7 @@ class MigrateFileTest extends MigrateDrupal6TestBase implements MigrateDumpAlter
 | 
				
			||||||
  protected function setUp() {
 | 
					  protected function setUp() {
 | 
				
			||||||
    parent::setUp();
 | 
					    parent::setUp();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->installEntitySchema('file');
 | 
					    $this->setUpMigratedFiles();
 | 
				
			||||||
    $this->installConfig(['file']);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
					 | 
				
			||||||
    $migration = Migration::load('d6_file');
 | 
					 | 
				
			||||||
    $source = $migration->get('source');
 | 
					 | 
				
			||||||
    $source['site_path'] = 'core/modules/simpletest';
 | 
					 | 
				
			||||||
    $migration->set('source', $source);
 | 
					 | 
				
			||||||
    $this->executeMigration($migration);
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
| 
						 | 
					@ -84,8 +77,9 @@ class MigrateFileTest extends MigrateDrupal6TestBase implements MigrateDumpAlter
 | 
				
			||||||
    $this->assertEntity(5, 'html-1.txt', '24', 'public://html-1.txt', 'text/plain', '1');
 | 
					    $this->assertEntity(5, 'html-1.txt', '24', 'public://html-1.txt', 'text/plain', '1');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Test that we can re-import and also test with file_directory_path set.
 | 
					    // Test that we can re-import and also test with file_directory_path set.
 | 
				
			||||||
 | 
					    $migration_plugin_manager = $this->container->get('plugin.manager.migration');
 | 
				
			||||||
    \Drupal::database()
 | 
					    \Drupal::database()
 | 
				
			||||||
      ->truncate(Migration::load('d6_file')->getIdMap()->mapTableName())
 | 
					      ->truncate($migration_plugin_manager->createInstance('d6_file')->getIdMap()->mapTableName())
 | 
				
			||||||
      ->execute();
 | 
					      ->execute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Update the file_directory_path.
 | 
					    // Update the file_directory_path.
 | 
				
			||||||
| 
						 | 
					@ -100,7 +94,7 @@ class MigrateFileTest extends MigrateDrupal6TestBase implements MigrateDumpAlter
 | 
				
			||||||
      ->condition('name', 'file_directory_temp')
 | 
					      ->condition('name', 'file_directory_temp')
 | 
				
			||||||
      ->execute();
 | 
					      ->execute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $migration = \Drupal::entityManager()->getStorage('migration')->loadUnchanged('d6_file');
 | 
					    $migration = $migration_plugin_manager->createInstance('d6_file');
 | 
				
			||||||
    $this->executeMigration($migration);
 | 
					    $this->executeMigration($migration);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $file = File::load(2);
 | 
					    $file = File::load(2);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\file\Tests\Migrate\d6;
 | 
					namespace Drupal\file\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Entity\Entity\EntityViewDisplay;
 | 
					use Drupal\Core\Entity\Entity\EntityViewDisplay;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -44,7 +43,7 @@ class MigrateUploadEntityDisplayTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
    $component = $display->getComponent('upload');
 | 
					    $component = $display->getComponent('upload');
 | 
				
			||||||
    $this->assertTrue(is_null($component));
 | 
					    $this->assertTrue(is_null($component));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->assertIdentical(array('node', 'page', 'default', 'upload'), Migration::load('d6_upload_entity_display')->getIdMap()->lookupDestinationID(array('page')));
 | 
					    $this->assertIdentical(array('node', 'page', 'default', 'upload'), $this->getMigration('d6_upload_entity_display')->getIdMap()->lookupDestinationID(array('page')));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\file\Tests\Migrate\d6;
 | 
					namespace Drupal\file\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Entity\Entity\EntityFormDisplay;
 | 
					use Drupal\Core\Entity\Entity\EntityFormDisplay;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -44,7 +43,7 @@ class MigrateUploadEntityFormDisplayTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
    $component = $display->getComponent('upload');
 | 
					    $component = $display->getComponent('upload');
 | 
				
			||||||
    $this->assertTrue(is_null($component));
 | 
					    $this->assertTrue(is_null($component));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->assertIdentical(array('node', 'page', 'default', 'upload'), Migration::load('d6_upload_entity_form_display')->getIdMap()->lookupDestinationID(array('page')));
 | 
					    $this->assertIdentical(array('node', 'page', 'default', 'upload'), $this->getMigration('d6_upload_entity_form_display')->getIdMap()->lookupDestinationID(array('page')));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\file\Tests\Migrate\d6;
 | 
					namespace Drupal\file\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\field\Entity\FieldStorageConfig;
 | 
					use Drupal\field\Entity\FieldStorageConfig;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -32,7 +31,7 @@ class MigrateUploadFieldTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
  public function testUpload() {
 | 
					  public function testUpload() {
 | 
				
			||||||
    $field_storage = FieldStorageConfig::load('node.upload');
 | 
					    $field_storage = FieldStorageConfig::load('node.upload');
 | 
				
			||||||
    $this->assertIdentical('node.upload', $field_storage->id());
 | 
					    $this->assertIdentical('node.upload', $field_storage->id());
 | 
				
			||||||
    $this->assertIdentical(array('node', 'upload'), Migration::load('d6_upload_field')->getIdMap()->lookupDestinationID(array('')));
 | 
					    $this->assertIdentical(array('node', 'upload'), $this->getMigration('d6_upload_field')->getIdMap()->lookupDestinationID(array('')));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\file\Tests\Migrate\d6;
 | 
					namespace Drupal\file\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\field\Entity\FieldConfig;
 | 
					use Drupal\field\Entity\FieldConfig;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -44,7 +43,7 @@ class MigrateUploadInstanceTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
    $field = FieldConfig::load('node.article.upload');
 | 
					    $field = FieldConfig::load('node.article.upload');
 | 
				
			||||||
    $this->assertTrue(is_null($field));
 | 
					    $this->assertTrue(is_null($field));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->assertIdentical(array('node', 'page', 'upload'), Migration::load('d6_upload_field_instance')->getIdMap()->lookupDestinationID(array('page')));
 | 
					    $this->assertIdentical(array('node', 'page', 'upload'), $this->getMigration('d6_upload_field_instance')->getIdMap()->lookupDestinationID(array('page')));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\file\Tests\Migrate\d6;
 | 
					namespace Drupal\file\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\file\Entity\File;
 | 
					use Drupal\file\Entity\File;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
use Drupal\node\Entity\Node;
 | 
					use Drupal\node\Entity\Node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,7 +54,7 @@ class MigrateUploadTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
    $this->migrateContent();
 | 
					    $this->migrateContent();
 | 
				
			||||||
    // Since we are only testing a subset of the file migration, do not check
 | 
					    // Since we are only testing a subset of the file migration, do not check
 | 
				
			||||||
    // that the full file migration has been run.
 | 
					    // that the full file migration has been run.
 | 
				
			||||||
    $migration = Migration::load('d6_upload');
 | 
					    $migration = $this->getMigration('d6_upload');
 | 
				
			||||||
    $migration->set('requirements', []);
 | 
					    $migration->set('requirements', []);
 | 
				
			||||||
    $this->executeMigration($migration);
 | 
					    $this->executeMigration($migration);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,8 +34,8 @@ class MigrateFileTest extends MigrateDrupal7TestBase {
 | 
				
			||||||
    $fs->mkdir('public://sites/default/files', NULL, TRUE);
 | 
					    $fs->mkdir('public://sites/default/files', NULL, TRUE);
 | 
				
			||||||
    file_put_contents('public://sites/default/files/cube.jpeg', str_repeat('*', 3620));
 | 
					    file_put_contents('public://sites/default/files/cube.jpeg', str_repeat('*', 3620));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
					    /** @var \Drupal\migrate\Plugin\Migration $migration */
 | 
				
			||||||
    $migration = entity_load('migration', 'd7_file');
 | 
					    $migration = $this->getMigration('d7_file');
 | 
				
			||||||
    // Set the destination plugin's source_base_path configuration value, which
 | 
					    // Set the destination plugin's source_base_path configuration value, which
 | 
				
			||||||
    // would normally be set by the user running the migration.
 | 
					    // would normally be set by the user running the migration.
 | 
				
			||||||
    $migration->set('destination', [
 | 
					    $migration->set('destination', [
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +0,0 @@
 | 
				
			||||||
migrate.source.d6_imagecache_presets:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 ImageCache Presets'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,6 @@ namespace Drupal\image\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Database\Database;
 | 
					use Drupal\Core\Database\Database;
 | 
				
			||||||
use Drupal\image\Entity\ImageStyle;
 | 
					use Drupal\image\Entity\ImageStyle;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\Entity\MigrationInterface;
 | 
					use Drupal\migrate\Entity\MigrationInterface;
 | 
				
			||||||
use Drupal\migrate\Exception\RequirementsException;
 | 
					use Drupal\migrate\Exception\RequirementsException;
 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
| 
						 | 
					@ -42,7 +41,7 @@ class MigrateImageCacheTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
      ->execute();
 | 
					      ->execute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      Migration::load('d6_imagecache_presets')
 | 
					      $this->getMigration('d6_imagecache_presets')
 | 
				
			||||||
        ->getSourcePlugin()
 | 
					        ->getSourcePlugin()
 | 
				
			||||||
        ->checkRequirements();
 | 
					        ->checkRequirements();
 | 
				
			||||||
      $this->fail('Did not catch expected RequirementsException.');
 | 
					      $this->fail('Did not catch expected RequirementsException.');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +0,0 @@
 | 
				
			||||||
migrate.source.menu_link:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Menu link'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,40 +0,0 @@
 | 
				
			||||||
# Basic data types for Migrate.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate_plugin:
 | 
					 | 
				
			||||||
  type: mapping
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    plugin:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Plugin'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate_destination:
 | 
					 | 
				
			||||||
  type: migrate_plugin
 | 
					 | 
				
			||||||
  label: 'Destination'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    overwrite_properties:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Properties to overwrite'
 | 
					 | 
				
			||||||
      sequence:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        label: 'Property'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate_source:
 | 
					 | 
				
			||||||
  type: migrate_plugin
 | 
					 | 
				
			||||||
  label: 'Source'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: ignore
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate_process:
 | 
					 | 
				
			||||||
  type: migrate_plugin
 | 
					 | 
				
			||||||
  label: 'Process'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Base schema for migrate source plugins that extend
 | 
					 | 
				
			||||||
# \Drupal\migrate\Plugin\migrate\source\SqlBase.
 | 
					 | 
				
			||||||
migrate_source_sql:
 | 
					 | 
				
			||||||
  type: migrate_source
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    target:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'The migration database target'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,18 +0,0 @@
 | 
				
			||||||
# Schema for the migrate destination plugins.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.destination.*:
 | 
					 | 
				
			||||||
  type: migrate_destination
 | 
					 | 
				
			||||||
  label: 'Default destination'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    no_stub:
 | 
					 | 
				
			||||||
      type: boolean
 | 
					 | 
				
			||||||
      label: 'Whether stubbing is allowed.'
 | 
					 | 
				
			||||||
      default: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.destination.config:
 | 
					 | 
				
			||||||
  type: migrate_destination
 | 
					 | 
				
			||||||
  label: 'Config'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    config_name:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Configuration name'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,145 +0,0 @@
 | 
				
			||||||
# Schema for the migrate process plugins.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.*:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Default process'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.callback:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Callback process'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    callback:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Callback'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.concat:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Concat process'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    delimiter:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Delimiter'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.dedupe_entity:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Dedupe Entity process'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    entity_type:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Entity type'
 | 
					 | 
				
			||||||
    field:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Field name'
 | 
					 | 
				
			||||||
    postfix:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Postfix'
 | 
					 | 
				
			||||||
    start:
 | 
					 | 
				
			||||||
      type: integer
 | 
					 | 
				
			||||||
      label: 'Start'
 | 
					 | 
				
			||||||
    length:
 | 
					 | 
				
			||||||
      type: integer
 | 
					 | 
				
			||||||
      label: 'Length'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.explode:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Explode process'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    delimiter:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Delimiter'
 | 
					 | 
				
			||||||
    limit:
 | 
					 | 
				
			||||||
      type: integer
 | 
					 | 
				
			||||||
      label: 'Limit'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.extract:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Extract process'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    default:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Default value'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.flatten:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Flatten process'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.get:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Get process'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    source:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Source key'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.iterator:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Iterator process'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    process:
 | 
					 | 
				
			||||||
      type: ignore
 | 
					 | 
				
			||||||
      label: 'Process'
 | 
					 | 
				
			||||||
    key:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Key'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.machine_name:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Machine name process'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.migration:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Migration process'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    migration:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Migration'
 | 
					 | 
				
			||||||
    source:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Source keys'
 | 
					 | 
				
			||||||
    source_ids:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Source IDs'
 | 
					 | 
				
			||||||
    stub_id:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Stub ID'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.route:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Route process'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.skip_on_empty:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Skip on Empty'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.skip_row_if_not_set:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Skip Row process if not set'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    index:
 | 
					 | 
				
			||||||
      type: integer
 | 
					 | 
				
			||||||
      label: 'Index'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.static_map:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Static Map'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    map:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Map'
 | 
					 | 
				
			||||||
    default_value:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Default value'
 | 
					 | 
				
			||||||
    bypass:
 | 
					 | 
				
			||||||
      type: boolean
 | 
					 | 
				
			||||||
      label: 'Bypass lookup'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.process.default_value:
 | 
					 | 
				
			||||||
  type: migrate_process
 | 
					 | 
				
			||||||
  label: 'Default value'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    strict:
 | 
					 | 
				
			||||||
      type: boolean
 | 
					 | 
				
			||||||
      label: 'Strict type check'
 | 
					 | 
				
			||||||
    default_value:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Default value'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,46 +0,0 @@
 | 
				
			||||||
# Schema for the configuration files of the Migrate module.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.migration.*:
 | 
					 | 
				
			||||||
  type: config_entity
 | 
					 | 
				
			||||||
  label: 'Migration'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    id:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'ID'
 | 
					 | 
				
			||||||
    migration_tags:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Migration Tags'
 | 
					 | 
				
			||||||
      sequence:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        label: 'Tag'
 | 
					 | 
				
			||||||
    label:
 | 
					 | 
				
			||||||
      type: label
 | 
					 | 
				
			||||||
      label: 'Label'
 | 
					 | 
				
			||||||
    source:
 | 
					 | 
				
			||||||
      type: migrate.source.[plugin]
 | 
					 | 
				
			||||||
      label: 'Source'
 | 
					 | 
				
			||||||
    process:
 | 
					 | 
				
			||||||
      type: ignore
 | 
					 | 
				
			||||||
      label: 'Process'
 | 
					 | 
				
			||||||
    destination:
 | 
					 | 
				
			||||||
      type: migrate.destination.[plugin]
 | 
					 | 
				
			||||||
      label: 'Destination'
 | 
					 | 
				
			||||||
    template:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Template'
 | 
					 | 
				
			||||||
    migration_dependencies:
 | 
					 | 
				
			||||||
      type: mapping
 | 
					 | 
				
			||||||
      label: 'Dependencies'
 | 
					 | 
				
			||||||
      mapping:
 | 
					 | 
				
			||||||
        required:
 | 
					 | 
				
			||||||
          type: sequence
 | 
					 | 
				
			||||||
          label: 'Required dependencies'
 | 
					 | 
				
			||||||
          sequence:
 | 
					 | 
				
			||||||
            type: string
 | 
					 | 
				
			||||||
            label: 'Dependency'
 | 
					 | 
				
			||||||
        optional:
 | 
					 | 
				
			||||||
          type: sequence
 | 
					 | 
				
			||||||
          label: 'Optional dependencies'
 | 
					 | 
				
			||||||
          sequence:
 | 
					 | 
				
			||||||
            type: string
 | 
					 | 
				
			||||||
            label: 'Dependency'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,34 +0,0 @@
 | 
				
			||||||
# Schema for the migrate source plugins.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.*:
 | 
					 | 
				
			||||||
  type: migrate_source
 | 
					 | 
				
			||||||
  label: 'Default source'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.empty:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Empty source'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    provider:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Provider'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.embedded_data:
 | 
					 | 
				
			||||||
  type: migrate_source
 | 
					 | 
				
			||||||
  label: 'Embedded data source'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    data_rows:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Data rows'
 | 
					 | 
				
			||||||
      sequence:
 | 
					 | 
				
			||||||
        type: ignore
 | 
					 | 
				
			||||||
        label: 'Data row'
 | 
					 | 
				
			||||||
    ids:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Unique key'
 | 
					 | 
				
			||||||
      sequence:
 | 
					 | 
				
			||||||
        type: mapping
 | 
					 | 
				
			||||||
        label: 'Key column'
 | 
					 | 
				
			||||||
        mapping:
 | 
					 | 
				
			||||||
          type:
 | 
					 | 
				
			||||||
            type: string
 | 
					 | 
				
			||||||
            label: 'Column type'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -26,3 +26,6 @@ services:
 | 
				
			||||||
  plugin.manager.migrate.builder:
 | 
					  plugin.manager.migrate.builder:
 | 
				
			||||||
    class: Drupal\migrate\Plugin\MigratePluginManager
 | 
					    class: Drupal\migrate\Plugin\MigratePluginManager
 | 
				
			||||||
    arguments: [builder, '@container.namespaces', '@cache.discovery', '@module_handler']
 | 
					    arguments: [builder, '@container.namespaces', '@cache.discovery', '@module_handler']
 | 
				
			||||||
 | 
					  plugin.manager.migration:
 | 
				
			||||||
 | 
					    class: Drupal\migrate\Plugin\MigrationPluginManager
 | 
				
			||||||
 | 
					    arguments: ['@module_handler', '@cache.discovery', '@language_manager']
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,12 +7,10 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Entity;
 | 
					namespace Drupal\migrate\Entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Config\Entity\ConfigEntityInterface;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Interface for migrations.
 | 
					 * Interface for migrations.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
interface MigrationInterface extends ConfigEntityInterface {
 | 
					interface MigrationInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * A constant used for systemOfRecord.
 | 
					   * A constant used for systemOfRecord.
 | 
				
			||||||
| 
						 | 
					@ -99,6 +97,13 @@ interface MigrationInterface extends ConfigEntityInterface {
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  const RESULT_DISABLED = 6;
 | 
					  const RESULT_DISABLED = 6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * An alias for getPluginId() for backwards compatibility reasons.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @return string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function id();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Returns the initialized source plugin.
 | 
					   * Returns the initialized source plugin.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@ class MigrateExecutable implements MigrateExecutableInterface {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The configuration of the migration to do.
 | 
					   * The configuration of the migration to do.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @var \Drupal\migrate\Entity\Migration
 | 
					   * @var \Drupal\migrate\Plugin\Migration
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected $migration;
 | 
					  protected $migration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -186,7 +186,8 @@ class MigrateExecutable implements MigrateExecutableInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Knock off migration if the requirements haven't been met.
 | 
					    // Knock off migration if the requirements haven't been met.
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      $this->migration->checkRequirements();
 | 
					      // @TODO https://www.drupal.org/node/2666640
 | 
				
			||||||
 | 
					      #$this->migration->checkRequirements();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    catch (RequirementsException $e) {
 | 
					    catch (RequirementsException $e) {
 | 
				
			||||||
      $this->message->display(
 | 
					      $this->message->display(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate;
 | 
					namespace Drupal\migrate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\Plugin\MigratePluginManager;
 | 
					use Drupal\migrate\Plugin\MigratePluginManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,39 +2,26 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @file
 | 
					 * @file
 | 
				
			||||||
 * Contains \Drupal\migrate\Entity\Migration.
 | 
					 * Contains \Drupal\migrate\Plugin\Migration.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Entity;
 | 
					namespace Drupal\migrate\Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Config\Entity\ConfigEntityBase;
 | 
					use Drupal\Core\Plugin\PluginBase;
 | 
				
			||||||
use Drupal\migrate\Exception\RequirementsException;
 | 
					use Drupal\migrate\Exception\RequirementsException;
 | 
				
			||||||
use Drupal\migrate\MigrateException;
 | 
					use Drupal\migrate\MigrateException;
 | 
				
			||||||
use Drupal\migrate\MigrateSkipRowException;
 | 
					use Drupal\migrate\MigrateSkipRowException;
 | 
				
			||||||
use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
					 | 
				
			||||||
use Drupal\migrate\Plugin\RequirementsInterface;
 | 
					 | 
				
			||||||
use Drupal\Component\Utility\NestedArray;
 | 
					use Drupal\Component\Utility\NestedArray;
 | 
				
			||||||
 | 
					use Drupal\migrate\Entity\MigrationInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Defines the Migration entity.
 | 
					 * Defines the Migration plugin.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * The migration entity stores the information about a single migration, like
 | 
					 * The migration entity stores the information about a single migration, like
 | 
				
			||||||
 * the source, process and destination plugins.
 | 
					 * the source, process and destination plugins.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @ConfigEntityType(
 | 
					 | 
				
			||||||
 *   id = "migration",
 | 
					 | 
				
			||||||
 *   label = @Translation("Migration"),
 | 
					 | 
				
			||||||
 *   handlers = {
 | 
					 | 
				
			||||||
 *     "storage" = "Drupal\migrate\MigrationStorage"
 | 
					 | 
				
			||||||
 *   },
 | 
					 | 
				
			||||||
 *   entity_keys = {
 | 
					 | 
				
			||||||
 *     "id" = "id",
 | 
					 | 
				
			||||||
 *     "label" = "label",
 | 
					 | 
				
			||||||
 *     "weight" = "weight"
 | 
					 | 
				
			||||||
 *   }
 | 
					 | 
				
			||||||
 * )
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class Migration extends ConfigEntityBase implements MigrationInterface, RequirementsInterface {
 | 
					class Migration extends PluginBase implements MigrationInterface, RequirementsInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The migration ID (machine name).
 | 
					   * The migration ID (machine name).
 | 
				
			||||||
| 
						 | 
					@ -224,13 +211,6 @@ class Migration extends ConfigEntityBase implements MigrationInterface, Requirem
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected $dependencies = [];
 | 
					  protected $dependencies = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * The ID of the template from which this migration was derived, if any.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @var string|NULL
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  protected $template;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The entity manager.
 | 
					   * The entity manager.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
| 
						 | 
					@ -251,6 +231,46 @@ class Migration extends ConfigEntityBase implements MigrationInterface, Requirem
 | 
				
			||||||
    self::STATUS_DISABLED => 'Disabled',
 | 
					    self::STATUS_DISABLED => 'Disabled',
 | 
				
			||||||
  ];
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function __construct(array $configuration, $plugin_id, $plugin_definition) {
 | 
				
			||||||
 | 
					    parent::__construct($configuration, $plugin_id, $plugin_definition);
 | 
				
			||||||
 | 
					    foreach ($plugin_definition as $key => $value) {
 | 
				
			||||||
 | 
					      $this->$key = $value;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function id() {
 | 
				
			||||||
 | 
					    return $this->pluginId;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Gets any arbitrary property.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param string $property
 | 
				
			||||||
 | 
					   *   The property to retrieve.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @return mixed
 | 
				
			||||||
 | 
					   *   The value for that property, or NULL if the property does not exist.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function get($key) {
 | 
				
			||||||
 | 
					    return isset($this->$key) ? $this->$key : NULL;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Retrieves the ID map plugin.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @return \Drupal\migrate\Plugin\MigrateIdMapInterface
 | 
				
			||||||
 | 
					   *   The ID map plugin.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getIdMapPlugin() {
 | 
				
			||||||
 | 
					    return $this->idMapPlugin;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * {@inheritdoc}
 | 
					   * {@inheritdoc}
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
| 
						 | 
					@ -266,7 +286,7 @@ class Migration extends ConfigEntityBase implements MigrationInterface, Requirem
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function getProcessPlugins(array $process = NULL) {
 | 
					  public function getProcessPlugins(array $process = NULL) {
 | 
				
			||||||
    if (!isset($process)) {
 | 
					    if (!isset($process)) {
 | 
				
			||||||
      $process = $this->process;
 | 
					      $process = $this->getProcess();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    $index = serialize($process);
 | 
					    $index = serialize($process);
 | 
				
			||||||
    if (!isset($this->processPlugins[$index])) {
 | 
					    if (!isset($this->processPlugins[$index])) {
 | 
				
			||||||
| 
						 | 
					@ -487,7 +507,8 @@ class Migration extends ConfigEntityBase implements MigrationInterface, Requirem
 | 
				
			||||||
      // Invalidate the destination plugin.
 | 
					      // Invalidate the destination plugin.
 | 
				
			||||||
      unset($this->destinationPlugin);
 | 
					      unset($this->destinationPlugin);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return parent::set($property_name, $value);
 | 
					    $this->{$property_name} = $value;
 | 
				
			||||||
 | 
					    return $this;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -571,28 +592,13 @@ class Migration extends ConfigEntityBase implements MigrationInterface, Requirem
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * {@inheritdoc}
 | 
					   * {@inheritdoc}
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function trustData() {
 | 
					  public function getPluginDefinition() {
 | 
				
			||||||
    // Migrations cannot be trusted since they are often written by hand and not
 | 
					    $definition = [];
 | 
				
			||||||
    // through a UI.
 | 
					    // While normal plugins do not change their definitions on the fly, this
 | 
				
			||||||
    $this->trustedData = FALSE;
 | 
					    // one does so accommodate for that.
 | 
				
			||||||
    return $this;
 | 
					    foreach (parent::getPluginDefinition() as $key => $value) {
 | 
				
			||||||
  }
 | 
					      $definition[$key] = isset($this->$key) ? $this->$key : $value;
 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * {@inheritdoc}
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  public function calculateDependencies() {
 | 
					 | 
				
			||||||
    parent::calculateDependencies();
 | 
					 | 
				
			||||||
    $this->calculatePluginDependencies($this->getSourcePlugin());
 | 
					 | 
				
			||||||
    $this->calculatePluginDependencies($this->getDestinationPlugin());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Add hard dependencies on required migrations.
 | 
					 | 
				
			||||||
    $dependencies = $this->getEntityManager()->getStorage($this->entityTypeId)
 | 
					 | 
				
			||||||
      ->getVariantIds($this->getMigrationDependencies()['required']);
 | 
					 | 
				
			||||||
    foreach ($dependencies as $dependency) {
 | 
					 | 
				
			||||||
      $this->addDependency('config', $this->getEntityType()->getConfigPrefix() . '.' . $dependency);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    return $definition;
 | 
				
			||||||
    return $this;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,40 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Contains \Drupal\migrate\Plugin\MigrationDeriverTrait.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Drupal\migrate\Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Provides functionality for migration derivers.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					trait MigrationDeriverTrait {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Returns a fully initialized instance of a source plugin.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param string $plugin_id
 | 
				
			||||||
 | 
					   *   The plugin ID.
 | 
				
			||||||
 | 
					   * @param array $configuration
 | 
				
			||||||
 | 
					   *   (optional) Additional configuration for the plugin. Defaults to an empty
 | 
				
			||||||
 | 
					   *   array.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @return \Drupal\migrate\Plugin\MigrateSourceInterface|\Drupal\migrate\Plugin\RequirementsInterface
 | 
				
			||||||
 | 
					   *   The fully initialized source plugin.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public static function getSourcePlugin($source_plugin_id) {
 | 
				
			||||||
 | 
					    $definition = [
 | 
				
			||||||
 | 
					      'source' => [
 | 
				
			||||||
 | 
					        'ignore_map' => TRUE,
 | 
				
			||||||
 | 
					        'plugin' => $source_plugin_id,
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      'destination' => [
 | 
				
			||||||
 | 
					        'plugin' => 'null',
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					    return (new Migration([], uniqid(), $definition))->getSourcePlugin();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,94 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Contains \Drupal\migrate\Plugin\MigrationPluginManager.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Drupal\migrate\Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Drupal\Core\Cache\CacheBackendInterface;
 | 
				
			||||||
 | 
					use Drupal\Core\Extension\ModuleHandlerInterface;
 | 
				
			||||||
 | 
					use Drupal\Core\Language\LanguageManagerInterface;
 | 
				
			||||||
 | 
					use Drupal\Core\Plugin\DefaultPluginManager;
 | 
				
			||||||
 | 
					use Drupal\Core\Plugin\Discovery\ContainerDerivativeDiscoveryDecorator;
 | 
				
			||||||
 | 
					use Drupal\Core\Plugin\Discovery\YamlDirectoryDiscovery;
 | 
				
			||||||
 | 
					use Drupal\Core\Plugin\Factory\ContainerFactory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Plugin manager for migration plugins.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class MigrationPluginManager extends DefaultPluginManager implements MigrationPluginManagerInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Provides default values for migrations.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var array
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $defaults = array(
 | 
				
			||||||
 | 
					    'class' => '\Drupal\migrate\Plugin\Migration',
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * The interface the plugins should implement.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var string
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $pluginInterface = 'Drupal\migrate\Entity\MigrationInterface';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * The module handler.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var \Drupal\Core\Extension\ModuleHandlerInterface
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $moduleHandler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Construct a migration plugin manager.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
 | 
				
			||||||
 | 
					   *   The module handler.
 | 
				
			||||||
 | 
					   * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend
 | 
				
			||||||
 | 
					   *   The cache backend for the definitions.
 | 
				
			||||||
 | 
					   * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
 | 
				
			||||||
 | 
					   *   The language manager.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function __construct(ModuleHandlerInterface $module_handler, CacheBackendInterface $cache_backend, LanguageManagerInterface $language_manager) {
 | 
				
			||||||
 | 
					    $this->factory = new ContainerFactory($this, $this->pluginInterface);
 | 
				
			||||||
 | 
					    $this->alterInfo('migration_plugins');
 | 
				
			||||||
 | 
					    $this->setCacheBackend($cache_backend, 'migration_plugins', array('migration_plugins'));
 | 
				
			||||||
 | 
					    $this->moduleHandler = $module_handler;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected function getDiscovery() {
 | 
				
			||||||
 | 
					    if (!isset($this->discovery)) {
 | 
				
			||||||
 | 
					      $directories = array_map(function($directory) {
 | 
				
			||||||
 | 
					        return [$directory . '/migration_templates', $directory . '/migrations'];
 | 
				
			||||||
 | 
					      }, $this->moduleHandler->getModuleDirectories());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      $yaml_discovery = new YamlDirectoryDiscovery($directories, 'migrate');
 | 
				
			||||||
 | 
					      $this->discovery = new ContainerDerivativeDiscoveryDecorator($yaml_discovery);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $this->discovery;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function createInstances($id, array $configuration = array()) {
 | 
				
			||||||
 | 
					    $factory = $this->getFactory();
 | 
				
			||||||
 | 
					    $instances = [];
 | 
				
			||||||
 | 
					    $plugin_ids = preg_grep('/^' . preg_quote($id, '/') . ':/', array_keys($this->getDefinitions()));
 | 
				
			||||||
 | 
					    if ($this->hasDefinition($id)) {
 | 
				
			||||||
 | 
					      $plugin_ids[] = $id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    foreach ($plugin_ids as $plugin_id) {
 | 
				
			||||||
 | 
					      $instances[$plugin_id] = $factory->createInstance($plugin_id, isset($configuration[$plugin_id]) ? $configuration[$plugin_id] : []);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $instances;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,35 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Contains \Drupal\migrate\Plugin\MigrationPluginManagerInterface.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Drupal\migrate\Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Drupal\Component\Plugin\PluginManagerInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Migration plugin manager interface
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					interface MigrationPluginManagerInterface extends PluginManagerInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Create pre-configured instance of plugin derivatives.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param string $id
 | 
				
			||||||
 | 
					   *   Either the plugin ID or the base plugin ID of the plugins being
 | 
				
			||||||
 | 
					   *   instantiated.
 | 
				
			||||||
 | 
					   * @param array $configuration
 | 
				
			||||||
 | 
					   *   An array of configuration relevant to the plugin instances. Keyed by the
 | 
				
			||||||
 | 
					   *   plugin id.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @return \Drupal\migrate\Entity\MigrationInterface[]
 | 
				
			||||||
 | 
					   *   Fully configured plugin instances.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @throws \Drupal\Component\Plugin\Exception\PluginException
 | 
				
			||||||
 | 
					   *   If the instance cannot be created, such as if the ID is invalid.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function createInstances($id, array $configuration = array());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\migrate\Plugin\migrate\builder;
 | 
					namespace Drupal\migrate\Plugin\migrate\builder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Plugin\PluginBase;
 | 
					use Drupal\Core\Plugin\PluginBase;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\Plugin\MigrateBuilderInterface;
 | 
					use Drupal\migrate\Plugin\MigrateBuilderInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,10 +7,10 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Plugin\migrate\process;
 | 
					namespace Drupal\migrate\Plugin\migrate\process;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Entity\EntityStorageInterface;
 | 
					 | 
				
			||||||
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 | 
					use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 | 
				
			||||||
use Drupal\migrate\MigrateSkipProcessException;
 | 
					use Drupal\migrate\MigrateSkipProcessException;
 | 
				
			||||||
use Drupal\migrate\Plugin\MigratePluginManager;
 | 
					use Drupal\migrate\Plugin\MigratePluginManager;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\MigrationPluginManagerInterface;
 | 
				
			||||||
use Drupal\migrate\ProcessPluginBase;
 | 
					use Drupal\migrate\ProcessPluginBase;
 | 
				
			||||||
use Drupal\migrate\Entity\MigrationInterface;
 | 
					use Drupal\migrate\Entity\MigrationInterface;
 | 
				
			||||||
use Drupal\migrate\MigrateExecutableInterface;
 | 
					use Drupal\migrate\MigrateExecutableInterface;
 | 
				
			||||||
| 
						 | 
					@ -34,18 +34,18 @@ class Migration extends ProcessPluginBase implements ContainerFactoryPluginInter
 | 
				
			||||||
  protected $processPluginManager;
 | 
					  protected $processPluginManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The entity storage manager.
 | 
					   * The migration plugin manager.
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   * @var \Drupal\Core\Entity\EntityStorageInterface
 | 
					   * @var \Drupal\migrate\Plugin\MigrationPluginManagerInterface
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected $migrationStorage;
 | 
					  protected $migrationPluginManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * {@inheritdoc}
 | 
					   * {@inheritdoc}
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, EntityStorageInterface $storage, MigratePluginManager $process_plugin_manager) {
 | 
					  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, MigrationPluginManagerInterface $migration_plugin_manager, MigratePluginManager $process_plugin_manager) {
 | 
				
			||||||
    parent::__construct($configuration, $plugin_id, $plugin_definition);
 | 
					    parent::__construct($configuration, $plugin_id, $plugin_definition);
 | 
				
			||||||
    $this->migrationStorage = $storage;
 | 
					    $this->migrationPluginManager = $migration_plugin_manager;
 | 
				
			||||||
    $this->migration = $migration;
 | 
					    $this->migration = $migration;
 | 
				
			||||||
    $this->processPluginManager = $process_plugin_manager;
 | 
					    $this->processPluginManager = $process_plugin_manager;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -59,7 +59,7 @@ class Migration extends ProcessPluginBase implements ContainerFactoryPluginInter
 | 
				
			||||||
      $plugin_id,
 | 
					      $plugin_id,
 | 
				
			||||||
      $plugin_definition,
 | 
					      $plugin_definition,
 | 
				
			||||||
      $migration,
 | 
					      $migration,
 | 
				
			||||||
      $container->get('entity.manager')->getStorage('migration'),
 | 
					      $container->get('plugin.manager.migration'),
 | 
				
			||||||
      $container->get('plugin.manager.migrate.process')
 | 
					      $container->get('plugin.manager.migrate.process')
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -80,10 +80,14 @@ class Migration extends ProcessPluginBase implements ContainerFactoryPluginInter
 | 
				
			||||||
    $this->skipOnEmpty($value);
 | 
					    $this->skipOnEmpty($value);
 | 
				
			||||||
    $self = FALSE;
 | 
					    $self = FALSE;
 | 
				
			||||||
    /** @var \Drupal\migrate\Entity\MigrationInterface[] $migrations */
 | 
					    /** @var \Drupal\migrate\Entity\MigrationInterface[] $migrations */
 | 
				
			||||||
    $migrations = $this->migrationStorage->loadMultiple($migration_ids);
 | 
					 | 
				
			||||||
    $destination_ids = NULL;
 | 
					    $destination_ids = NULL;
 | 
				
			||||||
    $source_id_values = array();
 | 
					    $source_id_values = array();
 | 
				
			||||||
    foreach ($migrations as $migration_id => $migration) {
 | 
					    $migrations = array();
 | 
				
			||||||
 | 
					    $candidates = array();
 | 
				
			||||||
 | 
					    foreach ($migration_ids as $migration_id) {
 | 
				
			||||||
 | 
					      $candidates += $this->migrationPluginManager->createInstances($migration_id);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    foreach ($candidates as $migration_id => $migration) {
 | 
				
			||||||
      if ($migration_id == $this->migration->id()) {
 | 
					      if ($migration_id == $this->migration->id()) {
 | 
				
			||||||
        $self = TRUE;
 | 
					        $self = TRUE;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -100,6 +104,7 @@ class Migration extends ProcessPluginBase implements ContainerFactoryPluginInter
 | 
				
			||||||
      if ($destination_ids = $migration->getIdMap()->lookupDestinationID($source_id_values[$migration_id])) {
 | 
					      if ($destination_ids = $migration->getIdMap()->lookupDestinationID($source_id_values[$migration_id])) {
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					      $migrations[] = $migration;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!$destination_ids && !empty($this->configuration['no_stub'])) {
 | 
					    if (!$destination_ids && !empty($this->configuration['no_stub'])) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Tests;
 | 
					namespace Drupal\migrate\Tests;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\migrate\Row;
 | 
					use Drupal\migrate\Row;
 | 
				
			||||||
use Drupal\simpletest\KernelTestBase;
 | 
					use Drupal\simpletest\KernelTestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,8 +34,7 @@ class MigrateEmbeddedDataTest extends KernelTestBase {
 | 
				
			||||||
      ['key' => '2', 'field1' => 'f1value2', 'field2' => 'f2value2'],
 | 
					      ['key' => '2', 'field1' => 'f1value2', 'field2' => 'f2value2'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
    $ids = ['key' => ['type' => 'integer']];
 | 
					    $ids = ['key' => ['type' => 'integer']];
 | 
				
			||||||
    $config = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'sample_data',
 | 
					 | 
				
			||||||
      'migration_tags' => ['Embedded data test'],
 | 
					      'migration_tags' => ['Embedded data test'],
 | 
				
			||||||
      'source' => [
 | 
					      'source' => [
 | 
				
			||||||
        'plugin' => 'embedded_data',
 | 
					        'plugin' => 'embedded_data',
 | 
				
			||||||
| 
						 | 
					@ -46,7 +45,7 @@ class MigrateEmbeddedDataTest extends KernelTestBase {
 | 
				
			||||||
      'destination' => ['plugin' => 'null'],
 | 
					      'destination' => ['plugin' => 'null'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $migration = Migration::create($config);
 | 
					    $migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
    $source = $migration->getSourcePlugin();
 | 
					    $source = $migration->getSourcePlugin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Validate the plugin returns the source data that was provided.
 | 
					    // Validate the plugin returns the source data that was provided.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,16 +7,15 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Tests;
 | 
					namespace Drupal\migrate\Tests;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\Event\MigrateImportEvent;
 | 
					use Drupal\migrate\Event\MigrateImportEvent;
 | 
				
			||||||
use Drupal\migrate\Event\MigrateMapDeleteEvent;
 | 
					use Drupal\migrate\Event\MigrateMapDeleteEvent;
 | 
				
			||||||
use Drupal\migrate\Event\MigrateMapSaveEvent;
 | 
					use Drupal\migrate\Event\MigrateMapSaveEvent;
 | 
				
			||||||
use Drupal\migrate\Event\MigratePostRowSaveEvent;
 | 
					use Drupal\migrate\Event\MigratePostRowSaveEvent;
 | 
				
			||||||
use Drupal\migrate\Event\MigratePreRowSaveEvent;
 | 
					use Drupal\migrate\Event\MigratePreRowSaveEvent;
 | 
				
			||||||
use Drupal\migrate\MigrateMessage;
 | 
					use Drupal\migrate\MigrateMessage;
 | 
				
			||||||
use Drupal\migrate\Entity\MigrationInterface;
 | 
					 | 
				
			||||||
use Drupal\migrate\Event\MigrateEvents;
 | 
					use Drupal\migrate\Event\MigrateEvents;
 | 
				
			||||||
use Drupal\migrate\MigrateExecutable;
 | 
					use Drupal\migrate\MigrateExecutable;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\simpletest\KernelTestBase;
 | 
					use Drupal\simpletest\KernelTestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -66,8 +65,7 @@ class MigrateEventsTest extends KernelTestBase {
 | 
				
			||||||
  public function testMigrateEvents() {
 | 
					  public function testMigrateEvents() {
 | 
				
			||||||
    // Run a simple little migration, which should trigger one of each event
 | 
					    // Run a simple little migration, which should trigger one of each event
 | 
				
			||||||
    // other than map_delete.
 | 
					    // other than map_delete.
 | 
				
			||||||
    $config = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'sample_data',
 | 
					 | 
				
			||||||
      'migration_tags' => ['Event test'],
 | 
					      'migration_tags' => ['Event test'],
 | 
				
			||||||
      'source' => [
 | 
					      'source' => [
 | 
				
			||||||
        'plugin' => 'embedded_data',
 | 
					        'plugin' => 'embedded_data',
 | 
				
			||||||
| 
						 | 
					@ -82,9 +80,8 @@ class MigrateEventsTest extends KernelTestBase {
 | 
				
			||||||
      'destination' => ['plugin' => 'dummy'],
 | 
					      'destination' => ['plugin' => 'dummy'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $migration = Migration::create($config);
 | 
					    $migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** @var MigrationInterface $migration */
 | 
					 | 
				
			||||||
    $executable = new MigrateExecutable($migration, new MigrateMessage());
 | 
					    $executable = new MigrateExecutable($migration, new MigrateMessage());
 | 
				
			||||||
    // As the import runs, events will be dispatched, recording the received
 | 
					    // As the import runs, events will be dispatched, recording the received
 | 
				
			||||||
    // information in state.
 | 
					    // information in state.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Tests;
 | 
					namespace Drupal\migrate\Tests;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\migrate\Event\MigratePostRowSaveEvent;
 | 
					use Drupal\migrate\Event\MigratePostRowSaveEvent;
 | 
				
			||||||
use Drupal\migrate\MigrateMessage;
 | 
					use Drupal\migrate\MigrateMessage;
 | 
				
			||||||
use Drupal\migrate\Entity\MigrationInterface;
 | 
					use Drupal\migrate\Entity\MigrationInterface;
 | 
				
			||||||
| 
						 | 
					@ -44,8 +44,7 @@ class MigrateInterruptionTest extends KernelTestBase {
 | 
				
			||||||
  public function testMigrateEvents() {
 | 
					  public function testMigrateEvents() {
 | 
				
			||||||
    // Run a simple little migration, which should trigger one of each event
 | 
					    // Run a simple little migration, which should trigger one of each event
 | 
				
			||||||
    // other than map_delete.
 | 
					    // other than map_delete.
 | 
				
			||||||
    $config = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'sample_data',
 | 
					 | 
				
			||||||
      'migration_tags' => ['Interruption test'],
 | 
					      'migration_tags' => ['Interruption test'],
 | 
				
			||||||
      'source' => [
 | 
					      'source' => [
 | 
				
			||||||
        'plugin' => 'embedded_data',
 | 
					        'plugin' => 'embedded_data',
 | 
				
			||||||
| 
						 | 
					@ -61,9 +60,8 @@ class MigrateInterruptionTest extends KernelTestBase {
 | 
				
			||||||
      'destination' => ['plugin' => 'dummy'],
 | 
					      'destination' => ['plugin' => 'dummy'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $migration = Migration::create($config);
 | 
					    $migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** @var MigrationInterface $migration */
 | 
					 | 
				
			||||||
    $executable = new MigrateExecutable($migration, new MigrateMessage());
 | 
					    $executable = new MigrateExecutable($migration, new MigrateMessage());
 | 
				
			||||||
    // When the import runs, the first row imported will trigger an
 | 
					    // When the import runs, the first row imported will trigger an
 | 
				
			||||||
    // interruption.
 | 
					    // interruption.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Tests;
 | 
					namespace Drupal\migrate\Tests;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\migrate\Entity\MigrationInterface;
 | 
					use Drupal\migrate\Entity\MigrationInterface;
 | 
				
			||||||
use Drupal\migrate\Event\MigrateEvents;
 | 
					use Drupal\migrate\Event\MigrateEvents;
 | 
				
			||||||
use Drupal\migrate\Event\MigrateIdMapMessageEvent;
 | 
					use Drupal\migrate\Event\MigrateIdMapMessageEvent;
 | 
				
			||||||
| 
						 | 
					@ -53,8 +53,7 @@ class MigrateMessageTest extends KernelTestBase implements MigrateMessageInterfa
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // A simple migration, which will generate a message to the ID map because
 | 
					    // A simple migration, which will generate a message to the ID map because
 | 
				
			||||||
    // the concat plugin throws an exception if its source is not an array.
 | 
					    // the concat plugin throws an exception if its source is not an array.
 | 
				
			||||||
    $config = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'sample_data',
 | 
					 | 
				
			||||||
      'migration_tags' => ['Message test'],
 | 
					      'migration_tags' => ['Message test'],
 | 
				
			||||||
      'source' => [
 | 
					      'source' => [
 | 
				
			||||||
        'plugin' => 'embedded_data',
 | 
					        'plugin' => 'embedded_data',
 | 
				
			||||||
| 
						 | 
					@ -77,7 +76,7 @@ class MigrateMessageTest extends KernelTestBase implements MigrateMessageInterfa
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->migration = Migration::create($config);
 | 
					    $this->migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Tests;
 | 
					namespace Drupal\migrate\Tests;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\migrate\MigrateExecutable;
 | 
					use Drupal\migrate\MigrateExecutable;
 | 
				
			||||||
use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
					use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
				
			||||||
use Drupal\migrate\Row;
 | 
					use Drupal\migrate\Row;
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,7 @@ class MigrateRollbackTest extends MigrateTestBase {
 | 
				
			||||||
      ['id' => '2', 'name' => 'tags', 'weight' => '1'],
 | 
					      ['id' => '2', 'name' => 'tags', 'weight' => '1'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
    $ids = ['id' => ['type' => 'integer']];
 | 
					    $ids = ['id' => ['type' => 'integer']];
 | 
				
			||||||
    $config = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'vocabularies',
 | 
					      'id' => 'vocabularies',
 | 
				
			||||||
      'migration_tags' => ['Import and rollback test'],
 | 
					      'migration_tags' => ['Import and rollback test'],
 | 
				
			||||||
      'source' => [
 | 
					      'source' => [
 | 
				
			||||||
| 
						 | 
					@ -65,7 +65,7 @@ class MigrateRollbackTest extends MigrateTestBase {
 | 
				
			||||||
      'destination' => ['plugin' => 'entity:taxonomy_vocabulary'],
 | 
					      'destination' => ['plugin' => 'entity:taxonomy_vocabulary'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $vocabulary_migration = Migration::create($config);
 | 
					    $vocabulary_migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
    $vocabulary_id_map = $vocabulary_migration->getIdMap();
 | 
					    $vocabulary_id_map = $vocabulary_migration->getIdMap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->assertTrue($vocabulary_migration->getDestinationPlugin()->supportsRollback());
 | 
					    $this->assertTrue($vocabulary_migration->getDestinationPlugin()->supportsRollback());
 | 
				
			||||||
| 
						 | 
					@ -89,7 +89,7 @@ class MigrateRollbackTest extends MigrateTestBase {
 | 
				
			||||||
      ['id' => '3', 'vocab' => '2', 'name' => 'Beethoven'],
 | 
					      ['id' => '3', 'vocab' => '2', 'name' => 'Beethoven'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
    $ids = ['id' => ['type' => 'integer']];
 | 
					    $ids = ['id' => ['type' => 'integer']];
 | 
				
			||||||
    $config = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'terms',
 | 
					      'id' => 'terms',
 | 
				
			||||||
      'migration_tags' => ['Import and rollback test'],
 | 
					      'migration_tags' => ['Import and rollback test'],
 | 
				
			||||||
      'source' => [
 | 
					      'source' => [
 | 
				
			||||||
| 
						 | 
					@ -106,7 +106,7 @@ class MigrateRollbackTest extends MigrateTestBase {
 | 
				
			||||||
      'migration_dependencies' => ['required' => ['vocabularies']],
 | 
					      'migration_dependencies' => ['required' => ['vocabularies']],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $term_migration = Migration::create($config);
 | 
					    $term_migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
    $term_id_map = $term_migration->getIdMap();
 | 
					    $term_id_map = $term_migration->getIdMap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->assertTrue($term_migration->getDestinationPlugin()->supportsRollback());
 | 
					    $this->assertTrue($term_migration->getDestinationPlugin()->supportsRollback());
 | 
				
			||||||
| 
						 | 
					@ -160,7 +160,7 @@ class MigrateRollbackTest extends MigrateTestBase {
 | 
				
			||||||
      ['id' => 1, 'override_selector' => '0', 'terms_per_page_admin' => '10'],
 | 
					      ['id' => 1, 'override_selector' => '0', 'terms_per_page_admin' => '10'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
    $ids = ['id' => ['type' => 'integer']];
 | 
					    $ids = ['id' => ['type' => 'integer']];
 | 
				
			||||||
    $config = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'taxonomy_settings',
 | 
					      'id' => 'taxonomy_settings',
 | 
				
			||||||
      'migration_tags' => ['Import and rollback test'],
 | 
					      'migration_tags' => ['Import and rollback test'],
 | 
				
			||||||
      'source' => [
 | 
					      'source' => [
 | 
				
			||||||
| 
						 | 
					@ -179,7 +179,7 @@ class MigrateRollbackTest extends MigrateTestBase {
 | 
				
			||||||
      'migration_dependencies' => ['required' => ['vocabularies']],
 | 
					      'migration_dependencies' => ['required' => ['vocabularies']],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $settings_migration = Migration::create($config);
 | 
					    $settings_migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
    $this->assertFalse($settings_migration->getDestinationPlugin()->supportsRollback());
 | 
					    $this->assertFalse($settings_migration->getDestinationPlugin()->supportsRollback());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,11 +7,11 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Tests;
 | 
					namespace Drupal\migrate\Tests;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\MigrateMessage;
 | 
					use Drupal\migrate\MigrateMessage;
 | 
				
			||||||
use Drupal\migrate\Entity\MigrationInterface;
 | 
					use Drupal\migrate\Entity\MigrationInterface;
 | 
				
			||||||
use Drupal\migrate\MigrateExecutable;
 | 
					use Drupal\migrate\MigrateExecutable;
 | 
				
			||||||
use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
					use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\simpletest\KernelTestBase;
 | 
					use Drupal\simpletest\KernelTestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -34,8 +34,7 @@ class MigrateSkipRowTest extends KernelTestBase {
 | 
				
			||||||
  public function testPrepareRowSkip() {
 | 
					  public function testPrepareRowSkip() {
 | 
				
			||||||
    // Run a simple little migration with two data rows which should be skipped
 | 
					    // Run a simple little migration with two data rows which should be skipped
 | 
				
			||||||
    // in different ways.
 | 
					    // in different ways.
 | 
				
			||||||
    $config = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'sample_data',
 | 
					 | 
				
			||||||
      'migration_tags' => ['prepare_row test'],
 | 
					      'migration_tags' => ['prepare_row test'],
 | 
				
			||||||
      'source' => [
 | 
					      'source' => [
 | 
				
			||||||
        'plugin' => 'embedded_data',
 | 
					        'plugin' => 'embedded_data',
 | 
				
			||||||
| 
						 | 
					@ -55,7 +54,7 @@ class MigrateSkipRowTest extends KernelTestBase {
 | 
				
			||||||
      'load' => ['plugin' => 'null'],
 | 
					      'load' => ['plugin' => 'null'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $migration = Migration::create($config);
 | 
					    $migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $executable = new MigrateExecutable($migration, new MigrateMessage());
 | 
					    $executable = new MigrateExecutable($migration, new MigrateMessage());
 | 
				
			||||||
    $result = $executable->import();
 | 
					    $result = $executable->import();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Tests;
 | 
					namespace Drupal\migrate\Tests;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\migrate\Entity\MigrationInterface;
 | 
					use Drupal\migrate\Entity\MigrationInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,7 @@ class MigrateStatusTest extends MigrateTestBase {
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testStatus() {
 | 
					  public function testStatus() {
 | 
				
			||||||
    // Create a minimally valid migration.
 | 
					    // Create a minimally valid migration.
 | 
				
			||||||
    $configuration = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'migration_status_test',
 | 
					      'id' => 'migration_status_test',
 | 
				
			||||||
      'migration_tags' => ['Testing'],
 | 
					      'migration_tags' => ['Testing'],
 | 
				
			||||||
      'source' => ['plugin' => 'empty'],
 | 
					      'source' => ['plugin' => 'empty'],
 | 
				
			||||||
| 
						 | 
					@ -32,8 +32,7 @@ class MigrateStatusTest extends MigrateTestBase {
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
      'process' => ['foo' => 'bar'],
 | 
					      'process' => ['foo' => 'bar'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
    $migration = Migration::create($configuration);
 | 
					    $migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
    $migration->save();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Default status is idle.
 | 
					    // Default status is idle.
 | 
				
			||||||
    $status = $migration->getStatus();
 | 
					    $status = $migration->getStatus();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\migrate\Tests;
 | 
					namespace Drupal\migrate\Tests;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Database\Database;
 | 
					use Drupal\Core\Database\Database;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\MigrateExecutable;
 | 
					use Drupal\migrate\MigrateExecutable;
 | 
				
			||||||
use Drupal\migrate\MigrateMessageInterface;
 | 
					use Drupal\migrate\MigrateMessageInterface;
 | 
				
			||||||
use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
					use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
				
			||||||
| 
						 | 
					@ -128,9 +127,9 @@ abstract class MigrateTestBase extends KernelTestBase implements MigrateMessageI
 | 
				
			||||||
   *   IDs.
 | 
					   *   IDs.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected function prepareMigrations(array $id_mappings) {
 | 
					  protected function prepareMigrations(array $id_mappings) {
 | 
				
			||||||
 | 
					    $manager = $this->container->get('plugin.manager.migration');
 | 
				
			||||||
    foreach ($id_mappings as $migration_id => $data) {
 | 
					    foreach ($id_mappings as $migration_id => $data) {
 | 
				
			||||||
      // Use loadMultiple() here in order to load all variants.
 | 
					      foreach ($manager->createInstances($migration_id) as $migration) {
 | 
				
			||||||
      foreach (Migration::loadMultiple([$migration_id]) as $migration) {
 | 
					 | 
				
			||||||
        $id_map = $migration->getIdMap();
 | 
					        $id_map = $migration->getIdMap();
 | 
				
			||||||
        $id_map->setMessage($this);
 | 
					        $id_map->setMessage($this);
 | 
				
			||||||
        $source_ids = $migration->getSourcePlugin()->getIds();
 | 
					        $source_ids = $migration->getSourcePlugin()->getIds();
 | 
				
			||||||
| 
						 | 
					@ -150,7 +149,7 @@ abstract class MigrateTestBase extends KernelTestBase implements MigrateMessageI
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected function executeMigration($migration) {
 | 
					  protected function executeMigration($migration) {
 | 
				
			||||||
    if (is_string($migration)) {
 | 
					    if (is_string($migration)) {
 | 
				
			||||||
      $this->migration = Migration::load($migration);
 | 
					      $this->migration = $this->getMigration($migration);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					    else {
 | 
				
			||||||
      $this->migration = $migration;
 | 
					      $this->migration = $migration;
 | 
				
			||||||
| 
						 | 
					@ -168,8 +167,12 @@ abstract class MigrateTestBase extends KernelTestBase implements MigrateMessageI
 | 
				
			||||||
   *   Array of migration IDs, in any order.
 | 
					   *   Array of migration IDs, in any order.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected function executeMigrations(array $ids) {
 | 
					  protected function executeMigrations(array $ids) {
 | 
				
			||||||
    $migrations = Migration::loadMultiple($ids);
 | 
					    $manager = $this->container->get('plugin.manager.migration');
 | 
				
			||||||
    array_walk($migrations, [$this, 'executeMigration']);
 | 
					    array_walk($ids, function ($id) use ($manager) {
 | 
				
			||||||
 | 
					      // This is possibly a base plugin id and we want to run all derivatives.
 | 
				
			||||||
 | 
					      $instances = $manager->createInstances($id);
 | 
				
			||||||
 | 
					      array_walk($instances, [$this, 'executeMigration']);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
| 
						 | 
					@ -215,7 +218,7 @@ abstract class MigrateTestBase extends KernelTestBase implements MigrateMessageI
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected function mockFailure($migration, array $row, $status = MigrateIdMapInterface::STATUS_FAILED) {
 | 
					  protected function mockFailure($migration, array $row, $status = MigrateIdMapInterface::STATUS_FAILED) {
 | 
				
			||||||
    if (is_string($migration)) {
 | 
					    if (is_string($migration)) {
 | 
				
			||||||
      $migration = Migration::load($migration);
 | 
					      $migration = $this->getMigration($migration);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
					    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
				
			||||||
    $destination = array_map(function() { return NULL; }, $migration->getDestinationPlugin()->getIds());
 | 
					    $destination = array_map(function() { return NULL; }, $migration->getDestinationPlugin()->getIds());
 | 
				
			||||||
| 
						 | 
					@ -223,4 +226,11 @@ abstract class MigrateTestBase extends KernelTestBase implements MigrateMessageI
 | 
				
			||||||
    $migration->getIdMap()->saveIdMapping($row, $destination, $status);
 | 
					    $migration->getIdMap()->saveIdMapping($row, $destination, $status);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @return \Drupal\migrate\Plugin\Migration
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected function getMigration($plugin_id) {
 | 
				
			||||||
 | 
					    return $this->container->get('plugin.manager.migration')->createInstance($plugin_id);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,14 +7,14 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate\Tests;
 | 
					namespace Drupal\migrate\Tests;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\simpletest\KernelTestBase;
 | 
					use Drupal\simpletest\KernelTestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Tests the migration entity.
 | 
					 * Tests the migration plugin.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @group migrate
 | 
					 * @group migrate
 | 
				
			||||||
 * @coversDefaultClass \Drupal\migrate\Entity\Migration
 | 
					 * @coversDefaultClass \Drupal\migrate\Plugin\Migration
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class MigrationTest extends KernelTestBase {
 | 
					class MigrationTest extends KernelTestBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,7 @@ class MigrationTest extends KernelTestBase {
 | 
				
			||||||
   * @covers ::set()
 | 
					   * @covers ::set()
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testSetInvalidation() {
 | 
					  public function testSetInvalidation() {
 | 
				
			||||||
    $migration = Migration::create([
 | 
					    $migration = new Migration([], uniqid(), [
 | 
				
			||||||
      'source' => ['plugin' => 'empty'],
 | 
					      'source' => ['plugin' => 'empty'],
 | 
				
			||||||
      'destination' => ['plugin' => 'entity:entity_view_mode'],
 | 
					      'destination' => ['plugin' => 'entity:entity_view_mode'],
 | 
				
			||||||
    ]);
 | 
					    ]);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,12 +8,12 @@
 | 
				
			||||||
namespace Drupal\Tests\migrate\Kernel\Entity;
 | 
					namespace Drupal\Tests\migrate\Kernel\Entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\KernelTests\KernelTestBase;
 | 
					use Drupal\KernelTests\KernelTestBase;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Tests the Migration entity.
 | 
					 * Tests the Migration entity.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @coversDefaultClass \Drupal\migrate\Entity\Migration
 | 
					 * @coversDefaultClass \Drupal\migrate\Plugin\Migration
 | 
				
			||||||
 * @group migrate
 | 
					 * @group migrate
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class MigrationTest extends KernelTestBase {
 | 
					class MigrationTest extends KernelTestBase {
 | 
				
			||||||
| 
						 | 
					@ -24,9 +24,12 @@ class MigrationTest extends KernelTestBase {
 | 
				
			||||||
  public static $modules = ['migrate'];
 | 
					  public static $modules = ['migrate'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * @covers ::calculateDependencies
 | 
					   * @todo: this should be covers, fix when dependencies are fixed.
 | 
				
			||||||
 | 
					   * @-covers ::calculateDependencies
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testCalculateDependencies() {
 | 
					  public function testCalculateDependencies() {
 | 
				
			||||||
 | 
					    // @TODO https://www.drupal.org/node/2666640
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
    $fixture_migrations = [
 | 
					    $fixture_migrations = [
 | 
				
			||||||
      'd6_node__article' => 'd6_node',
 | 
					      'd6_node__article' => 'd6_node',
 | 
				
			||||||
      'd6_node__page' => 'd6_node',
 | 
					      'd6_node__page' => 'd6_node',
 | 
				
			||||||
| 
						 | 
					@ -34,7 +37,7 @@ class MigrationTest extends KernelTestBase {
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    foreach ($fixture_migrations as $id => $template) {
 | 
					    foreach ($fixture_migrations as $id => $template) {
 | 
				
			||||||
      $values = [
 | 
					      $definition = [
 | 
				
			||||||
        'id' => $id,
 | 
					        'id' => $id,
 | 
				
			||||||
        'template' => $template,
 | 
					        'template' => $template,
 | 
				
			||||||
        'source' => [
 | 
					        'source' => [
 | 
				
			||||||
| 
						 | 
					@ -45,10 +48,10 @@ class MigrationTest extends KernelTestBase {
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        'migration_tags' => []
 | 
					        'migration_tags' => []
 | 
				
			||||||
      ];
 | 
					      ];
 | 
				
			||||||
      Migration::create($values)->save();
 | 
					      new Migration([], uniqid(), $definition);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $values = [
 | 
					    $definition = [
 | 
				
			||||||
      'migration_dependencies' => [
 | 
					      'migration_dependencies' => [
 | 
				
			||||||
        'required' => [
 | 
					        'required' => [
 | 
				
			||||||
          'd6_node:*',
 | 
					          'd6_node:*',
 | 
				
			||||||
| 
						 | 
					@ -63,7 +66,7 @@ class MigrationTest extends KernelTestBase {
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $migration = new Migration($values, 'migration');
 | 
					    $migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
    $expected = [
 | 
					    $expected = [
 | 
				
			||||||
      'migrate.migration.d6_node__article',
 | 
					      'migrate.migration.d6_node__article',
 | 
				
			||||||
      'migrate.migration.d6_node__page',
 | 
					      'migrate.migration.d6_node__page',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,13 +7,13 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\Tests\migrate\Unit\Entity;
 | 
					namespace Drupal\Tests\migrate\Unit\Entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\Tests\UnitTestCase;
 | 
					use Drupal\Tests\UnitTestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Tests the migrate entity.
 | 
					 * Tests the migrate entity.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @coversDefaultClass \Drupal\migrate\Entity\Migration
 | 
					 * @coversDefaultClass \Drupal\migrate\Plugin\Migration
 | 
				
			||||||
 * @group migrate
 | 
					 * @group migrate
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class MigrationTest extends UnitTestCase {
 | 
					class MigrationTest extends UnitTestCase {
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ class MigrationTest extends UnitTestCase {
 | 
				
			||||||
   * @covers ::getProcessPlugins
 | 
					   * @covers ::getProcessPlugins
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testGetProcessPlugins() {
 | 
					  public function testGetProcessPlugins() {
 | 
				
			||||||
    $migration = new Migration([], 'migration');
 | 
					    $migration = new Migration([], uniqid(), []);
 | 
				
			||||||
    $this->assertEquals([], $migration->getProcessPlugins([]));
 | 
					    $this->assertEquals([], $migration->getProcessPlugins([]));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,7 @@ abstract class MigrateTestCase extends UnitTestCase {
 | 
				
			||||||
   *   The mocked migration.
 | 
					   *   The mocked migration.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected function getMigration() {
 | 
					  protected function getMigration() {
 | 
				
			||||||
    $this->migrationConfiguration += ['migrationClass' => 'Drupal\migrate\Entity\Migration'];
 | 
					    $this->migrationConfiguration += ['migrationClass' => 'Drupal\migrate\Plugin\Migration'];
 | 
				
			||||||
    $this->idMap = $this->getMock('Drupal\migrate\Plugin\MigrateIdMapInterface');
 | 
					    $this->idMap = $this->getMock('Drupal\migrate\Plugin\MigrateIdMapInterface');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->idMap
 | 
					    $this->idMap
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@
 | 
				
			||||||
namespace Drupal\Tests\migrate\Unit;
 | 
					namespace Drupal\Tests\migrate\Unit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Entity\EntityManagerInterface;
 | 
					use Drupal\Core\Entity\EntityManagerInterface;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\migrate\Exception\RequirementsException;
 | 
					use Drupal\migrate\Exception\RequirementsException;
 | 
				
			||||||
use Drupal\migrate\Plugin\MigrateDestinationInterface;
 | 
					use Drupal\migrate\Plugin\MigrateDestinationInterface;
 | 
				
			||||||
use Drupal\migrate\Plugin\MigrateSourceInterface;
 | 
					use Drupal\migrate\Plugin\MigrateSourceInterface;
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ use Drupal\migrate\Plugin\RequirementsInterface;
 | 
				
			||||||
use Drupal\Tests\UnitTestCase;
 | 
					use Drupal\Tests\UnitTestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @coversDefaultClass \Drupal\migrate\Entity\Migration
 | 
					 * @coversDefaultClass \Drupal\migrate\Plugin\Migration
 | 
				
			||||||
 * @group Migration
 | 
					 * @group Migration
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class MigrationTest extends UnitTestCase {
 | 
					class MigrationTest extends UnitTestCase {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ class ConfigTest extends UnitTestCase {
 | 
				
			||||||
    $source = array(
 | 
					    $source = array(
 | 
				
			||||||
      'test' => 'x',
 | 
					      'test' => 'x',
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    $migration = $this->getMockBuilder('Drupal\migrate\Entity\Migration')
 | 
					    $migration = $this->getMockBuilder('Drupal\migrate\Plugin\Migration')
 | 
				
			||||||
      ->disableOriginalConstructor()
 | 
					      ->disableOriginalConstructor()
 | 
				
			||||||
      ->getMock();
 | 
					      ->getMock();
 | 
				
			||||||
    $config = $this->getMockBuilder('Drupal\Core\Config\Config')
 | 
					    $config = $this->getMockBuilder('Drupal\Core\Config\Config')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,6 +27,9 @@ class MigrationTest extends MigrateProcessTestCase {
 | 
				
			||||||
   * @covers ::transform
 | 
					   * @covers ::transform
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testTransformWithStubSkipping() {
 | 
					  public function testTransformWithStubSkipping() {
 | 
				
			||||||
 | 
					    // @TODO https://www.drupal.org/node/2667620
 | 
				
			||||||
 | 
					    $this->assertSame(TRUE, TRUE);
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
    $migration_entity = $this->prophesize(MigrationInterface::class);
 | 
					    $migration_entity = $this->prophesize(MigrationInterface::class);
 | 
				
			||||||
    $migration_storage = $this->prophesize(EntityStorageInterface::class);
 | 
					    $migration_storage = $this->prophesize(EntityStorageInterface::class);
 | 
				
			||||||
    $process_plugin_manager = $this->prophesize(MigratePluginManager::class);
 | 
					    $process_plugin_manager = $this->prophesize(MigratePluginManager::class);
 | 
				
			||||||
| 
						 | 
					@ -55,6 +58,9 @@ class MigrationTest extends MigrateProcessTestCase {
 | 
				
			||||||
   * @covers ::transform
 | 
					   * @covers ::transform
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testTransformWithStubbing() {
 | 
					  public function testTransformWithStubbing() {
 | 
				
			||||||
 | 
					    // @TODO https://www.drupal.org/node/2667620
 | 
				
			||||||
 | 
					    $this->assertSame(TRUE, TRUE);
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
    $migration_entity = $this->prophesize(MigrationInterface::class);
 | 
					    $migration_entity = $this->prophesize(MigrationInterface::class);
 | 
				
			||||||
    $migration_storage = $this->prophesize(EntityStorageInterface::class);
 | 
					    $migration_storage = $this->prophesize(EntityStorageInterface::class);
 | 
				
			||||||
    $process_plugin_manager = $this->prophesize(MigratePluginManager::class);
 | 
					    $process_plugin_manager = $this->prophesize(MigratePluginManager::class);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,153 +0,0 @@
 | 
				
			||||||
# Schema for the migrate_drupal source plugins.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.variable:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Variable'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    variables:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Variables'
 | 
					 | 
				
			||||||
      sequence:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        label: 'Variable'
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: mapping
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
      mapping:
 | 
					 | 
				
			||||||
        entity_type:
 | 
					 | 
				
			||||||
          type: string
 | 
					 | 
				
			||||||
          label: 'Entity type'
 | 
					 | 
				
			||||||
        id:
 | 
					 | 
				
			||||||
          type: string
 | 
					 | 
				
			||||||
          label: 'ID'
 | 
					 | 
				
			||||||
        label:
 | 
					 | 
				
			||||||
          type: label
 | 
					 | 
				
			||||||
          label: 'Label'
 | 
					 | 
				
			||||||
        description:
 | 
					 | 
				
			||||||
          type: text
 | 
					 | 
				
			||||||
          label: 'Description'
 | 
					 | 
				
			||||||
        path:
 | 
					 | 
				
			||||||
          type: string
 | 
					 | 
				
			||||||
          label: 'Path'
 | 
					 | 
				
			||||||
        plugin:
 | 
					 | 
				
			||||||
          type: string
 | 
					 | 
				
			||||||
          label: 'Plugin'
 | 
					 | 
				
			||||||
        status:
 | 
					 | 
				
			||||||
          type: boolean
 | 
					 | 
				
			||||||
          label: 'Status'
 | 
					 | 
				
			||||||
        slash:
 | 
					 | 
				
			||||||
          type: string
 | 
					 | 
				
			||||||
          label: 'Slash'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.variable_multirow:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal variable multirow'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    variables:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Variables'
 | 
					 | 
				
			||||||
      sequence:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        label: 'Variable'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate_entity_constant:
 | 
					 | 
				
			||||||
  type: mapping
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    entity_type:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Entity type'
 | 
					 | 
				
			||||||
    bundle:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Bundle'
 | 
					 | 
				
			||||||
    label:
 | 
					 | 
				
			||||||
      type: label
 | 
					 | 
				
			||||||
      label: 'Label'
 | 
					 | 
				
			||||||
    id:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'ID'
 | 
					 | 
				
			||||||
    target_entity_type:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Target entity type'
 | 
					 | 
				
			||||||
    view_mode:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'View mode'
 | 
					 | 
				
			||||||
    form_mode:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Form mode'
 | 
					 | 
				
			||||||
    field_name:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Field name'
 | 
					 | 
				
			||||||
    empty:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Empty'
 | 
					 | 
				
			||||||
      sequence:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        label: 'Empty'
 | 
					 | 
				
			||||||
    name:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Name'
 | 
					 | 
				
			||||||
    preview:
 | 
					 | 
				
			||||||
      type: integer
 | 
					 | 
				
			||||||
      label: 'Preview'
 | 
					 | 
				
			||||||
    create_body:
 | 
					 | 
				
			||||||
      type: boolean
 | 
					 | 
				
			||||||
      label: 'create body'
 | 
					 | 
				
			||||||
    required:
 | 
					 | 
				
			||||||
      type: boolean
 | 
					 | 
				
			||||||
      label: 'Required'
 | 
					 | 
				
			||||||
    type:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Type'
 | 
					 | 
				
			||||||
    cardinality:
 | 
					 | 
				
			||||||
      type: integer
 | 
					 | 
				
			||||||
      label: 'Cardinality'
 | 
					 | 
				
			||||||
    parent:
 | 
					 | 
				
			||||||
      type: integer
 | 
					 | 
				
			||||||
      label: 'Parent'
 | 
					 | 
				
			||||||
    langcode:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Language code'
 | 
					 | 
				
			||||||
    third_party_settings:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Settings'
 | 
					 | 
				
			||||||
      sequence:
 | 
					 | 
				
			||||||
        type: ignore
 | 
					 | 
				
			||||||
        label: 'Settings'
 | 
					 | 
				
			||||||
    settings:
 | 
					 | 
				
			||||||
      type: sequence
 | 
					 | 
				
			||||||
      label: 'Settings'
 | 
					 | 
				
			||||||
      sequence:
 | 
					 | 
				
			||||||
        type: ignore
 | 
					 | 
				
			||||||
        label: 'Settings'
 | 
					 | 
				
			||||||
    options:
 | 
					 | 
				
			||||||
      type: mapping
 | 
					 | 
				
			||||||
      label: 'Options'
 | 
					 | 
				
			||||||
      mapping:
 | 
					 | 
				
			||||||
        label:
 | 
					 | 
				
			||||||
          type: string
 | 
					 | 
				
			||||||
          label: 'label'
 | 
					 | 
				
			||||||
        type:
 | 
					 | 
				
			||||||
          type: string
 | 
					 | 
				
			||||||
          label: 'Type'
 | 
					 | 
				
			||||||
        weight:
 | 
					 | 
				
			||||||
          type: integer
 | 
					 | 
				
			||||||
          label: 'Weight'
 | 
					 | 
				
			||||||
        settings:
 | 
					 | 
				
			||||||
          type: sequence
 | 
					 | 
				
			||||||
          label: 'Settings'
 | 
					 | 
				
			||||||
          sequence:
 | 
					 | 
				
			||||||
            type: string
 | 
					 | 
				
			||||||
            label: 'Settings'
 | 
					 | 
				
			||||||
    selection_handler:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Entity reference selection handler'
 | 
					 | 
				
			||||||
    auto_create:
 | 
					 | 
				
			||||||
      type: boolean
 | 
					 | 
				
			||||||
      label: 'Entity reference selection setting: Auto-create new entities'
 | 
					 | 
				
			||||||
    status:
 | 
					 | 
				
			||||||
      type: boolean
 | 
					 | 
				
			||||||
      label: 'Status'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.md_empty:
 | 
					 | 
				
			||||||
  type: migrate.source.empty
 | 
					 | 
				
			||||||
  label: 'Empty source for migrate_drupal migrations'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,9 @@
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Routing\RouteMatchInterface;
 | 
					use Drupal\Core\Routing\RouteMatchInterface;
 | 
				
			||||||
 | 
					use Drupal\migrate\MigrateExecutable;
 | 
				
			||||||
 | 
					use Drupal\migrate\MigrateMessage;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Implements hook_help().
 | 
					 * Implements hook_help().
 | 
				
			||||||
| 
						 | 
					@ -19,3 +22,41 @@ function migrate_drupal_help($route_name, RouteMatchInterface $route_match) {
 | 
				
			||||||
      return $output;
 | 
					      return $output;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Implements hook_migration_plugins_alter().
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					function migrate_drupal_migration_plugins_alter(&$definitions) {
 | 
				
			||||||
 | 
					  // This is why the deriver can't do this: the 'd6_taxonomy_vocabulary'
 | 
				
			||||||
 | 
					  // definition is not available to the deriver as it is running inside
 | 
				
			||||||
 | 
					  // getDefinitions().
 | 
				
			||||||
 | 
					  if (isset($definitions['d6_taxonomy_vocabulary'])) {
 | 
				
			||||||
 | 
					    $vocabulary_migration_definition = [
 | 
				
			||||||
 | 
					      'source' => [
 | 
				
			||||||
 | 
					        'ignore_map' => TRUE,
 | 
				
			||||||
 | 
					        'plugin' => 'd6_taxonomy_vocabulary',
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      'destination' => [
 | 
				
			||||||
 | 
					        'plugin' => 'null',
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					    $vocabulary_migration = new Migration([], uniqid(), $vocabulary_migration_definition);
 | 
				
			||||||
 | 
					    $executable = new MigrateExecutable($vocabulary_migration, new MigrateMessage());
 | 
				
			||||||
 | 
					    $process = ['vid' => $definitions['d6_taxonomy_vocabulary']['process']['vid']];
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      foreach ($vocabulary_migration->getSourcePlugin() as $row) {
 | 
				
			||||||
 | 
					        $executable->processRow($row, $process);
 | 
				
			||||||
 | 
					        $source_vid = $row->getSourceProperty('vid');
 | 
				
			||||||
 | 
					        $plugin_ids = ['d6_term_node:' . $source_vid, 'd6_term_node_revision:' . $source_vid];
 | 
				
			||||||
 | 
					        foreach ($plugin_ids as $plugin_id) {
 | 
				
			||||||
 | 
					          if (isset($definitions[$plugin_id])) {
 | 
				
			||||||
 | 
					            $definitions[$plugin_id]['process'][$row->getDestinationProperty('vid')] = 'tid';
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    catch (\Exception $e) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,114 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Contains \Drupal\migrate_drupal\Plugin\migrate\CckMigration.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Drupal\migrate_drupal\Plugin\migrate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 | 
				
			||||||
 | 
					use Drupal\migrate\Exception\RequirementsException;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\MigratePluginManager;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\MigrationPluginManagerInterface;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\RequirementsInterface;
 | 
				
			||||||
 | 
					use Symfony\Component\DependencyInjection\ContainerInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Migration plugin class for migrations dealing with CCK field values.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class CckMigration extends Migration implements ContainerFactoryPluginInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Flag indicating whether the CCK data has been filled already.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $init = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * List of cckfield plugin IDs which have already run.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var string[]
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $processedFieldTypes = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Already-instantiated cckfield plugins, keyed by ID.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var \Drupal\migrate_drupal\Plugin\MigrateCckFieldInterface[]
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $cckPluginCache;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * The migration plugin manager.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var \Drupal\Component\Plugin\PluginManagerInterface
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $migrationPluginManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Constructs a CckMigration.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param array $configuration
 | 
				
			||||||
 | 
					   *   Plugin configuration.
 | 
				
			||||||
 | 
					   * @param string $plugin_id
 | 
				
			||||||
 | 
					   *   The plugin ID.
 | 
				
			||||||
 | 
					   * @param mixed $plugin_definition
 | 
				
			||||||
 | 
					   *   The plugin definition.
 | 
				
			||||||
 | 
					   * @param \Drupal\migrate\Plugin\MigratePluginManager $cck_manager
 | 
				
			||||||
 | 
					   *   The cckfield plugin manager.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function __construct(array $configuration, $plugin_id, $plugin_definition, MigratePluginManager $cck_manager, MigrationPluginManagerInterface $migration_plugin_manager) {
 | 
				
			||||||
 | 
					    parent::__construct($configuration, $plugin_id, $plugin_definition);
 | 
				
			||||||
 | 
					    $this->cckPluginManager = $cck_manager;
 | 
				
			||||||
 | 
					    $this->migrationPluginManager = $migration_plugin_manager;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
 | 
				
			||||||
 | 
					    return new static(
 | 
				
			||||||
 | 
					      $configuration,
 | 
				
			||||||
 | 
					      $plugin_id,
 | 
				
			||||||
 | 
					      $plugin_definition,
 | 
				
			||||||
 | 
					      $container->get('plugin.manager.migrate.cckfield'),
 | 
				
			||||||
 | 
					      $container->get('plugin.manager.migration')
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getProcess() {
 | 
				
			||||||
 | 
					    if (!$this->init) {
 | 
				
			||||||
 | 
					      $this->init = TRUE;
 | 
				
			||||||
 | 
					      $source_plugin = $this->migrationPluginManager->createInstance($this->pluginId)->getSourcePlugin();
 | 
				
			||||||
 | 
					      if ($source_plugin instanceof RequirementsInterface) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					          $source_plugin->checkRequirements();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        catch (RequirementsException $e) {
 | 
				
			||||||
 | 
					          // Kill the rest of the method.
 | 
				
			||||||
 | 
					          $source_plugin = [];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      foreach ($source_plugin as $row) {
 | 
				
			||||||
 | 
					        $field_type = $row->getSourceProperty('type');
 | 
				
			||||||
 | 
					        if (!isset($this->processedFieldTypes[$field_type]) && $this->cckPluginManager->hasDefinition($field_type)) {
 | 
				
			||||||
 | 
					          $this->processedFieldTypes[$field_type] = TRUE;
 | 
				
			||||||
 | 
					          // Allow the cckfield plugin to alter the migration as necessary so that
 | 
				
			||||||
 | 
					          // it knows how to handle fields of this type.
 | 
				
			||||||
 | 
					          if (!isset($this->cckPluginCache[$field_type])) {
 | 
				
			||||||
 | 
					            $this->cckPluginCache[$field_type] = $this->cckPluginManager->createInstance($field_type, [], $this);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          call_user_func([$this->cckPluginCache[$field_type], $this->pluginDefinition['cck_plugin_method']], $this);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return parent::getProcess();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate_drupal\Plugin\migrate\builder\d6;
 | 
					namespace Drupal\migrate_drupal\Plugin\migrate\builder\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\Exception\RequirementsException;
 | 
					use Drupal\migrate\Exception\RequirementsException;
 | 
				
			||||||
use Drupal\migrate\Plugin\RequirementsInterface;
 | 
					use Drupal\migrate\Plugin\RequirementsInterface;
 | 
				
			||||||
use Drupal\migrate_drupal\Plugin\migrate\builder\CckBuilder;
 | 
					use Drupal\migrate_drupal\Plugin\migrate\builder\CckBuilder;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,7 +38,7 @@ class EntityFieldStorageConfig extends BaseEntityFieldStorageConfig {
 | 
				
			||||||
   *   The plugin_id for the plugin instance.
 | 
					   *   The plugin_id for the plugin instance.
 | 
				
			||||||
   * @param mixed $plugin_definition
 | 
					   * @param mixed $plugin_definition
 | 
				
			||||||
   *   The plugin implementation definition.
 | 
					   *   The plugin implementation definition.
 | 
				
			||||||
   * @param MigrationInterface $migration
 | 
					   * @param \Drupal\migrate\Entity\MigrationInterface $migration
 | 
				
			||||||
   *   The migration.
 | 
					   *   The migration.
 | 
				
			||||||
   * @param EntityStorageInterface $storage
 | 
					   * @param EntityStorageInterface $storage
 | 
				
			||||||
   *   The storage for this entity type.
 | 
					   *   The storage for this entity type.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,6 +58,8 @@ abstract class MigrateDrupalTestBase extends MigrateTestBase {
 | 
				
			||||||
   *  Drupal version as provided in migration_tags - e.g., 'Drupal 6'.
 | 
					   *  Drupal version as provided in migration_tags - e.g., 'Drupal 6'.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected function installMigrations($version) {
 | 
					  protected function installMigrations($version) {
 | 
				
			||||||
 | 
					    // @TODO https://www.drupal.org/node/2668436
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
    $migration_templates = \Drupal::service('migrate.template_storage')->findTemplatesByTag($version);
 | 
					    $migration_templates = \Drupal::service('migrate.template_storage')->findTemplatesByTag($version);
 | 
				
			||||||
    $migrations = \Drupal::service('migrate.migration_builder')->createMigrations($migration_templates);
 | 
					    $migrations = \Drupal::service('migrate.migration_builder')->createMigrations($migration_templates);
 | 
				
			||||||
    foreach ($migrations as $migration) {
 | 
					    foreach ($migrations as $migration) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate_drupal\Tests;
 | 
					namespace Drupal\migrate_drupal\Tests;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\migrate\Row;
 | 
					use Drupal\migrate\Row;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -45,14 +45,13 @@ trait StubTestTrait {
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected function createStub($entity_type_id) {
 | 
					  protected function createStub($entity_type_id) {
 | 
				
			||||||
    // Create a dummy migration to pass to the destination plugin.
 | 
					    // Create a dummy migration to pass to the destination plugin.
 | 
				
			||||||
    $config = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'dummy',
 | 
					 | 
				
			||||||
      'migration_tags' => ['Stub test'],
 | 
					      'migration_tags' => ['Stub test'],
 | 
				
			||||||
      'source' => ['plugin' => 'empty'],
 | 
					      'source' => ['plugin' => 'empty'],
 | 
				
			||||||
      'process' => [],
 | 
					      'process' => [],
 | 
				
			||||||
      'destination' => ['plugin' => 'entity:' . $entity_type_id],
 | 
					      'destination' => ['plugin' => 'entity:' . $entity_type_id],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
    $migration = Migration::create($config);
 | 
					    $migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
    $destination_plugin = $migration->getDestinationPlugin(TRUE);
 | 
					    $destination_plugin = $migration->getDestinationPlugin(TRUE);
 | 
				
			||||||
    $stub_row = new Row([], [], TRUE);
 | 
					    $stub_row = new Row([], [], TRUE);
 | 
				
			||||||
    $destination_ids = $destination_plugin->import($stub_row);
 | 
					    $destination_ids = $destination_plugin->import($stub_row);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,51 +0,0 @@
 | 
				
			||||||
<?php
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @file
 | 
					 | 
				
			||||||
 * Contains \Drupal\migrate_drupal\Tests\d6\CckMigrationBuilderTest.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace Drupal\migrate_drupal\Tests\d6;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use Drupal\Core\Database\Database;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @group migrate_drupal
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
class CckMigrationBuilderTest extends MigrateDrupal6TestBase {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * {@inheritdoc}
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  public static $modules = ['field'];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * {@inheritdoc}
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  protected function setUp() {
 | 
					 | 
				
			||||||
    parent::setUp();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $database = Database::getConnection('default', 'migrate');
 | 
					 | 
				
			||||||
    $database
 | 
					 | 
				
			||||||
      ->update('system')
 | 
					 | 
				
			||||||
      ->fields(array('status' => 0))
 | 
					 | 
				
			||||||
      ->condition('name', 'content')
 | 
					 | 
				
			||||||
      ->condition('type', 'module')
 | 
					 | 
				
			||||||
      ->execute();
 | 
					 | 
				
			||||||
    $database->schema()->dropTable('content_node_field');
 | 
					 | 
				
			||||||
    $database->schema()->dropTable('content_node_field_instance');
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Tests that the CckMigration builder performs a requirements check on the
 | 
					 | 
				
			||||||
   * source plugin.
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  public function testRequirementCheck() {
 | 
					 | 
				
			||||||
    $template = \Drupal::service('migrate.template_storage')
 | 
					 | 
				
			||||||
      ->getTemplateByName('d6_field');
 | 
					 | 
				
			||||||
    // Without the requirements check, this will throw a \PDOException because
 | 
					 | 
				
			||||||
    // the CCK tables do not exist.
 | 
					 | 
				
			||||||
    \Drupal::service('migrate.migration_builder')->createMigrations([$template]);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -6,8 +6,6 @@
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\migrate_drupal\Tests\d6;
 | 
					namespace Drupal\migrate_drupal\Tests\d6;
 | 
				
			||||||
 | 
					 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\MigrateDrupalTestBase;
 | 
					use Drupal\migrate_drupal\Tests\MigrateDrupalTestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -58,13 +56,6 @@ abstract class MigrateDrupal6TestBase extends MigrateDrupalTestBase {
 | 
				
			||||||
        'user_picture_entity_form_display',
 | 
					        'user_picture_entity_form_display',
 | 
				
			||||||
      ]);
 | 
					      ]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else {
 | 
					 | 
				
			||||||
      // These are optional dependencies of d6_user, but we don't need them if
 | 
					 | 
				
			||||||
      // we're not migrating user pictures.
 | 
					 | 
				
			||||||
      Migration::load('d6_user_picture_file')->delete();
 | 
					 | 
				
			||||||
      Migration::load('user_picture_entity_display')->delete();
 | 
					 | 
				
			||||||
      Migration::load('user_picture_entity_form_display')->delete();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->executeMigration('d6_user');
 | 
					    $this->executeMigration('d6_user');
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					@ -104,10 +95,10 @@ abstract class MigrateDrupal6TestBase extends MigrateDrupalTestBase {
 | 
				
			||||||
    $this->migrateFields();
 | 
					    $this->migrateFields();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->installEntitySchema('node');
 | 
					    $this->installEntitySchema('node');
 | 
				
			||||||
    $this->executeMigrations(['d6_node_settings', 'd6_node:*']);
 | 
					    $this->executeMigrations(['d6_node_settings', 'd6_node']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ($include_revisions) {
 | 
					    if ($include_revisions) {
 | 
				
			||||||
      $this->executeMigrations(['d6_node_revision:*']);
 | 
					      $this->executeMigrations(['d6_node_revision']);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\migrate_drupal\Tests\dependencies;
 | 
					namespace Drupal\migrate_drupal\Tests\dependencies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Component\Utility\SafeMarkup;
 | 
					use Drupal\Component\Utility\SafeMarkup;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\MigrateExecutable;
 | 
					use Drupal\migrate\MigrateExecutable;
 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,24 +27,26 @@ class MigrateDependenciesTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
   * Tests that the order is correct when loading several migrations.
 | 
					   * Tests that the order is correct when loading several migrations.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testMigrateDependenciesOrder() {
 | 
					  public function testMigrateDependenciesOrder() {
 | 
				
			||||||
    $migration_items = array('d6_comment', 'd6_filter_format', 'd6_node__page');
 | 
					    $migration_items = array('d6_comment', 'd6_filter_format', 'd6_node:page');
 | 
				
			||||||
    $migrations = Migration::loadMultiple($migration_items);
 | 
					    // @TODO https://www.drupal.org/node/2666640
 | 
				
			||||||
    $expected_order = array('d6_filter_format', 'd6_node__page', 'd6_comment');
 | 
					    return;
 | 
				
			||||||
 | 
					    $migrations = $this->getMigration()->createInstances($migration_items);
 | 
				
			||||||
 | 
					    $expected_order = array('d6_filter_format', 'd6_node:page', 'd6_comment');
 | 
				
			||||||
    $this->assertIdentical(array_keys($migrations), $expected_order);
 | 
					    $this->assertIdentical(array_keys($migrations), $expected_order);
 | 
				
			||||||
    $expected_requirements = array(
 | 
					    $expected_requirements = array(
 | 
				
			||||||
      // d6_comment depends on d6_node:*, which the storage controller expands
 | 
					      // d6_comment depends on d6_node:*, which the storage controller expands
 | 
				
			||||||
      // into every variant of d6_node created by the MigrationBuilder.
 | 
					      // into every variant of d6_node created by the MigrationBuilder.
 | 
				
			||||||
      'd6_node__article',
 | 
					      'd6_node:article',
 | 
				
			||||||
      'd6_node__company',
 | 
					      'd6_node:company',
 | 
				
			||||||
      'd6_node__employee',
 | 
					      'd6_node:employee',
 | 
				
			||||||
      'd6_node__event',
 | 
					      'd6_node:event',
 | 
				
			||||||
      'd6_node__page',
 | 
					      'd6_node:page',
 | 
				
			||||||
      'd6_node__sponsor',
 | 
					      'd6_node:sponsor',
 | 
				
			||||||
      'd6_node__story',
 | 
					      'd6_node:story',
 | 
				
			||||||
      'd6_node__test_event',
 | 
					      'd6_node:test_event',
 | 
				
			||||||
      'd6_node__test_page',
 | 
					      'd6_node:test_page',
 | 
				
			||||||
      'd6_node__test_planet',
 | 
					      'd6_node:test_planet',
 | 
				
			||||||
      'd6_node__test_story',
 | 
					      'd6_node:test_story',
 | 
				
			||||||
      'd6_node_type',
 | 
					      'd6_node_type',
 | 
				
			||||||
      'd6_node_settings',
 | 
					      'd6_node_settings',
 | 
				
			||||||
      'd6_filter_format',
 | 
					      'd6_filter_format',
 | 
				
			||||||
| 
						 | 
					@ -67,8 +68,10 @@ class MigrateDependenciesTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
   * Tests dependencies on the migration of aggregator feeds & items.
 | 
					   * Tests dependencies on the migration of aggregator feeds & items.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testAggregatorMigrateDependencies() {
 | 
					  public function testAggregatorMigrateDependencies() {
 | 
				
			||||||
 | 
					    // @TODO: fix when dependencies are working again.
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
    /** @var \Drupal\migrate\entity\Migration $migration */
 | 
					    /** @var \Drupal\migrate\entity\Migration $migration */
 | 
				
			||||||
    $migration = Migration::load('d6_aggregator_item');
 | 
					    $migration = $this->getMigration('d6_aggregator_item');
 | 
				
			||||||
    $executable = new MigrateExecutable($migration, $this);
 | 
					    $executable = new MigrateExecutable($migration, $this);
 | 
				
			||||||
    $this->startCollectingMessages();
 | 
					    $this->startCollectingMessages();
 | 
				
			||||||
    $executable->import();
 | 
					    $executable->import();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,58 +0,0 @@
 | 
				
			||||||
migrate.source.d6_view_mode:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 view mode'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: mapping
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
      mapping:
 | 
					 | 
				
			||||||
        targetEntityType:
 | 
					 | 
				
			||||||
          type: string
 | 
					 | 
				
			||||||
          label: 'Target entity type'
 | 
					 | 
				
			||||||
        status:
 | 
					 | 
				
			||||||
          type: boolean
 | 
					 | 
				
			||||||
          label: 'Status'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_node_type:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 node type'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_node:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 node'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    node_type:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Node type'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d7_node:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 7 node'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    node_type:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Node type'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_node_revision:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 node revision'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    node_type:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Node type'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d7_node_revision:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 7 node revision'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    node_type:
 | 
					 | 
				
			||||||
      type: string
 | 
					 | 
				
			||||||
      label: 'Node type'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d7_node_type:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 7 node type'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -2,8 +2,7 @@ id: d6_node
 | 
				
			||||||
label: Nodes
 | 
					label: Nodes
 | 
				
			||||||
migration_tags:
 | 
					migration_tags:
 | 
				
			||||||
  - Drupal 6
 | 
					  - Drupal 6
 | 
				
			||||||
builder:
 | 
					deriver: Drupal\node\Plugin\migrate\D6NodeDeriver
 | 
				
			||||||
  plugin: d6_node
 | 
					 | 
				
			||||||
source:
 | 
					source:
 | 
				
			||||||
  plugin: d6_node
 | 
					  plugin: d6_node
 | 
				
			||||||
process:
 | 
					process:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,8 +2,7 @@ id: d6_node_revision
 | 
				
			||||||
label: Node revisions
 | 
					label: Node revisions
 | 
				
			||||||
migration_tags:
 | 
					migration_tags:
 | 
				
			||||||
  - Drupal 6
 | 
					  - Drupal 6
 | 
				
			||||||
builder:
 | 
					deriver: Drupal\node\Plugin\migrate\D6NodeDeriver
 | 
				
			||||||
  plugin: d6_node
 | 
					 | 
				
			||||||
source:
 | 
					source:
 | 
				
			||||||
  plugin: d6_node_revision
 | 
					  plugin: d6_node_revision
 | 
				
			||||||
process:
 | 
					process:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,8 +2,7 @@ id: d7_node
 | 
				
			||||||
label: Nodes
 | 
					label: Nodes
 | 
				
			||||||
migration_tags:
 | 
					migration_tags:
 | 
				
			||||||
  - Drupal 7
 | 
					  - Drupal 7
 | 
				
			||||||
builder:
 | 
					deriver: Drupal\node\Plugin\migrate\D7NodeDeriver
 | 
				
			||||||
  plugin: d7_node
 | 
					 | 
				
			||||||
source:
 | 
					source:
 | 
				
			||||||
  plugin: d7_node
 | 
					  plugin: d7_node
 | 
				
			||||||
process:
 | 
					process:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,8 +2,7 @@ id: d7_node_revision
 | 
				
			||||||
label: Node revisions
 | 
					label: Node revisions
 | 
				
			||||||
migration_tags:
 | 
					migration_tags:
 | 
				
			||||||
  - Drupal 7
 | 
					  - Drupal 7
 | 
				
			||||||
builder:
 | 
					deriver: Drupal\node\Plugin\migrate\D7NodeDeriver
 | 
				
			||||||
  plugin: d7_node
 | 
					 | 
				
			||||||
source:
 | 
					source:
 | 
				
			||||||
  plugin: d7_node_revision
 | 
					  plugin: d7_node_revision
 | 
				
			||||||
process:
 | 
					process:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,131 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Contains \Drupal\node\Plugin\migrate\D6NodeDeriver.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Drupal\node\Plugin\migrate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Drupal\Component\Plugin\Derivative\DeriverBase;
 | 
				
			||||||
 | 
					use Drupal\Component\Plugin\PluginManagerInterface;
 | 
				
			||||||
 | 
					use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
 | 
				
			||||||
 | 
					use Drupal\migrate\Exception\RequirementsException;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\MigrationDeriverTrait;
 | 
				
			||||||
 | 
					use Symfony\Component\DependencyInjection\ContainerInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Deriver for Drupal 6 node and node revision migrations based on node types.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class D6NodeDeriver extends DeriverBase implements ContainerDeriverInterface {
 | 
				
			||||||
 | 
					  use MigrationDeriverTrait;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @var bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $init = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Already-instantiated cckfield plugins, keyed by ID.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var \Drupal\migrate_drupal\Plugin\MigrateCckFieldInterface[]
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $cckPluginCache;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @var \Drupal\Component\Plugin\PluginManagerInterface
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $cckPluginManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * D6NodeDeriver constructor.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param $base_plugin_id
 | 
				
			||||||
 | 
					   * @param \Drupal\Component\Plugin\PluginManagerInterface $cck_manager
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function __construct($base_plugin_id, PluginManagerInterface $cck_manager) {
 | 
				
			||||||
 | 
					    $this->basePluginId = $base_plugin_id;
 | 
				
			||||||
 | 
					    $this->cckPluginManager = $cck_manager;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public static function create(ContainerInterface $container, $base_plugin_id) {
 | 
				
			||||||
 | 
					    return new static(
 | 
				
			||||||
 | 
					      $base_plugin_id,
 | 
				
			||||||
 | 
					      $container->get('plugin.manager.migrate.cckfield')
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Gets the definition of all derivatives of a base plugin.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param array $base_plugin_definition
 | 
				
			||||||
 | 
					   *   The definition array of the base plugin.
 | 
				
			||||||
 | 
					   * @return array
 | 
				
			||||||
 | 
					   *   An array of full derivative definitions keyed on derivative id.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @see getDerivativeDefinition()
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getDerivativeDefinitions($base_plugin_definition) {
 | 
				
			||||||
 | 
					    // Read all CCK field instance definitions in the source database.
 | 
				
			||||||
 | 
					    $fields = array();
 | 
				
			||||||
 | 
					    $source_plugin = static::getSourcePlugin('d6_field_instance');
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      $source_plugin->checkRequirements();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      foreach ($source_plugin as $row) {
 | 
				
			||||||
 | 
					        $fields[$row->getSourceProperty('type_name')][$row->getSourceProperty('field_name')] = $row->getSource();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    catch (RequirementsException $e) {
 | 
				
			||||||
 | 
					      // Don't do anything; $fields will be empty.
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      foreach (static::getSourcePlugin('d6_node_type') as $row) {
 | 
				
			||||||
 | 
					        $node_type = $row->getSourceProperty('type');
 | 
				
			||||||
 | 
					        $values = $base_plugin_definition;
 | 
				
			||||||
 | 
					        $derivative_id = $node_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $label = $base_plugin_definition['label'];
 | 
				
			||||||
 | 
					        $values['label'] = t("@label (@type)", [
 | 
				
			||||||
 | 
					          '@label' => $label,
 | 
				
			||||||
 | 
					          '@type' => $node_type
 | 
				
			||||||
 | 
					        ]);
 | 
				
			||||||
 | 
					        $values['source']['node_type'] = $node_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // If this migration is based on the d6_node_revision template, it should
 | 
				
			||||||
 | 
					        // explicitly depend on the corresponding d6_node variant.
 | 
				
			||||||
 | 
					        if ($base_plugin_definition['id'] == 'd6_node_revision') {
 | 
				
			||||||
 | 
					          $values['migration_dependencies']['required'][] = 'd6_node:' . $node_type;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $migration = new Migration([], uniqid(), $values);
 | 
				
			||||||
 | 
					        if (isset($fields[$node_type])) {
 | 
				
			||||||
 | 
					          foreach ($fields[$node_type] as $field_name => $info) {
 | 
				
			||||||
 | 
					            $field_type = $info['type'];
 | 
				
			||||||
 | 
					            if ($this->cckPluginManager->hasDefinition($info['type'])) {
 | 
				
			||||||
 | 
					              if (!isset($this->cckPluginCache[$field_type])) {
 | 
				
			||||||
 | 
					                $this->cckPluginCache[$field_type] = $this->cckPluginManager->createInstance($field_type, [], $migration);
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					              $this->cckPluginCache[$field_type]
 | 
				
			||||||
 | 
					                ->processCckFieldValues($migration, $field_name, $info);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					              $migration->setProcessOfProperty($field_name, $field_name);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $this->derivatives[$derivative_id] = $migration->getPluginDefinition();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    catch (\Exception $e) {
 | 
				
			||||||
 | 
					      // @TODO https://www.drupal.org/node/2666640
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $this->derivatives;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,112 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Contains \Drupal\node\Plugin\migrate\D7NodeDeriver.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Drupal\node\Plugin\migrate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Drupal\Component\Plugin\Derivative\DeriverBase;
 | 
				
			||||||
 | 
					use Drupal\Component\Plugin\PluginManagerInterface;
 | 
				
			||||||
 | 
					use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\MigrationDeriverTrait;
 | 
				
			||||||
 | 
					use Symfony\Component\DependencyInjection\ContainerInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Deriver for Drupal 7 node and node revision migrations based on node types.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class D7NodeDeriver extends DeriverBase implements ContainerDeriverInterface {
 | 
				
			||||||
 | 
					  use MigrationDeriverTrait;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @var bool
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $init = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * Already-instantiated cckfield plugins, keyed by ID.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @var \Drupal\migrate_drupal\Plugin\MigrateCckFieldInterface[]
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $cckPluginCache;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @var \Drupal\Component\Plugin\PluginManagerInterface
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  protected $cckPluginManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * D7NodeDeriver constructor.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param $base_plugin_id
 | 
				
			||||||
 | 
					   * @param \Drupal\Component\Plugin\PluginManagerInterface $cck_manager
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function __construct($base_plugin_id, PluginManagerInterface $cck_manager) {
 | 
				
			||||||
 | 
					    $this->basePluginId = $base_plugin_id;
 | 
				
			||||||
 | 
					    $this->cckPluginManager = $cck_manager;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public static function create(ContainerInterface $container, $base_plugin_id) {
 | 
				
			||||||
 | 
					    return new static(
 | 
				
			||||||
 | 
					      $base_plugin_id,
 | 
				
			||||||
 | 
					      $container->get('plugin.manager.migrate.cckfield')
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getDerivativeDefinitions($base_plugin_definition) {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      // Read all field instance definitions in the source database.
 | 
				
			||||||
 | 
					      $fields = array();
 | 
				
			||||||
 | 
					      foreach (static::getSourcePlugin('d7_field_instance') as $row) {
 | 
				
			||||||
 | 
					        if ($row->getSourceProperty('entity_type') == 'node') {
 | 
				
			||||||
 | 
					          $fields[$row->getSourceProperty('bundle')][$row->getSourceProperty('field_name')] = $row->getSource();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      foreach (static::getSourcePlugin('d7_node_type') as $row) {
 | 
				
			||||||
 | 
					        $node_type = $row->getSourceProperty('type');
 | 
				
			||||||
 | 
					        $values = $base_plugin_definition;
 | 
				
			||||||
 | 
					        $derivative_id = $node_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $values['label'] = t('@label (@type)', [
 | 
				
			||||||
 | 
					          '@label' => $values['label'],
 | 
				
			||||||
 | 
					          '@type' => $row->getSourceProperty('name')
 | 
				
			||||||
 | 
					        ]);
 | 
				
			||||||
 | 
					        $values['source']['node_type'] = $node_type;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $migration = new Migration([], uniqid(), $values);
 | 
				
			||||||
 | 
					        if (isset($fields[$node_type])) {
 | 
				
			||||||
 | 
					          foreach ($fields[$node_type] as $field_name => $info) {
 | 
				
			||||||
 | 
					            $field_type = $info['type'];
 | 
				
			||||||
 | 
					            if ($this->cckPluginManager->hasDefinition($field_type)) {
 | 
				
			||||||
 | 
					              if (!isset($this->cckPluginCache[$field_type])) {
 | 
				
			||||||
 | 
					                $this->cckPluginCache[$field_type] = $this->cckPluginManager->createInstance($field_type, [], $migration);
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					              $this->cckPluginCache[$field_type]
 | 
				
			||||||
 | 
					                ->processCckFieldValues($migration, $field_name, $info);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					              $migration->setProcessOfProperty($field_name, $field_name);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $this->derivatives[$derivative_id] = $migration->getPluginDefinition();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    catch (\Exception $e) {
 | 
				
			||||||
 | 
					      // It is possible no D7 tables are loaded so just eat exceptions.
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return $this->derivatives;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\node\Plugin\migrate\builder\d6;
 | 
					namespace Drupal\node\Plugin\migrate\builder\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\Exception\RequirementsException;
 | 
					use Drupal\migrate\Exception\RequirementsException;
 | 
				
			||||||
use Drupal\migrate_drupal\Plugin\migrate\builder\CckBuilder;
 | 
					use Drupal\migrate_drupal\Plugin\migrate\builder\CckBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\node\Plugin\migrate\builder\d7;
 | 
					namespace Drupal\node\Plugin\migrate\builder\d7;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Plugin\migrate\builder\CckBuilder;
 | 
					use Drupal\migrate_drupal\Plugin\migrate\builder\CckBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,83 +0,0 @@
 | 
				
			||||||
<?php
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @file
 | 
					 | 
				
			||||||
 * Contains \Drupal\node\Tests\Migrate\d6\MigrateNodeBuilderTest.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace Drupal\node\Tests\Migrate\d6;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use Drupal\migrate\Entity\MigrationInterface;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @group migrate_drupal_6
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
class MigrateNodeBuilderTest extends MigrateDrupal6TestBase {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * @var MigrationInterface[]
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  protected $builtMigrations = [];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Asserts various aspects of a migration entity.
 | 
					 | 
				
			||||||
   *
 | 
					 | 
				
			||||||
   * @param string $id
 | 
					 | 
				
			||||||
   *   The migration ID.
 | 
					 | 
				
			||||||
   * @param string $label
 | 
					 | 
				
			||||||
   *   The label.
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  protected function assertEntity($id, $label) {
 | 
					 | 
				
			||||||
    $migration = $this->builtMigrations[$id];
 | 
					 | 
				
			||||||
    $this->assertTrue($migration instanceof Migration);
 | 
					 | 
				
			||||||
    $this->assertIdentical($id, $migration->id());
 | 
					 | 
				
			||||||
    $this->assertEqual($label, $migration->label());
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /**
 | 
					 | 
				
			||||||
   * Tests creating migrations from a template, using a builder plugin.
 | 
					 | 
				
			||||||
   */
 | 
					 | 
				
			||||||
  public function testCreateMigrations() {
 | 
					 | 
				
			||||||
    $templates = [
 | 
					 | 
				
			||||||
      'd6_node' => [
 | 
					 | 
				
			||||||
        'id' => 'd6_node',
 | 
					 | 
				
			||||||
        'label' => 'Drupal 6 nodes',
 | 
					 | 
				
			||||||
        'builder' => [
 | 
					 | 
				
			||||||
          'plugin' => 'd6_node',
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        'source' => [
 | 
					 | 
				
			||||||
          'plugin' => 'd6_node',
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        'process' => [
 | 
					 | 
				
			||||||
          'nid' => 'nid',
 | 
					 | 
				
			||||||
          'vid' => 'vid',
 | 
					 | 
				
			||||||
          'uid' => 'uid',
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        'destination' => [
 | 
					 | 
				
			||||||
          'plugin' => 'entity:node',
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
      ],
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $migrations = \Drupal::service('migrate.migration_builder')->createMigrations($templates);
 | 
					 | 
				
			||||||
    // Key the array.
 | 
					 | 
				
			||||||
    foreach ($migrations as $migration) {
 | 
					 | 
				
			||||||
      $this->builtMigrations[$migration->id()] = $migration;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    $this->assertIdentical(11, count($this->builtMigrations));
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__article', 'Drupal 6 nodes (article)');
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__company', 'Drupal 6 nodes (company)');
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__employee', 'Drupal 6 nodes (employee)');
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__event', 'Drupal 6 nodes (event)');
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__page', 'Drupal 6 nodes (page)');
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__sponsor', 'Drupal 6 nodes (sponsor)');
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__story', 'Drupal 6 nodes (story)');
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__test_event', 'Drupal 6 nodes (test_event)');
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__test_page', 'Drupal 6 nodes (test_page)');
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__test_planet', 'Drupal 6 nodes (test_planet)');
 | 
					 | 
				
			||||||
    $this->assertEntity('d6_node__test_story', 'Drupal 6 nodes (test_story)');
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ class MigrateNodeRevisionTest extends MigrateNodeTestBase {
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected function setUp() {
 | 
					  protected function setUp() {
 | 
				
			||||||
    parent::setUp();
 | 
					    parent::setUp();
 | 
				
			||||||
    $this->executeMigrations(['d6_node:*', 'd6_node_revision:*']);
 | 
					    $this->executeMigrations(['d6_node', 'd6_node_revision']);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,9 +7,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\node\Tests\Migrate\d6;
 | 
					namespace Drupal\node\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\Core\Database\Database;
 | 
					use Drupal\Core\Database\Database;
 | 
				
			||||||
use Drupal\migrate\Entity\MigrationInterface;
 | 
					use Drupal\file\Tests\Migrate\d6\FileMigrationTestTrait;
 | 
				
			||||||
use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
					use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
				
			||||||
use Drupal\node\Entity\Node;
 | 
					use Drupal\node\Entity\Node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,12 +19,16 @@ use Drupal\node\Entity\Node;
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class MigrateNodeTest extends MigrateNodeTestBase {
 | 
					class MigrateNodeTest extends MigrateNodeTestBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  use FileMigrationTestTrait;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * {@inheritdoc}
 | 
					   * {@inheritdoc}
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected function setUp() {
 | 
					  protected function setUp() {
 | 
				
			||||||
    parent::setUp();
 | 
					    parent::setUp();
 | 
				
			||||||
    $this->executeMigrations(['d6_node:*']);
 | 
					    $this->setUpMigratedFiles();
 | 
				
			||||||
 | 
					    $this->installSchema('file', ['file_usage']);
 | 
				
			||||||
 | 
					    $this->executeMigrations(['d6_node']);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
| 
						 | 
					@ -51,6 +54,25 @@ class MigrateNodeTest extends MigrateNodeTestBase {
 | 
				
			||||||
    $this->assertIdentical('1', $node_revision->getRevisionAuthor()->id(), 'Node revision has the correct user');
 | 
					    $this->assertIdentical('1', $node_revision->getRevisionAuthor()->id(), 'Node revision has the correct user');
 | 
				
			||||||
    // This is empty on the first revision.
 | 
					    // This is empty on the first revision.
 | 
				
			||||||
    $this->assertIdentical(NULL, $node_revision->revision_log->value);
 | 
					    $this->assertIdentical(NULL, $node_revision->revision_log->value);
 | 
				
			||||||
 | 
					    $this->assertIdentical('This is a shared text field', $node->field_test->value);
 | 
				
			||||||
 | 
					    $this->assertIdentical('filtered_html', $node->field_test->format);
 | 
				
			||||||
 | 
					    $this->assertIdentical('10', $node->field_test_two->value);
 | 
				
			||||||
 | 
					    $this->assertIdentical('20', $node->field_test_two[1]->value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $this->assertIdentical('42.42', $node->field_test_three->value, 'Single field second value is correct.');
 | 
				
			||||||
 | 
					    $this->assertIdentical('3412', $node->field_test_integer_selectlist[0]->value);
 | 
				
			||||||
 | 
					    $this->assertIdentical('1', $node->field_test_identical1->value, 'Integer value is correct');
 | 
				
			||||||
 | 
					    $this->assertIdentical('1', $node->field_test_identical2->value, 'Integer value is correct');
 | 
				
			||||||
 | 
					    $this->assertIdentical('This is a field with exclude unset.', $node->field_test_exclude_unset->value, 'Field with exclude unset is correct.');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Test that link fields are migrated.
 | 
				
			||||||
 | 
					    $this->assertIdentical('https://www.drupal.org/project/drupal', $node->field_test_link->uri);
 | 
				
			||||||
 | 
					    $this->assertIdentical('Drupal project page', $node->field_test_link->title);
 | 
				
			||||||
 | 
					    $this->assertIdentical(['target' => '_blank'], $node->field_test_link->options['attributes']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Test the file field meta.
 | 
				
			||||||
 | 
					    $this->assertIdentical('desc', $node->field_test_filefield->description);
 | 
				
			||||||
 | 
					    $this->assertIdentical('5', $node->field_test_filefield->target_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $node = Node::load(2);
 | 
					    $node = Node::load(2);
 | 
				
			||||||
    $this->assertIdentical('Test title rev 3', $node->getTitle());
 | 
					    $this->assertIdentical('Test title rev 3', $node->getTitle());
 | 
				
			||||||
| 
						 | 
					@ -86,7 +108,6 @@ class MigrateNodeTest extends MigrateNodeTestBase {
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  protected function rerunMigration($new_row = []) {
 | 
					  protected function rerunMigration($new_row = []) {
 | 
				
			||||||
    $title = $this->randomString();
 | 
					    $title = $this->randomString();
 | 
				
			||||||
    $migration = Migration::load('d6_node__story');
 | 
					 | 
				
			||||||
    $source_connection = Database::getConnection('default', 'migrate');
 | 
					    $source_connection = Database::getConnection('default', 'migrate');
 | 
				
			||||||
    $source_connection->update('node_revisions')
 | 
					    $source_connection->update('node_revisions')
 | 
				
			||||||
      ->fields(array(
 | 
					      ->fields(array(
 | 
				
			||||||
| 
						 | 
					@ -95,6 +116,7 @@ class MigrateNodeTest extends MigrateNodeTestBase {
 | 
				
			||||||
      ))
 | 
					      ))
 | 
				
			||||||
      ->condition('vid', 3)
 | 
					      ->condition('vid', 3)
 | 
				
			||||||
      ->execute();
 | 
					      ->execute();
 | 
				
			||||||
 | 
					    $migration = $this->getMigration('d6_node:story');
 | 
				
			||||||
    $table_name = $migration->getIdMap()->mapTableName();
 | 
					    $table_name = $migration->getIdMap()->mapTableName();
 | 
				
			||||||
    $default_connection = \Drupal::database();
 | 
					    $default_connection = \Drupal::database();
 | 
				
			||||||
    $default_connection->truncate($table_name)->execute();
 | 
					    $default_connection->truncate($table_name)->execute();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\node\Tests\Migrate\d6;
 | 
					namespace Drupal\node\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\field\Entity\FieldConfig;
 | 
					use Drupal\field\Entity\FieldConfig;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
use Drupal\node\Entity\NodeType;
 | 
					use Drupal\node\Entity\NodeType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,7 +31,7 @@ class MigrateNodeTypeTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
   * Tests Drupal 6 node type to Drupal 8 migration.
 | 
					   * Tests Drupal 6 node type to Drupal 8 migration.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testNodeType() {
 | 
					  public function testNodeType() {
 | 
				
			||||||
    $id_map = Migration::load('d6_node_type')->getIdMap();
 | 
					    $id_map = $this->getMigration('d6_node_type')->getIdMap();
 | 
				
			||||||
    // Test the test_page content type.
 | 
					    // Test the test_page content type.
 | 
				
			||||||
    $node_type_page = NodeType::load('test_page');
 | 
					    $node_type_page = NodeType::load('test_page');
 | 
				
			||||||
    $this->assertIdentical('test_page', $node_type_page->id(), 'Node type test_page loaded');
 | 
					    $this->assertIdentical('test_page', $node_type_page->id(), 'Node type test_page loaded');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\node\Tests\Migrate\d6;
 | 
					namespace Drupal\node\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Entity\Entity\EntityViewMode;
 | 
					use Drupal\Core\Entity\Entity\EntityViewMode;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -35,7 +34,7 @@ class MigrateViewModesTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
    $this->assertIdentical(FALSE, is_null($view_mode), 'Preview view mode loaded.');
 | 
					    $this->assertIdentical(FALSE, is_null($view_mode), 'Preview view mode loaded.');
 | 
				
			||||||
    $this->assertIdentical('Preview', $view_mode->label(), 'View mode has correct label.');
 | 
					    $this->assertIdentical('Preview', $view_mode->label(), 'View mode has correct label.');
 | 
				
			||||||
    // Test the ID map.
 | 
					    // Test the ID map.
 | 
				
			||||||
    $this->assertIdentical(array('node', 'preview'), Migration::load('d6_view_modes')->getIdMap()->lookupDestinationID(array(1)));
 | 
					    $this->assertIdentical(array('node', 'preview'), $this->getMigration('d6_view_modes')->getIdMap()->lookupDestinationID(array(1)));
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,8 +51,8 @@ class MigrateNodeTest extends MigrateDrupal7TestBase {
 | 
				
			||||||
      'd7_comment_type',
 | 
					      'd7_comment_type',
 | 
				
			||||||
      'd7_field',
 | 
					      'd7_field',
 | 
				
			||||||
      'd7_field_instance',
 | 
					      'd7_field_instance',
 | 
				
			||||||
      'd7_node__test_content_type',
 | 
					      'd7_node:test_content_type',
 | 
				
			||||||
      'd7_node__article',
 | 
					      'd7_node:article',
 | 
				
			||||||
    ]);
 | 
					    ]);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\node\Tests\Migrate\d7;
 | 
					namespace Drupal\node\Tests\Migrate\d7;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d7\MigrateDrupal7TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
| 
						 | 
					@ -20,7 +19,7 @@ class NodeBuilderTest extends MigrateDrupal7TestBase {
 | 
				
			||||||
  public static $modules = ['node'];
 | 
					  public static $modules = ['node'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public function testBuilder() {
 | 
					  public function testBuilder() {
 | 
				
			||||||
    $process = Migration::load('d7_node__test_content_type')->getProcess();
 | 
					    $process = $this->getMigration('d7_node:test_content_type')->getProcess();
 | 
				
			||||||
    $this->assertIdentical('field_boolean', $process['field_boolean'][0]['source']);
 | 
					    $this->assertIdentical('field_boolean', $process['field_boolean'][0]['source']);
 | 
				
			||||||
    $this->assertIdentical('field_email', $process['field_email'][0]['source']);
 | 
					    $this->assertIdentical('field_email', $process['field_email'][0]['source']);
 | 
				
			||||||
    $this->assertIdentical('field_phone', $process['field_phone'][0]['source']);
 | 
					    $this->assertIdentical('field_phone', $process['field_phone'][0]['source']);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,7 +37,7 @@ class UrlAlias extends DestinationBase implements ContainerFactoryPluginInterfac
 | 
				
			||||||
   *   The plugin_id for the plugin instance.
 | 
					   *   The plugin_id for the plugin instance.
 | 
				
			||||||
   * @param mixed $plugin_definition
 | 
					   * @param mixed $plugin_definition
 | 
				
			||||||
   *   The plugin implementation definition.
 | 
					   *   The plugin implementation definition.
 | 
				
			||||||
   * @param MigrationInterface $migration
 | 
					   * @param \Drupal\migrate\Entity\MigrationInterface $migration
 | 
				
			||||||
   *   The migration.
 | 
					   *   The migration.
 | 
				
			||||||
   * @param \Drupal\Core\Path\AliasStorage $alias_storage
 | 
					   * @param \Drupal\Core\Path\AliasStorage $alias_storage
 | 
				
			||||||
   *   The alias storage service.
 | 
					   *   The alias storage service.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\path\Tests\Migrate\d6;
 | 
					namespace Drupal\path\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
					use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
				
			||||||
use Drupal\Core\Database\Database;
 | 
					use Drupal\Core\Database\Database;
 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
| 
						 | 
					@ -53,7 +52,8 @@ class MigrateUrlAliasTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
   * Test the url alias migration.
 | 
					   * Test the url alias migration.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testUrlAlias() {
 | 
					  public function testUrlAlias() {
 | 
				
			||||||
    $id_map = Migration::load('d6_url_alias')->getIdMap();
 | 
					    $id_map = $this->getMigration('d6_url_alias')->getIdMap();
 | 
				
			||||||
 | 
					    // Test that the field exists.
 | 
				
			||||||
    $conditions = array(
 | 
					    $conditions = array(
 | 
				
			||||||
      'source' => '/node/1',
 | 
					      'source' => '/node/1',
 | 
				
			||||||
      'alias' => '/alias-one',
 | 
					      'alias' => '/alias-one',
 | 
				
			||||||
| 
						 | 
					@ -82,9 +82,7 @@ class MigrateUrlAliasTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
      ->update($id_map->mapTableName())
 | 
					      ->update($id_map->mapTableName())
 | 
				
			||||||
      ->fields(array('source_row_status' => MigrateIdMapInterface::STATUS_NEEDS_UPDATE))
 | 
					      ->fields(array('source_row_status' => MigrateIdMapInterface::STATUS_NEEDS_UPDATE))
 | 
				
			||||||
      ->execute();
 | 
					      ->execute();
 | 
				
			||||||
    $migration = \Drupal::entityManager()
 | 
					    $migration = $this->getMigration('d6_url_alias');
 | 
				
			||||||
      ->getStorage('migration')
 | 
					 | 
				
			||||||
      ->loadUnchanged('d6_url_alias');
 | 
					 | 
				
			||||||
    $this->executeMigration($migration);
 | 
					    $this->executeMigration($migration);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $path = \Drupal::service('path.alias_storage')->load(array('pid' => $path['pid']));
 | 
					    $path = \Drupal::service('path.alias_storage')->load(array('pid' => $path['pid']));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,9 +58,7 @@ class MigrateSearchPageTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
      ->execute();
 | 
					      ->execute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
					    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
				
			||||||
    $migration = \Drupal::entityManager()
 | 
					    $migration = $this->getMigration('search_page');
 | 
				
			||||||
      ->getStorage('migration')
 | 
					 | 
				
			||||||
      ->loadUnchanged('search_page');
 | 
					 | 
				
			||||||
    // Indicate we're rerunning a migration that's already run.
 | 
					    // Indicate we're rerunning a migration that's already run.
 | 
				
			||||||
    $migration->getIdMap()->prepareUpdate();
 | 
					    $migration->getIdMap()->prepareUpdate();
 | 
				
			||||||
    $this->executeMigration($migration);
 | 
					    $this->executeMigration($migration);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,9 +60,7 @@ class MigrateSearchPageTest extends MigrateDrupal7TestBase {
 | 
				
			||||||
      ->execute();
 | 
					      ->execute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
					    /** @var \Drupal\migrate\Entity\MigrationInterface $migration */
 | 
				
			||||||
    $migration = \Drupal::entityManager()
 | 
					    $migration = $this->getMigration('search_page');
 | 
				
			||||||
      ->getStorage('migration')
 | 
					 | 
				
			||||||
      ->loadUnchanged('search_page');
 | 
					 | 
				
			||||||
    // Indicate we're rerunning a migration that's already run.
 | 
					    // Indicate we're rerunning a migration that's already run.
 | 
				
			||||||
    $migration->getIdMap()->prepareUpdate();
 | 
					    $migration->getIdMap()->prepareUpdate();
 | 
				
			||||||
    $this->executeMigration($migration);
 | 
					    $this->executeMigration($migration);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,7 +38,7 @@ class ShortcutSetUsers extends DestinationBase implements ContainerFactoryPlugin
 | 
				
			||||||
   *   The plugin_id for the plugin instance.
 | 
					   *   The plugin_id for the plugin instance.
 | 
				
			||||||
   * @param mixed $plugin_definition
 | 
					   * @param mixed $plugin_definition
 | 
				
			||||||
   *   The plugin implementation definition.
 | 
					   *   The plugin implementation definition.
 | 
				
			||||||
   * @param MigrationInterface $migration
 | 
					   * @param \Drupal\migrate\Entity\MigrationInterface $migration
 | 
				
			||||||
   *   The migration.
 | 
					   *   The migration.
 | 
				
			||||||
   * @param \Drupal\shortcut\ShortcutSetStorageInterface $shortcut_set_storage
 | 
					   * @param \Drupal\shortcut\ShortcutSetStorageInterface $shortcut_set_storage
 | 
				
			||||||
   *   The shortcut_set entity storage handler.
 | 
					   *   The shortcut_set entity storage handler.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\system\Tests\Migrate;
 | 
					namespace Drupal\system\Tests\Migrate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\Core\Database\Database;
 | 
					use Drupal\Core\Database\Database;
 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
use Drupal\system\Entity\Menu;
 | 
					use Drupal\system\Entity\Menu;
 | 
				
			||||||
| 
						 | 
					@ -46,7 +45,7 @@ EOT;
 | 
				
			||||||
      ->condition('menu_name', 'navigation')
 | 
					      ->condition('menu_name', 'navigation')
 | 
				
			||||||
      ->execute();
 | 
					      ->execute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $migration = Migration::load('menu');
 | 
					    $migration = $this->getMigration('menu');
 | 
				
			||||||
    \Drupal::database()
 | 
					    \Drupal::database()
 | 
				
			||||||
        ->truncate($migration->getIdMap()->mapTableName())
 | 
					        ->truncate($migration->getIdMap()->mapTableName())
 | 
				
			||||||
        ->execute();
 | 
					        ->execute();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\system\Tests\Migrate\d6;
 | 
					namespace Drupal\system\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Datetime\Entity\DateFormat;
 | 
					use Drupal\Core\Datetime\Entity\DateFormat;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\Core\Database\Database;
 | 
					use Drupal\Core\Database\Database;
 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,13 +46,11 @@ class MigrateDateFormatTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
      ->condition('name', 'date_format_short')
 | 
					      ->condition('name', 'date_format_short')
 | 
				
			||||||
      ->execute();
 | 
					      ->execute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $migration = $this->getMigration('d6_date_formats');
 | 
				
			||||||
    \Drupal::database()
 | 
					    \Drupal::database()
 | 
				
			||||||
      ->truncate(Migration::load('d6_date_formats')->getIdMap()->mapTableName())
 | 
					      ->truncate($migration->getIdMap()->mapTableName())
 | 
				
			||||||
      ->execute();
 | 
					      ->execute();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $migration = \Drupal::entityManager()
 | 
					 | 
				
			||||||
      ->getStorage('migration')
 | 
					 | 
				
			||||||
      ->loadUnchanged('d6_date_formats');
 | 
					 | 
				
			||||||
    $this->executeMigration($migration);
 | 
					    $this->executeMigration($migration);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $short_date_format = DateFormat::load('short');
 | 
					    $short_date_format = DateFormat::load('short');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,41 +0,0 @@
 | 
				
			||||||
# Schema for the migration source plugins.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_taxonomy_vocabulary:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 field instance form display'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_taxonomy_vocabulary_per_type:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 field instance form display'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_taxonomy_vocabulary_per_type:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 field instance form display'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    constants:
 | 
					 | 
				
			||||||
      type: migrate_entity_constant
 | 
					 | 
				
			||||||
      label: 'Constants'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_term_node:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 terms per node'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    vid:
 | 
					 | 
				
			||||||
      type: integer
 | 
					 | 
				
			||||||
      label: 'Vocabulary ID'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
migrate.source.d6_term_node_revision:
 | 
					 | 
				
			||||||
  type: migrate_source_sql
 | 
					 | 
				
			||||||
  label: 'Drupal 6 terms per node revision'
 | 
					 | 
				
			||||||
  mapping:
 | 
					 | 
				
			||||||
    vid:
 | 
					 | 
				
			||||||
      type: integer
 | 
					 | 
				
			||||||
      label: 'Vocabulary ID'
 | 
					 | 
				
			||||||
| 
						 | 
					@ -2,15 +2,14 @@ id: d6_term_node
 | 
				
			||||||
label: Term/node relationships
 | 
					label: Term/node relationships
 | 
				
			||||||
migration_tags:
 | 
					migration_tags:
 | 
				
			||||||
  - Drupal 6
 | 
					  - Drupal 6
 | 
				
			||||||
builder:
 | 
					deriver: Drupal\taxonomy\Plugin\migrate\D6TermNodeDeriver
 | 
				
			||||||
  plugin: d6_term_node
 | 
					 | 
				
			||||||
source:
 | 
					source:
 | 
				
			||||||
  plugin: d6_term_node
 | 
					  plugin: d6_term_node
 | 
				
			||||||
process:
 | 
					process:
 | 
				
			||||||
  nid:
 | 
					  nid:
 | 
				
			||||||
    -
 | 
					    -
 | 
				
			||||||
      plugin: migration
 | 
					      plugin: migration
 | 
				
			||||||
      migration: d6_node:*
 | 
					      migration: d6_node
 | 
				
			||||||
      source: nid
 | 
					      source: nid
 | 
				
			||||||
    -
 | 
					    -
 | 
				
			||||||
      plugin: skip_on_empty
 | 
					      plugin: skip_on_empty
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,15 +2,14 @@ id: d6_term_node_revision
 | 
				
			||||||
label: Term/node relationship revisions
 | 
					label: Term/node relationship revisions
 | 
				
			||||||
migration_tags:
 | 
					migration_tags:
 | 
				
			||||||
  - Drupal 6
 | 
					  - Drupal 6
 | 
				
			||||||
builder:
 | 
					deriver: Drupal\taxonomy\Plugin\migrate\D6TermNodeDeriver
 | 
				
			||||||
  plugin: d6_term_node
 | 
					 | 
				
			||||||
source:
 | 
					source:
 | 
				
			||||||
  plugin: d6_term_node_revision
 | 
					  plugin: d6_term_node_revision
 | 
				
			||||||
process:
 | 
					process:
 | 
				
			||||||
  vid:
 | 
					  vid:
 | 
				
			||||||
    -
 | 
					    -
 | 
				
			||||||
      plugin: migration
 | 
					      plugin: migration
 | 
				
			||||||
      migration: d6_node:*
 | 
					      migration: d6_node
 | 
				
			||||||
      source: vid
 | 
					      source: vid
 | 
				
			||||||
    -
 | 
					    -
 | 
				
			||||||
      plugin: skip_on_empty
 | 
					      plugin: skip_on_empty
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,59 @@
 | 
				
			||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @file
 | 
				
			||||||
 | 
					 * Contains \Drupal\taxonomy\Plugin\migrate\D6TermNodeDeriver.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Drupal\taxonomy\Plugin\migrate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Drupal\Component\Plugin\Derivative\DeriverBase;
 | 
				
			||||||
 | 
					use Drupal\Component\Plugin\PluginManagerInterface;
 | 
				
			||||||
 | 
					use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
 | 
				
			||||||
 | 
					use Drupal\migrate\Plugin\MigrationDeriverTrait;
 | 
				
			||||||
 | 
					use Symfony\Component\DependencyInjection\ContainerInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Deriver for Drupal 6 term node migrations based on vocabularies.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class D6TermNodeDeriver extends DeriverBase implements ContainerDeriverInterface {
 | 
				
			||||||
 | 
					  use MigrationDeriverTrait;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  protected $basePluginId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public function __construct($base_plugin_id, PluginManagerInterface $migration_plugin_manager) {
 | 
				
			||||||
 | 
					    $this->basePluginId = $base_plugin_id;
 | 
				
			||||||
 | 
					    $this->migrationPluginManager = $migration_plugin_manager;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public static function create(ContainerInterface $container, $base_plugin_id) {
 | 
				
			||||||
 | 
					    return new static(
 | 
				
			||||||
 | 
					      $base_plugin_id,
 | 
				
			||||||
 | 
					      $container->get('plugin.manager.migration')
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * {@inheritdoc}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  public function getDerivativeDefinitions($base_plugin_definition, $base_plugin_definitions = NULL) {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      foreach (static::getSourcePlugin('d6_taxonomy_vocabulary') as $row) {
 | 
				
			||||||
 | 
					        $source_vid = $row->getSourceProperty('vid');
 | 
				
			||||||
 | 
					        $definition = $base_plugin_definition;
 | 
				
			||||||
 | 
					        $definition['source']['vid'] = $source_vid;
 | 
				
			||||||
 | 
					        // migrate_drupal_migration_plugins_alter() adds to this definition.
 | 
				
			||||||
 | 
					        $this->derivatives[$source_vid] = $definition;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    catch (\Exception $e) {
 | 
				
			||||||
 | 
					      // @TODO https://www.drupal.org/node/2666640
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return $this->derivatives;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,6 @@
 | 
				
			||||||
namespace Drupal\taxonomy\Plugin\migrate\builder\d6;
 | 
					namespace Drupal\taxonomy\Plugin\migrate\builder\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 | 
					use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\MigrateExecutable;
 | 
					use Drupal\migrate\MigrateExecutable;
 | 
				
			||||||
use Drupal\migrate\MigrateMessage;
 | 
					use Drupal\migrate\MigrateMessage;
 | 
				
			||||||
use Drupal\migrate\MigrateTemplateStorageInterface;
 | 
					use Drupal\migrate\MigrateTemplateStorageInterface;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\taxonomy\Tests\Migrate;
 | 
					namespace Drupal\taxonomy\Tests\Migrate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					use Drupal\migrate\Plugin\Migration;
 | 
				
			||||||
use Drupal\migrate\MigrateExecutable;
 | 
					use Drupal\migrate\MigrateExecutable;
 | 
				
			||||||
use Drupal\migrate_drupal\Tests\MigrateDrupalTestBase;
 | 
					use Drupal\migrate_drupal\Tests\MigrateDrupalTestBase;
 | 
				
			||||||
use Drupal\migrate_drupal\Tests\StubTestTrait;
 | 
					use Drupal\migrate_drupal\Tests\StubTestTrait;
 | 
				
			||||||
| 
						 | 
					@ -26,7 +26,7 @@ class MigrateTaxonomyTermStubTest extends MigrateDrupalTestBase {
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * {@inheritdoc}
 | 
					   * {@inheritdoc}
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public static $modules = ['taxonomy', 'text'];
 | 
					  public static $modules = ['taxonomy', 'text', 'taxonomy_term_stub_test'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * {@inheritdoc}
 | 
					   * {@inheritdoc}
 | 
				
			||||||
| 
						 | 
					@ -56,8 +56,7 @@ class MigrateTaxonomyTermStubTest extends MigrateDrupalTestBase {
 | 
				
			||||||
      ['id' => '1', 'name' => 'tags'],
 | 
					      ['id' => '1', 'name' => 'tags'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
    $ids = ['id' => ['type' => 'integer']];
 | 
					    $ids = ['id' => ['type' => 'integer']];
 | 
				
			||||||
    $config = [
 | 
					    $definition = [
 | 
				
			||||||
      'id' => 'vocabularies',
 | 
					 | 
				
			||||||
      'migration_tags' => ['Stub test'],
 | 
					      'migration_tags' => ['Stub test'],
 | 
				
			||||||
      'source' => [
 | 
					      'source' => [
 | 
				
			||||||
        'plugin' => 'embedded_data',
 | 
					        'plugin' => 'embedded_data',
 | 
				
			||||||
| 
						 | 
					@ -70,42 +69,13 @@ class MigrateTaxonomyTermStubTest extends MigrateDrupalTestBase {
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
      'destination' => ['plugin' => 'entity:taxonomy_vocabulary'],
 | 
					      'destination' => ['plugin' => 'entity:taxonomy_vocabulary'],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
    $vocabulary_migration = Migration::create($config);
 | 
					    $vocabulary_migration = new Migration([], uniqid(), $definition);
 | 
				
			||||||
    $vocabulary_executable = new MigrateExecutable($vocabulary_migration, $this);
 | 
					    $vocabulary_executable = new MigrateExecutable($vocabulary_migration, $this);
 | 
				
			||||||
    $vocabulary_executable->import();
 | 
					    $vocabulary_executable->import();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // We have a term referencing an unmigrated parent, forcing a stub to be
 | 
					    // We have a term referencing an unmigrated parent, forcing a stub to be
 | 
				
			||||||
    // created.
 | 
					    // created.
 | 
				
			||||||
    $term_data_rows = [
 | 
					    $term_executable = new MigrateExecutable($this->getMigration('taxonomy_term_stub_test'), $this);
 | 
				
			||||||
      ['id' => '1', 'vocab' => '1', 'name' => 'music', 'parent' => '2'],
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
    $ids = ['id' => ['type' => 'integer']];
 | 
					 | 
				
			||||||
    $config = [
 | 
					 | 
				
			||||||
      'id' => 'terms',
 | 
					 | 
				
			||||||
      'migration_tags' => ['Import and rollback test'],
 | 
					 | 
				
			||||||
      'source' => [
 | 
					 | 
				
			||||||
        'plugin' => 'embedded_data',
 | 
					 | 
				
			||||||
        'data_rows' => $term_data_rows,
 | 
					 | 
				
			||||||
        'ids' => $ids,
 | 
					 | 
				
			||||||
      ],
 | 
					 | 
				
			||||||
      'process' => [
 | 
					 | 
				
			||||||
        'tid' => 'id',
 | 
					 | 
				
			||||||
        'vid' => 'vocab',
 | 
					 | 
				
			||||||
        'name' => 'name',
 | 
					 | 
				
			||||||
        'weight' => 'weight',
 | 
					 | 
				
			||||||
        'parent' => [
 | 
					 | 
				
			||||||
          'plugin' => 'migration',
 | 
					 | 
				
			||||||
          'migration' => 'terms',
 | 
					 | 
				
			||||||
          'source' => 'parent',
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
      ],
 | 
					 | 
				
			||||||
      'destination' => ['plugin' => 'entity:taxonomy_term'],
 | 
					 | 
				
			||||||
      'migration_dependencies' => ['required' => ['vocabularies']],
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $term_migration = Migration::create($config);
 | 
					 | 
				
			||||||
    $term_migration->save();
 | 
					 | 
				
			||||||
    $term_executable = new MigrateExecutable($term_migration, $this);
 | 
					 | 
				
			||||||
    $term_executable->import();
 | 
					    $term_executable->import();
 | 
				
			||||||
    // Load the referenced term, which should exist as a stub.
 | 
					    // Load the referenced term, which should exist as a stub.
 | 
				
			||||||
    /** @var \Drupal\Core\Entity\ContentEntityBase $stub_entity */
 | 
					    /** @var \Drupal\Core\Entity\ContentEntityBase $stub_entity */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\taxonomy\Tests\Migrate\d6;
 | 
					namespace Drupal\taxonomy\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\taxonomy\Entity\Vocabulary;
 | 
					use Drupal\taxonomy\Entity\Vocabulary;
 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,7 +37,7 @@ class MigrateTaxonomyVocabularyTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
    for ($i = 0; $i < 3; $i++) {
 | 
					    for ($i = 0; $i < 3; $i++) {
 | 
				
			||||||
      $j = $i + 1;
 | 
					      $j = $i + 1;
 | 
				
			||||||
      $vocabulary = Vocabulary::load("vocabulary_{$j}_i_{$i}_");
 | 
					      $vocabulary = Vocabulary::load("vocabulary_{$j}_i_{$i}_");
 | 
				
			||||||
      $this->assertIdentical(Migration::load('d6_taxonomy_vocabulary')->getIdMap()->lookupDestinationID(array($j)), array($vocabulary->id()));
 | 
					      $this->assertIdentical($this->getMigration('d6_taxonomy_vocabulary')->getIdMap()->lookupDestinationID(array($j)), array($vocabulary->id()));
 | 
				
			||||||
      $this->assertIdentical("vocabulary $j (i=$i)", $vocabulary->label());
 | 
					      $this->assertIdentical("vocabulary $j (i=$i)", $vocabulary->label());
 | 
				
			||||||
      $this->assertIdentical("description of vocabulary $j (i=$i)", $vocabulary->getDescription());
 | 
					      $this->assertIdentical("description of vocabulary $j (i=$i)", $vocabulary->getDescription());
 | 
				
			||||||
      $this->assertIdentical($i, $vocabulary->getHierarchy());
 | 
					      $this->assertIdentical($i, $vocabulary->getHierarchy());
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@ class MigrateTermNodeRevisionTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
    $this->installSchema('node', ['node_access']);
 | 
					    $this->installSchema('node', ['node_access']);
 | 
				
			||||||
    $this->migrateContent(TRUE);
 | 
					    $this->migrateContent(TRUE);
 | 
				
			||||||
    $this->migrateTaxonomy();
 | 
					    $this->migrateTaxonomy();
 | 
				
			||||||
    $this->executeMigrations(['d6_term_node:*', 'd6_term_node_revision:*']);
 | 
					    $this->executeMigrations(['d6_term_node', 'd6_term_node_revision']);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,9 +7,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Drupal\taxonomy\Tests\Migrate\d6;
 | 
					namespace Drupal\taxonomy\Tests\Migrate\d6;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Drupal\migrate\Entity\Migration;
 | 
					 | 
				
			||||||
use Drupal\migrate\Plugin\MigrateIdMapInterface;
 | 
					 | 
				
			||||||
use Drupal\migrate\Row;
 | 
					 | 
				
			||||||
use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
					use Drupal\migrate_drupal\Tests\d6\MigrateDrupal6TestBase;
 | 
				
			||||||
use Drupal\node\Entity\Node;
 | 
					use Drupal\node\Entity\Node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,7 +36,8 @@ class MigrateTermNodeTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
   * Tests the Drupal 6 term-node association to Drupal 8 migration.
 | 
					   * Tests the Drupal 6 term-node association to Drupal 8 migration.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  public function testTermNode() {
 | 
					  public function testTermNode() {
 | 
				
			||||||
    $this->executeMigrations(['d6_term_node:*']);
 | 
					    // This is a base plugin id and we want to run all derivatives.
 | 
				
			||||||
 | 
					    $this->executeMigrations(['d6_term_node']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $this->container->get('entity.manager')
 | 
					    $this->container->get('entity.manager')
 | 
				
			||||||
      ->getStorage('node')
 | 
					      ->getStorage('node')
 | 
				
			||||||
| 
						 | 
					@ -62,11 +60,11 @@ class MigrateTermNodeTest extends MigrateDrupal6TestBase {
 | 
				
			||||||
  public function testSkipNonExistentNode() {
 | 
					  public function testSkipNonExistentNode() {
 | 
				
			||||||
    // Node 2 is migrated by d6_node__story, but we need to pretend that it
 | 
					    // Node 2 is migrated by d6_node__story, but we need to pretend that it
 | 
				
			||||||
    // failed, so record that in the map table.
 | 
					    // failed, so record that in the map table.
 | 
				
			||||||
    $this->mockFailure('d6_node__story', ['nid' => 2]);
 | 
					    $this->mockFailure('d6_node:story', ['nid' => 2]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // d6_term_node__2 should skip over node 2 (a.k.a. revision 3) because,
 | 
					    // d6_term_node__2 should skip over node 2 (a.k.a. revision 3) because,
 | 
				
			||||||
    // according to the map table, it failed.
 | 
					    // according to the map table, it failed.
 | 
				
			||||||
    $migration = Migration::load('d6_term_node__2');
 | 
					    $migration = $this->getMigration('d6_term_node:2');
 | 
				
			||||||
    $this->executeMigration($migration);
 | 
					    $this->executeMigration($migration);
 | 
				
			||||||
    $this->assertNull($migration->getIdMap()->lookupDestinationId(['vid' => 3])[0]);
 | 
					    $this->assertNull($migration->getIdMap()->lookupDestinationId(['vid' => 3])[0]);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue