From 50f5b01ee55f56969598adafd5b3b5a102e14bf6 Mon Sep 17 00:00:00 2001 From: Martin Eiber Date: Thu, 2 Oct 2025 15:42:42 +0200 Subject: [PATCH 1/3] Do not only allow string on multiselect filter. --- .../Search/Modifier/Filter/FieldType/MultiSelectFilter.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php b/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php index 0a1d129d..fa76e926 100644 --- a/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php +++ b/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php @@ -18,14 +18,12 @@ final readonly class MultiSelectFilter implements SearchModifierInterface { - private ArrayOfStrings $values; public function __construct( private string $field, - array $values, + private array $values, private bool $enablePqlFieldNameResolution = true, ) { - $this->values = new ArrayOfStrings($values); } public function getField(): string @@ -35,7 +33,7 @@ public function getField(): string public function getValues(): array { - return $this->values->getValue(); + return $this->values; } public function isPqlFieldNameResolutionEnabled(): bool From 5c9273461925c535a3203b4f1e09134a0dbabf9e Mon Sep 17 00:00:00 2001 From: martineiber Date: Thu, 2 Oct 2025 13:44:29 +0000 Subject: [PATCH 2/3] Apply php-cs-fixer changes --- .../Search/Modifier/Filter/FieldType/MultiSelectFilter.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php b/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php index fa76e926..8fb579aa 100644 --- a/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php +++ b/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php @@ -14,11 +14,9 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\FieldType; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\SearchModifierInterface; -use Pimcore\ValueObject\Collection\ArrayOfStrings; final readonly class MultiSelectFilter implements SearchModifierInterface { - public function __construct( private string $field, private array $values, From 45cf876ff2e09806959d6e9cd0574172f1d4bd3e Mon Sep 17 00:00:00 2001 From: Martin Eiber Date: Fri, 3 Oct 2025 09:22:57 +0200 Subject: [PATCH 3/3] Add Validation. --- .../Filter/FieldType/MultiSelectFilter.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php b/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php index 8fb579aa..ee735b00 100644 --- a/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php +++ b/src/Model/Search/Modifier/Filter/FieldType/MultiSelectFilter.php @@ -14,6 +14,7 @@ namespace Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\FieldType; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\SearchModifierInterface; +use ValueError; final readonly class MultiSelectFilter implements SearchModifierInterface { @@ -22,6 +23,7 @@ public function __construct( private array $values, private bool $enablePqlFieldNameResolution = true, ) { + $this->validate(); } public function getField(): string @@ -38,4 +40,18 @@ public function isPqlFieldNameResolutionEnabled(): bool { return $this->enablePqlFieldNameResolution; } + + private function validate(): void + { + foreach ($this->values as $value) { + if (!is_string($value) && !is_int($value) && !is_float($value)) { + throw new ValueError( + sprintf( + 'Provided array must contain only string, int or float values. (%s given)', + gettype($value) + ), + ); + } + } + } }