Index: modules/upload.module =================================================================== RCS file: /cvs/drupal/drupal/modules/upload.module,v retrieving revision 1.79 diff -u -r1.79 upload.module --- modules/upload.module 10 Mar 2006 19:03:25 -0000 1.79 +++ modules/upload.module 12 Mar 2006 18:08:18 -0000 @@ -250,8 +250,8 @@ $filesize = 0; - // Check if node->files exists, and if it contains something. - if (count($node->files) && is_array($node->files)) { + // Check if node->files exists. + if (is_array($node->files)) { // Update existing files with form data. foreach($node->files as $fid => $file) { @@ -429,57 +429,57 @@ } function upload_save($node) { - foreach ($node->files as $fid => $file) { - // Convert file to object for compatability - $file = (object)$file; - - // Remove file. Process removals first since no further processing - // will be required. - if ($file->remove) { - // Remove file previews... - if (strpos($file->fid, 'upload') !== false) { - file_delete($file->filepath); - } - - // Remove managed files. - else { - db_query('DELETE FROM {file_revisions} WHERE fid = %d AND vid = %d', $fid, $node->vid); - // Only delete a file if it isn't used by any revision - $count = db_result(db_query('SELECT COUNT(fid) FROM {file_revisions} WHERE fid = %d', $fid)); - if ($count < 1) { - db_query('DELETE FROM {files} WHERE fid = %d', $fid); + if (is_array($node->files)) { + foreach ($node->files as $fid => $file) { + // Convert file to object for compatability + $file = (object)$file; + + // Remove file. Process removals first since no further processing + // will be required. + if ($file->remove) { + // Remove file previews... + if (strpos($file->fid, 'upload') !== false) { file_delete($file->filepath); } + // Remove managed files. + else { + db_query('DELETE FROM {file_revisions} WHERE fid = %d AND vid = %d', $fid, $node->vid); + // Only delete a file if it isn't used by any revision + $count = db_result(db_query('SELECT COUNT(fid) FROM {file_revisions} WHERE fid = %d', $fid)); + if ($count < 1) { + db_query('DELETE FROM {files} WHERE fid = %d', $fid); + file_delete($file->filepath); + } + } } - } - // New file upload - elseif (strpos($file->fid, 'upload') !== false) { - if ($file = file_save_upload($file, $file->filename)) { - // Track the file which was submitted last, in case of a direct submission - // without preview or attach. See notes in upload_prepare. - if ($_SESSION['file_submitted'] == $file->fid) { - $file->list = variable_get('upload_list_default',1); + // New file upload + elseif (strpos($file->fid, 'upload') !== false) { + if ($file = file_save_upload($file, $file->filename)) { + // Track the file which was submitted last, in case of a direct submission + // without preview or attach. See notes in upload_prepare. + if ($_SESSION['file_submitted'] == $file->fid) { + $file->list = variable_get('upload_list_default',1); + } + + $file->fid = db_next_id('{files}_fid'); + db_query("INSERT INTO {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s', '%s', '%s', %d)", $file->fid, $node->nid, $file->filename, $file->filepath, $file->filemime, $file->filesize); + db_query("INSERT INTO {file_revisions} (fid, vid, list, description) VALUES (%d, %d, %d, '%s')", $file->fid, $node->vid, $file->list, $file->description); } + unset($_SESSION['file_previews'][$fid]); + } - $file->fid = db_next_id('{files}_fid'); - db_query("INSERT INTO {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s', '%s', '%s', %d)", $file->fid, $node->nid, $file->filename, $file->filepath, $file->filemime, $file->filesize); + // Create a new revision, as needed + elseif ($node->old_vid && is_numeric($fid)) { db_query("INSERT INTO {file_revisions} (fid, vid, list, description) VALUES (%d, %d, %d, '%s')", $file->fid, $node->vid, $file->list, $file->description); } - unset($_SESSION['file_previews'][$fid]); - } - // Create a new revision, as needed - elseif ($node->old_vid && is_numeric($fid)) { - db_query("INSERT INTO {file_revisions} (fid, vid, list, description) VALUES (%d, %d, %d, '%s')", $file->fid, $node->vid, $file->list, $file->description); - } - - // Update existing revision - else { - db_query("UPDATE {file_revisions} SET list = %d, description = '%s' WHERE fid = %d AND vid = %d", $file->list, $file->description, $file->fid, $node->vid); + // Update existing revision + else { + db_query("UPDATE {file_revisions} SET list = %d, description = '%s' WHERE fid = %d AND vid = %d", $file->list, $file->description, $file->fid, $node->vid); + } } } - return; } @@ -501,17 +501,18 @@ } function upload_delete_revision($node) { - 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 {file_revisions} 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); + if (is_array($node->files)) { + 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 {file_revisions} 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); + } } } - // delete the revision db_query('DELETE FROM {file_revisions} WHERE vid = %d', $node->vid); }