function file_delete
Same name and namespace in other branches
- 8.9.x core/includes/file.inc \file_delete()
Deletes a file and its database record.
If the $force parameter is not TRUE, file_usage_list() will be called to determine if the file is being used by any modules. If the file is being used the delete will be canceled.
Parameters
$file: A file object.
$force: Boolean indicating that the file should be deleted even if the file is reported as in use by the file_usage table.
Return value
mixed TRUE for success, FALSE in the event of an error, or an array if the file is being used by any modules.
See also
Related topics
5 calls to file_delete()
- EntityCrudHookTestCase::testFileHooks in modules/
simpletest/ tests/ entity_crud_hook_test.test - Tests hook invocations for CRUD operations on files.
- file_move in includes/
file.inc - Moves a file to a new location and update the file's database entry.
- ImageFieldDisplayTestCase::testMissingImageFieldDisplay in modules/
image/ image.test - Tests the display of image field with the missing FID.
- system_cron in modules/
system/ system.module - Implements hook_cron().
- user_save in modules/
user/ user.module - Save changes to a user account or add a new user.
File
-
includes/
file.inc, line 1317
Code
function file_delete(stdClass $file, $force = FALSE) {
if (!file_valid_uri($file->uri)) {
if (($realpath = drupal_realpath($file->uri)) !== FALSE) {
watchdog('file', 'File %file (%realpath) could not be deleted because it is not a valid URI. This may be caused by improper use of file_delete() or a missing stream wrapper.', array(
'%file' => $file->uri,
'%realpath' => $realpath,
));
}
else {
watchdog('file', 'File %file could not be deleted because it is not a valid URI. This may be caused by improper use of file_delete() or a missing stream wrapper.', array(
'%file' => $file->uri,
));
}
drupal_set_message(t('The specified file %file could not be deleted, because it is not a valid URI. More information is available in the system log.', array(
'%file' => $file->uri,
)), 'error');
return FALSE;
}
// If any module still has a usage entry in the file_usage table, the file
// will not be deleted, but file_delete() will return a populated array
// that tests as TRUE.
if (!$force && $references = file_usage_list($file)) {
return $references;
}
// Let other modules clean up any references to the deleted file.
module_invoke_all('file_delete', $file);
module_invoke_all('entity_delete', $file, 'file');
// Make sure the file is deleted before removing its row from the
// database, so UIs can still find the file in the database.
if (file_unmanaged_delete($file->uri)) {
db_delete('file_managed')->condition('fid', $file->fid)
->execute();
db_delete('file_usage')->condition('fid', $file->fid)
->execute();
entity_get_controller('file')->resetCache();
return TRUE;
}
return FALSE;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.