From 895144997c6c9d567becda7329ddc68be1798dda Mon Sep 17 00:00:00 2001 From: Rolf Timmermans Date: Wed, 17 May 2017 14:52:51 +0200 Subject: [PATCH 1/3] Allow injection of Magento\Catalog\Model\View\Asset\ImageFactory --- .../Magento/Catalog/Model/Product/Image.php | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/app/code/Magento/Catalog/Model/Product/Image.php b/app/code/Magento/Catalog/Model/Product/Image.php index 51ca1f363502c..3f2453db0fc9c 100644 --- a/app/code/Magento/Catalog/Model/Product/Image.php +++ b/app/code/Magento/Catalog/Model/Product/Image.php @@ -173,7 +173,7 @@ class Image extends \Magento\Framework\Model\AbstractModel /** * @var \Magento\Catalog\Model\View\Asset\ImageFactory */ - private $viewAssetImageFactory; + protected $_viewAssetImageFactory; /** * @var \Magento\Catalog\Model\View\Asset\PlaceholderFactory @@ -198,6 +198,7 @@ class Image extends \Magento\Framework\Model\AbstractModel * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection + * @param \Magento\Catalog\Model\View\Asset\ImageFactory $viewAssetImageFactory * @param array $data * @SuppressWarnings(PHPMD.ExcessiveParameterList) * @SuppressWarnings(PHPMD.UnusedLocalVariable) @@ -215,6 +216,7 @@ public function __construct( \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, + \Magento\Catalog\Model\View\Asset\ImageFactory $viewAssetImageFactory = null, array $data = [] ) { $this->_storeManager = $storeManager; @@ -226,6 +228,13 @@ public function __construct( $this->_assetRepo = $assetRepo; $this->_viewFileSystem = $viewFileSystem; $this->_scopeConfig = $scopeConfig; + if ($viewAssetImageFactory == null) { + $this->_viewAssetImageFactory = ObjectManager::getInstance()->get( + \Magento\Catalog\Model\View\Asset\ImageFactory::class + ); + } else { + $this->_viewAssetImageFactory = $viewAssetImageFactory; + } } /** @@ -469,7 +478,7 @@ public function setBaseFile($file) { $this->_isBaseFilePlaceholder = false; - $this->imageAsset = $this->getViewAssetImageFactory()->create( + $this->imageAsset = $this->_viewAssetImageFactory->create( [ 'miscParams' => $this->getMiscParams(), 'filePath' => $file, @@ -894,20 +903,6 @@ public function getResizedImageInfo() return getimagesize($image); } - /** - * @return \Magento\Catalog\Model\View\Asset\ImageFactory - */ - private function getViewAssetImageFactory() - { - if ($this->viewAssetImageFactory == null) { - $this->viewAssetImageFactory = ObjectManager::getInstance()->get( - \Magento\Catalog\Model\View\Asset\ImageFactory::class - ); - } - - return $this->viewAssetImageFactory; - } - /** * @return \Magento\Catalog\Model\View\Asset\PlaceholderFactory */ From 840dcda45250fc736ec771138847e28a73500841 Mon Sep 17 00:00:00 2001 From: Rolf Timmermans Date: Wed, 17 May 2017 20:23:24 +0200 Subject: [PATCH 2/3] Make $viewAssetImageFactory private, remove underscore. --- app/code/Magento/Catalog/Model/Product/Image.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/Catalog/Model/Product/Image.php b/app/code/Magento/Catalog/Model/Product/Image.php index 3f2453db0fc9c..8907e0e519999 100644 --- a/app/code/Magento/Catalog/Model/Product/Image.php +++ b/app/code/Magento/Catalog/Model/Product/Image.php @@ -173,7 +173,7 @@ class Image extends \Magento\Framework\Model\AbstractModel /** * @var \Magento\Catalog\Model\View\Asset\ImageFactory */ - protected $_viewAssetImageFactory; + private $viewAssetImageFactory; /** * @var \Magento\Catalog\Model\View\Asset\PlaceholderFactory @@ -229,11 +229,11 @@ public function __construct( $this->_viewFileSystem = $viewFileSystem; $this->_scopeConfig = $scopeConfig; if ($viewAssetImageFactory == null) { - $this->_viewAssetImageFactory = ObjectManager::getInstance()->get( + $this->viewAssetImageFactory = ObjectManager::getInstance()->get( \Magento\Catalog\Model\View\Asset\ImageFactory::class ); } else { - $this->_viewAssetImageFactory = $viewAssetImageFactory; + $this->viewAssetImageFactory = $viewAssetImageFactory; } } @@ -478,7 +478,7 @@ public function setBaseFile($file) { $this->_isBaseFilePlaceholder = false; - $this->imageAsset = $this->_viewAssetImageFactory->create( + $this->imageAsset = $this->viewAssetImageFactory->create( [ 'miscParams' => $this->getMiscParams(), 'filePath' => $file, From 1fe83516f37de8f514ed723eb14aedcf80036cc1 Mon Sep 17 00:00:00 2001 From: Rolf Timmermans Date: Wed, 17 May 2017 20:26:30 +0200 Subject: [PATCH 3/3] Conform more to modern coding standards as requested. --- app/code/Magento/Catalog/Model/Product/Image.php | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/app/code/Magento/Catalog/Model/Product/Image.php b/app/code/Magento/Catalog/Model/Product/Image.php index 8907e0e519999..1b5a4fbe4e499 100644 --- a/app/code/Magento/Catalog/Model/Product/Image.php +++ b/app/code/Magento/Catalog/Model/Product/Image.php @@ -14,6 +14,7 @@ use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\App\ObjectManager; use Magento\Framework\Image as MagentoImage; +use Magento\Catalog\Model\View\Asset\ImageFactory; /** * @SuppressWarnings(PHPMD.TooManyFields) @@ -216,8 +217,8 @@ public function __construct( \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, - \Magento\Catalog\Model\View\Asset\ImageFactory $viewAssetImageFactory = null, - array $data = [] + array $data = [], + ImageFactory $viewAssetImageFactory = null ) { $this->_storeManager = $storeManager; $this->_catalogProductMediaConfig = $catalogProductMediaConfig; @@ -228,13 +229,8 @@ public function __construct( $this->_assetRepo = $assetRepo; $this->_viewFileSystem = $viewFileSystem; $this->_scopeConfig = $scopeConfig; - if ($viewAssetImageFactory == null) { - $this->viewAssetImageFactory = ObjectManager::getInstance()->get( - \Magento\Catalog\Model\View\Asset\ImageFactory::class - ); - } else { - $this->viewAssetImageFactory = $viewAssetImageFactory; - } + $this->viewAssetImageFactory = $viewAssetImageFactory + ?: ObjectManager::getInstance()->get(ImageFactory::class); } /**