You are here

function upgrade_rector_upgrade_status_result_alter in Upgrade Rector 8

Implements hook_upgrade_status_result_alter().

File

./upgrade_rector.module, line 107

Code

function upgrade_rector_upgrade_status_result_alter(&$build, Extension $extension, $group_key) {
  if ($group_key == 'rector') {
    $rector_results = \Drupal::service('keyvalue')
      ->get('upgrade_status_rector_results');
    $rector_processor = \Drupal::service('upgrade_rector.rector_processor');
    $raw_rector_result = $rector_results
      ->get($extension
      ->getName());
    if (empty($raw_rector_result)) {

      // Patch generation did not run yet, don't change anything here.
      return;
    }
    else {
      $processed_result = $rector_processor
        ->processResults($raw_rector_result, $extension);
      if ($processed_result['state'] === 'success' && empty($processed_result['patch'])) {
        $class = 'upgrade-status-ok-label';
        $label = t('Nothing to patch');
      }
      elseif ($processed_result['state'] === 'fail') {
        $class = 'upgrade-status-error-label';
        $label = t('Patch error');
      }
      else {
        $class = 'upgrade-status-ok-label';
        $label = t('Patch available');
      }
    }
    $url = Url::fromRoute('upgrade_rector.result', [
      'type' => $extension
        ->getType(),
      'project_machine_name' => $extension
        ->getName(),
    ]);
    $rector_info = [
      'rector_info' => [
        '#type' => 'link',
        '#prefix' => '<div class="upgrade-status-space">',
        '#suffix' => '</div>',
        '#title' => $label,
        '#url' => $url,
        '#attributes' => [
          'class' => [
            'use-ajax',
            $class,
          ],
          'data-dialog-type' => 'modal',
          'data-dialog-options' => Json::encode([
            'width' => 1024,
            'height' => 568,
          ]),
        ],
      ],
    ];
    $build['description'] = $rector_info;
  }
}