]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
MediaFile::fromUpload handles missing local file better
authorMikael Nordfeldth <mmn@hethane.se>
Sat, 5 Mar 2016 11:05:12 +0000 (12:05 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Sat, 5 Mar 2016 11:05:12 +0000 (12:05 +0100)
lib/mediafile.php

index be97b1cc17ea8c6241e00679e6fd2ddeec102a72..54d00b4acfefff266b7e1a600340181ff45be172 100644 (file)
@@ -34,8 +34,6 @@ if (!defined('GNUSOCIAL')) { exit(1); }
 
 class MediaFile
 {
-    protected $scoped   = null;
-
     var $filename      = null;
     var $fileRecord    = null;
     var $fileurl       = null;
@@ -236,7 +234,20 @@ class MediaFile
         try {
             $file = File::getByHash($filehash);
             // If no exception is thrown the file exists locally, so we'll use that and just add redirections.
-            $filename = $file->filename;
+            // but if the _actual_ locally stored file doesn't exist, getPath will throw FileNotFoundException
+            $filename = basename($file->getPath());
+            $mimetype = $file->mimetype;
+
+        } catch (FileNotFoundException $e) {
+            // The file does not exist in our local filesystem, so store this upload.
+
+            if (!move_uploaded_file($_FILES[$param]['tmp_name'], $e->path)) {
+                // TRANS: Client exception thrown when a file upload operation fails because the file could
+                // TRANS: not be moved from the temporary folder to the permanent file location.
+                throw new ClientException(_('File could not be moved to destination directory.'));
+            }
+
+            $filename = basename($file->getPath());
             $mimetype = $file->mimetype;
 
         } catch (NoResultException $e) {