From d81bcc3362ef62d81a2b82981953068b78f85593 Mon Sep 17 00:00:00 2001 From: Milan Osztromok Date: Wed, 3 Oct 2018 17:26:29 +0200 Subject: [PATCH 1/8] move hardcoded MIME types from class private to DI configuration --- .../Magento/Catalog/Model/ImageUploader.php | 23 +++++++++++-------- app/code/Magento/Catalog/etc/di.xml | 6 +++++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/code/Magento/Catalog/Model/ImageUploader.php b/app/code/Magento/Catalog/Model/ImageUploader.php index 7599e46f76e30..1c980ba91fd50 100644 --- a/app/code/Magento/Catalog/Model/ImageUploader.php +++ b/app/code/Magento/Catalog/Model/ImageUploader.php @@ -69,14 +69,9 @@ class ImageUploader /** * List of allowed image mime types * - * @var array + * @var string[] */ - private $allowedMimeTypes = [ - 'image/jpg', - 'image/jpeg', - 'image/gif', - 'image/png' - ]; + protected $allowedMimeTypes; /** * ImageUploader constructor @@ -98,7 +93,8 @@ public function __construct( \Psr\Log\LoggerInterface $logger, $baseTmpPath, $basePath, - $allowedExtensions + $allowedExtensions, + $allowedMimeTypes ) { $this->coreFileStorageDatabase = $coreFileStorageDatabase; $this->mediaDirectory = $filesystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA); @@ -108,6 +104,7 @@ public function __construct( $this->baseTmpPath = $baseTmpPath; $this->basePath = $basePath; $this->allowedExtensions = $allowedExtensions; + $this->allowedMimeTypes = $allowedMimeTypes; } /** @@ -176,6 +173,14 @@ public function getAllowedExtensions() return $this->allowedExtensions; } + /** + * @return string[] + */ + public function getAllowedMimeTypes() + { + return $this->allowedMimeTypes; + } + /** * Retrieve path * @@ -242,7 +247,7 @@ public function saveFileToTmpDir($fileId) $uploader = $this->uploaderFactory->create(['fileId' => $fileId]); $uploader->setAllowedExtensions($this->getAllowedExtensions()); $uploader->setAllowRenameFiles(true); - if (!$uploader->checkMimeType($this->allowedMimeTypes)) { + if (!$uploader->checkMimeType($this->getAllowedMimeTypes())) { throw new \Magento\Framework\Exception\LocalizedException(__('File validation failed.')); } $result = $uploader->save($this->mediaDirectory->getAbsolutePath($baseTmpPath)); diff --git a/app/code/Magento/Catalog/etc/di.xml b/app/code/Magento/Catalog/etc/di.xml index 3eecfb3c7453a..4d3a8a452ead9 100644 --- a/app/code/Magento/Catalog/etc/di.xml +++ b/app/code/Magento/Catalog/etc/di.xml @@ -211,6 +211,12 @@ gif png + + image/jpg + image/jpeg + image/gif + image/png + From 13158f330ca74954ea7b7a5b09f831b5fbac6f35 Mon Sep 17 00:00:00 2001 From: Milan Osztromok Date: Wed, 3 Oct 2018 17:35:56 +0200 Subject: [PATCH 2/8] add missing phpdoc comment --- app/code/Magento/Catalog/Model/ImageUploader.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Catalog/Model/ImageUploader.php b/app/code/Magento/Catalog/Model/ImageUploader.php index 1c980ba91fd50..fe0bb23f574b9 100644 --- a/app/code/Magento/Catalog/Model/ImageUploader.php +++ b/app/code/Magento/Catalog/Model/ImageUploader.php @@ -84,6 +84,7 @@ class ImageUploader * @param string $baseTmpPath * @param string $basePath * @param string[] $allowedExtensions + * @param string[] $allowedMimeTypes */ public function __construct( \Magento\MediaStorage\Helper\File\Storage\Database $coreFileStorageDatabase, From ef9c20367b95acef1b0bb653d041a6dae3041b1c Mon Sep 17 00:00:00 2001 From: Milan Osztromok Date: Wed, 3 Oct 2018 21:20:07 +0200 Subject: [PATCH 3/8] fix related test --- .../Catalog/Test/Unit/Model/ImageUploaderTest.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Catalog/Test/Unit/Model/ImageUploaderTest.php b/app/code/Magento/Catalog/Test/Unit/Model/ImageUploaderTest.php index bd8871c21de9e..a2ef05b4492d3 100644 --- a/app/code/Magento/Catalog/Test/Unit/Model/ImageUploaderTest.php +++ b/app/code/Magento/Catalog/Test/Unit/Model/ImageUploaderTest.php @@ -69,10 +69,17 @@ class ImageUploaderTest extends \PHPUnit\Framework\TestCase /** * Allowed extensions * - * @var string + * @var array */ private $allowedExtensions; + /** + * Allowed mime types + * + * @var array + */ + private $allowedMimeTypes; + protected function setUp() { $this->coreFileStorageDatabaseMock = $this->createMock( @@ -97,6 +104,7 @@ protected function setUp() $this->baseTmpPath = 'base/tmp/'; $this->basePath = 'base/real/'; $this->allowedExtensions = ['.jpg']; + $this->allowedMimeTypes = ['image/jpg']; $this->imageUploader = new \Magento\Catalog\Model\ImageUploader( @@ -107,7 +115,8 @@ protected function setUp() $this->loggerMock, $this->baseTmpPath, $this->basePath, - $this->allowedExtensions + $this->allowedExtensions, + $this->allowedMimeTypes ); } From a6b0d1c1e52494a3d9d91910bc9d2b73ab800c03 Mon Sep 17 00:00:00 2001 From: Milan Osztromok Date: Thu, 4 Oct 2018 00:17:35 +0200 Subject: [PATCH 4/8] fix integration test --- .../testsuite/Magento/Catalog/Model/ImageUploaderTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Model/ImageUploaderTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Model/ImageUploaderTest.php index 723ff963e2bfc..ea151c2f68750 100644 --- a/dev/tests/integration/testsuite/Magento/Catalog/Model/ImageUploaderTest.php +++ b/dev/tests/integration/testsuite/Magento/Catalog/Model/ImageUploaderTest.php @@ -46,7 +46,8 @@ protected function setUp() [ 'baseTmpPath' => $this->mediaDirectory->getRelativePath('tmp'), 'basePath' => __DIR__, - 'allowedExtensions' => ['jpg', 'jpeg', 'gif', 'png'] + 'allowedExtensions' => ['jpg', 'jpeg', 'gif', 'png'], + 'allowedMimeTypes' => ['image/jpg', 'image/jpeg', 'image/gif', 'image/png'] ] ); } From 05504c5ac74c7d86c8ea05d0fe5ce9b42951a87a Mon Sep 17 00:00:00 2001 From: Milan Osztromok Date: Thu, 4 Oct 2018 09:45:15 +0200 Subject: [PATCH 5/8] fix phpcbf errors --- app/code/Magento/Catalog/Model/ImageUploader.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Catalog/Model/ImageUploader.php b/app/code/Magento/Catalog/Model/ImageUploader.php index fe0bb23f574b9..429149d0f63a3 100644 --- a/app/code/Magento/Catalog/Model/ImageUploader.php +++ b/app/code/Magento/Catalog/Model/ImageUploader.php @@ -165,7 +165,7 @@ public function getBasePath() } /** - * Retrieve base path + * Retrieve allowed extensions * * @return string[] */ @@ -175,6 +175,8 @@ public function getAllowedExtensions() } /** + * Retrieve allowed mime types + * * @return string[] */ public function getAllowedMimeTypes() From a4099f82549cad0dd3139baa51ad8fa693de3862 Mon Sep 17 00:00:00 2001 From: Milan Osztromok Date: Thu, 4 Oct 2018 09:59:28 +0200 Subject: [PATCH 6/8] solve @orlangur requests. --- app/code/Magento/Catalog/Model/ImageUploader.php | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/app/code/Magento/Catalog/Model/ImageUploader.php b/app/code/Magento/Catalog/Model/ImageUploader.php index 429149d0f63a3..1eab75e1e8039 100644 --- a/app/code/Magento/Catalog/Model/ImageUploader.php +++ b/app/code/Magento/Catalog/Model/ImageUploader.php @@ -71,7 +71,7 @@ class ImageUploader * * @var string[] */ - protected $allowedMimeTypes; + private $allowedMimeTypes; /** * ImageUploader constructor @@ -174,16 +174,6 @@ public function getAllowedExtensions() return $this->allowedExtensions; } - /** - * Retrieve allowed mime types - * - * @return string[] - */ - public function getAllowedMimeTypes() - { - return $this->allowedMimeTypes; - } - /** * Retrieve path * @@ -250,7 +240,7 @@ public function saveFileToTmpDir($fileId) $uploader = $this->uploaderFactory->create(['fileId' => $fileId]); $uploader->setAllowedExtensions($this->getAllowedExtensions()); $uploader->setAllowRenameFiles(true); - if (!$uploader->checkMimeType($this->getAllowedMimeTypes())) { + if (!$uploader->checkMimeType($this->allowedMimeTypes)) { throw new \Magento\Framework\Exception\LocalizedException(__('File validation failed.')); } $result = $uploader->save($this->mediaDirectory->getAbsolutePath($baseTmpPath)); From da491743f1dceffac055bd95f58ada5a9e4e5973 Mon Sep 17 00:00:00 2001 From: Milan Osztromok Date: Thu, 4 Oct 2018 10:17:00 +0200 Subject: [PATCH 7/8] fix failed unit test --- app/code/Magento/Catalog/Test/Unit/Model/ImageUploaderTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Catalog/Test/Unit/Model/ImageUploaderTest.php b/app/code/Magento/Catalog/Test/Unit/Model/ImageUploaderTest.php index a2ef05b4492d3..4435446f77bfb 100644 --- a/app/code/Magento/Catalog/Test/Unit/Model/ImageUploaderTest.php +++ b/app/code/Magento/Catalog/Test/Unit/Model/ImageUploaderTest.php @@ -104,7 +104,7 @@ protected function setUp() $this->baseTmpPath = 'base/tmp/'; $this->basePath = 'base/real/'; $this->allowedExtensions = ['.jpg']; - $this->allowedMimeTypes = ['image/jpg']; + $this->allowedMimeTypes = ['image/jpg', 'image/jpeg', 'image/gif', 'image/png']; $this->imageUploader = new \Magento\Catalog\Model\ImageUploader( From d653d75382b2e71fff60ce2041a838ba3ba8a52c Mon Sep 17 00:00:00 2001 From: Stanislav Idolov Date: Thu, 11 Oct 2018 12:48:00 +0300 Subject: [PATCH 8/8] Make constructor backward compatible --- app/code/Magento/Catalog/Model/ImageUploader.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Catalog/Model/ImageUploader.php b/app/code/Magento/Catalog/Model/ImageUploader.php index 1eab75e1e8039..7f047327460ca 100644 --- a/app/code/Magento/Catalog/Model/ImageUploader.php +++ b/app/code/Magento/Catalog/Model/ImageUploader.php @@ -95,7 +95,7 @@ public function __construct( $baseTmpPath, $basePath, $allowedExtensions, - $allowedMimeTypes + $allowedMimeTypes = [] ) { $this->coreFileStorageDatabase = $coreFileStorageDatabase; $this->mediaDirectory = $filesystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA);