Error message

You are browsing documentation for drupal 7.x, which is not supported anymore. Read the updated version of this page for drupal 11.x (the latest version).

function file_usage_delete

Removes a record to indicate that a module is no longer using a file.

The file_delete() function is typically called after removing a file usage to remove the record from the file_managed table and delete the file itself.

Parameters

$file: A file object.

$module: The name of the module using the file.

$type: (optional) The type of the object that contains the referenced file. May be omitted if all module references to a file are being deleted.

$id: (optional) The unique, numeric ID of the object containing the referenced file. May be omitted if all module references to a file are being deleted.

$count: (optional) The number of references to delete from the object. Defaults to 1. 0 may be specified to delete all references to the file within a specific object.

See also

file_usage_add()

file_usage_list()

file_delete()

Related topics

File interface
Common file handling functions.
8 calls to file_usage_delete()
FileDeleteTest::testInUse in modules/simpletest/tests/file.test
Tries deleting a file that is in use.
FileUsageTest::testRemoveUsage in modules/simpletest/tests/file.test
Tests file_usage_delete().
file_field_delete_file in modules/file/file.field.inc
Decrements the usage count for a file and attempts to delete it.
image_field_delete_field in modules/image/image.module
Implements hook_field_delete_field().
image_field_delete_instance in modules/image/image.module
Implements hook_field_delete_instance().

... See full list

File

includes/file.inc, line 751

Code

function file_usage_delete (stdClass $file, $module, $type = NULL, $id = NULL, $count = 1) {
 // Delete rows that have a exact or less value to prevent empty rows.
 $query = db_delete ('file_usage')->condition ('module', $module)
 ->condition ('fid', $file->fid);
 if ($type && $id) {
 $query->condition ('type', $type)
 ->condition ('id', $id);
 }
 if ($count) {
 $query->condition ('count', $count, '<=');
 }
 $result = $query->execute ();
 // If the row has more than the specified count decrement it by that number.
 if (!$result && $count > 0) {
 $query = db_update ('file_usage')->condition ('module', $module)
 ->condition ('fid', $file->fid);
 if ($type && $id) {
 $query->condition ('type', $type)
 ->condition ('id', $id);
 }
 $query->expression ('count', 'count - :count', array(
 ':count' => $count,
 ));
 $query->execute ();
 }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.