6 declare(strict_types=1);
43 private $customConditionProvider;
48 private $defaultConditionProcessor;
53 private $conditionManager;
65 $this->defaultConditionProcessor = $defaultConditionProcessor;
66 $this->conditionManager = $conditionManager;
67 $this->customConditionProvider = $customConditionProvider;
80 $conditions = $this->getConditionsFromFilterGroup(
$group);
96 foreach ($filterGroup->
getFilters() as $filter) {
98 $conditions[] = $this->getConditionsFromFilterGroup($filter);
102 if ($filter instanceof
Filter) {
103 $conditions[] = $this->getConditionsFromFilter($filter);
108 new Phrase(
'Undefined filter group "%1" passed in.', [get_class($filter)])
112 return $this->conditionManager->wrapBrackets(
113 $this->conditionManager->combineQueries($conditions, $filterGroup->
getCombinationMode())
122 private function getConditionsFromFilter(Filter $filter): string
124 if ($this->customConditionProvider->hasProcessorForField($filter->getField())) {
125 $customProcessor = $this->customConditionProvider->getProcessorByField($filter->getField());
126 return $customProcessor->build($filter);
129 return $this->defaultConditionProcessor->build($filter);
process(SearchCriteriaInterface $searchCriteria, AbstractDb $collection)
__construct(CustomConditionInterface $defaultConditionProcessor, ConditionManager $conditionManager, CustomConditionProviderInterface $customConditionProvider)