changeset 848:2556828aaa93

Aaaand some more fixes.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 26 Nov 2014 00:11:10 +0200
parents 7fee98f15c3c
children d0b6daedd21c
files msite.inc.php
diffstat 1 files changed, 20 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/msite.inc.php	Wed Nov 26 00:03:40 2014 +0200
+++ b/msite.inc.php	Wed Nov 26 00:11:10 2014 +0200
@@ -1056,8 +1056,6 @@
 function stFindOrAddFileEntry($entry, $type, $origName, $fileSize, $fileExt, $fileType, $uploaderID)
 {
   $field = (($type == "preview") ? "preview" : "file")."_id";
-  if (($fentry = stFetchSQL("SELECT * FROM files WHERE id=".$entry[$field])) !== false)
-    return $fentry;
 
   // Compute storage filename
   $fileName = sprintf("%03d-%s--%s%s.%s",
@@ -1067,14 +1065,27 @@
     ($type == "preview" ? "_preview" : ""),
     $fileExt);
 
-  // Create new file entry
-  $sql = stPrepareSQL(
-    "INSERT INTO files (filename,origname,filetype,filesize,entry_id,uploader_id,utime) ".
-    "VALUES (%s,%s,%s,%d,%d,%d,%d)",
-    $fileName, $origName, $fileType, $fileSize, $entry["id"], $uploaderID, time());
+  if (($fileID = stFetchSQLColumn("SELECT id FROM files WHERE id=".$entry[$field])) !== false)
+  {
+    $sql = stPrepareSQL(
+      "UPDATE files SET filename=%s,origname=%s,filetype=%s,filesize=%d,entry_id=%d,uploader_id=%d,utime=%d ".
+      "WHERE id=".$fileID,
+      $fileName, $origName, $fileType, $fileSize, $entry["id"], $uploaderID, time());
 
-  if (($fileID = stExecSQLInsert($sql)) === false)
-    return stError("Failed to add new ".$type." for entry #".$entry["id"]." '".$origName."'.");
+    if (stExecSQL($sql) === false)
+      return stError("Failed to update file entry data.");
+  }
+  else
+  {
+    // Create new file entry
+    $sql = stPrepareSQL(
+      "INSERT INTO files (filename,origname,filetype,filesize,entry_id,uploader_id,utime) ".
+      "VALUES (%s,%s,%s,%d,%d,%d,%d)",
+      $fileName, $origName, $fileType, $fileSize, $entry["id"], $uploaderID, time());
+
+    if (($fileID = stExecSQLInsert($sql)) === false)
+      return stError("Failed to add new ".$type." for entry #".$entry["id"]." '".$origName."'.");
+  }
 
   // Update entry's reference
   $sql = stPrepareSQL("UPDATE entries SET ".$field."=%d WHERE id=%d", $fileID, $entry["id"]);