RequestCheckerComposite.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\CatalogSearch\Model\Adapter\Aggregation;
  7. use Magento\Framework\Search\RequestInterface;
  8. use Magento\Catalog\Api\CategoryRepositoryInterface;
  9. use Magento\Store\Model\StoreManagerInterface;
  10. /**
  11. * Composite request checker.
  12. */
  13. class RequestCheckerComposite implements RequestCheckerInterface
  14. {
  15. /**
  16. * @var CategoryRepositoryInterface
  17. */
  18. private $categoryRepository;
  19. /**
  20. * @var StoreManagerInterface
  21. */
  22. private $storeManager;
  23. /**
  24. * @var RequestCheckerInterface[]
  25. */
  26. private $queryCheckers;
  27. /**
  28. * @param CategoryRepositoryInterface $categoryRepository
  29. * @param StoreManagerInterface $storeManager
  30. * @param RequestCheckerInterface[] $queryCheckers
  31. * @throws \InvalidArgumentException
  32. */
  33. public function __construct(
  34. CategoryRepositoryInterface $categoryRepository,
  35. StoreManagerInterface $storeManager,
  36. array $queryCheckers
  37. ) {
  38. $this->categoryRepository = $categoryRepository;
  39. $this->storeManager = $storeManager;
  40. $this->queryCheckers = $queryCheckers;
  41. foreach ($this->queryCheckers as $queryChecker) {
  42. if (!$queryChecker instanceof RequestCheckerInterface) {
  43. throw new \InvalidArgumentException(
  44. get_class($queryChecker) .
  45. ' does not implement ' .
  46. \Magento\CatalogSearch\Model\Adapter\Aggregation\RequestCheckerInterface::class
  47. );
  48. }
  49. }
  50. }
  51. /**
  52. * @inheritdoc
  53. */
  54. public function isApplicable(RequestInterface $request)
  55. {
  56. $result = true;
  57. foreach ($this->queryCheckers as $item) {
  58. /** @var RequestCheckerInterface $item */
  59. $result = $item->isApplicable($request);
  60. if (!$result) {
  61. break;
  62. }
  63. }
  64. return $result;
  65. }
  66. }