function image_resize_filter_delete_derivatives in Image Resize Filter 6
Same name and namespace in other branches
- 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;
}
}
}