Skip to content

Commit d6fa9db

Browse files
committed
Solve some complexity issues with the save handler
1 parent bab1a38 commit d6fa9db

File tree

1 file changed

+36
-20
lines changed

1 file changed

+36
-20
lines changed

app/code/Magento/Catalog/Model/Product/Gallery/CreateHandler.php

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,17 @@ public function execute($product, $arguments = [])
171171
$product,
172172
$mediaAttrCode,
173173
$clearImages,
174-
$newImages,
175-
$existImages
174+
$newImages
176175
);
176+
if (in_array($mediaAttrCode, ['image', 'small_image', 'thumbnail'])) {
177+
$this->processMediaAttributeLabel(
178+
$product,
179+
$mediaAttrCode,
180+
$clearImages,
181+
$newImages,
182+
$existImages
183+
);
184+
}
177185
}
178186

179187
$product->setData($attrCode, $value);
@@ -439,20 +447,40 @@ private function getMediaAttributeCodes()
439447

440448
/**
441449
* @param \Magento\Catalog\Model\Product $product
442-
* @param $attrData
443-
* @param array $clearImages
444450
* @param $mediaAttrCode
451+
* @param array $clearImages
445452
* @param array $newImages
446-
* @param array $existImages
447453
*/
454+
private function processMediaAttribute(
455+
\Magento\Catalog\Model\Product $product,
456+
$mediaAttrCode,
457+
array $clearImages,
458+
array $newImages
459+
) {
460+
$attrData = $product->getData($mediaAttrCode);
461+
if (in_array($attrData, $clearImages)) {
462+
$product->setData($mediaAttrCode, 'no_selection');
463+
}
464+
465+
if (in_array($attrData, array_keys($newImages))) {
466+
$product->setData($mediaAttrCode, $newImages[$attrData]['new_file']);
467+
}
468+
if (!empty($product->getData($mediaAttrCode))) {
469+
$product->addAttributeUpdate(
470+
$mediaAttrCode,
471+
$product->getData($mediaAttrCode),
472+
$product->getStoreId()
473+
);
474+
}
475+
}
448476
/**
449477
* @param \Magento\Catalog\Model\Product $product
450478
* @param $mediaAttrCode
451479
* @param array $clearImages
452480
* @param array $newImages
453481
* @param array $existImages
454482
*/
455-
private function processMediaAttribute(
483+
private function processMediaAttributeLabel(
456484
\Magento\Catalog\Model\Product $product,
457485
$mediaAttrCode,
458486
array $clearImages,
@@ -462,13 +490,11 @@ private function processMediaAttribute(
462490
$resetLabel = false;
463491
$attrData = $product->getData($mediaAttrCode);
464492
if (in_array($attrData, $clearImages)) {
465-
$product->setData($mediaAttrCode, 'no_selection');
466493
$product->setData($mediaAttrCode . '_label', null);
467494
$resetLabel = true;
468495
}
469496

470497
if (in_array($attrData, array_keys($newImages))) {
471-
$product->setData($mediaAttrCode, $newImages[$attrData]['new_file']);
472498
$product->setData($mediaAttrCode . '_label', $newImages[$attrData]['label']);
473499
}
474500

@@ -480,24 +506,14 @@ private function processMediaAttribute(
480506
$product->setData($mediaAttrCode . '_label', null);
481507
$resetLabel = true;
482508
}
483-
if (in_array($mediaAttrCode, ['image', 'small_image', 'thumbnail']) &&
484-
(
485-
!empty($product->getData($mediaAttrCode . '_label'))
486-
|| $resetLabel === true
487-
)
509+
if (!empty($product->getData($mediaAttrCode . '_label'))
510+
|| $resetLabel === true
488511
) {
489512
$product->addAttributeUpdate(
490513
$mediaAttrCode . '_label',
491514
$product->getData($mediaAttrCode . '_label'),
492515
$product->getStoreId()
493516
);
494517
}
495-
if (!empty($product->getData($mediaAttrCode))) {
496-
$product->addAttributeUpdate(
497-
$mediaAttrCode,
498-
$product->getData($mediaAttrCode),
499-
$product->getStoreId()
500-
);
501-
}
502518
}
503519
}

0 commit comments

Comments
 (0)