Skip to content

Commit ac16f19

Browse files
author
Oleksii Korshenko
authored
MAGETWO-83726: 8255: Export Products action doesn't consider hide_for_product_page value. #11926
2 parents 2d8d55d + 7420407 commit ac16f19

File tree

9 files changed

+537
-182
lines changed

9 files changed

+537
-182
lines changed

app/code/Magento/CatalogImportExport/Model/Export/Product.php

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -532,11 +532,12 @@ protected function getMediaGallery(array $productIds)
532532
]
533533
)->joinLeft(
534534
['mgv' => $this->_resourceModel->getTableName('catalog_product_entity_media_gallery_value')],
535-
'(mg.value_id = mgv.value_id AND mgv.store_id = 0)',
535+
'(mg.value_id = mgv.value_id)',
536536
[
537537
'mgv.label',
538538
'mgv.position',
539-
'mgv.disabled'
539+
'mgv.disabled',
540+
'mgv.store_id'
540541
]
541542
)->where(
542543
"mgvte.{$this->getProductEntityLinkField()} IN (?)",
@@ -552,6 +553,7 @@ protected function getMediaGallery(array $productIds)
552553
'_media_label' => $mediaRow['label'],
553554
'_media_position' => $mediaRow['position'],
554555
'_media_is_disabled' => $mediaRow['disabled'],
556+
'_media_store_id' => $mediaRow['store_id'],
555557
];
556558
}
557559

@@ -931,8 +933,8 @@ protected function loadCollection(): array
931933
foreach ($collection as $itemId => $item) {
932934
$data[$itemId][$storeId] = $item;
933935
}
936+
$collection->clear();
934937
}
935-
$collection->clear();
936938

937939
return $data;
938940
}
@@ -1024,12 +1026,10 @@ protected function collectRawData()
10241026
unset($data[$itemId][$storeId][self::COL_ADDITIONAL_ATTRIBUTES]);
10251027
}
10261028

1027-
if (!empty($data[$itemId][$storeId]) || $this->hasMultiselectData($item, $storeId)) {
1028-
$attrSetId = $item->getAttributeSetId();
1029-
$data[$itemId][$storeId][self::COL_STORE] = $storeCode;
1030-
$data[$itemId][$storeId][self::COL_ATTR_SET] = $this->_attrSetIdToName[$attrSetId];
1031-
$data[$itemId][$storeId][self::COL_TYPE] = $item->getTypeId();
1032-
}
1029+
$attrSetId = $item->getAttributeSetId();
1030+
$data[$itemId][$storeId][self::COL_STORE] = $storeCode;
1031+
$data[$itemId][$storeId][self::COL_ATTR_SET] = $this->_attrSetIdToName[$attrSetId];
1032+
$data[$itemId][$storeId][self::COL_TYPE] = $item->getTypeId();
10331033
$data[$itemId][$storeId][self::COL_SKU] = htmlspecialchars_decode($item->getSku());
10341034
$data[$itemId][$storeId]['store_id'] = $storeId;
10351035
$data[$itemId][$storeId]['product_id'] = $itemId;
@@ -1104,6 +1104,7 @@ protected function collectMultirawData()
11041104
* @param \Magento\Catalog\Model\Product $item
11051105
* @param int $storeId
11061106
* @return bool
1107+
* @deprecated
11071108
*/
11081109
protected function hasMultiselectData($item, $storeId)
11091110
{
@@ -1162,20 +1163,23 @@ protected function isValidAttributeValue($code, $value)
11621163
* @SuppressWarnings(PHPMD.NPathComplexity)
11631164
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
11641165
*/
1165-
private function appendMultirowData(&$dataRow, &$multiRawData)
1166+
private function appendMultirowData(&$dataRow, $multiRawData)
11661167
{
11671168
$productId = $dataRow['product_id'];
11681169
$productLinkId = $dataRow['product_link_id'];
11691170
$storeId = $dataRow['store_id'];
11701171
$sku = $dataRow[self::COL_SKU];
1172+
$type = $dataRow[self::COL_TYPE];
1173+
$attributeSet = $dataRow[self::COL_ATTR_SET];
11711174

11721175
unset($dataRow['product_id']);
11731176
unset($dataRow['product_link_id']);
11741177
unset($dataRow['store_id']);
11751178
unset($dataRow[self::COL_SKU]);
1176-
1179+
unset($dataRow[self::COL_STORE]);
1180+
unset($dataRow[self::COL_ATTR_SET]);
1181+
unset($dataRow[self::COL_TYPE]);
11771182
if (Store::DEFAULT_STORE_ID == $storeId) {
1178-
unset($dataRow[self::COL_STORE]);
11791183
$this->updateDataWithCategoryColumns($dataRow, $multiRawData['rowCategories'], $productId);
11801184
if (!empty($multiRawData['rowWebsites'][$productId])) {
11811185
$websiteCodes = [];
@@ -1191,11 +1195,13 @@ private function appendMultirowData(&$dataRow, &$multiRawData)
11911195
$additionalImageLabels = [];
11921196
$additionalImageIsDisabled = [];
11931197
foreach ($multiRawData['mediaGalery'][$productLinkId] as $mediaItem) {
1194-
$additionalImages[] = $mediaItem['_media_image'];
1195-
$additionalImageLabels[] = $mediaItem['_media_label'];
1198+
if ((int)$mediaItem['_media_store_id'] === Store::DEFAULT_STORE_ID) {
1199+
$additionalImages[] = $mediaItem['_media_image'];
1200+
$additionalImageLabels[] = $mediaItem['_media_label'];
11961201

1197-
if ($mediaItem['_media_is_disabled'] == true) {
1198-
$additionalImageIsDisabled[] = $mediaItem['_media_image'];
1202+
if ($mediaItem['_media_is_disabled'] == true) {
1203+
$additionalImageIsDisabled[] = $mediaItem['_media_image'];
1204+
}
11991205
}
12001206
}
12011207
$dataRow['additional_images'] =
@@ -1229,6 +1235,21 @@ private function appendMultirowData(&$dataRow, &$multiRawData)
12291235
}
12301236
}
12311237
$dataRow = $this->rowCustomizer->addData($dataRow, $productId);
1238+
} else {
1239+
$additionalImageIsDisabled = [];
1240+
if (!empty($multiRawData['mediaGalery'][$productLinkId])) {
1241+
foreach ($multiRawData['mediaGalery'][$productLinkId] as $mediaItem) {
1242+
if ((int)$mediaItem['_media_store_id'] === $storeId) {
1243+
if ($mediaItem['_media_is_disabled'] == true) {
1244+
$additionalImageIsDisabled[] = $mediaItem['_media_image'];
1245+
}
1246+
}
1247+
}
1248+
}
1249+
if ($additionalImageIsDisabled) {
1250+
$dataRow['hide_from_product_page'] =
1251+
implode(Import::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $additionalImageIsDisabled);
1252+
}
12321253
}
12331254

12341255
if (!empty($this->collectedMultiselectsData[$storeId][$productId])) {
@@ -1256,6 +1277,9 @@ private function appendMultirowData(&$dataRow, &$multiRawData)
12561277
$dataRow[self::COL_STORE] = $this->_storeIdToCode[$storeId];
12571278
}
12581279
$dataRow[self::COL_SKU] = $sku;
1280+
$dataRow[self::COL_ATTR_SET] = $attributeSet;
1281+
$dataRow[self::COL_TYPE] = $type;
1282+
12591283
return $dataRow;
12601284
}
12611285

0 commit comments

Comments
 (0)