6 declare(strict_types=1);
27 private $customConditionProvider;
42 $this->customConditionProvider = $customConditionProvider;
52 return $this->rebuildCombinedCondition($conditions);
60 private function rebuildCombinedCondition(CombinedCondition $originalConditions): CombinedCondition
62 $validConditions = [];
63 $invalidConditions = [];
65 foreach ($originalConditions->getConditions() as $condition) {
66 if ($condition->getType() === CombinedCondition::class) {
67 $rebuildSubCondition = $this->rebuildCombinedCondition($condition);
69 if (count($rebuildSubCondition->getConditions()) > 0) {
70 $validConditions[] = $rebuildSubCondition;
72 $invalidConditions[] = $rebuildSubCondition;
78 if ($condition->getType() === SimpleCondition::class) {
79 if ($this->validateSimpleCondition($condition)) {
80 $validConditions[] = $condition;
82 $invalidConditions[] = $condition;
88 throw new InputException(
89 __(
'Undefined condition type "%1" passed in.', $condition->getType())
94 if (count($invalidConditions) > 0 && strtolower($originalConditions->getAggregator()) ===
'any') {
95 $validConditions = [];
98 $rebuildCondition = clone $originalConditions;
99 $rebuildCondition->setConditions($validConditions);
101 return $rebuildCondition;
108 private function validateSimpleCondition(SimpleCondition $originalConditions): bool
110 return $this->canUseFieldForMapping($originalConditions->getAttribute());
119 private function canUseFieldForMapping(
string $fieldName): bool
122 if ($this->customConditionProvider->hasProcessorForField($fieldName)) {
rebuildConditionsTree(CombinedCondition $conditions)
__construct(CustomConditionProviderInterface $customConditionProvider, \Magento\Eav\Model\Config $eavConfig)