68 lines
2.1 KiB
PHP
Executable File
68 lines
2.1 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* @author Amasty Team
|
|
* @copyright Copyright (c) Amasty (https://www.amasty.com)
|
|
* @package Elastic Search Base for Magento 2
|
|
*/
|
|
|
|
namespace Amasty\ElasticSearch\Model\Indexer\Data\External;
|
|
|
|
use Amasty\ElasticSearch\Api\Data\Indexer\Data\DataMapperInterface;
|
|
use Amasty\ElasticSearch\Model\Indexer\Structure\EntityBuilder\External\Finder;
|
|
use Magento\Catalog\Api\Data\ProductAttributeInterface;
|
|
|
|
class FinderDataMapper implements DataMapperInterface
|
|
{
|
|
/**
|
|
* @var \Magento\Eav\Model\ResourceModel\Entity\Attribute
|
|
*/
|
|
private $eavAttribute;
|
|
|
|
/**
|
|
* @var Finder
|
|
*/
|
|
private $externalBuilder;
|
|
|
|
public function __construct(
|
|
\Magento\Eav\Model\ResourceModel\Entity\Attribute $eavAttribute,
|
|
Finder $externalBuilder
|
|
) {
|
|
$this->eavAttribute = $eavAttribute;
|
|
$this->externalBuilder = $externalBuilder;
|
|
}
|
|
|
|
/**
|
|
* @param array $documentData
|
|
* @param int $storeId
|
|
* @param array $context
|
|
* @return array
|
|
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
|
*/
|
|
public function map(array $documentData, $storeId, array $context = [])
|
|
{
|
|
$documents = [];
|
|
$externalAttributeIds = [];
|
|
foreach (array_keys($this->externalBuilder->getExtraValueFields()) as $attributeCode) {
|
|
$externalAttributeIds[$attributeCode . '_value']
|
|
= $this->eavAttribute->getIdByCode(ProductAttributeInterface::ENTITY_TYPE_CODE, $attributeCode);
|
|
}
|
|
|
|
foreach ($documentData as $productId => $indexData) {
|
|
foreach ($externalAttributeIds as $filterName => $attributeId) {
|
|
if (isset($indexData[$attributeId])) {
|
|
if (is_array($indexData[$attributeId])) {
|
|
$value = isset($indexData[$attributeId][$productId])
|
|
? $indexData[$attributeId][$productId] : '';
|
|
} else {
|
|
$value = $indexData[$attributeId];
|
|
}
|
|
|
|
$documents[$productId][$filterName] = $value;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $documents;
|
|
}
|
|
}
|