migrationConfigEntityPluginManager = $migration_config_entity_plugin_manager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('plugin.manager.config_entity_migration') ); } /** * Displays an overview of a migration entity. * * @param string $migration_group * Machine name of the migration's group. * @param string $migration * Machine name of the migration. * * @return array * A render array as expected by drupal_render(). */ public function overview($migration_group, $migration) { /** @var MigrationInterface $migration */ $migration = $this->migrationConfigEntityPluginManager->createInstance($migration); $build['overview'] = [ '#type' => 'fieldset', '#title' => $this->t('Overview'), ]; $build['overview']['group'] = [ '#title' => $this->t('Group:'), '#markup' => Xss::filterAdmin($migration_group), '#type' => 'item', ]; $build['overview']['description'] = [ '#title' => $this->t('Description:'), '#markup' => Xss::filterAdmin($migration->label()), '#type' => 'item', ]; $migration_dependencies = $migration->getMigrationDependencies(); if (!empty($migration_dependencies['required'])) { $build['overview']['dependencies'] = [ '#title' => $this->t('Migration Dependencies') , '#markup' => Xss::filterAdmin(implode(', ', $migration_dependencies['required'])), '#type' => 'item', ]; } if (!empty($migration_dependencies['optional'])) { $build['overview']['soft_dependencies'] = [ '#title' => $this->t('Soft Migration Dependencies'), '#markup' => Xss::filterAdmin(implode(', ', $migration_dependencies['optional'])), '#type' => 'item', ]; } return $build; } /** * Display source information of a migration entity. * * @param string $migration_group * Machine name of the migration's group. * @param string $migration * Machine name of the migration. * * @return array * A render array as expected by drupal_render(). */ public function source($migration_group, $migration) { /** @var MigrationInterface $migration */ $migration = $this->migrationConfigEntityPluginManager->createInstance($migration); // Source field information. $build['source'] = [ '#type' => 'fieldset', '#title' => $this->t('Source'), '#group' => 'detail', '#description' => $this->t('

These are the fields available from the source of this migration task. The machine names listed here may be used as sources in the process pipeline.

'), '#attributes' => [ 'id' => 'migration-detail-source', ], ]; $source = $migration->getSourcePlugin(); $build['source']['query'] = [ '#type' => 'item', '#title' => $this->t('Query'), '#markup' => '
' . Xss::filterAdmin($source) . '
', ]; $header = [$this->t('Machine name'), $this->t('Description')]; $rows = []; foreach ($source->fields($migration) as $machine_name => $description) { $rows[] = [ ['data' => Html::escape($machine_name)], ['data' => Xss::filterAdmin($description)], ]; } $build['source']['fields'] = [ '#theme' => 'table', '#header' => $header, '#rows' => $rows, '#empty' => $this->t('No fields'), ]; return $build; } /** * Display process information of a migration entity. * * @param string $migration_group * Machine name of the migration's group. * @param string $migration * Machine name of the migration. * * @return array * A render array as expected by drupal_render(). */ public function process($migration_group, $migration) { /** @var MigrationInterface $migration */ $migration = $this->migrationConfigEntityPluginManager->createInstance($migration); // Process information. $build['process'] = [ '#type' => 'fieldset', '#title' => $this->t('Process'), ]; $header = [ $this->t('Destination'), $this->t('Source'), $this->t('Process plugin'), $this->t('Default'), ]; $rows = []; foreach ($migration->getProcess() as $destination_id => $process_line) { $row = []; $row[] = ['data' => Html::escape($destination_id)]; if (isset($process_line[0]['source'])) { $row[] = ['data' => Xss::filterAdmin($process_line[0]['source'])]; } else { $row[] = ''; } if (isset($process_line[0]['plugin'])) { $row[] = ['data' => Xss::filterAdmin($process_line[0]['plugin'])]; } else { $row[] = ''; } if (isset($process_line[0]['default_value'])) { $row[] = ['data' => Xss::filterAdmin($process_line[0]['default_value'])]; } else { $row[] = ''; } $rows[] = $row; } $build['process']['fields'] = [ '#theme' => 'table', '#header' => $header, '#rows' => $rows, '#empty' => $this->t('No process defined.'), ]; return $build; } /** * Displays destination information of a migration entity. * * @param string $migration_group * Machine name of the migration's group. * @param string $migration * Machine name of the migration. * * @return array * A render array as expected by drupal_render(). */ public function destination($migration_group, $migration) { /** @var MigrationInterface $migration */ $migration = $this->migrationConfigEntityPluginManager->createInstance($migration); // Destination field information. $build['destination'] = [ '#type' => 'fieldset', '#title' => $this->t('Destination'), '#group' => 'detail', '#description' => $this->t('

These are the fields available in the destination plugin of this migration task. The machine names are those available to be used as the keys in the process pipeline.

'), '#attributes' => [ 'id' => 'migration-detail-destination', ], ]; $destination = $migration->getDestinationPlugin(); $build['destination']['type'] = [ '#type' => 'item', '#title' => $this->t('Type'), '#markup' => Xss::filterAdmin($destination->getPluginId()), ]; $header = [$this->t('Machine name'), $this->t('Description')]; $rows = []; $destination_fields = $destination->fields() ?: []; foreach ($destination_fields as $machine_name => $description) { $rows[] = [ ['data' => Html::escape($machine_name)], ['data' => Xss::filterAdmin($description)], ]; } $build['destination']['fields'] = [ '#theme' => 'table', '#header' => $header, '#rows' => $rows, '#empty' => $this->t('No fields'), ]; return $build; } }