diff --git a/core/includes/entity.api.php b/core/includes/entity.api.php index fb076b6..a56c1ef 100644 --- a/core/includes/entity.api.php +++ b/core/includes/entity.api.php @@ -137,6 +137,65 @@ function hook_entity_bundle_info_alter(&$bundles) { } /** + * Act on entity_bundle_create(). + * + * This hook is invoked after the operation has been performed. + * + * @param string $entity_type + * The type of $entity; e.g. 'node' or 'user'. + * @param string $bundle + * The name of the bundle. + */ +function hook_entity_bundle_create($entity_type, $bundle) { + // When a new bundle is created, the menu needs to be rebuilt to add the + // Field UI menu item tabs. + state()->set('menu_rebuild_needed', TRUE); +} + +/** + * Act on entity_bundle_rename(). + * + * This hook is invoked after the operation has been performed. + * + * @param string $entity_type + * The entity type to which the bundle is bound. + * @param string $bundle_old + * The previous name of the bundle. + * @param string $bundle_new + * The new name of the bundle. + */ +function hook_entity_bundle_rename($entity_type, $bundle_old, $bundle_new) { + // Update the settings associated with the bundle in my_module.settings. + $config = config('my_module.settings'); + $bundle_settings = $config->get('bundle_settings'); + if (isset($bundle_settings[$entity_type][$bundle_old])) { + $bundle_settings[$entity_type][$bundle_new] = $bundle_settings[$entity_type][$bundle_old]; + unset($bundle_settings[$entity_type][$bundle_old]); + $config->set('bundle_settings', $bundle_settings); + } +} + +/** + * Act on entity_bundle_delete(). + * + * This hook is invoked after the operation has been performed. + * + * @param string $entity_type + * The type of entity; for example, 'node' or 'user'. + * @param string $bundle + * The bundle that was just deleted. + */ +function hook_entity_bundle_delete($entity_type, $bundle) { + // Remove the settings associated with the bundle in my_module.settings. + $config = config('my_module.settings'); + $bundle_settings = $config->get('bundle_settings'); + if (isset($bundle_settings[$entity_type][$bundle])) { + unset($bundle_settings[$entity_type][$bundle]); + $config->set('bundle_settings', $bundle_settings); + } +} + +/** * Alter the entity type definitions. * * Modules may implement this hook to alter the information that defines an diff --git a/core/includes/entity.inc b/core/includes/entity.inc index 708706e..93ba2f8 100644 --- a/core/includes/entity.inc +++ b/core/includes/entity.inc @@ -86,6 +86,27 @@ function entity_get_bundles($entity_type = NULL) { } /** + * Notifies modules about an operation that was performed on a entity bundle. + * + * @param string $hook + * One of 'create', 'rename' or 'delete'. + * @param string $entity_type + * The entity type to which the bundle is bound. + * @param string $bundle + * The name of the bundle on which the operation was performed. + * @param string|null $bundle_new + * The new name of the bundle in case of a 'rename' operation. Defaults to + * NULL. + */ +function entity_invoke_bundle_hook($hook, $entity_type, $bundle, $bundle_new = NULL) { + // Clear the cache. + entity_info_cache_clear(); + + // Let other modules act on renaming the bundle. + module_invoke_all('entity_bundle_' . $hook, $entity_type, $bundle, $bundle_new); +} + +/** * Returns the entity view mode info. * * @param string|null $entity_type diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeStorageController.php b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeStorageController.php index 1c8cbc2..17f7b4d 100644 --- a/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeStorageController.php +++ b/core/modules/block/custom_block/lib/Drupal/custom_block/CustomBlockTypeStorageController.php @@ -22,11 +22,11 @@ protected function postSave(EntityInterface $entity, $update) { parent::postSave($entity, $update); if (!$update) { - field_attach_create_bundle('custom_block', $entity->id()); + entity_invoke_bundle_hook('create', 'custom_block', $entity->id()); custom_block_add_body_field($entity->id()); } elseif ($entity->original->id() != $entity->id()) { - field_attach_rename_bundle('custom_block', $entity->original->id(), $entity->id()); + entity_invoke_bundle_hook('rename', 'custom_block', $entity->original->id(), $entity->id()); } } @@ -37,7 +37,7 @@ protected function postDelete($entities) { parent::postDelete($entities); foreach ($entities as $entity) { - field_attach_delete_bundle('custom_block', $entity->id()); + entity_invoke_bundle_hook('delete', 'custom_block', $entity->id()); } } diff --git a/core/modules/comment/comment.install b/core/modules/comment/comment.install index 48bb5a4..b022efb 100644 --- a/core/modules/comment/comment.install +++ b/core/modules/comment/comment.install @@ -16,7 +16,7 @@ function comment_uninstall() { variable_del('comment_block_count'); $node_types = array_keys(node_type_get_types()); foreach ($node_types as $node_type) { - field_attach_delete_bundle('comment', 'comment_node_' . $node_type); + entity_invoke_bundle_hook('delete', 'comment', 'comment_node_' . $node_type); variable_del('comment_' . $node_type); variable_del('comment_anonymous_' . $node_type); variable_del('comment_controls_' . $node_type); diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module index dd87b29..8e9400f 100644 --- a/core/modules/comment/comment.module +++ b/core/modules/comment/comment.module @@ -332,7 +332,7 @@ function comment_node_type_insert($info) { */ function comment_node_type_update($info) { if (!empty($info->old_type) && $info->type != $info->old_type) { - field_attach_rename_bundle('comment', 'comment_node_' . $info->old_type, 'comment_node_' . $info->type); + entity_invoke_bundle_hook('rename', 'comment', 'comment_node_' . $info->old_type, 'comment_node_' . $info->type); } } @@ -340,7 +340,7 @@ function comment_node_type_update($info) { * Implements hook_node_type_delete(). */ function comment_node_type_delete($info) { - field_attach_delete_bundle('comment', 'comment_node_' . $info->type); + entity_invoke_bundle_hook('delete', 'comment', 'comment_node_' . $info->type); $settings = array( 'comment', 'comment_default_mode', @@ -375,7 +375,7 @@ function _comment_body_field_create($info) { } // Create the instance if needed. if (!field_read_instance('comment', 'comment_body', 'comment_node_' . $info->type, array('include_inactive' => TRUE))) { - field_attach_create_bundle('comment', 'comment_node_' . $info->type); + entity_invoke_bundle_hook('create', 'comment', 'comment_node_' . $info->type); // Attaches the body field by default. $instance = array( 'field_name' => 'comment_body', diff --git a/core/modules/contact/lib/Drupal/contact/CategoryStorageController.php b/core/modules/contact/lib/Drupal/contact/CategoryStorageController.php index bc31a24..9350613 100644 --- a/core/modules/contact/lib/Drupal/contact/CategoryStorageController.php +++ b/core/modules/contact/lib/Drupal/contact/CategoryStorageController.php @@ -22,10 +22,10 @@ protected function postSave(EntityInterface $entity, $update) { parent::postSave($entity, $update); if (!$update) { - field_attach_create_bundle('contact_message', $entity->id()); + entity_invoke_bundle_hook('create', 'contact_message', $entity->id()); } elseif ($entity->original->id() != $entity->id()) { - field_attach_rename_bundle('contact_message', $entity->original->id(), $entity->id()); + entity_invoke_bundle_hook('rename', 'contact_message', $entity->original->id(), $entity->id()); } } @@ -36,7 +36,7 @@ protected function postDelete($entities) { parent::postDelete($entities); foreach ($entities as $entity) { - field_attach_delete_bundle('contact_message', $entity->id()); + entity_invoke_bundle_hook('delete', 'contact_message', $entity->id()); } } diff --git a/core/modules/entity/entity.module b/core/modules/entity/entity.module index 39f7bb5..8fca683 100644 --- a/core/modules/entity/entity.module +++ b/core/modules/entity/entity.module @@ -11,9 +11,9 @@ use Drupal\Core\Config\Entity\ConfigStorageController; /** - * Implements hook_field_attach_rename_bundle(). + * Implements hook_entity_bundle_rename(). */ -function entity_field_attach_rename_bundle($entity_type, $bundle_old, $bundle_new) { +function entity_entity_bundle_rename($entity_type, $bundle_old, $bundle_new) { $entity_info = entity_get_info('entity_display'); // Rename entity displays. @@ -31,9 +31,9 @@ function entity_field_attach_rename_bundle($entity_type, $bundle_old, $bundle_ne } /** - * Implements hook_field_attach_delete_bundle(). + * Implements hook_entity_bundle_delete(). */ -function entity_field_attach_delete_bundle($entity_type, $bundle, $instances) { +function entity_entity_bundle_delete($entity_type, $bundle) { $entity_info = entity_get_info('entity_display'); // Remove entity displays of the deleted bundle. diff --git a/core/modules/field/field.api.php b/core/modules/field/field.api.php index 1cf252d..824dec8 100644 --- a/core/modules/field/field.api.php +++ b/core/modules/field/field.api.php @@ -1161,68 +1161,6 @@ function hook_field_available_languages_alter(&$langcodes, $context) { } /** - * Act on field_attach_create_bundle(). - * - * This hook is invoked after the field module has performed the operation. - * - * @param string $entity_type - * The type of $entity; e.g. 'node' or 'user'. - * @param string $bundle - * The name of the bundle. - */ -function hook_field_attach_create_bundle($entity_type, $bundle) { - // When a new bundle is created, the menu needs to be rebuilt to add the - // Field UI menu item tabs. - state()->set('menu_rebuild_needed', TRUE); -} - -/** - * Act on field_attach_rename_bundle(). - * - * This hook is invoked after the field module has performed the operation. - * - * @param $entity_type - * The entity type to which the bundle is bound. - * @param $bundle_old - * The previous name of the bundle. - * @param $bundle_new - * The new name of the bundle. - */ -function hook_field_attach_rename_bundle($entity_type, $bundle_old, $bundle_new) { - // Update the extra weights variable with new information. - if ($bundle_old !== $bundle_new) { - $extra_weights = variable_get('field_extra_weights', array()); - if (isset($info[$entity_type][$bundle_old])) { - $extra_weights[$entity_type][$bundle_new] = $extra_weights[$entity_type][$bundle_old]; - unset($extra_weights[$entity_type][$bundle_old]); - variable_set('field_extra_weights', $extra_weights); - } - } -} - -/** - * Act on field_attach_delete_bundle. - * - * This hook is invoked after the field module has performed the operation. - * - * @param $entity_type - * The type of entity; for example, 'node' or 'user'. - * @param $bundle - * The bundle that was just deleted. - * @param $instances - * An array of all instances that existed for the bundle before it was - * deleted. - */ -function hook_field_attach_delete_bundle($entity_type, $bundle, $instances) { - // Remove the extra weights variable information for this bundle. - $extra_weights = variable_get('field_extra_weights', array()); - if (isset($extra_weights[$entity_type][$bundle])) { - unset($extra_weights[$entity_type][$bundle]); - variable_set('field_extra_weights', $extra_weights); - } -} - -/** * @} End of "addtogroup field_attach". */ diff --git a/core/modules/field/field.attach.inc b/core/modules/field/field.attach.inc index 69102f4..bf55c16 100644 --- a/core/modules/field/field.attach.inc +++ b/core/modules/field/field.attach.inc @@ -1520,35 +1520,17 @@ function field_attach_prepare_translation(EntityInterface $entity, $langcode, En } /** - * Notifies field.module that a new bundle was created. - * - * The default SQL-based storage doesn't need to do anything about it, but - * others might. - * - * @param $entity_type - * The entity type to which the bundle is bound. - * @param $bundle - * The name of the newly created bundle. + * Implements hook_entity_bundle_create(). */ -function field_attach_create_bundle($entity_type, $bundle) { +function field_entity_bundle_create($entity_type, $bundle) { // Clear the cache. field_cache_clear(); - - // Let other modules act on creating the bundle. - module_invoke_all('field_attach_create_bundle', $entity_type, $bundle); } /** - * Notifies field.module that a bundle was renamed. - * - * @param $entity_type - * The entity type to which the bundle is bound. - * @param $bundle_old - * The previous name of the bundle. - * @param $bundle_new - * The new name of the bundle. + * Implements hook_entity_bundle_rename(). */ -function field_attach_rename_bundle($entity_type, $bundle_old, $bundle_new) { +function field_entity_bundle_rename($entity_type, $bundle_old, $bundle_new) { db_update('field_config_instance') ->fields(array('bundle' => $bundle_new)) ->condition('entity_type', $entity_type) @@ -1557,19 +1539,15 @@ function field_attach_rename_bundle($entity_type, $bundle_old, $bundle_new) { // Clear the cache. field_cache_clear(); - entity_info_cache_clear(); // Update bundle settings. $settings = variable_get('field_bundle_settings_' . $entity_type . '__' . $bundle_old, array()); variable_set('field_bundle_settings_' . $entity_type . '__' . $bundle_new, $settings); variable_del('field_bundle_settings_' . $entity_type . '__' . $bundle_old); - - // Let other modules act on renaming the bundle. - module_invoke_all('field_attach_rename_bundle', $entity_type, $bundle_old, $bundle_new); } /** - * Notifies field.module the a bundle was deleted. + * Implements hook_entity_bundle_delete(). * * This deletes the data for the field instances as well as the field instances * themselves. This function actually just marks the data and field instances as @@ -1577,16 +1555,11 @@ function field_attach_rename_bundle($entity_type, $bundle_old, $bundle_new) { * not always possible to delete this much data in a single page request * (particularly since for some field types, the deletion is more than just a * simple DELETE query). - * - * @param $entity_type - * The entity type to which the bundle is bound. - * @param $bundle - * The bundle to delete. */ -function field_attach_delete_bundle($entity_type, $bundle) { - // First, delete the instances themselves. field_read_instances() must be - // used here since field_info_instances() does not return instances for - // disabled entity types or bundles. +function field_entity_bundle_delete($entity_type, $bundle) { + // Get the instances on the bundle. field_read_instances() must be used + // here since field_info_instances() does not return instances for disabled + // entity types or bundles. $instances = field_read_instances(array('entity_type' => $entity_type, 'bundle' => $bundle), array('include_inactive' => 1)); foreach ($instances as $instance) { field_delete_instance($instance); @@ -1597,12 +1570,8 @@ function field_attach_delete_bundle($entity_type, $bundle) { // Clear bundle display settings. variable_del('field_bundle_settings_' . $entity_type . '__' . $bundle); - - // Let other modules act on deleting the bundle. - module_invoke_all('field_attach_delete_bundle', $entity_type, $bundle, $instances); } - /** * @} End of "defgroup field_attach". */ diff --git a/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php b/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php index 6c7df44..9ec10f3 100644 --- a/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php +++ b/core/modules/field/lib/Drupal/field/Tests/FieldAttachStorageTest.php @@ -434,9 +434,9 @@ function testFieldAttachDelete() { } /** - * Test field_attach_create_bundle() and field_attach_rename_bundle(). + * Test entity_bundle_create() and entity_bundle_rename(). */ - function testFieldAttachCreateRenameBundle() { + function testEntityCreateRenameBundle() { // Create a new bundle. $new_bundle = 'test_bundle_' . drupal_strtolower($this->randomName()); field_test_create_bundle($new_bundle); @@ -473,9 +473,9 @@ function testFieldAttachCreateRenameBundle() { } /** - * Test field_attach_delete_bundle(). + * Test entity_bundle_delete(). */ - function testFieldAttachDeleteBundle() { + function testEntityDeleteBundle() { // Create a new bundle. $new_bundle = 'test_bundle_' . drupal_strtolower($this->randomName()); field_test_create_bundle($new_bundle); diff --git a/core/modules/field/tests/modules/field_test/field_test.entity.inc b/core/modules/field/tests/modules/field_test/field_test.entity.inc index 5f08460..d5b5e57 100644 --- a/core/modules/field/tests/modules/field_test/field_test.entity.inc +++ b/core/modules/field/tests/modules/field_test/field_test.entity.inc @@ -97,7 +97,7 @@ function field_test_create_bundle($bundle, $text = NULL) { $info = entity_get_info(); foreach ($info as $type => $type_info) { if ($type_info['module'] == 'field_test') { - field_attach_create_bundle($type, $bundle); + entity_invoke_bundle_hook('create', $type, $bundle); } } } @@ -119,7 +119,7 @@ function field_test_rename_bundle($bundle_old, $bundle_new) { $info = entity_get_info(); foreach ($info as $type => $type_info) { if ($type_info['module'] == 'field_test') { - field_attach_rename_bundle($type, $bundle_old, $bundle_new); + entity_invoke_bundle_hook('rename', $type, $bundle_old, $bundle_new); } } } @@ -138,7 +138,7 @@ function field_test_delete_bundle($bundle) { $info = entity_get_info(); foreach ($info as $type => $type_info) { if ($type_info['module'] == 'field_test') { - field_attach_delete_bundle($type, $bundle); + entity_invoke_bundle_hook('delete', $type, $bundle); } } } diff --git a/core/modules/field/tests/modules/field_test/field_test.storage.inc b/core/modules/field/tests/modules/field_test/field_test.storage.inc index a53b941..e47ce06 100644 --- a/core/modules/field/tests/modules/field_test/field_test.storage.inc +++ b/core/modules/field/tests/modules/field_test/field_test.storage.inc @@ -416,16 +416,16 @@ function field_test_field_storage_delete_instance($instance) { } /** - * Implements hook_field_attach_create_bundle(). + * Implements hook_entity_bundle_create(). */ -function field_test_field_attach_create_bundle($bundle) { +function field_test_entity_bundle_create($entity_type, $bundle) { // We don't need to do anything here. } /** - * Implements hook_field_attach_rename_bundle(). + * Implements hook_entity_bundle_rename(). */ -function field_test_field_attach_rename_bundle($bundle_old, $bundle_new) { +function field_test_entity_bundle_rename($entity_type, $bundle_old, $bundle_new) { $data = _field_test_storage_data(); // We need to account for deleted or inactive fields and instances. @@ -448,20 +448,18 @@ function field_test_field_attach_rename_bundle($bundle_old, $bundle_new) { } /** - * Implements hook_field_attach_delete_bundle(). + * Implements hook_field_delete_instance(). */ -function field_test_field_attach_delete_bundle($entity_type, $bundle, $instances) { +function field_test_field_delete_instance($instance) { $data = _field_test_storage_data(); - foreach ($instances as $field_name => $instance) { - $field = field_info_field($field_name); - if ($field['storage']['type'] == 'field_test_storage') { - $field_data = &$data[$field['id']]; - foreach (array('current', 'revisions') as $sub_table) { - foreach ($field_data[$sub_table] as &$row) { - if ($row->bundle == $bundle_old) { - $row->deleted = TRUE; - } + $field = field_info_field($instance['field_name']); + if ($field['storage']['type'] == 'field_test_storage') { + $field_data = &$data[$field['id']]; + foreach (array('current', 'revisions') as $sub_table) { + foreach ($field_data[$sub_table] as &$row) { + if ($row->bundle == $instance['bundle']) { + $row->deleted = TRUE; } } } diff --git a/core/modules/field_sql_storage/field_sql_storage.module b/core/modules/field_sql_storage/field_sql_storage.module index e604ac6..193df67 100644 --- a/core/modules/field_sql_storage/field_sql_storage.module +++ b/core/modules/field_sql_storage/field_sql_storage.module @@ -569,9 +569,9 @@ function field_sql_storage_field_storage_delete_instance($instance) { } /** - * Implements hook_field_attach_rename_bundle(). + * Implements hook_entity_bundle_rename(). */ -function field_sql_storage_field_attach_rename_bundle($entity_type, $bundle_old, $bundle_new) { +function field_sql_storage_entity_bundle_rename($entity_type, $bundle_old, $bundle_new) { // We need to account for deleted or inactive fields and instances. $instances = field_read_instances(array('entity_type' => $entity_type, 'bundle' => $bundle_new), array('include_deleted' => TRUE, 'include_inactive' => TRUE)); foreach ($instances as $instance) { diff --git a/core/modules/field_ui/field_ui.module b/core/modules/field_ui/field_ui.module index 9f64f5f..a0f29e3 100644 --- a/core/modules/field_ui/field_ui.module +++ b/core/modules/field_ui/field_ui.module @@ -47,15 +47,6 @@ function field_ui_help($path, $arg) { } /** - * Implements hook_field_attach_rename_bundle(). - */ -function field_ui_field_attach_rename_bundle($entity_type, $bundle_old, $bundle_new) { - // The Field UI relies on entity_get_info() to build menu items for entity - // field administration pages. Ensure that the menu is rebuilt. - menu_router_rebuild(); -} - -/** * Implements hook_menu(). */ function field_ui_menu() { @@ -322,15 +313,24 @@ function field_ui_element_info() { } /** - * Implements hook_field_attach_create_bundle(). + * Implements hook_entity_bundle_create(). */ -function field_ui_field_attach_create_bundle($entity_type, $bundle) { +function field_ui_entity_bundle_create($entity_type, $bundle) { // When a new bundle is created, the menu needs to be rebuilt to add our // menu item tabs. state()->set('menu_rebuild_needed', TRUE); } /** + * Implements hook_entity_bundle_rename(). + */ +function field_ui_entity_bundle_rename($entity_type, $bundle_old, $bundle_new) { + // When a bundle is renamed, the menu needs to be rebuilt to add our + // menu item tabs. + state()->set('menu_rebuild_needed', TRUE); +} + +/** * Determines the adminstration path for a bundle. */ function field_ui_bundle_admin_path($entity_type, $bundle_name) { diff --git a/core/modules/node/node.module b/core/modules/node/node.module index 9d5fe32..36dcfe0 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -537,7 +537,7 @@ function node_type_save($info) { ->execute(); if (!empty($type->old_type) && $type->old_type != $type->type) { - field_attach_rename_bundle('node', $type->old_type, $type->type); + entity_invoke_bundle_hook('rename', 'node', $type->old_type, $type->type); } module_invoke_all('node_type_update', $type); $status = SAVED_UPDATED; @@ -548,7 +548,7 @@ function node_type_save($info) { ->fields($fields) ->execute(); - field_attach_create_bundle('node', $type->type); + entity_invoke_bundle_hook('create', 'node', $type->type); module_invoke_all('node_type_insert', $type); $status = SAVED_NEW; @@ -665,7 +665,7 @@ function node_type_delete($name) { db_delete('node_type') ->condition('type', $name) ->execute(); - field_attach_delete_bundle('node', $name); + entity_invoke_bundle_hook('delete', 'node', $name); module_invoke_all('node_type_delete', $type); // Clear the node type cache. diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyStorageController.php b/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyStorageController.php index b14fc2f..dcda5e8 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyStorageController.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/VocabularyStorageController.php @@ -20,7 +20,7 @@ class VocabularyStorageController extends ConfigStorageController { */ protected function postSave(EntityInterface $entity, $update) { if (!$update) { - field_attach_create_bundle('taxonomy_term', $entity->id()); + entity_invoke_bundle_hook('create', 'taxonomy_term', $entity->id()); } elseif ($entity->getOriginalID() != $entity->id()) { // Reflect machine name changes in the definitions of existing 'taxonomy' @@ -41,7 +41,7 @@ protected function postSave(EntityInterface $entity, $update) { } } // Update bundles. - field_attach_rename_bundle('taxonomy_term', $entity->getOriginalID(), $entity->id()); + entity_invoke_bundle_hook('rename', 'taxonomy_term', $entity->getOriginalID(), $entity->id()); } parent::postSave($entity, $update); $this->resetCache($update ? array($entity->getOriginalID()) : array()); diff --git a/core/modules/taxonomy/taxonomy.api.php b/core/modules/taxonomy/taxonomy.api.php index d2f41f6..1aa38f4 100644 --- a/core/modules/taxonomy/taxonomy.api.php +++ b/core/modules/taxonomy/taxonomy.api.php @@ -90,7 +90,7 @@ function hook_taxonomy_vocabulary_update(Drupal\taxonomy\Plugin\Core\Entity\Voca * Act before taxonomy vocabulary deletion. * * This hook is invoked from taxonomy_vocabulary_delete() before - * field_attach_delete_bundle() is called and before the vocabulary is actually + * entity_bundle_delete() is called and before the vocabulary is actually * removed from the database. * * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary @@ -109,7 +109,7 @@ function hook_taxonomy_vocabulary_predelete(Drupal\taxonomy\Plugin\Core\Entity\V * Respond to taxonomy vocabulary deletion. * * This hook is invoked from taxonomy_vocabulary_delete() after - * field_attach_delete_bundle() has been called and after the vocabulary has + * entity_bundle_delete() has been called and after the vocabulary has * been removed from the database. * * @param Drupal\taxonomy\Plugin\Core\Entity\Vocabulary $vocabulary diff --git a/core/modules/taxonomy/taxonomy.install b/core/modules/taxonomy/taxonomy.install index fef48fb..d89b89c 100644 --- a/core/modules/taxonomy/taxonomy.install +++ b/core/modules/taxonomy/taxonomy.install @@ -15,7 +15,7 @@ function taxonomy_uninstall() { $config_names = config_get_storage_names_with_prefix('taxonomy.vocabulary.'); foreach ($config_names as $config_name) { $vid = substr($config_name, strlen('taxonomy.vocabulary.')); - field_attach_delete_bundle('taxonomy_term', $vid); + entity_invoke_bundle_hook('delete', 'taxonomy_term', $vid); } }