function ConfigDependencyDeleteFormTrait::addDependencyListsToForm

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Config/Entity/ConfigDependencyDeleteFormTrait.php \Drupal\Core\Config\Entity\ConfigDependencyDeleteFormTrait::addDependencyListsToForm()
  2. 8.9.x core/lib/Drupal/Core/Config/Entity/ConfigDependencyDeleteFormTrait.php \Drupal\Core\Config\Entity\ConfigDependencyDeleteFormTrait::addDependencyListsToForm()
  3. 10 core/lib/Drupal/Core/Config/Entity/ConfigDependencyDeleteFormTrait.php \Drupal\Core\Config\Entity\ConfigDependencyDeleteFormTrait::addDependencyListsToForm()

Adds form elements to list affected configuration entities.

Parameters

array $form: The form array to add elements to.

string $type: The type of dependency being checked. Either 'module', 'theme', 'config' or 'content'.

array $names: The specific names to check. If $type equals 'module' or 'theme' then it should be a list of module names or theme names. In the case of 'config' or 'content' it should be a list of configuration dependency names.

\Drupal\Core\Config\ConfigManagerInterface $config_manager: The config manager.

\Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager: The entity type manager.

See also

\Drupal\Core\Config\ConfigManagerInterface::getConfigEntitiesToChangeOnDependencyRemoval()

2 calls to ConfigDependencyDeleteFormTrait::addDependencyListsToForm()
EntityDeleteForm::buildForm in core/lib/Drupal/Core/Entity/EntityDeleteForm.php
Form constructor.
ModulesUninstallConfirmForm::buildForm in core/modules/system/src/Form/ModulesUninstallConfirmForm.php
Form constructor.

File

core/lib/Drupal/Core/Config/Entity/ConfigDependencyDeleteFormTrait.php, line 41

Class

ConfigDependencyDeleteFormTrait
Lists affected configuration entities by a dependency removal.

Namespace

Drupal\Core\Config\Entity

Code

protected function addDependencyListsToForm(array &$form, $type, array $names, ConfigManagerInterface $config_manager, EntityTypeManagerInterface $entity_type_manager) {
    // Get the dependent entities.
    $dependent_entities = $config_manager->getConfigEntitiesToChangeOnDependencyRemoval($type, $names);
    $entity_types = [];
    $form['entity_updates'] = [
        '#type' => 'details',
        '#title' => $this->t('Configuration updates'),
        '#description' => $this->t('The listed configuration will be updated.'),
        '#open' => TRUE,
        '#access' => FALSE,
    ];
    foreach ($dependent_entities['update'] as $entity) {
        
        /** @var \Drupal\Core\Config\Entity\ConfigEntityInterface  $entity */
        $entity_type_id = $entity->getEntityTypeId();
        if (!isset($form['entity_updates'][$entity_type_id])) {
            $entity_type = $entity_type_manager->getDefinition($entity_type_id);
            // Store the ID and label to sort the entity types and entities later.
            $label = $entity_type->getLabel();
            $entity_types[$entity_type_id] = $label;
            $form['entity_updates'][$entity_type_id] = [
                '#theme' => 'item_list',
                '#title' => $label,
                '#items' => [],
            ];
        }
        $form['entity_updates'][$entity_type_id]['#items'][$entity->id()] = $entity->label() ?: $entity->id();
    }
    if (!empty($dependent_entities['update'])) {
        $form['entity_updates']['#access'] = TRUE;
        // Add a weight key to the entity type sections.
        asort($entity_types, SORT_FLAG_CASE);
        $weight = 0;
        foreach ($entity_types as $entity_type_id => $label) {
            $form['entity_updates'][$entity_type_id]['#weight'] = $weight;
            // Sort the list of entity labels alphabetically.
            ksort($form['entity_updates'][$entity_type_id]['#items'], SORT_FLAG_CASE);
            $weight++;
        }
    }
    $form['entity_deletes'] = [
        '#type' => 'details',
        '#title' => $this->t('Configuration deletions'),
        '#description' => $this->t('The listed configuration will be deleted.'),
        '#open' => TRUE,
        '#access' => FALSE,
    ];
    foreach ($dependent_entities['delete'] as $entity) {
        $entity_type_id = $entity->getEntityTypeId();
        if (!isset($form['entity_deletes'][$entity_type_id])) {
            $entity_type = $entity_type_manager->getDefinition($entity_type_id);
            // Store the ID and label to sort the entity types and entities later.
            $label = $entity_type->getLabel();
            $entity_types[$entity_type_id] = $label;
            $form['entity_deletes'][$entity_type_id] = [
                '#theme' => 'item_list',
                '#title' => $label,
                '#items' => [],
            ];
        }
        $form['entity_deletes'][$entity_type_id]['#items'][$entity->id()] = $entity->label() ?: $entity->id();
    }
    if (!empty($dependent_entities['delete'])) {
        $form['entity_deletes']['#access'] = TRUE;
        // Add a weight key to the entity type sections.
        asort($entity_types, SORT_FLAG_CASE);
        $weight = 0;
        foreach ($entity_types as $entity_type_id => $label) {
            if (isset($form['entity_deletes'][$entity_type_id])) {
                $form['entity_deletes'][$entity_type_id]['#weight'] = $weight;
                // Sort the list of entity labels alphabetically.
                ksort($form['entity_deletes'][$entity_type_id]['#items'], SORT_FLAG_CASE);
                $weight++;
            }
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.