From 4febf6443b74416b26374150808158db95f51083 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Mon, 21 Nov 2005 15:36:53 +0000 Subject: [PATCH] - Patch #35121 by m3avrck: fixed problem with list and description values aren't saved for uploaded files. --- modules/upload.module | 21 +++++++++++++-------- modules/upload/upload.module | 21 +++++++++++++-------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/modules/upload.module b/modules/upload.module index 333cd7f43a2..2ce3fe8c6b1 100644 --- a/modules/upload.module +++ b/modules/upload.module @@ -360,11 +360,11 @@ function upload_save($node) { if ($file = file_save_upload($file, $file->filename)) { $fid = db_next_id('{files}_fid'); db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, description) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, '%s')", - $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key], $file->description); + $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key], $node->description[$key]); } } } - // Remove or update existing files: + // Remove existing files, as needed foreach ((array)$node->remove as $key => $value) { if ($node->remove[$key]) { db_query('DELETE FROM {files} WHERE fid = %d AND vid = %d', $key, $node->vid); @@ -375,20 +375,25 @@ function upload_save($node) { } } } - foreach ((array)$node->list as $key => $value) { - if (!$node->remove[$key]) { - db_query('UPDATE {files} SET list = %d, description = \'%s\' WHERE fid = %d AND vid = %d', $node->list[$key], $node->description[$key], $key, $node->vid); - } - } + // Create a new revision, as needed if ($node->old_vid) { foreach ((array)$node->remove as $key => $remove) { if (!$remove) { $file = db_fetch_object(db_query('SELECT * FROM {files} WHERE vid = %d AND fid = %d', $node->old_vid, $key)); db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, description) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, '%s')", - $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $file->list, $file->description); + $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key], $node->description[$key]); } } } + // Update existing files, as needed + else { + foreach ((array)$node->list as $key => $value) { + if (!$node->remove[$key]) { + db_query('UPDATE {files} SET list = %d, description = \'%s\' WHERE fid = %d AND vid = %d', $node->list[$key], $node->description[$key], $key, $node->vid); + } + } + } + return; } diff --git a/modules/upload/upload.module b/modules/upload/upload.module index 333cd7f43a2..2ce3fe8c6b1 100644 --- a/modules/upload/upload.module +++ b/modules/upload/upload.module @@ -360,11 +360,11 @@ function upload_save($node) { if ($file = file_save_upload($file, $file->filename)) { $fid = db_next_id('{files}_fid'); db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, description) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, '%s')", - $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key], $file->description); + $fid, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key], $node->description[$key]); } } } - // Remove or update existing files: + // Remove existing files, as needed foreach ((array)$node->remove as $key => $value) { if ($node->remove[$key]) { db_query('DELETE FROM {files} WHERE fid = %d AND vid = %d', $key, $node->vid); @@ -375,20 +375,25 @@ function upload_save($node) { } } } - foreach ((array)$node->list as $key => $value) { - if (!$node->remove[$key]) { - db_query('UPDATE {files} SET list = %d, description = \'%s\' WHERE fid = %d AND vid = %d', $node->list[$key], $node->description[$key], $key, $node->vid); - } - } + // Create a new revision, as needed if ($node->old_vid) { foreach ((array)$node->remove as $key => $remove) { if (!$remove) { $file = db_fetch_object(db_query('SELECT * FROM {files} WHERE vid = %d AND fid = %d', $node->old_vid, $key)); db_query("INSERT INTO {files} (fid, nid, vid, filename, filepath, filemime, filesize, list, description) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, '%s')", - $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $file->list, $file->description); + $key, $node->nid, $node->vid, $file->filename, $file->filepath, $file->filemime, $file->filesize, $node->list[$key], $node->description[$key]); } } } + // Update existing files, as needed + else { + foreach ((array)$node->list as $key => $value) { + if (!$node->remove[$key]) { + db_query('UPDATE {files} SET list = %d, description = \'%s\' WHERE fid = %d AND vid = %d', $node->list[$key], $node->description[$key], $key, $node->vid); + } + } + } + return; }