You are here

public function ProfileValues::getProcess in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/user/src/Plugin/migrate/ProfileValues.php \Drupal\user\Plugin\migrate\ProfileValues::getProcess()

Get the normalized process pipeline configuration describing the process plugins.

The process configuration is always normalized. All shorthand processing will be expanded into their full representations.

Return value

array The normalized configuration describing the process plugins.

Overrides Migration::getProcess

See also

https://www.drupal.org/node/2129651#get-shorthand

File

core/modules/user/src/Plugin/migrate/ProfileValues.php, line 24

Class

ProfileValues
Plugin class for user migrations dealing with profile values.

Namespace

Drupal\user\Plugin\migrate

Code

public function getProcess() {
  if (!$this->init) {
    $this->init = TRUE;
    $definition['source'] = [
      'plugin' => 'profile_field',
      'ignore_map' => TRUE,
    ] + $this->source;
    $definition['destination']['plugin'] = 'null';
    $definition['idMap']['plugin'] = 'null';
    try {
      $this
        ->checkRequirements();
      $profile_field_migration = $this->migrationPluginManager
        ->createStubMigration($definition);
      $migrate_executable = new MigrateExecutable($profile_field_migration);
      $source_plugin = $profile_field_migration
        ->getSourcePlugin();
      $source_plugin
        ->checkRequirements();
      foreach ($source_plugin as $row) {
        $name = $row
          ->getSourceProperty('name');
        $fid = $row
          ->getSourceProperty('fid');

        // The user profile field name can be greater than 32 characters. Use
        // the migrated profile field name in the process pipeline.
        $configuration = [
          'migration' => 'user_profile_field',
          'source_ids' => $fid,
          'no_stub' => TRUE,
        ];
        $plugin = $this->processPluginManager
          ->createInstance('migration_lookup', $configuration, $profile_field_migration);
        $new_value = $plugin
          ->transform($fid, $migrate_executable, $row, 'tmp');
        if (isset($new_value[1])) {

          // Set the destination to the migrated profile field name.
          $this->process[$new_value[1]] = $name;
        }
      }
    } catch (RequirementsException $e) {

      // The checkRequirements() call will fail when the profile module does
      // not exist on the source site, or if the required migrations have not
      // yet run.
    }
  }
  return parent::getProcess();
}