Skip to content

Commit 2f85eee

Browse files
committed
Merge branch 'MAGNIMEX-SPRINT-3-MAGNIMEX-145' into 'MAGNIMEX-SPRINT-3'
Magnimex sprint 3 magnimex 145 See merge request !139
2 parents 0a4630a + accbd54 commit 2f85eee

File tree

1 file changed

+62
-25
lines changed
  • app/code/Magento/CatalogImportExport/Model/Import

1 file changed

+62
-25
lines changed

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

Lines changed: 62 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1316,7 +1316,8 @@ protected function _saveProducts()
13161316

13171317
// 2. Product-to-Website phase
13181318
if (!empty($rowData[self::COL_PRODUCT_WEBSITES])) {
1319-
$websites[$rowSku][$this->storeResolver->getWebsiteCodeToId($rowData[self::COL_PRODUCT_WEBSITES])] = true;
1319+
$websiteId = $this->storeResolver->getWebsiteCodeToId($rowData[self::COL_PRODUCT_WEBSITES]);
1320+
$websites[$rowSku][$websiteId] = true;
13201321
}
13211322

13221323
// 3. Categories phase
@@ -1353,28 +1354,43 @@ protected function _saveProducts()
13531354
}
13541355

13551356
// 5. Media gallery phase
1356-
$dispertionPath = \Magento\Framework\File\Uploader::getDispretionPath($rowData[self::COL_MEDIA_IMAGE]);
1357-
$imageName = preg_replace('/[^a-z0-9\._-]+/i','', $rowData[self::COL_MEDIA_IMAGE]);
1358-
$fullDispertionPath = $dispertionPath.'/'.$imageName;
1357+
1358+
$fullDispersionPath = '';
13591359
$imageIsSet = null;
13601360
$imageFromProduct = null;
13611361
$imageInProductIsSet = null;
1362-
foreach ($this->cachedImages as $image) {
1363-
if ($image['sku'] == $rowData[self::COL_SKU] && preg_replace('/_[0-9]+/', '', $image['value']) == $fullDispertionPath) {
1364-
$imageInProductIsSet = true;
1365-
$imageFromProduct = preg_replace('/_[0-9]+/', '', $image['value']);
1366-
break;
1367-
} elseif (in_array($fullDispertionPath, $image)) {
1368-
$imageIsSet = true;
1369-
break;
1362+
if (!empty($rowData[self::COL_MEDIA_IMAGE])) {
1363+
$dispersionPath =
1364+
\Magento\Framework\File\Uploader::getDispretionPath($rowData[self::COL_MEDIA_IMAGE]);
1365+
$imageName = preg_replace('/[^a-z0-9\._-]+/i', '', $rowData[self::COL_MEDIA_IMAGE]);
1366+
$fullDispersionPath = $dispersionPath . '/' . $imageName;
1367+
foreach ($this->cachedImages as $image) {
1368+
if (($image['sku'] == $rowData[self::COL_SKU])
1369+
&& (preg_replace('/_[0-9]+/', '', $image['value']) == $fullDispersionPath)
1370+
) {
1371+
$imageInProductIsSet = true;
1372+
$imageFromProduct = preg_replace('/_[0-9]+/', '', $image['value']);
1373+
break;
1374+
} elseif (in_array($fullDispersionPath, $image)) {
1375+
$imageIsSet = true;
1376+
break;
1377+
}
13701378
}
13711379
}
1372-
if (($imageInProductIsSet && $imageFromProduct != $fullDispertionPath) || (!isset($imageIsSet) && !isset($imageInProductIsSet))) {
1380+
if (($imageInProductIsSet && ($imageFromProduct != $fullDispersionPath))
1381+
|| (!isset($imageIsSet) && !isset($imageInProductIsSet))
1382+
) {
13731383
$mediaGalleryImages = array();
13741384
$mediaGalleryLabels = array();
13751385
if (!empty($rowData[self::COL_MEDIA_IMAGE])) {
1376-
$mediaGalleryImages = explode($this->getMultipleValueSeparator(), $rowData[self::COL_MEDIA_IMAGE]);
1377-
$mediaGalleryLabels = isset($rowData['_media_image_label']) ? explode($this->getMultipleValueSeparator(), $rowData['_media_image_label']) : array();
1386+
$mediaGalleryImages =
1387+
explode($this->getMultipleValueSeparator(), $rowData[self::COL_MEDIA_IMAGE]);
1388+
if (isset($rowData['_media_image_label'])) {
1389+
$mediaGalleryLabels =
1390+
explode($this->getMultipleValueSeparator(), $rowData['_media_image_label']);
1391+
} else {
1392+
$mediaGalleryLabels = [];
1393+
}
13781394
if (count($mediaGalleryLabels) > count($mediaGalleryImages)) {
13791395
$mediaGalleryLabels = array_slice($mediaGalleryLabels, 0, count($mediaGalleryImages));
13801396
} elseif (count($mediaGalleryLabels) < count($mediaGalleryImages)) {
@@ -1383,9 +1399,15 @@ protected function _saveProducts()
13831399
}
13841400

13851401
foreach ($this->_imagesArrayKeys as $imageCol) {
1386-
if (!empty($rowData[$imageCol]) && ($imageCol != self::COL_MEDIA_IMAGE) && !in_array($rowData[$imageCol], $mediaGalleryImages)) {
1402+
if (!empty($rowData[$imageCol])
1403+
&& ($imageCol != self::COL_MEDIA_IMAGE)
1404+
&& !in_array($rowData[$imageCol], $mediaGalleryImages)) {
13871405
$mediaGalleryImages[] = $rowData[$imageCol];
1388-
$mediaGalleryLabels[] = isset($rowData[$imageCol . '_label']) ? $rowData[$imageCol . '_label'] : '';
1406+
if (isset($mediaGalleryLabels)) {
1407+
$mediaGalleryLabels[] = isset($rowData[$imageCol . '_label']);
1408+
} else {
1409+
$mediaGalleryLabels[] = '';
1410+
}
13891411
}
13901412
}
13911413

@@ -1418,12 +1440,18 @@ protected function _saveProducts()
14181440
];
14191441
}
14201442
}
1421-
} elseif ($imageInProductIsSet && $imageFromProduct == $fullDispertionPath) {
1443+
} elseif ($imageInProductIsSet && $imageFromProduct == $fullDispersionPath) {
14221444
$mediaGalleryImages = array();
14231445
$mediaGalleryLabels = array();
14241446
if (!empty($rowData[self::COL_MEDIA_IMAGE])) {
1425-
$mediaGalleryImages = explode($this->getMultipleValueSeparator(), $rowData[self::COL_MEDIA_IMAGE]);
1426-
$mediaGalleryLabels = isset($rowData['_media_image_label']) ? explode($this->getMultipleValueSeparator(), $rowData['_media_image_label']) : array();
1447+
$mediaGalleryImages =
1448+
explode($this->getMultipleValueSeparator(), $rowData[self::COL_MEDIA_IMAGE]);
1449+
if (isset($rowData['_media_image_label'])) {
1450+
$mediaGalleryLabels =
1451+
explode($this->getMultipleValueSeparator(), $rowData['_media_image_label']);
1452+
} else {
1453+
$mediaGalleryLabels = array();
1454+
}
14271455
if (count($mediaGalleryLabels) > count($mediaGalleryImages)) {
14281456
$mediaGalleryLabels = array_slice($mediaGalleryLabels, 0, count($mediaGalleryImages));
14291457
} elseif (count($mediaGalleryLabels) < count($mediaGalleryImages)) {
@@ -1432,9 +1460,15 @@ protected function _saveProducts()
14321460
}
14331461

14341462
foreach ($this->_imagesArrayKeys as $imageCol) {
1435-
if (!empty($rowData[$imageCol]) && ($imageCol != self::COL_MEDIA_IMAGE) && !in_array($rowData[$imageCol], $mediaGalleryImages)) {
1463+
if (!empty($rowData[$imageCol])
1464+
&& ($imageCol != self::COL_MEDIA_IMAGE)
1465+
&& !in_array($rowData[$imageCol], $mediaGalleryImages)) {
14361466
$mediaGalleryImages[] = $rowData[$imageCol];
1437-
$mediaGalleryLabels[] = isset($rowData[$imageCol . '_label']) ? $rowData[$imageCol . '_label'] : '';
1467+
if (isset($rowData[$imageCol . '_label'])) {
1468+
$mediaGalleryLabels[] = $rowData[$imageCol . '_label'];
1469+
} else {
1470+
$mediaGalleryLabels[] = '';
1471+
}
14381472
}
14391473
}
14401474

@@ -1450,7 +1484,6 @@ protected function _saveProducts()
14501484
}
14511485
} else {
14521486
$this->addRowError(__("Image already exists for '%s'"), $rowNum, self::COL_MEDIA_IMAGE);
1453-
14541487
}
14551488

14561489
// 6. Attributes phase
@@ -1479,7 +1512,8 @@ protected function _saveProducts()
14791512

14801513
$productTypeModel = $this->_productTypeModels[$productType];
14811514
if (!empty($rowData['tax_class_name'])) {
1482-
$rowData['tax_class_id'] = $this->taxClassProcessor->upsertTaxClass($rowData['tax_class_name'], $productTypeModel);
1515+
$rowData['tax_class_id'] =
1516+
$this->taxClassProcessor->upsertTaxClass($rowData['tax_class_name'], $productTypeModel);
14831517
}
14841518

14851519
if ($this->getBehavior() == \Magento\ImportExport\Model\Import::BEHAVIOR_APPEND ||
@@ -1563,7 +1597,10 @@ protected function _saveProducts()
15631597
$attributes
15641598
);
15651599

1566-
$this->_eventManager->dispatch('catalog_product_import_bunch_save_after', ['adapter' => $this, 'bunch' => $bunch]);
1600+
$this->_eventManager->dispatch(
1601+
'catalog_product_import_bunch_save_after',
1602+
['adapter' => $this, 'bunch' => $bunch]
1603+
);
15671604
}
15681605
return $this;
15691606
}

0 commit comments

Comments
 (0)