Skip to content
This repository was archived by the owner on Apr 20, 2026. It is now read-only.

Commit da0d776

Browse files
distinguish search index conditions applied as preconditions
1 parent c502a83 commit da0d776

11 files changed

Lines changed: 41 additions & 16 deletions

src/FilterService/FilterType/SearchIndex/Input.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ public function addCondition(AbstractFilterDefinitionType $filterDefinition, Pro
4747

4848
if (!empty($value)) {
4949
$value = '.*"' . $value . '".*';
50-
$productList->addCondition(['regexp' => ['attributes.' . $field => $value]], $field);
50+
$productList->addCondition(
51+
['regexp' => ['attributes.' . $field => $value]],
52+
$this->getConditionField($field, $isPrecondition)
53+
);
5154
}
5255

5356
return $currentFilter;

src/FilterService/FilterType/SearchIndex/MultiSelect.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,13 @@ public function addCondition(AbstractFilterDefinitionType $filterDefinition, Pro
8383
if (!empty($quotedValues)) {
8484
if ($filterDefinition->getUseAndCondition()) {
8585
foreach ($quotedValues as $value) {
86-
$productList->addCondition($value, $field);
86+
$productList->addCondition($value, $this->getConditionField($field, $isPrecondition));
8787
}
8888
} else {
89-
$productList->addCondition(['terms' => ['attributes.' . $field => $quotedValues]], $field);
89+
$productList->addCondition(
90+
['terms' => ['attributes.' . $field => $quotedValues]],
91+
$this->getConditionField($field, $isPrecondition)
92+
);
9093
}
9194
}
9295
}

src/FilterService/FilterType/SearchIndex/MultiSelectFromMultiSelect.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,21 @@ public function addCondition(AbstractFilterDefinitionType $filterDefinition, Pro
7272

7373
if ($filterDefinition->getUseAndCondition()) {
7474
foreach ($value as $entry) {
75-
$productList->addCondition(['term' => ['attributes.' . $field => $entry]], $field);
75+
$productList->addCondition(
76+
['term' => ['attributes.' . $field => $entry]],
77+
$this->getConditionField($field, $isPrecondition)
78+
);
7679
}
7780
} else {
7881
$boolArray = [];
7982
foreach ($value as $entry) {
8083
$boolArray[] = ['term' => ['attributes.' . $field => $entry]];
8184
}
8285

83-
$productList->addCondition(['bool' => ['should' => $boolArray, 'minimum_should_match' => 1]], $field);
86+
$productList->addCondition(
87+
['bool' => ['should' => $boolArray, 'minimum_should_match' => 1]],
88+
$this->getConditionField($field, $isPrecondition)
89+
);
8490
}
8591
}
8692

src/FilterService/FilterType/SearchIndex/MultiSelectRelation.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,13 @@ public function addCondition(AbstractFilterDefinitionType $filterDefinition, Pro
7575
if (!empty($quotedValues)) {
7676
if ($filterDefinition->getUseAndCondition()) {
7777
foreach ($quotedValues as $value) {
78-
$productList->addRelationCondition($field, $value);
78+
$productList->addRelationCondition($this->getConditionField($field, $isPrecondition), $value);
7979
}
8080
} else {
81-
$productList->addRelationCondition($field, ['terms' => ['relations.' . $field => $quotedValues]]);
81+
$productList->addRelationCondition(
82+
$this->getConditionField($field, $isPrecondition),
83+
['terms' => ['relations.' . $field => $quotedValues]]
84+
);
8285
}
8386
}
8487
}

src/FilterService/FilterType/SearchIndex/NumberRange.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ public function addCondition(AbstractFilterDefinitionType $filterDefinition, Pro
4848
if (strlen($value['to']) > 0) {
4949
$range['lte'] = $value['to'];
5050
}
51-
$productList->addCondition(['range' => ['attributes.' . $field => $range]], $field);
51+
$productList->addCondition(
52+
['range' => ['attributes.' . $field => $range]],
53+
$this->getConditionField($field, $isPrecondition),
54+
);
5255
}
5356

5457
return $currentFilter;

src/FilterService/FilterType/SearchIndex/NumberRangeSelection.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@ public function addCondition(AbstractFilterDefinitionType $filterDefinition, Pro
5555
if (!empty($value['to'])) {
5656
$range['lte'] = $value['to'];
5757
}
58-
$productList->addCondition(['range' => ['attributes.' . $field => $range]], $field);
58+
$productList->addCondition(
59+
['range' => ['attributes.' . $field => $range]],
60+
$this->getConditionField($field, $isPrecondition)
61+
);
5962
}
6063

6164
return $currentFilter;

src/FilterService/FilterType/SearchIndex/Select.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public function addCondition(AbstractFilterDefinitionType $filterDefinition, Pro
4242
$currentFilter[$field] = $value;
4343

4444
if (!empty($value)) {
45-
$productList->addCondition(trim($value), $field);
45+
$productList->addCondition(trim($value), $this->getConditionField($field, $isPrecondition));
4646
}
4747

4848
return $currentFilter;

src/FilterService/FilterType/SearchIndex/SelectCategory.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ public function getFilterValues(AbstractFilterDefinitionType $filterDefinition,
5555

5656
public function addCondition(AbstractFilterDefinitionType $filterDefinition, ProductListInterface $productList, array $currentFilter, array $params, bool $isPrecondition = false): array
5757
{
58-
$value = $params[$filterDefinition->getField()] ?? null;
58+
$field = $this->getField($filterDefinition);
59+
$value = $params[$field] ?? null;
5960
$isReload = $params['is_reload'] ?? null;
6061

6162
if ($value == AbstractFilterType::EMPTY_STRING) {
@@ -67,11 +68,11 @@ public function addCondition(AbstractFilterDefinitionType $filterDefinition, Pro
6768
}
6869
}
6970

70-
$currentFilter[$filterDefinition->getField()] = $value;
71+
$currentFilter[$field] = $value;
7172

7273
if (!empty($value)) {
7374
$value = trim((string)$value);
74-
$productList->addCondition($value, $filterDefinition->getField());
75+
$productList->addCondition($value, $this->getConditionField($field, $isPrecondition));
7576
}
7677

7778
return $currentFilter;

src/FilterService/FilterType/SearchIndex/SelectClassificationStoreAttributes.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public function addCondition(AbstractFilterDefinitionType $filterDefinition, Pro
133133
$currentFilter[$field][$keyId] = $filterValue;
134134

135135
$valueField = $nestedPath . '.' . $keyId . '.keyword';
136-
$productList->addCondition($filterValue, $valueField);
136+
$productList->addCondition($filterValue, $this->getConditionField($valueField, $isPrecondition));
137137
}
138138
}
139139
}

src/FilterService/FilterType/SearchIndex/SelectFromMultiSelect.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ public function addCondition(AbstractFilterDefinitionType $filterDefinition, Pro
4545
$currentFilter[$field] = $value;
4646

4747
if (!empty($value)) {
48-
$productList->addCondition(['term' => ['attributes.' . $field => $value]], $field);
48+
$productList->addCondition(
49+
['term' => ['attributes.' . $field => $value]],
50+
$this->getConditionField($field, $isPrecondition)
51+
);
4952
}
5053

5154
return $currentFilter;

0 commit comments

Comments
 (0)