file_delete

  1. drupal
    1. 5
    2. 6
    3. 7
    4. 8
Versions
5 – 6 file_delete($path)
8 – 7 file_delete(stdClass $file, $force = FALSE)

Delete 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

file_unmanaged_delete()

file_usage_list()

file_usage_delete()

hook_file_delete()

Related topics

▾ 11 functions call file_delete()

EntityCrudHookTestCase::testFileHooks in modules/simpletest/tests/entity_crud_hook_test.test
Test hook invocations for CRUD operations on files.
FileDeleteTest::testInUse in modules/simpletest/tests/file.test
Tries deleting a file that is in use.
FileDeleteTest::testUnused in modules/simpletest/tests/file.test
Tries deleting a normal file (as opposed to a directory, symlink, etc).
FileDownloadTest::checkUrl in modules/simpletest/tests/file.test
Download a file from the URL generated by file_create_url().
file_example_delete_submit in examples/file_example/file_example.module
Submit handler to delete a file.
file_field_delete_file in modules/file/file.field.inc
Decrements a file usage count and attempts to delete it.
file_managed_file_submit in modules/file/file.module
Submit handler for upload and remove buttons of managed_file elements.
file_move in includes/file.inc
Move a file to a new location and update the file's database entry.
image_example_style_form_submit in examples/image_example/image_example.pages.inc
Form Builder; Display a form for uploading an image.
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.

Code

includes/file.inc, line 1230

<?php
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();
    return TRUE;
  }
  return FALSE;
}
?>