From 108c382089b13d6be8bca2f27b3d60ecf5843f1f Mon Sep 17 00:00:00 2001 From: Mohamed Azarudeen Date: Sat, 10 Aug 2024 16:23:12 +0530 Subject: [PATCH 1/5] AC-12310 Issue#38882 hide_from_product_page not updating in product update through csv importer issue fix --- .../Model/Import/Product.php | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index a7003c4b56c6a..5bb169db60d2a 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -1877,7 +1877,6 @@ private function saveProductMediaGalleryPhase( $rowSku = $rowData[self::COL_SKU]; $rowSkuNormalized = mb_strtolower($rowSku); $rowExistingImages = $existingImages[$storeId][$rowSkuNormalized] ?? []; - $rowStoreMediaGalleryValues = $rowExistingImages; $rowExistingImages += $existingImages[Store::DEFAULT_STORE_ID][$rowSkuNormalized] ?? []; list($rowImages, $rowLabels) = $this->getImagesFromRow($rowData); $imageHiddenStates = $this->getImagesHiddenStates($rowData); @@ -1941,24 +1940,20 @@ private function saveProductMediaGalleryPhase( if (isset($rowExistingImages[$uploadedFileNormalized])) { $currentFileData = $rowExistingImages[$uploadedFileNormalized]; $currentFileData['store_id'] = $storeId; - $storeMediaGalleryValueExists = isset($rowStoreMediaGalleryValues[$uploadedFileNormalized]); - if (array_key_exists($uploadedFile, $imageHiddenStates) - && $currentFileData['disabled'] != $imageHiddenStates[$uploadedFile] - ) { - $imagesForChangeVisibility[] = [ - 'disabled' => $imageHiddenStates[$uploadedFile], - 'imageData' => $currentFileData, - 'exists' => $storeMediaGalleryValueExists - ]; - $storeMediaGalleryValueExists = true; - } + $imagesForChangeVisibility[] = [ + 'disabled' => array_key_exists( + $uploadedFile, $imageHiddenStates + ) ? $imageHiddenStates[$uploadedFile] : '0', + 'imageData' => $currentFileData, + 'exists' => true + ]; if (isset($rowLabels[$column][$columnImageKey]) && $rowLabels[$column][$columnImageKey] !== $currentFileData['label'] ) { $labelsForUpdate[] = [ 'label' => $rowLabels[$column][$columnImageKey], 'imageData' => $currentFileData, - 'exists' => $storeMediaGalleryValueExists + 'exists' => true ]; } } else { From 171894632e8e633722dc2ece93f89a0ae7ba96e9 Mon Sep 17 00:00:00 2001 From: Mohamed Azarudeen Date: Sat, 10 Aug 2024 17:00:08 +0530 Subject: [PATCH 2/5] AC-12310 Issue#38882 update image visiblity only if the column exist on the csv sheet --- .../Model/Import/Product.php | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index 5bb169db60d2a..06c9524d3a1e5 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -176,6 +176,11 @@ class Product extends AbstractEntity */ public const URL_KEY = 'url_key'; + /** + * Hide from product page attribute code + */ + public const COL_MEDIA_IMAGE_HIDE = '_media_is_disabled'; + /** * @var array */ @@ -332,7 +337,7 @@ class Product extends AbstractEntity 'thumbnail_label' => 'thumbnail_image_label', self::COL_MEDIA_IMAGE => 'additional_images', '_media_image_label' => 'additional_image_labels', - '_media_is_disabled' => 'hide_from_product_page', + self::COL_MEDIA_IMAGE_HIDE => 'hide_from_product_page', Product::COL_STORE => 'store_view_code', Product::COL_ATTR_SET => 'attribute_set_code', Product::COL_TYPE => 'product_type', @@ -415,7 +420,7 @@ class Product extends AbstractEntity self::COL_MEDIA_IMAGE, '_media_label', '_media_position', - '_media_is_disabled', + self::COL_MEDIA_IMAGE_HIDE ]; /** @@ -1940,13 +1945,15 @@ private function saveProductMediaGalleryPhase( if (isset($rowExistingImages[$uploadedFileNormalized])) { $currentFileData = $rowExistingImages[$uploadedFileNormalized]; $currentFileData['store_id'] = $storeId; - $imagesForChangeVisibility[] = [ - 'disabled' => array_key_exists( - $uploadedFile, $imageHiddenStates - ) ? $imageHiddenStates[$uploadedFile] : '0', - 'imageData' => $currentFileData, - 'exists' => true - ]; + if (array_key_exists(self::COL_MEDIA_IMAGE_HIDE, $rowData)) { + $imagesForChangeVisibility[] = [ + 'disabled' => array_key_exists( + $uploadedFile, $imageHiddenStates + ) ? $imageHiddenStates[$uploadedFile] : '0', + 'imageData' => $currentFileData, + 'exists' => true + ]; + } if (isset($rowLabels[$column][$columnImageKey]) && $rowLabels[$column][$columnImageKey] !== $currentFileData['label'] ) { @@ -2159,7 +2166,7 @@ private function getImagesHiddenStates($rowData) { $statesArray = []; $mappingArray = [ - '_media_is_disabled' => '1' + self::COL_MEDIA_IMAGE_HIDE => '1' ]; foreach ($mappingArray as $key => $value) { From 1609f75305ff6fe254535f36572317f45b10433e Mon Sep 17 00:00:00 2001 From: Mohamed Azarudeen Date: Sat, 10 Aug 2024 19:13:22 +0530 Subject: [PATCH 3/5] AC-12310 Issue#38882 code refactor --- app/code/Magento/CatalogImportExport/Model/Import/Product.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index 06c9524d3a1e5..837b79c9ada30 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -1885,6 +1885,7 @@ private function saveProductMediaGalleryPhase( $rowExistingImages += $existingImages[Store::DEFAULT_STORE_ID][$rowSkuNormalized] ?? []; list($rowImages, $rowLabels) = $this->getImagesFromRow($rowData); $imageHiddenStates = $this->getImagesHiddenStates($rowData); + $imageHideColumnExist = array_key_exists(self::COL_MEDIA_IMAGE_HIDE, $rowData); foreach (array_keys($imageHiddenStates) as $image) { //Mark image as uploaded if it exists if (array_key_exists($image, $rowExistingImages)) { @@ -1945,7 +1946,7 @@ private function saveProductMediaGalleryPhase( if (isset($rowExistingImages[$uploadedFileNormalized])) { $currentFileData = $rowExistingImages[$uploadedFileNormalized]; $currentFileData['store_id'] = $storeId; - if (array_key_exists(self::COL_MEDIA_IMAGE_HIDE, $rowData)) { + if ($imageHideColumnExist) { $imagesForChangeVisibility[] = [ 'disabled' => array_key_exists( $uploadedFile, $imageHiddenStates From 08e4d4d7e242f0dc23fe2a3175c2be7199690b35 Mon Sep 17 00:00:00 2001 From: Mohamed Azarudeen Date: Thu, 28 Nov 2024 22:27:09 +0530 Subject: [PATCH 4/5] Integration and static tests fixed --- .../Magento/CatalogImportExport/Model/Import/Product.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index 2eb4d7549ed6d..c087b4532214c 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -1894,6 +1894,7 @@ private function saveProductMediaGalleryPhase( $rowSku = $rowData[self::COL_SKU]; $rowSkuNormalized = mb_strtolower($rowSku); $rowExistingImages = $existingImages[$storeId][$rowSkuNormalized] ?? []; + $rowStoreMediaGalleryValues = $rowExistingImages; $rowExistingImages += $existingImages[Store::DEFAULT_STORE_ID][$rowSkuNormalized] ?? []; list($rowImages, $rowLabels) = $this->getImagesFromRow($rowData); $imageHiddenStates = $this->getImagesHiddenStates($rowData); @@ -1955,16 +1956,18 @@ private function saveProductMediaGalleryPhase( continue; } $uploadedFileNormalized = ltrim($uploadedFile, '/\\'); + $storeMediaGalleryValueExists = isset($rowStoreMediaGalleryValues[$uploadedFileNormalized]); if (isset($rowExistingImages[$uploadedFileNormalized])) { $currentFileData = $rowExistingImages[$uploadedFileNormalized]; $currentFileData['store_id'] = $storeId; if ($imageHideColumnExist) { $imagesForChangeVisibility[] = [ 'disabled' => array_key_exists( - $uploadedFile, $imageHiddenStates + $uploadedFile, + $imageHiddenStates ) ? $imageHiddenStates[$uploadedFile] : '0', 'imageData' => $currentFileData, - 'exists' => true + 'exists' => $storeMediaGalleryValueExists ]; } if (isset($rowLabels[$column][$columnImageKey]) @@ -1973,7 +1976,7 @@ private function saveProductMediaGalleryPhase( $labelsForUpdate[] = [ 'label' => $rowLabels[$column][$columnImageKey], 'imageData' => $currentFileData, - 'exists' => true + 'exists' => $storeMediaGalleryValueExists ]; } } else { From c1a50655f3858d96faea1c5909488ae80a9b2841 Mon Sep 17 00:00:00 2001 From: Mohamed Azarudeen Date: Fri, 29 Nov 2024 16:19:47 +0530 Subject: [PATCH 5/5] copyright changes --- app/code/Magento/CatalogImportExport/Model/Import/Product.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index c087b4532214c..a8930d4e187f6 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -1,7 +1,7 @@