StrategyMapper.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\CatalogSearch\Model\Search\BaseSelectStrategy;
  7. use Magento\CatalogSearch\Model\Search\SelectContainer\SelectContainer;
  8. use Magento\CatalogSearch\Model\Adapter\Mysql\BaseSelectStrategy\BaseSelectFullTextSearchStrategy;
  9. use Magento\CatalogSearch\Model\Adapter\Mysql\BaseSelectStrategy\BaseSelectAttributesSearchStrategy;
  10. /**
  11. * This class is responsible for deciding which BaseSelectStrategyInterface should be used for passed SelectContainer
  12. *
  13. * @deprecated 101.0.0
  14. * @see \Magento\ElasticSearch
  15. */
  16. class StrategyMapper
  17. {
  18. /**
  19. * @var BaseSelectFullTextSearchStrategy
  20. */
  21. private $baseSelectFullTextSearchStrategy;
  22. /**
  23. * @var BaseSelectAttributesSearchStrategy
  24. */
  25. private $baseSelectAttributesSearchStrategy;
  26. /**
  27. * @param BaseSelectFullTextSearchStrategy $baseSelectFullTextSearchStrategy
  28. * @param BaseSelectAttributesSearchStrategy $baseSelectAttributesSearchStrategy
  29. */
  30. public function __construct(
  31. BaseSelectFullTextSearchStrategy $baseSelectFullTextSearchStrategy,
  32. BaseSelectAttributesSearchStrategy $baseSelectAttributesSearchStrategy
  33. ) {
  34. $this->baseSelectFullTextSearchStrategy = $baseSelectFullTextSearchStrategy;
  35. $this->baseSelectAttributesSearchStrategy = $baseSelectAttributesSearchStrategy;
  36. }
  37. /**
  38. * Decides which BaseSelectStrategyInterface should be used
  39. *
  40. * @param SelectContainer $selectContainer
  41. * @return BaseSelectStrategyInterface
  42. */
  43. public function mapSelectContainerToStrategy(SelectContainer $selectContainer)
  44. {
  45. if ($selectContainer->isFullTextSearchRequired()
  46. && !$selectContainer->hasCustomAttributesFilters()
  47. && !$selectContainer->hasVisibilityFilter()
  48. ) {
  49. return $this->baseSelectFullTextSearchStrategy;
  50. }
  51. return $this->baseSelectAttributesSearchStrategy;
  52. }
  53. }