You are here

function image_resize_filter_delete_derivatives in Image Resize Filter 7

Same name and namespace in other branches
  1. 6 image_resize_filter.module \image_resize_filter_delete_derivatives()

Delete all generated image when the original file is removed.

1 call to image_resize_filter_delete_derivatives()
image_resize_filter_file_delete in ./image_resize_filter.module
Implements hook_file_delete().

File

./image_resize_filter.module, line 637
After adding to a text format, this filter will parse the contents of submitted content and automatically scale image files to match the set dimensions of img tags.

Code

function image_resize_filter_delete_derivatives($original_uri) {

  // First delete all derivatives in the saved file location.
  $path_info = image_resize_filter_pathinfo($original_uri);
  $basename = $path_info['filename'];
  $extension = $path_info['extension'];
  $directory = str_replace($path_info['scheme'] . '://', $path_info['scheme'] . '://resize/', $path_info['dirname']);

  // Delete all the derivatives.
  file_scan_directory($directory, '/' . preg_quote($basename, '/') . '-[0-9]+[x][0-9]+\\.' . preg_quote($extension, '/') . '/', array(
    'callback' => 'file_unmanaged_delete',
  ));

  // Then work up the directories and delete any empty ones.
  $folders = explode('/', $directory);
  $directories = array();
  $current_directory = '';
  foreach ($folders as $folder) {
    $current_directory .= $folder . '/';
    $directories[] = $current_directory;
  }
  foreach (array_reverse($directories) as $directory) {
    if ($directory == $path_info['scheme'] . '://') {
      break;
    }
    $directory_files = file_scan_directory($directory, '/.*/');
    if (empty($directory_files)) {
      @rmdir($directory);
    }
    else {
      break;
    }
  }
}