Skip to content

Commit eccf87b

Browse files
authored
Sync with magento#9600 code
1 parent 3347ede commit eccf87b

File tree

1 file changed

+15
-6
lines changed
  • app/code/Magento/Catalog/Controller/Adminhtml/Product/Initialization

1 file changed

+15
-6
lines changed

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

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -256,13 +256,22 @@ protected function setProductLinks(\Magento\Catalog\Model\Product $product)
256256

257257
$product = $this->productLinks->initializeLinks($product, $links);
258258
$productLinks = $product->getProductLinks();
259+
$linkTypes = [];
260+
261+
/** @var \Magento\Catalog\Api\Data\ProductLinkTypeInterface $linkTypeObject */
262+
foreach ($this->linkTypeProvider->getItems() as $linkTypeObject) {
263+
$linkTypes[$linkTypeObject->getName()] = $product->getData($linkTypeObject->getName() . '_readonly');
264+
}
265+
266+
// skip linkTypes that were already processed on initializeLinks plugins
267+
foreach ($productLinks as $productLink) {
268+
unset($linkTypes[$productLink->getLinkType()]);
269+
}
259270

260271
/** @var \Magento\Catalog\Api\Data\ProductLinkTypeInterface $linkType */
261-
foreach ($this->linkTypeProvider->getItems() as $linkType) {
262-
$readonly = $product->getData($linkType->getName() . '_readonly');
263-
264-
if (isset($links[$linkType->getName()]) && !$readonly) {
265-
foreach ((array) $links[$linkType->getName()] as $linkData) {
272+
foreach ($linkTypes as $linkType => $readonly) {
273+
if (isset($links[$linkType]) && !$readonly) {
274+
foreach ((array) $links[$linkType] as $linkData) {
266275
if (empty($linkData['id'])) {
267276
continue;
268277
}
@@ -271,7 +280,7 @@ protected function setProductLinks(\Magento\Catalog\Model\Product $product)
271280
$link = $this->getProductLinkFactory()->create();
272281
$link->setSku($product->getSku())
273282
->setLinkedProductSku($linkProduct->getSku())
274-
->setLinkType($linkType->getName())
283+
->setLinkType($linkType)
275284
->setPosition(isset($linkData['position']) ? (int)$linkData['position'] : 0);
276285
$productLinks[] = $link;
277286
}

0 commit comments

Comments
 (0)