diff options
Diffstat (limited to 'modules/upload')
-rw-r--r-- | modules/upload/upload.module | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/modules/upload/upload.module b/modules/upload/upload.module index cdc6cb563..460d4726a 100644 --- a/modules/upload/upload.module +++ b/modules/upload/upload.module @@ -575,31 +575,44 @@ function upload_delete($node) { } foreach ($files as $fid => $file) { - // Delete all files associated with the node - db_query('DELETE FROM {files} WHERE fid = %d', $fid); - file_delete($file->filepath); + // Delete all file revision information associated with the node + drupal_delete_add_query('DELETE FROM {files} WHERE fid = %d', $fid); } - // Delete all file revision information associated with the node - db_query('DELETE FROM {upload} WHERE nid = %d', $node->nid); + // Delete all files associated with the node + drupal_delete_add_query('DELETE FROM {upload} WHERE nid = %d', $node->nid); + + // Register a callback to delete the files. + drupal_delete_add_callback(array('upload_delete_post' => array($files))); } function upload_delete_revision($node) { if (is_array($node->files)) { + $files = array(); foreach ($node->files as $file) { // Check if the file will be used after this revision is deleted $count = db_result(db_query('SELECT COUNT(fid) FROM {upload} WHERE fid = %d', $file->fid)); // if the file won't be used, delete it if ($count < 2) { - db_query('DELETE FROM {files} WHERE fid = %d', $file->fid); - file_delete($file->filepath); + drupal_delete_add_query('DELETE FROM {files} WHERE fid = %d', $file->fid); + $files[$file->fid] = $file; } } } - // delete the revision - db_query('DELETE FROM {upload} WHERE vid = %d', $node->vid); + // Delete the revision. + drupal_delete_add_query('DELETE FROM {upload} WHERE vid = %d', $node->vid); + + // Register a callback to delete the files. + drupal_delete_add_callback(array('upload_delete_post' => array($files))); +} + +function upload_delete_post($files) { + foreach ($files as $file) { + // Delete all files associated with the node or revision. + file_delete($file->filepath); + } } function _upload_form($node) { |