summaryrefslogtreecommitdiff
path: root/modules/upload
diff options
context:
space:
mode:
Diffstat (limited to 'modules/upload')
-rw-r--r--modules/upload/upload.module31
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) {