You are here

protected function FieldDiscovery::getSourcePlugin in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/migrate_drupal/src/FieldDiscovery.php \Drupal\migrate_drupal\FieldDiscovery::getSourcePlugin()

Gets the source plugin to use to gather field information.

Parameters

string $core: The Drupal core version.

Return value

array|\Drupal\migrate\Plugin\MigrateSourceInterface The source plugin, or an empty array if none can be found that meets requirements.

2 calls to FieldDiscovery::getSourcePlugin()
FieldDiscovery::getAllFields in core/modules/migrate_drupal/src/FieldDiscovery.php
Gets all field information related to this migration.
FieldDiscoveryTestClass::getSourcePlugin in core/modules/migrate_drupal/tests/modules/field_discovery_test/src/FieldDiscoveryTestClass.php
Gets the source plugin to use to gather field information.
1 method overrides FieldDiscovery::getSourcePlugin()
FieldDiscoveryTestClass::getSourcePlugin in core/modules/migrate_drupal/tests/modules/field_discovery_test/src/FieldDiscoveryTestClass.php
Gets the source plugin to use to gather field information.

File

core/modules/migrate_drupal/src/FieldDiscovery.php, line 319

Class

FieldDiscovery
Provides field discovery for Drupal 6 & 7 migrations.

Namespace

Drupal\migrate_drupal

Code

protected function getSourcePlugin($core) {
  $definition = $this
    ->getFieldInstanceStubMigrationDefinition($core);
  $source_plugin = $this->migrationPluginManager
    ->createStubMigration($definition)
    ->getSourcePlugin();
  if ($source_plugin instanceof RequirementsInterface) {
    try {
      $source_plugin
        ->checkRequirements();
    } catch (RequirementsException $e) {

      // If checkRequirements() failed, the source database did not support
      // fields (i.e., CCK is not installed in D6 or Field is not installed in
      // D7). Therefore, $fields will be empty and below we'll return an empty
      // array. The migration will proceed without adding fields.
      $this->logger
        ->notice('Field discovery failed for Drupal core version @core. Did this site have the CCK or Field module installed? Error: @message', [
        '@core' => $core,
        '@message' => $e
          ->getMessage(),
      ]);
      return [];
    }
  }
  return $source_plugin;
}