Skip to content

Commit d2de4ec

Browse files
committed
Revert "Introduce FilterCollection#restore method (#10537)"
This reverts commit 8e20e15.
1 parent 8e20e15 commit d2de4ec

File tree

3 files changed

+3
-206
lines changed

3 files changed

+3
-206
lines changed

docs/en/reference/filters.rst

-31
Original file line numberDiff line numberDiff line change
@@ -93,34 +93,3 @@ object.
9393
want to refresh or reload an object after having modified a filter or the
9494
FilterCollection, then you should clear the EntityManager and re-fetch your
9595
entities, having the new rules for filtering applied.
96-
97-
98-
Suspending/Restoring Filters
99-
----------------------------
100-
When a filter is disabled, the instance is fully deleted and all the filter
101-
parameters previously set are lost. Then, if you enable it again, a new filter
102-
is created without the previous filter parameters. If you want to keep a filter
103-
(in order to use it later) but temporary disable it, you'll need to use the
104-
``FilterCollection#suspend($name)`` and ``FilterCollection#restore($name)``
105-
methods instead.
106-
107-
.. code-block:: php
108-
109-
<?php
110-
$filter = $em->getFilters()->enable("locale");
111-
$filter->setParameter('locale', 'en');
112-
113-
// Temporary suspend the filter
114-
$filter = $em->getFilters()->suspend("locale");
115-
116-
// Do things
117-
118-
// Then restore it, the locale parameter will still be set
119-
$filter = $em->getFilters()->restore("locale");
120-
121-
.. warning::
122-
If you enable a previously disabled filter, doctrine will create a new
123-
one without keeping any of the previously parameter set with
124-
``SQLFilter#setParameter()`` or ``SQLFilter#getParameterList()``. If you
125-
want to restore the previously disabled filter instead, you must use the
126-
``FilterCollection#restore($name)`` method.

lib/Doctrine/ORM/Query/FilterCollection.php

-82
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,6 @@ class FilterCollection
5151
*/
5252
private $enabledFilters = [];
5353

54-
/**
55-
* Instances of suspended filters.
56-
*
57-
* @var SQLFilter[]
58-
* @psalm-var array<string, SQLFilter>
59-
*/
60-
private $suspendedFilters = [];
61-
6254
/**
6355
* The filter hash from the last time the query was parsed.
6456
*
@@ -91,17 +83,6 @@ public function getEnabledFilters()
9183
return $this->enabledFilters;
9284
}
9385

94-
/**
95-
* Gets all the suspended filters.
96-
*
97-
* @return SQLFilter[] The suspended filters.
98-
* @psalm-return array<string, SQLFilter>
99-
*/
100-
public function getSuspendedFilters(): array
101-
{
102-
return $this->suspendedFilters;
103-
}
104-
10586
/**
10687
* Enables a filter from the collection.
10788
*
@@ -124,9 +105,6 @@ public function enable($name)
124105

125106
$this->enabledFilters[$name] = new $filterClass($this->em);
126107

127-
// In case a suspended filter with the same name was forgotten
128-
unset($this->suspendedFilters[$name]);
129-
130108
// Keep the enabled filters sorted for the hash
131109
ksort($this->enabledFilters);
132110

@@ -157,54 +135,6 @@ public function disable($name)
157135
return $filter;
158136
}
159137

160-
/**
161-
* Suspend a filter.
162-
*
163-
* @param string $name Name of the filter.
164-
*
165-
* @return SQLFilter The suspended filter.
166-
*
167-
* @throws InvalidArgumentException If the filter does not exist.
168-
*/
169-
public function suspend(string $name): SQLFilter
170-
{
171-
// Get the filter to return it
172-
$filter = $this->getFilter($name);
173-
174-
$this->suspendedFilters[$name] = $filter;
175-
unset($this->enabledFilters[$name]);
176-
177-
$this->setFiltersStateDirty();
178-
179-
return $filter;
180-
}
181-
182-
/**
183-
* Restore a disabled filter from the collection.
184-
*
185-
* @param string $name Name of the filter.
186-
*
187-
* @return SQLFilter The restored filter.
188-
*
189-
* @throws InvalidArgumentException If the filter does not exist.
190-
*/
191-
public function restore(string $name): SQLFilter
192-
{
193-
if (! $this->isSuspended($name)) {
194-
throw new InvalidArgumentException("Filter '" . $name . "' is not suspended.");
195-
}
196-
197-
$this->enabledFilters[$name] = $this->suspendedFilters[$name];
198-
unset($this->suspendedFilters[$name]);
199-
200-
// Keep the enabled filters sorted for the hash
201-
ksort($this->enabledFilters);
202-
203-
$this->setFiltersStateDirty();
204-
205-
return $this->enabledFilters[$name];
206-
}
207-
208138
/**
209139
* Gets an enabled filter from the collection.
210140
*
@@ -247,18 +177,6 @@ public function isEnabled($name)
247177
return isset($this->enabledFilters[$name]);
248178
}
249179

250-
/**
251-
* Checks if a filter is suspended.
252-
*
253-
* @param string $name Name of the filter.
254-
*
255-
* @return bool True if the filter is suspended, false otherwise.
256-
*/
257-
public function isSuspended(string $name): bool
258-
{
259-
return isset($this->suspendedFilters[$name]);
260-
}
261-
262180
/**
263181
* Checks if the filter collection is clean.
264182
*

tests/Doctrine/Tests/ORM/Query/FilterCollectionTest.php

+3-93
Original file line numberDiff line numberDiff line change
@@ -30,54 +30,15 @@ public function testEnable(): void
3030

3131
self::assertCount(0, $filterCollection->getEnabledFilters());
3232

33-
$filter1 = $filterCollection->enable('testFilter');
33+
$filterCollection->enable('testFilter');
3434

3535
$enabledFilters = $filterCollection->getEnabledFilters();
3636

3737
self::assertCount(1, $enabledFilters);
3838
self::assertContainsOnly(MyFilter::class, $enabledFilters);
3939

40-
$filter2 = $filterCollection->disable('testFilter');
41-
self::assertCount(0, $filterCollection->getEnabledFilters());
42-
self::assertSame($filter1, $filter2);
43-
44-
$filter3 = $filterCollection->enable('testFilter');
45-
self::assertNotSame($filter1, $filter3);
46-
47-
$filter4 = $filterCollection->suspend('testFilter');
48-
self::assertSame($filter3, $filter4);
49-
50-
$filter5 = $filterCollection->enable('testFilter');
51-
self::assertNotSame($filter4, $filter5);
52-
53-
self::assertCount(1, $enabledFilters);
54-
self::assertContainsOnly(MyFilter::class, $enabledFilters);
55-
}
56-
57-
public function testSuspend(): void
58-
{
59-
$filterCollection = $this->em->getFilters();
60-
61-
self::assertCount(0, $filterCollection->getEnabledFilters());
62-
63-
$filter1 = $filterCollection->enable('testFilter');
64-
self::assertCount(1, $filterCollection->getEnabledFilters());
65-
66-
$filter2 = $filterCollection->suspend('testFilter');
67-
self::assertSame($filter1, $filter2);
40+
$filterCollection->disable('testFilter');
6841
self::assertCount(0, $filterCollection->getEnabledFilters());
69-
70-
$filter3 = $filterCollection->restore('testFilter');
71-
self::assertSame($filter1, $filter3);
72-
self::assertCount(1, $filterCollection->getEnabledFilters());
73-
}
74-
75-
public function testRestoreFailure(): void
76-
{
77-
$filterCollection = $this->em->getFilters();
78-
79-
$this->expectException(InvalidArgumentException::class);
80-
$filterCollection->suspend('testFilter');
8142
}
8243

8344
public function testHasFilter(): void
@@ -88,6 +49,7 @@ public function testHasFilter(): void
8849
self::assertFalse($filterCollection->has('fakeFilter'));
8950
}
9051

52+
/** @depends testEnable */
9153
public function testIsEnabled(): void
9254
{
9355
$filterCollection = $this->em->getFilters();
@@ -97,41 +59,6 @@ public function testIsEnabled(): void
9759
$filterCollection->enable('testFilter');
9860

9961
self::assertTrue($filterCollection->isEnabled('testFilter'));
100-
101-
$filterCollection->suspend('testFilter');
102-
103-
self::assertFalse($filterCollection->isEnabled('testFilter'));
104-
105-
$filterCollection->restore('testFilter');
106-
107-
self::assertTrue($filterCollection->isEnabled('testFilter'));
108-
109-
self::assertFalse($filterCollection->isEnabled('wrongFilter'));
110-
}
111-
112-
public function testIsSuspended(): void
113-
{
114-
$filterCollection = $this->em->getFilters();
115-
116-
self::assertFalse($filterCollection->isSuspended('testFilter'));
117-
118-
$filterCollection->enable('testFilter');
119-
120-
self::assertFalse($filterCollection->isSuspended('testFilter'));
121-
122-
$filterCollection->suspend('testFilter');
123-
124-
self::assertTrue($filterCollection->isSuspended('testFilter'));
125-
126-
$filterCollection->restore('testFilter');
127-
128-
self::assertFalse($filterCollection->isSuspended('testFilter'));
129-
130-
$filterCollection->disable('testFilter');
131-
132-
self::assertFalse($filterCollection->isSuspended('testFilter'));
133-
134-
self::assertFalse($filterCollection->isSuspended('wrongFilter'));
13562
}
13663

13764
public function testGetFilterInvalidArgument(): void
@@ -147,11 +74,6 @@ public function testGetFilter(): void
14774
$filterCollection->enable('testFilter');
14875

14976
self::assertInstanceOf(MyFilter::class, $filterCollection->getFilter('testFilter'));
150-
151-
$filterCollection->suspend('testFilter');
152-
153-
$this->expectException(InvalidArgumentException::class);
154-
$filterCollection->getFilter('testFilter');
15577
}
15678

15779
public function testHashing(): void
@@ -177,18 +99,6 @@ public function testHashing(): void
17799
self::assertTrue($filterCollection->isClean());
178100
self::assertSame($hash, $filterCollection->getHash());
179101

180-
$filterCollection->suspend('testFilter');
181-
182-
self::assertFalse($filterCollection->isClean());
183-
self::assertSame($oldHash, $filterCollection->getHash());
184-
self::assertTrue($filterCollection->isClean());
185-
186-
$filterCollection->restore('testFilter');
187-
188-
self::assertFalse($filterCollection->isClean());
189-
self::assertSame($hash, $filterCollection->getHash());
190-
self::assertTrue($filterCollection->isClean());
191-
192102
$filterCollection->disable('testFilter');
193103

194104
self::assertFalse($filterCollection->isClean());

0 commit comments

Comments
 (0)