]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - src/Wallabag/CoreBundle/Helper/DownloadImages.php
Merge pull request #3165 from wallabag/it-translation-update
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Helper / DownloadImages.php
index c5298236a4f0159e4ba85d46a8d6b9c0cf7ff744..54e23a052684bc87c3508fd2dbc632d15294c891 100644 (file)
@@ -36,7 +36,7 @@ class DownloadImages
     {
         // if folder doesn't exist, attempt to create one and store the folder name in property $folder
         if (!file_exists($this->baseFolder)) {
-            mkdir($this->baseFolder, 0777, true);
+            mkdir($this->baseFolder, 0755, true);
         }
     }
 
@@ -54,7 +54,7 @@ class DownloadImages
         $crawler = new Crawler($html);
         $result = $crawler
             ->filterXpath('//img')
-            ->extract(array('src'));
+            ->extract(['src']);
 
         $relativePath = $this->getRelativePath($entryId);
 
@@ -66,6 +66,11 @@ class DownloadImages
                 continue;
             }
 
+            // if image contains "&" and we can't find it in the html it might be because it's encoded as &
+            if (false !== stripos($image, '&') && false === stripos($html, $image)) {
+                $image = str_replace('&', '&', $image);
+            }
+
             $html = str_replace($image, $imagePath, $html);
         }
 
@@ -114,7 +119,7 @@ class DownloadImages
         $ext = $this->mimeGuesser->guess($res->getHeader('content-type'));
         $this->logger->debug('DownloadImages: Checking extension', ['ext' => $ext, 'header' => $res->getHeader('content-type')]);
         if (!in_array($ext, ['jpeg', 'jpg', 'gif', 'png'], true)) {
-            $this->logger->error('DownloadImages: Processed image with not allowed extension. Skipping '.$imagePath);
+            $this->logger->error('DownloadImages: Processed image with not allowed extension. Skipping: '.$imagePath);
 
             return false;
         }
@@ -135,16 +140,18 @@ class DownloadImages
 
         switch ($ext) {
             case 'gif':
-                $result = imagegif($im, $localPath);
+                imagegif($im, $localPath);
                 $this->logger->debug('DownloadImages: Re-creating gif');
                 break;
             case 'jpeg':
             case 'jpg':
-                $result = imagejpeg($im, $localPath, self::REGENERATE_PICTURES_QUALITY);
+                imagejpeg($im, $localPath, self::REGENERATE_PICTURES_QUALITY);
                 $this->logger->debug('DownloadImages: Re-creating jpg');
                 break;
             case 'png':
-                $result = imagepng($im, $localPath, ceil(self::REGENERATE_PICTURES_QUALITY / 100 * 9));
+                imagealphablending($im, false);
+                imagesavealpha($im, true);
+                imagepng($im, $localPath, ceil(self::REGENERATE_PICTURES_QUALITY / 100 * 9));
                 $this->logger->debug('DownloadImages: Re-creating png');
         }