7.x system.api.php hook_file_update($file)

Respond to a file being updated.

This hook is called when file_save() is called on an existing file.

Parameters

$file: The file that has just been updated.

See also

file_save()

Related topics

2 functions implement hook_file_update()

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

entity_crud_hook_test_file_update in modules/simpletest/tests/entity_crud_hook_test.module
Implements hook_file_update().
file_test_file_update in modules/simpletest/tests/file_test.module
Implements hook_file_update().

File

modules/system/system.api.php, line 2922
Hooks provided by Drupal core and the System module.

Code

function hook_file_update($file) {
  $file_user = user_load($file->uid);

  // Make sure that the file name starts with the owner's user name.
  if (strpos($file->filename, $file_user->name) !== 0) {
    $old_filename = $file->filename;
    $file->filename = $file_user->name . '_' . $file->filename;
    $file
      ->save();
    watchdog('file', t('%source has been renamed to %destination', array(
      '%source' => $old_filename,
      '%destination' => $file->filename,
    )));
  }
}

Comments

pandaeskimo’s picture

We could not get this hook to work from our theme's template.php.

mhenning’s picture

Based on the description "This hook is called when file_save() is called on an existing file." I assumed that this would not be called when I uploaded a file. But, what I have seen is that the file_save function is called twice on upload. On the first pass the $file->status = 0 or temporary. On the second pass the status is set to 1 or FILE_STATUS_PERMANENT, which then is treated as an update and calls this hook.

Something to be aware of if you are using upload_replace module and didn't expect it to be triggered when uploading new files.

izus’s picture

This still woks in Drupal 8 thanks to hook_ENTITY_TYPE_update()
https://api.drupal.org/api/drupal/core!modules!system!entity.api.php/fun...