You are here

migrate_tools.module in Migrate Tools 8.4

Provides tools for implementing and managing migrations.

File

migrate_tools.module
View source
<?php

/**
 * @file
 * Provides tools for implementing and managing migrations.
 */

/**
 * Implements hook_entity_type_build().
 */
function migrate_tools_entity_type_build(array &$entity_types) {

  // Inject our UI into the general migration and migration group config
  // entities.

  /** @var \Drupal\Core\Config\Entity\ConfigEntityType[] $entity_types */
  $entity_types['migration']
    ->set('admin_permission', 'administer migrations')
    ->setHandlerClass('list_builder', 'Drupal\\migrate_tools\\Controller\\MigrationListBuilder')
    ->setFormClass('edit', 'Drupal\\migrate_tools\\Form\\MigrationEditForm')
    ->setFormClass('delete', 'Drupal\\migrate_tools\\Form\\MigrationDeleteForm')
    ->setLinkTemplate('list-form', '/admin/structure/migrate/manage/{migration_group}/migrations');
  $entity_types['migration_group']
    ->set('admin_permission', 'administer migrations')
    ->setHandlerClass('list_builder', 'Drupal\\migrate_tools\\Controller\\MigrationGroupListBuilder')
    ->setFormClass('add', 'Drupal\\migrate_tools\\Form\\MigrationGroupAddForm')
    ->setFormClass('edit', 'Drupal\\migrate_tools\\Form\\MigrationGroupEditForm')
    ->setFormClass('delete', 'Drupal\\migrate_tools\\Form\\MigrationGroupDeleteForm')
    ->setLinkTemplate('edit-form', '/admin/structure/migrate/manage/{migration_group}')
    ->setLinkTemplate('delete-form', '/admin/structure/migrate/manage/{migration_group}/delete');
}

/**
 * Implements hook_migration_plugins_alter().
 */
function migrate_tools_migration_plugins_alter(array &$migrations) {

  /** @var \Drupal\Core\TempStore\PrivateTempStoreFactory $store */
  $tempStoreFactory = \Drupal::service('tempstore.private');
  $store = $tempStoreFactory
    ->get('migrate_tools');

  // TODO: remove work-around after
  // https://www.drupal.org/project/drupal/issues/2860341 is fixed.
  if (!\Drupal::request()
    ->hasSession()) {
    $session = \Drupal::service('session');
    \Drupal::request()
      ->setSession($session);
    $session
      ->start();
  }

  // Get the list of changed migrations.
  $migrationsChanged = $store
    ->get('migrations_changed');
  if (isset($store) && is_array($migrationsChanged)) {

    // Alter the source column names for each changed migration.
    foreach ($migrationsChanged as $id) {
      $data = $store
        ->get($id);
      if (isset($data['changed'])) {
        $migrations[$id]['source']['column_names'] = $data['changed'];
      }
    }
  }
}