function Vocabulary::postDelete

Same name in other branches
  1. 9 core/modules/taxonomy/src/Entity/Vocabulary.php \Drupal\taxonomy\Entity\Vocabulary::postDelete()
  2. 8.9.x core/modules/taxonomy/src/Entity/Vocabulary.php \Drupal\taxonomy\Entity\Vocabulary::postDelete()
  3. 10 core/modules/taxonomy/src/Entity/Vocabulary.php \Drupal\taxonomy\Entity\Vocabulary::postDelete()

Overrides ConfigEntityBundleBase::postDelete

File

core/modules/taxonomy/src/Entity/Vocabulary.php, line 140

Class

Vocabulary
Defines the taxonomy vocabulary entity.

Namespace

Drupal\taxonomy\Entity

Code

public static function postDelete(EntityStorageInterface $storage, array $entities) {
    parent::postDelete($storage, $entities);
    // Reset caches.
    $storage->resetCache(array_keys($entities));
    if (reset($entities)->isSyncing()) {
        return;
    }
    $vocabularies = [];
    foreach ($entities as $vocabulary) {
        $vocabularies[$vocabulary->id()] = $vocabulary->id();
    }
    // Load all Taxonomy module fields and delete those which use only this
    // vocabulary.
    $field_storages = \Drupal::entityTypeManager()->getStorage('field_storage_config')
        ->loadByProperties([
        'module' => 'taxonomy',
    ]);
    foreach ($field_storages as $field_storage) {
        $modified_storage = FALSE;
        // Term reference fields may reference terms from more than one
        // vocabulary.
        foreach ($field_storage->getSetting('allowed_values') as $key => $allowed_value) {
            if (isset($vocabularies[$allowed_value['vocabulary']])) {
                $allowed_values = $field_storage->getSetting('allowed_values');
                unset($allowed_values[$key]);
                $field_storage->setSetting('allowed_values', $allowed_values);
                $modified_storage = TRUE;
            }
        }
        if ($modified_storage) {
            $allowed_values = $field_storage->getSetting('allowed_values');
            if (empty($allowed_values)) {
                $field_storage->delete();
            }
            else {
                // Update the field definition with the new allowed values.
                $field_storage->save();
            }
        }
    }
}

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