Skip to content

Commit 234ebba

Browse files
authored
[Grid] [Filter] Add filter for system.integer (#537)
* Add integer filter. * Apply php-cs-fixer changes * Needs Key. * Change to integer. --------- Co-authored-by: martineiber <[email protected]>
1 parent 4faefca commit 234ebba

File tree

7 files changed

+84
-0
lines changed

7 files changed

+84
-0
lines changed

config/data_index_filters.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ services:
4444
Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\IdFilter:
4545
tags: [ 'pimcore.studio_backend.open_search.filter' ]
4646

47+
Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\IntegerFilter:
48+
tags: [ 'pimcore.studio_backend.open_search.filter' ]
49+
4750
# DataObject
4851
Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\DataObject\ClassNameFilter:
4952
tags: [ 'pimcore.studio_backend.open_search.data_object.filter' ]

doc/03_Grid.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Available filters are:
4444
| system.tag | object | `considerChildTags`, `tags` | false |
4545
| system.pql | string | PQL Query | false |
4646
| system.id | integer | | false |
47+
| system.integer | integer | | true |
4748

4849

4950

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
/**
5+
* Pimcore
6+
*
7+
* This source file is available under two different licenses:
8+
* - GNU General Public License version 3 (GPLv3)
9+
* - Pimcore Commercial License (PCL)
10+
* Full copyright and license information is available in
11+
* LICENSE.md which is distributed with this source code.
12+
*
13+
* @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org)
14+
* @license http://www.pimcore.org/license GPLv3 and PCL
15+
*/
16+
17+
namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter;
18+
19+
use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface;
20+
use Pimcore\Bundle\StudioBackendBundle\Exception\Api\InvalidArgumentException;
21+
use Pimcore\Bundle\StudioBackendBundle\Grid\Column\ColumnType;
22+
use Pimcore\Bundle\StudioBackendBundle\MappedParameter\Filter\ColumnFilter;
23+
use Pimcore\Bundle\StudioBackendBundle\MappedParameter\Filter\ColumnFiltersParameterInterface;
24+
use function is_int;
25+
26+
/**
27+
* @internal
28+
*/
29+
final class IntegerFilter implements FilterInterface
30+
{
31+
public function apply(mixed $parameters, QueryInterface $query): QueryInterface
32+
{
33+
if (!$parameters instanceof ColumnFiltersParameterInterface) {
34+
return $query;
35+
}
36+
37+
foreach ($parameters->getColumnFilterByType(ColumnType::SYSTEM_INTEGER->value) as $column) {
38+
$query = $this->applyIntegerFilter($column, $query);
39+
}
40+
41+
return $query;
42+
}
43+
44+
private function applyIntegerFilter(ColumnFilter $column, QueryInterface $query): QueryInterface
45+
{
46+
if (!is_int($column->getFilterValue())) {
47+
throw new InvalidArgumentException('Filter value for this filter must be a integer');
48+
}
49+
50+
$query->filterInteger($column->getKey(), $column->getFilterValue());
51+
52+
return $query;
53+
}
54+
}

src/DataIndex/Query/AssetQuery.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Asset\AssetMetaDataFilter;
2222
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\ExcludeFoldersFilter;
2323
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\IdsFilter;
24+
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\IntegerFilter;
2425
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\FieldType\DateFilter;
2526
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Tree\ParentIdFilter;
2627
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Tree\PathFilter;
@@ -174,4 +175,11 @@ public function setUser(UserInterface $user): self
174175

175176
return $this;
176177
}
178+
179+
public function filterInteger(string $field, int $value): QueryInterface
180+
{
181+
$this->search->addModifier(new IntegerFilter($field, $value));
182+
183+
return $this;
184+
}
177185
}

src/DataIndex/Query/DataObjectQuery.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\DataObjectSearch;
2222
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\ExcludeFoldersFilter;
2323
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\IdsFilter;
24+
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\IntegerFilter;
2425
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Tree\ParentIdFilter;
2526
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Tree\PathFilter;
2627
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Tree\TagFilter;
@@ -153,4 +154,11 @@ public function setUser(UserInterface $user): QueryInterface
153154

154155
return $this;
155156
}
157+
158+
public function filterInteger(string $field, int $value): QueryInterface
159+
{
160+
$this->search->addModifier(new IntegerFilter($field, $value));
161+
162+
return $this;
163+
}
156164
}

src/DataIndex/Query/DocumentQuery.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Asset\AssetMetaDataFilter;
2222
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\ExcludeFoldersFilter;
2323
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\IdsFilter;
24+
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\IntegerFilter;
2425
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Tree\ParentIdFilter;
2526
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Tree\PathFilter;
2627
use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Tree\TagFilter;
@@ -153,4 +154,11 @@ public function setUser(UserInterface $user): self
153154

154155
return $this;
155156
}
157+
158+
public function filterInteger(string $field, int $value): QueryInterface
159+
{
160+
$this->search->addModifier(new IntegerFilter($field, $value));
161+
162+
return $this;
163+
}
156164
}

src/DataIndex/Query/QueryInterface.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,6 @@ public function filterTags(array $tags, bool $considerChildTags): self;
4747
public function filterByPql(string $pqlQuery): self;
4848

4949
public function setUser(UserInterface $user): self;
50+
51+
public function filterInteger(string $field, int $value): self;
5052
}

0 commit comments

Comments
 (0)