You are here

function config_split_form_config_admin_import_form_alter in Configuration Split 2.0.x

Same name and namespace in other branches
  1. 8 config_split.module \config_split_form_config_admin_import_form_alter()

Implements hook_form_FORM_ID_alter().

File

./config_split.module, line 15
Configuration split module functions.

Code

function config_split_form_config_admin_import_form_alter(&$form, FormStateInterface $form_state) {
  $enabled = [];
  $used_config_split_text = t('You are not using any config split configuration');
  $config_split_entities = \Drupal::entityTypeManager()
    ->getStorage('config_split')
    ->loadMultiple();

  /** @var \Drupal\config_split\Entity\ConfigSplitEntityInterface $entity */
  foreach ($config_split_entities as $entity) {
    if ($entity
      ->status()) {
      $enabled[] = Link::fromTextAndUrl($entity
        ->label(), $entity
        ->toUrl())
        ->toString();

      // Read the configuration and check differences in important fields.
      $config_name = $entity
        ->getConfigDependencyName();
      $active = \Drupal::getContainer()
        ->get('config.storage')
        ->read($config_name);
      $staged = \Drupal::getContainer()
        ->get('config.storage.sync')
        ->read($config_name);
      $fields = [
        'status',
        'weight',
        'folder',
      ];
      $warnings = array_sum(array_map(function ($filed) use ($active, $staged) {
        return $active[$filed] != $staged[$filed];
      }, $fields));
      if ($warnings) {
        \Drupal::messenger()
          ->addWarning(t('The configuration for @split has changed, consider a single import for it first.', [
          '@split' => $entity
            ->label(),
        ]));
      }
    }
  }
  if (!empty($enabled)) {
    $used_config_split_text = t('Used config split configuration:') . ' ' . implode(', ', $enabled);
  }
  $form['config_split']['#weight'] = -10;
  $form['config_split']['#markup'] = '<p>' . $used_config_split_text . '</p>';
}