function ProfileValues::getProcess

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

Overrides Migration::getProcess

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();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.