function Vocabulary::postDelete

Same name and namespace 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. 11.x core/modules/taxonomy/src/Entity/Vocabulary.php \Drupal\taxonomy\Entity\Vocabulary::postDelete()

Overrides ConfigEntityBundleBase::postDelete

File

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

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.