You are here

function image_resize_filter_delete_derivatives in Image Resize Filter 6

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

Delete all generated image when the original file is removed.

2 calls to image_resize_filter_delete_derivatives()
image_resize_filter_file_delete in ./image_resize_filter.module
Implementation of hook_file_delete().
image_resize_filter_nodeapi in ./image_resize_filter.module
Implementation of hook_nodeapi().

File

./image_resize_filter.module, line 622
image_resize_filter.module

Code

function image_resize_filter_delete_derivatives($original_filepath) {

  // First delete all derivatives in the saved file location.
  $path_info = image_resize_filter_pathinfo($original_filepath);
  $basename = $path_info['filename'];
  $extension = $path_info['extension'];
  $file_directory_path = file_directory_path();
  $local_file_dir = str_replace($file_directory_path, '', $path_info['dirname']);
  $local_file_dir = !empty($local_file_dir) ? $local_file_dir . '/' : '';
  $directory = $file_directory_path . '/resize/' . $local_file_dir;

  // Delete all the derivatives.
  file_scan_directory($directory, quotemeta($basename) . '-[0-9]+[x][0-9]+\\.' . quotemeta($extension), array(
    '.',
    '..',
    'CVS',
  ), 'file_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 == $file_directory_path . '/') {
      break;
    }
    $directory_files = file_scan_directory($directory, '.*');
    if (empty($directory_files)) {
      @rmdir($directory);
    }
    else {
      break;
    }
  }
}