Overrides Drupal\Core\Config\Entity\ConfigStorageController::postDelete().
Overrides ConfigStorageController::postDelete
protected function postDelete($entities) {
parent::postDelete($entities);
$vocabularies = array();
foreach ($entities as $vocabulary) {
$vocabularies[$vocabulary
->id()] = $vocabulary
->id();
}
// Load all Taxonomy module fields and delete those which use only this
// vocabulary.
$taxonomy_fields = field_read_fields(array(
'module' => 'taxonomy',
));
foreach ($taxonomy_fields as $field_name => $taxonomy_field) {
$modified_field = FALSE;
// Term reference fields may reference terms from more than one
// vocabulary.
foreach ($taxonomy_field['settings']['allowed_values'] as $key => $allowed_value) {
if (isset($vocabularies[$allowed_value['vocabulary']])) {
unset($taxonomy_field['settings']['allowed_values'][$key]);
$modified_field = TRUE;
}
}
if ($modified_field) {
if (empty($taxonomy_field['settings']['allowed_values'])) {
field_delete_field($field_name);
}
else {
// Update the field definition with the new allowed values.
field_update_field($taxonomy_field);
}
}
}
// Reset caches.
$this
->resetCache(array_keys($vocabularies));
}