function hook_field_storage_delete_revision

Delete a single revision of field data for an entity.

This hook is invoked from field_attach_delete_revision() to ask the field storage module to delete field revision data.

Deleting the current (most recently written) revision is not allowed as has undefined results.

Parameters

$entity_type: The entity type of entity, such as 'node' or 'user'.

$entity: The entity on which to operate. The revision to delete is indicated by the entity's revision ID property, as identified by hook_fieldable_info() for $entity_type.

$fields: An array listing the fields to delete. The keys and values of the array are field IDs.

Related topics

2 functions implement hook_field_storage_delete_revision()

Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.

field_sql_storage_field_storage_delete_revision in drupal/core/modules/field/modules/field_sql_storage/field_sql_storage.module
Implements hook_field_storage_delete_revision().
field_test_field_storage_delete_revision in drupal/core/modules/field/tests/modules/field_test/field_test.storage.inc
Implements hook_field_storage_delete_revision().
1 invocation of hook_field_storage_delete_revision()
field_attach_delete_revision in drupal/core/modules/field/field.attach.inc
Delete field data for a single revision of an existing entity. The passed entity must have a revision ID attribute.

File

drupal/core/modules/field/field.api.php, line 1592

Code

function hook_field_storage_delete_revision($entity_type, $entity, $fields) {
  $vid = $entity
    ->getRevisionId();
  if (isset($vid)) {
    foreach ($fields as $field_id) {
      $field = field_info_field_by_id($field_id);
      $revision_name = _field_sql_storage_revision_tablename($field);
      db_delete($revision_name)
        ->condition('entity_type', $entity_type)
        ->condition('entity_id', $entity
        ->id())
        ->condition('revision_id', $vid)
        ->execute();
    }
  }
}