]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
[CORE] Fix bug where we we're losing track of a file, in case the image needed to...
authorMiguel Dantas <biodantasgs@gmail.com>
Sun, 14 Jul 2019 23:03:32 +0000 (00:03 +0100)
committerDiogo Cordeiro <diogo@fc.up.pt>
Sat, 3 Aug 2019 16:31:44 +0000 (17:31 +0100)
lib/imagefile.php

index b921a2483c81e3f91b7f57410d24671ae8590348..641d5d558a559902e5195777508825847e2558f8 100644 (file)
@@ -278,7 +278,7 @@ class ImageFile extends MediaFile
         }
 
         if (Event::handle('StartResizeImageFile', array($this, $outpath, $box))) {
-            $this->resizeToFile($outpath, $box);
+            $outpath = $this->resizeToFile($outpath, $box);
         }
 
         if (!file_exists($outpath)) {
@@ -304,7 +304,7 @@ class ImageFile extends MediaFile
      * @param array $box
      * @throws Exception
      */
-    protected function resizeToFile($outpath, array $box)
+    protected function resizeToFile(string $outpath, array $box) : string
     {
         $old_limit = ini_set('memory_limit', common_config('attachments', 'memory_limit'));
         $image_src = null;
@@ -373,12 +373,6 @@ class ImageFile extends MediaFile
         );
 
         $type = $this->preferredType();
-        $ext = image_type_to_extension($type, true);
-        // Decoding returns null if the file is in the old format
-        $filename = MediaFile::decodeFilename(basename($outpath));
-        // Encoding null makes the file use 'untitled', and also replaces the extension
-        $outfilename = MediaFile::encodeFilename($filename, $this->filehash, $ext);
-        $outpath = dirname($outpath) . DIRECTORY_SEPARATOR . $outfilename;
 
         switch ($type) {
          case IMAGETYPE_GIF:
@@ -398,6 +392,8 @@ class ImageFile extends MediaFile
         imagedestroy($image_src);
         imagedestroy($image_dest);
         ini_set('memory_limit', $old_limit); // Restore the old memory limit
+
+        return $outpath;
     }
 
     public function unlink()
@@ -539,6 +535,7 @@ class ImageFile extends MediaFile
 
         // Throws FileNotFoundException or FileNotStoredLocallyException
         $this->filepath = $this->fileRecord->getFileOrThumbnailPath();
+        $filename = basename($this->filepath);
 
         if ($width === null) {
             $width  = common_config('thumbnail', 'width');
@@ -575,9 +572,14 @@ class ImageFile extends MediaFile
             return $thumb;
         }
 
-        $extension = File::guessMimeExtension($this->mimetype);
-        $outname = "thumb-{$this->fileRecord->getID()}-{$width}x{$height}-{$this->filename}";
-        $outpath = File_thumbnail::path($outname);
+        $type = $this->preferredType();
+        $ext = image_type_to_extension($type, true);
+        // Decoding returns null if the file is in the old format
+        $filename = MediaFile::decodeFilename(basename($this->filepath));
+        // Encoding null makes the file use 'untitled', and also replaces the extension
+        $outfilename = MediaFile::encodeFilename($filename, $this->filehash, $ext);
+        $outpath = File_thumbnail::path(
+            "thumb-{$this->fileRecord->id}-{$box['width']}x{$box['height']}-{$outfilename}");
 
         // The boundary box for our resizing
         $box = array('width'=>$width, 'height'=>$height,
@@ -595,7 +597,7 @@ class ImageFile extends MediaFile
         }
 
         common_debug(sprintf(
-            'Generating a thumbnail of File id==%u of size %ux%u',
+            'Generating a thumbnail of File id=%u of size %ux%u',
             $this->fileRecord->getID(),
             $width,
             $height