AdditionalFieldsProvider.php 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\AdvancedSearch\Model\Adapter\DataMapper;
  7. /**
  8. * Provide additional fields for data mapper during search indexer
  9. * Must return array with the following format: [[product id] => [field name1 => value1, ...], ...]
  10. */
  11. class AdditionalFieldsProvider implements AdditionalFieldsProviderInterface
  12. {
  13. /**
  14. * @var AdditionalFieldsProviderInterface[]
  15. */
  16. private $fieldsProviders;
  17. /**
  18. * @param AdditionalFieldsProviderInterface[] $fieldsProviders
  19. */
  20. public function __construct(array $fieldsProviders)
  21. {
  22. $this->fieldsProviders = $fieldsProviders;
  23. }
  24. /**
  25. * {@inheritdoc}
  26. */
  27. public function getFields(array $productIds, $storeId)
  28. {
  29. $fields = [];
  30. foreach ($this->fieldsProviders as $fieldsProvider) {
  31. $fields[] = $fieldsProvider->getFields($productIds, $storeId);
  32. }
  33. return array_replace_recursive(...$fields);
  34. }
  35. }