You are here

public function ReviewForm::buildForm in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/migrate_drupal_ui/src/Form/ReviewForm.php \Drupal\migrate_drupal_ui\Form\ReviewForm::buildForm()

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides MigrateUpgradeFormBase::buildForm

File

core/modules/migrate_drupal_ui/src/Form/ReviewForm.php, line 89

Class

ReviewForm
Migrate Upgrade review form.

Namespace

Drupal\migrate_drupal_ui\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {

  // Get all the data needed for this form.
  $version = $this->store
    ->get('version');
  $this->migrations = $this->store
    ->get('migrations');

  // Fetch the source system data at the first opportunity.
  $system_data = $this->store
    ->get('system_data');

  // If data is missing or this is the wrong step, start over.
  if (!$version || !$this->migrations || !$system_data || $this->store
    ->get('step') != 'review') {
    return $this
      ->restartUpgradeForm();
  }
  $form = parent::buildForm($form, $form_state);
  $form['#title'] = $this
    ->t('What will be upgraded?');
  $migrations = $this->migrationPluginManager
    ->createInstances(array_keys($this->store
    ->get('migrations')));

  // Get the upgrade states for the source modules.
  $display = $this->migrationState
    ->getUpgradeStates($version, $system_data, $migrations);

  // Missing migrations.
  $missing_module_list = [
    '#type' => 'details',
    '#open' => TRUE,
    '#title' => $this
      ->t('Modules that will not be upgraded'),
    '#summary_attributes' => [
      'id' => [
        'error',
      ],
    ],
    '#description' => $this
      ->t("The new site is missing modules corresponding to the old site's modules. Unless they are installed prior to the upgrade, configuration and/or content needed by them will not be available on your new site. <a href=':review'>Read the checklist</a> to help decide what to do.", [
      ':review' => 'https://www.drupal.org/docs/8/upgrade/upgrade-using-web-browser#pre-upgrade-analysis',
    ]),
    '#weight' => 2,
  ];
  $missing_module_list['module_list'] = [
    '#type' => 'table',
    '#header' => [
      $this
        ->t('Drupal @version', [
        '@version' => $version,
      ]),
      $this
        ->t('Drupal @version', [
        '@version' => $this->destinationSiteVersion,
      ]),
    ],
  ];
  $missing_count = 0;
  if (isset($display[MigrationState::NOT_FINISHED])) {
    foreach ($display[MigrationState::NOT_FINISHED] as $source_module => $destination_modules) {
      $missing_count++;

      // Get the migration status for this $source_module, if a module of the
      // same name exists on the destination site.
      $missing_module_list['module_list'][] = [
        'source_module' => [
          '#type' => 'html_tag',
          '#tag' => 'span',
          '#value' => $source_module,
          '#attributes' => [
            'class' => [
              'upgrade-analysis-report__status-icon',
              'upgrade-analysis-report__status-icon--error',
            ],
          ],
        ],
        'destination_module' => [
          '#plain_text' => $destination_modules,
        ],
      ];
    }
  }

  // Available migrations.
  $available_module_list = [
    '#type' => 'details',
    '#title' => $this
      ->t('Modules that will be upgraded'),
    '#summary_attributes' => [
      'id' => [
        'checked',
      ],
    ],
    '#weight' => 4,
  ];
  $available_module_list['module_list'] = [
    '#type' => 'table',
    '#header' => [
      $this
        ->t('Drupal @version', [
        '@version' => $version,
      ]),
      $this
        ->t('Drupal @version', [
        '@version' => $this->destinationSiteVersion,
      ]),
    ],
  ];
  $available_count = 0;
  if (isset($display[MigrationState::FINISHED])) {
    foreach ($display[MigrationState::FINISHED] as $source_module => $destination_modules) {
      $available_count++;
      $available_module_list['module_list'][] = [
        'source_module' => [
          '#type' => 'html_tag',
          '#tag' => 'span',
          '#value' => $source_module,
          '#attributes' => [
            'class' => [
              'upgrade-analysis-report__status-icon',
              'upgrade-analysis-report__status-icon--checked',
            ],
          ],
        ],
        'destination_module' => [
          '#plain_text' => $destination_modules,
        ],
      ];
    }
  }
  $counters = [];
  $general_info = [];
  if ($missing_count) {
    $counters[] = [
      '#theme' => 'status_report_counter',
      '#amount' => $missing_count,
      '#text' => $this
        ->formatPlural($missing_count, 'Module will not be upgraded', 'Modules will not be upgraded'),
      '#severity' => 'error',
      '#weight' => 0,
    ];
    $general_info[] = $missing_module_list;
  }
  if ($available_count) {
    $counters[] = [
      '#theme' => 'status_report_counter',
      '#amount' => $available_count,
      '#text' => $this
        ->formatPlural($available_count, 'Module will be upgraded', 'Modules will be upgraded'),
      '#severity' => 'checked',
      '#weight' => 1,
    ];
    $general_info[] = $available_module_list;
  }
  $form['status_report_page'] = [
    '#theme' => 'status_report_page',
    '#counters' => $counters,
    '#general_info' => $general_info,
  ];
  $form['#attached']['library'][] = 'migrate_drupal_ui/base';
  return $form;
}