Skip to content

Commit 7420407

Browse files
committed
MAGETWO-83726: 8255: Export Products action doesn't consider hide_for_product_page value. magento#11926
- Merge Pull Request magento#11926 from nmalevanec/magento2:8255 - Merged commits: 1. 12cb7fc 2. d6b1d3e 3. b7703ac 4. 426183c 5. 3fabf2c 6. f891450 7. 64ddd51 8. a159dae 9. 2a1b041 10. da8184f 11. cbd8b28 12. 51fa4bc 13. 5dc5acd 14. 334ef2f 15. 8aa3da1 16. 9f6e51d 17. a22d223 18. e46c8fd
2 parents e6e275b + e46c8fd commit 7420407

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)