function field_delete_instance
7.x field.crud.inc | field_delete_instance($instance, $field_cleanup = TRUE) |
Marks a field instance and its data for deletion.
Parameters
$instance: An instance structure.
$field_cleanup: If TRUE, the field will be deleted as well if its last instance is being deleted. If FALSE, it is the caller's responsibility to handle the case of fields left without instances. Defaults to TRUE.
Related topics
8 calls to field_delete_instance()
- CommentFieldsTest::testCommentDefaultFields in drupal-7.x/
modules/ comment/ comment.test - Tests that the default 'comment_body' field is correctly added.
- FieldBulkDeleteTestCase::testDeleteFieldInstance in drupal-7.x/
modules/ field/ tests/ field.test - Verify that deleting an instance leaves the field data items in the database and that the appropriate Field API functions can operate on the deleted data and instance.
- FieldBulkDeleteTestCase::testPurgeField in drupal-7.x/
modules/ field/ tests/ field.test - Verify that fields are preserved and purged correctly as multiple instances are deleted and purged.
- FieldBulkDeleteTestCase::testPurgeInstance in drupal-7.x/
modules/ field/ tests/ field.test - Verify that field data items and instances are purged when an instance is deleted.
- FieldInstanceCrudTestCase::testDeleteFieldInstance in drupal-7.x/
modules/ field/ tests/ field.test - Test the deletion of a field instance.
File
- drupal-7.x/
modules/ field/ field.crud.inc, line 768 - Field CRUD API, handling field and field instance creation and deletion.
Code
function field_delete_instance($instance, $field_cleanup = TRUE) {
// Mark the field instance for deletion.
db_update('field_config_instance')
->fields(array('deleted' => 1))
->condition('field_name', $instance['field_name'])
->condition('entity_type', $instance['entity_type'])
->condition('bundle', $instance['bundle'])
->execute();
// Clear the cache.
field_cache_clear();
// Mark instance data for deletion.
$field = field_info_field($instance['field_name']);
module_invoke($field['storage']['module'], 'field_storage_delete_instance', $instance);
// Let modules react to the deletion of the instance.
module_invoke_all('field_delete_instance', $instance);
// Delete the field itself if we just deleted its last instance.
if ($field_cleanup && count($field['bundles']) == 0) {
field_delete_field($field['field_name']);
}
}