Skip to content

Commit a158a6b

Browse files
committed
Merge remote-tracking branch 'origin/MAGETWO-69036' into PANDA-FIXES-2.1
2 parents f78a040 + 8af9679 commit a158a6b

File tree

59 files changed

+2016
-1022
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+2016
-1022
lines changed

app/code/Magento/Catalog/Controller/Adminhtml/Product/AddAttributeToTemplate.php

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,23 @@ class AddAttributeToTemplate extends \Magento\Catalog\Controller\Adminhtml\Produ
8282
* @param \Magento\Backend\App\Action\Context $context
8383
* @param Builder $productBuilder
8484
* @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
85+
* @param AttributeGroupInterfaceFactory|null $attributeGroupFactory
86+
* @throws \RuntimeException
8587
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
8688
*/
8789
public function __construct(
8890
\Magento\Backend\App\Action\Context $context,
8991
\Magento\Catalog\Controller\Adminhtml\Product\Builder $productBuilder,
90-
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
92+
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
93+
\Magento\Eav\Api\Data\AttributeGroupInterfaceFactory $attributeGroupFactory = null
9194
) {
9295
parent::__construct($context, $productBuilder);
9396
$this->resultJsonFactory = $resultJsonFactory;
97+
if (null === $attributeGroupFactory) {
98+
$attributeGroupFactory = \Magento\Framework\App\ObjectManager::getInstance()
99+
->get(\Magento\Eav\Api\Data\AttributeGroupInterfaceFactory::class);
100+
}
101+
$this->attributeGroupFactory = $attributeGroupFactory;
94102
}
95103

96104
/**
@@ -132,7 +140,7 @@ public function execute()
132140
$attributeGroup = reset($attributeGroupItems);
133141
} catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
134142
/** @var AttributeGroupInterface $attributeGroup */
135-
$attributeGroup = $this->getAttributeGroupFactory()->create();
143+
$attributeGroup = $this->attributeGroupFactory->create();
136144
}
137145

138146
$extensionAttributes = $attributeGroup->getExtensionAttributes()
@@ -228,18 +236,6 @@ private function getAttributeGroupRepository()
228236
return $this->attributeGroupRepository;
229237
}
230238

231-
/**
232-
* @return AttributeGroupInterfaceFactory
233-
*/
234-
private function getAttributeGroupFactory()
235-
{
236-
if (null === $this->attributeGroupFactory) {
237-
$this->attributeGroupFactory = \Magento\Framework\App\ObjectManager::getInstance()
238-
->get('Magento\Eav\Api\Data\AttributeGroupInterfaceFactory');
239-
}
240-
return $this->attributeGroupFactory;
241-
}
242-
243239
/**
244240
* @return SearchCriteriaBuilder
245241
*/

app/code/Magento/Catalog/Controller/Adminhtml/Product/Builder.php

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,25 @@ class Builder
4545
* @param Logger $logger
4646
* @param Registry $registry
4747
* @param WysiwygModel\Config $wysiwygConfig
48+
* @param StoreFactory|null $storeFactory
49+
* @throws \RuntimeException
4850
*/
4951
public function __construct(
5052
ProductFactory $productFactory,
5153
Logger $logger,
5254
Registry $registry,
53-
WysiwygModel\Config $wysiwygConfig
55+
WysiwygModel\Config $wysiwygConfig,
56+
StoreFactory $storeFactory = null
5457
) {
5558
$this->productFactory = $productFactory;
5659
$this->logger = $logger;
5760
$this->registry = $registry;
5861
$this->wysiwygConfig = $wysiwygConfig;
62+
if (null === $storeFactory) {
63+
$storeFactory = \Magento\Framework\App\ObjectManager::getInstance()
64+
->get(StoreFactory::class);
65+
}
66+
$this->storeFactory = $storeFactory;
5967
}
6068

6169
/**
@@ -70,7 +78,7 @@ public function build(RequestInterface $request)
7078
/** @var $product \Magento\Catalog\Model\Product */
7179
$product = $this->productFactory->create();
7280
$product->setStoreId($request->getParam('store', 0));
73-
$store = $this->getStoreFactory()->create();
81+
$store = $this->storeFactory->create();
7482
$store->load($request->getParam('store', 0));
7583

7684
$typeId = $request->getParam('type');
@@ -99,16 +107,4 @@ public function build(RequestInterface $request)
99107
$this->wysiwygConfig->setStoreId($request->getParam('store'));
100108
return $product;
101109
}
102-
103-
/**
104-
* @return StoreFactory
105-
*/
106-
private function getStoreFactory()
107-
{
108-
if (null === $this->storeFactory) {
109-
$this->storeFactory = \Magento\Framework\App\ObjectManager::getInstance()
110-
->get('Magento\Store\Model\StoreFactory');
111-
}
112-
return $this->storeFactory;
113-
}
114110
}

app/code/Magento/Catalog/Controller/Adminhtml/Product/Initialization/Helper.php

Lines changed: 65 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,19 @@
55
*/
66
namespace Magento\Catalog\Controller\Adminhtml\Product\Initialization;
77

8+
use Magento\Backend\Helper\Js;
89
use Magento\Catalog\Api\Data\ProductCustomOptionInterfaceFactory as CustomOptionFactory;
910
use Magento\Catalog\Api\Data\ProductLinkInterfaceFactory as ProductLinkFactory;
1011
use Magento\Catalog\Api\ProductRepositoryInterface\Proxy as ProductRepository;
1112
use Magento\Catalog\Model\Product;
1213
use Magento\Catalog\Model\Product\Initialization\Helper\ProductLinks;
1314
use Magento\Catalog\Model\Product\Link\Resolver as LinkResolver;
15+
use Magento\Catalog\Model\Product\LinkTypeProvider;
1416
use Magento\Framework\App\ObjectManager;
17+
use Magento\Framework\App\RequestInterface;
18+
use Magento\Framework\Stdlib\DateTime\Filter\Date as DateFilter;
19+
use Magento\Framework\Stdlib\DateTime\Filter\DateTime;
20+
use Magento\Store\Model\StoreManagerInterface;
1521

1622
/**
1723
* Class Helper
@@ -20,12 +26,12 @@
2026
class Helper
2127
{
2228
/**
23-
* @var \Magento\Framework\App\RequestInterface
29+
* @var RequestInterface
2430
*/
2531
protected $request;
2632

2733
/**
28-
* @var \Magento\Store\Model\StoreManagerInterface
34+
* @var StoreManagerInterface
2935
*/
3036
protected $storeManager;
3137

@@ -35,12 +41,12 @@ class Helper
3541
protected $stockFilter;
3642

3743
/**
38-
* @var \Magento\Backend\Helper\Js
44+
* @var Js
3945
*/
4046
protected $jsHelper;
4147

4248
/**
43-
* @var \Magento\Framework\Stdlib\DateTime\Filter\Date
49+
* @var Date
4450
*
4551
* @deprecated
4652
*/
@@ -72,42 +78,76 @@ class Helper
7278
private $linkResolver;
7379

7480
/**
75-
* @var \Magento\Framework\Stdlib\DateTime\Filter\DateTime
81+
* @var DateTime
7682
*/
7783
private $dateTimeFilter;
7884

7985
/**
80-
* @var \Magento\Catalog\Model\Product\LinkTypeProvider
86+
* @var LinkTypeProvider
8187
*/
8288
private $linkTypeProvider;
8389

8490
/**
8591
* Helper constructor.
86-
* @param \Magento\Framework\App\RequestInterface $request
87-
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
92+
* @param RequestInterface $request
93+
* @param StoreManagerInterface $storeManager
8894
* @param StockDataFilter $stockFilter
8995
* @param ProductLinks $productLinks
90-
* @param \Magento\Backend\Helper\Js $jsHelper
91-
* @param \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter
92-
* @param \Magento\Catalog\Model\Product\LinkTypeProvider $linkTypeProvider
96+
* @param Js $jsHelper
97+
* @param DateFilter $dateFilter
98+
* @param LinkTypeProvider|null $linkTypeProvider
99+
* @param CustomOptionFactory|null $customOptionFactory
100+
* @param ProductLinkFactory|null $productLinkFactory
101+
* @param ProductRepository|null $productRepository
102+
* @param DateTime|null $dateTimeFilter
103+
* @param LinkResolver|null $linkResolver
104+
* @throws \RuntimeException
105+
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
93106
*/
94107
public function __construct(
95-
\Magento\Framework\App\RequestInterface $request,
96-
\Magento\Store\Model\StoreManagerInterface $storeManager,
108+
RequestInterface $request,
109+
StoreManagerInterface $storeManager,
97110
StockDataFilter $stockFilter,
98-
\Magento\Catalog\Model\Product\Initialization\Helper\ProductLinks $productLinks,
99-
\Magento\Backend\Helper\Js $jsHelper,
100-
\Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter,
101-
\Magento\Catalog\Model\Product\LinkTypeProvider $linkTypeProvider = null
111+
ProductLinks $productLinks,
112+
Js $jsHelper,
113+
DateFilter $dateFilter,
114+
LinkTypeProvider $linkTypeProvider = null,
115+
CustomOptionFactory $customOptionFactory = null,
116+
ProductLinkFactory $productLinkFactory = null,
117+
ProductRepository $productRepository = null,
118+
DateTime $dateTimeFilter = null,
119+
LinkResolver $linkResolver = null
102120
) {
121+
if (null === $linkTypeProvider) {
122+
$linkTypeProvider = ObjectManager::getInstance()->get(LinkTypeProvider::class);
123+
}
124+
if (null === $customOptionFactory) {
125+
$customOptionFactory = ObjectManager::getInstance()->get(CustomOptionFactory::class);
126+
}
127+
if (null === $productLinkFactory) {
128+
$productLinkFactory = ObjectManager::getInstance()->get(ProductLinkFactory::class);
129+
}
130+
if (null === $productRepository) {
131+
$productRepository = ObjectManager::getInstance()->get(ProductRepository::class);
132+
}
133+
if (null === $dateTimeFilter) {
134+
$dateTimeFilter = ObjectManager::getInstance()->get(DateTime::class);
135+
}
136+
if (null === $linkResolver) {
137+
$linkResolver = ObjectManager::getInstance()->get(LinkResolver::class);
138+
}
103139
$this->request = $request;
104140
$this->storeManager = $storeManager;
105141
$this->stockFilter = $stockFilter;
106142
$this->productLinks = $productLinks;
107143
$this->jsHelper = $jsHelper;
108144
$this->dateFilter = $dateFilter;
109-
$this->linkTypeProvider = $linkTypeProvider ?: \Magento\Framework\App\ObjectManager::getInstance()
110-
->get(\Magento\Catalog\Model\Product\LinkTypeProvider::class);
145+
$this->linkTypeProvider = $linkTypeProvider;
146+
$this->customOptionFactory = $customOptionFactory;
147+
$this->productLinkFactory = $productLinkFactory;
148+
$this->productRepository = $productRepository;
149+
$this->dateTimeFilter = $dateTimeFilter;
150+
$this->linkResolver = $linkResolver;
111151
}
112152

113153
/**
@@ -159,7 +199,7 @@ public function initializeFromData(Product $product, array $productData)
159199
foreach ($attributes as $attrKey => $attribute) {
160200
if ($attribute->getBackend()->getType() == 'datetime') {
161201
if (array_key_exists($attrKey, $productData) && $productData[$attrKey] != '') {
162-
$dateFieldFilters[$attrKey] = $this->getDateTimeFilter();
202+
$dateFieldFilters[$attrKey] = $this->dateTimeFilter;
163203
}
164204
}
165205
}
@@ -222,11 +262,12 @@ public function initialize(Product $product)
222262
*
223263
* @param Product $product
224264
* @return Product
265+
* @throws \Magento\Framework\Exception\NoSuchEntityException
225266
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
226267
*/
227268
protected function setProductLinks(Product $product)
228269
{
229-
$links = $this->getLinkResolver()->getLinks();
270+
$links = $this->linkResolver->getLinks();
230271

231272
$product->setProductLinks([]);
232273

@@ -251,8 +292,8 @@ protected function setProductLinks(Product $product)
251292
continue;
252293
}
253294

254-
$linkProduct = $this->getProductRepository()->getById($linkData['id']);
255-
$link = $this->getProductLinkFactory()->create();
295+
$linkProduct = $this->productRepository->getById($linkData['id']);
296+
$link = $this->productLinkFactory->create();
256297
$link->setSku($product->getSku())
257298
->setLinkedProductSku($linkProduct->getSku())
258299
->setLinkType($linkType)
@@ -360,73 +401,6 @@ private function overwriteValue($optionId, $option, $overwriteOptions)
360401
return $option;
361402
}
362403

363-
/**
364-
* @return CustomOptionFactory
365-
*/
366-
private function getCustomOptionFactory()
367-
{
368-
if (null === $this->customOptionFactory) {
369-
$this->customOptionFactory = \Magento\Framework\App\ObjectManager::getInstance()
370-
->get(\Magento\Catalog\Api\Data\ProductCustomOptionInterfaceFactory::class);
371-
}
372-
373-
return $this->customOptionFactory;
374-
}
375-
376-
/**
377-
* @return ProductLinkFactory
378-
*/
379-
private function getProductLinkFactory()
380-
{
381-
if (null === $this->productLinkFactory) {
382-
$this->productLinkFactory = \Magento\Framework\App\ObjectManager::getInstance()
383-
->get(\Magento\Catalog\Api\Data\ProductLinkInterfaceFactory::class);
384-
}
385-
386-
return $this->productLinkFactory;
387-
}
388-
389-
/**
390-
* @return ProductRepository
391-
*/
392-
private function getProductRepository()
393-
{
394-
if (null === $this->productRepository) {
395-
$this->productRepository = \Magento\Framework\App\ObjectManager::getInstance()
396-
->get(\Magento\Catalog\Api\ProductRepositoryInterface\Proxy::class);
397-
}
398-
399-
return $this->productRepository;
400-
}
401-
402-
/**
403-
* @deprecated
404-
* @return LinkResolver
405-
*/
406-
private function getLinkResolver()
407-
{
408-
if (!is_object($this->linkResolver)) {
409-
$this->linkResolver = ObjectManager::getInstance()->get(LinkResolver::class);
410-
}
411-
412-
return $this->linkResolver;
413-
}
414-
415-
/**
416-
* @return \Magento\Framework\Stdlib\DateTime\Filter\DateTime
417-
*
418-
* @deprecated
419-
*/
420-
private function getDateTimeFilter()
421-
{
422-
if ($this->dateTimeFilter === null) {
423-
$this->dateTimeFilter = \Magento\Framework\App\ObjectManager::getInstance()
424-
->get(\Magento\Framework\Stdlib\DateTime\Filter\DateTime::class);
425-
}
426-
427-
return $this->dateTimeFilter;
428-
}
429-
430404
/**
431405
* Fills $product with options from $productOptions array
432406
*
@@ -464,7 +438,7 @@ function ($valueData) {
464438
}
465439
);
466440
}
467-
$customOption = $this->getCustomOptionFactory()->create(
441+
$customOption = $this->customOptionFactory->create(
468442
['data' => $customOptionData]
469443
);
470444
$customOption->setProductSku($product->getSku());

0 commit comments

Comments
 (0)