Skip to content

Commit 28fe6ff

Browse files
authored
Merge pull request #7903 from kenjis/multipleFilters-default
refactor: always use multiple filters
2 parents 28d541b + 581a5db commit 28fe6ff

File tree

13 files changed

+55
-125
lines changed

13 files changed

+55
-125
lines changed

app/Config/Feature.php

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,6 @@
99
*/
1010
class Feature extends BaseConfig
1111
{
12-
/**
13-
* Enable multiple filters for a route or not.
14-
*
15-
* If you enable this:
16-
* - CodeIgniter\CodeIgniter::handleRequest() uses:
17-
* - CodeIgniter\Filters\Filters::enableFilters(), instead of enableFilter()
18-
* - CodeIgniter\CodeIgniter::tryToRouteIt() uses:
19-
* - CodeIgniter\Router\Router::getFilters(), instead of getFilter()
20-
* - CodeIgniter\Router\Router::handle() uses:
21-
* - property $filtersInfo, instead of $filterInfo
22-
* - CodeIgniter\Router\RouteCollection::getFiltersForRoute(), instead of getFilterForRoute()
23-
*/
24-
public bool $multipleFilters = false;
25-
2612
/**
2713
* Use improved new auto routing instead of the default legacy version.
2814
*/

phpstan-baseline.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,11 +2346,6 @@
23462346
'count' => 2,
23472347
'path' => __DIR__ . '/system/Router/Router.php',
23482348
];
2349-
$ignoreErrors[] = [
2350-
'message' => '#^Call to an undefined method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:getFilterForRoute\\(\\)\\.$#',
2351-
'count' => 1,
2352-
'path' => __DIR__ . '/system/Router/Router.php',
2353-
];
23542349
$ignoreErrors[] = [
23552350
'message' => '#^Call to an undefined method CodeIgniter\\\\Router\\\\RouteCollectionInterface\\:\\:getFiltersForRoute\\(\\)\\.$#',
23562351
'count' => 1,

system/CodeIgniter.php

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
use CodeIgniter\Router\Router;
3232
use Config\App;
3333
use Config\Cache;
34-
use Config\Feature;
3534
use Config\Kint as KintConfig;
3635
use Config\Services;
3736
use Exception;
@@ -452,15 +451,8 @@ protected function handleRequest(?RouteCollectionInterface $routes, Cache $cache
452451
// If any filters were specified within the routes file,
453452
// we need to ensure it's active for the current request
454453
if ($routeFilter !== null) {
455-
$multipleFiltersEnabled = config(Feature::class)->multipleFilters ?? false;
456-
if ($multipleFiltersEnabled) {
457-
$filters->enableFilters($routeFilter, 'before');
458-
$filters->enableFilters($routeFilter, 'after');
459-
} else {
460-
// for backward compatibility
461-
$filters->enableFilter($routeFilter, 'before');
462-
$filters->enableFilter($routeFilter, 'after');
463-
}
454+
$filters->enableFilters($routeFilter, 'before');
455+
$filters->enableFilters($routeFilter, 'after');
464456
}
465457

466458
// Run "before" filters
@@ -810,12 +802,6 @@ protected function tryToRouteIt(?RouteCollectionInterface $routes = null)
810802

811803
$this->benchmark->stop('routing');
812804

813-
// for backward compatibility
814-
$multipleFiltersEnabled = config(Feature::class)->multipleFilters ?? false;
815-
if (! $multipleFiltersEnabled) {
816-
return $this->router->getFilter();
817-
}
818-
819805
return $this->router->getFilters();
820806
}
821807

system/Commands/Utilities/Routes/FilterFinder.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
use CodeIgniter\Filters\Filters;
1616
use CodeIgniter\HTTP\Exceptions\RedirectException;
1717
use CodeIgniter\Router\Router;
18-
use Config\Feature;
1918
use Config\Services;
2019

2120
/**
@@ -38,13 +37,6 @@ private function getRouteFilters(string $uri): array
3837
{
3938
$this->router->handle($uri);
4039

41-
$multipleFiltersEnabled = config(Feature::class)->multipleFilters ?? false;
42-
if (! $multipleFiltersEnabled) {
43-
$filter = $this->router->getFilter();
44-
45-
return $filter === null ? [] : [$filter];
46-
}
47-
4840
return $this->router->getFilters();
4941
}
5042

system/Filters/Filters.php

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -335,12 +335,8 @@ public function addFilter(string $class, ?string $alias = null, string $when = '
335335
* are passed to the filter when executed.
336336
*
337337
* @param string $name filter_name or filter_name:arguments like 'role:admin,manager'
338-
*
339-
* @return $this
340-
*
341-
* @deprecated Use enableFilters(). This method will be private.
342338
*/
343-
public function enableFilter(string $name, string $when = 'before')
339+
private function enableFilter(string $name, string $when = 'before'): void
344340
{
345341
// Get arguments and clean name
346342
[$name, $arguments] = $this->getCleanName($name);
@@ -362,8 +358,6 @@ public function enableFilter(string $name, string $when = 'before')
362358
$this->filters[$when][] = $name;
363359
$this->filtersClass[$when] = array_merge($this->filtersClass[$when], $classNames);
364360
}
365-
366-
return $this;
367361
}
368362

369363
/**

system/Router/RouteCollection.php

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1228,25 +1228,6 @@ public function isFiltered(string $search, ?string $verb = null): bool
12281228
return isset($options[$search]['filter']);
12291229
}
12301230

1231-
/**
1232-
* Returns the filter that should be applied for a single route, along
1233-
* with any parameters it might have. Parameters are found by splitting
1234-
* the parameter name on a colon to separate the filter name from the parameter list,
1235-
* and the splitting the result on commas. So:
1236-
*
1237-
* 'role:admin,manager'
1238-
*
1239-
* has a filter of "role", with parameters of ['admin', 'manager'].
1240-
*
1241-
* @deprecated Use getFiltersForRoute()
1242-
*/
1243-
public function getFilterForRoute(string $search, ?string $verb = null): string
1244-
{
1245-
$options = $this->loadRoutesOptions($verb);
1246-
1247-
return $options[$search]['filter'] ?? '';
1248-
}
1249-
12501231
/**
12511232
* Returns the filters that should be applied for a single route, along
12521233
* with any parameters it might have. Parameters are found by splitting

system/Router/Router.php

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,6 @@ class Router implements RouterInterface
9999
*/
100100
protected $detectedLocale;
101101

102-
/**
103-
* The filter info from Route Collection
104-
* if the matched route should be filtered.
105-
*
106-
* @var string|null
107-
*
108-
* @deprecated Use $filtersInfo
109-
*/
110-
protected $filterInfo;
111-
112102
/**
113103
* The filter info from Route Collection
114104
* if the matched route should be filtered.
@@ -179,19 +169,12 @@ public function handle(?string $uri = null)
179169
$uri = urldecode($uri);
180170

181171
// Restart filterInfo
182-
$this->filterInfo = null;
183172
$this->filtersInfo = [];
184173

185174
// Checks defined routes
186175
if ($this->checkRoutes($uri)) {
187176
if ($this->collection->isFiltered($this->matchedRoute[0])) {
188-
$multipleFiltersEnabled = config(Feature::class)->multipleFilters ?? false;
189-
if ($multipleFiltersEnabled) {
190-
$this->filtersInfo = $this->collection->getFiltersForRoute($this->matchedRoute[0]);
191-
} else {
192-
// for backward compatibility
193-
$this->filterInfo = $this->collection->getFilterForRoute($this->matchedRoute[0]);
194-
}
177+
$this->filtersInfo = $this->collection->getFiltersForRoute($this->matchedRoute[0]);
195178
}
196179

197180
return $this->controller;
@@ -212,18 +195,6 @@ public function handle(?string $uri = null)
212195
return $this->controllerName();
213196
}
214197

215-
/**
216-
* Returns the filter info for the matched route, if any.
217-
*
218-
* @return string|null
219-
*
220-
* @deprecated Use getFilters()
221-
*/
222-
public function getFilter()
223-
{
224-
return $this->filterInfo;
225-
}
226-
227198
/**
228199
* Returns the filter info for the matched route, if any.
229200
*

tests/system/Commands/Utilities/Routes/FilterFinderTest.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,6 @@ public function testFindGlobalsAndRouteClassnameFilters(): void
171171

172172
public function testFindGlobalsAndRouteMultipleFilters(): void
173173
{
174-
config('Feature')->multipleFilters = true;
175-
176174
$collection = $this->createRouteCollection();
177175
$collection->get('admin', ' AdminController::index', ['filter' => ['honeypot', InvalidChars::class]]);
178176
$router = $this->createRouter($collection);
@@ -187,7 +185,5 @@ public function testFindGlobalsAndRouteMultipleFilters(): void
187185
'after' => ['honeypot', InvalidChars::class, 'toolbar'],
188186
];
189187
$this->assertSame($expected, $filters);
190-
191-
config('Feature')->multipleFilters = false;
192188
}
193189
}

tests/system/Filters/FiltersTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,7 @@ public function testEnableFilter(): void
834834
$filters = $this->createFilters($filtersConfig);
835835

836836
$filters = $filters->initialize('admin/foo/bar');
837-
$filters->enableFilter('google', 'before');
837+
$filters->enableFilters(['google'], 'before');
838838
$filters = $filters->getFilters();
839839

840840
$this->assertContains('google', $filters['before']);
@@ -941,8 +941,8 @@ public function testEnableFilterWithArguments(): void
941941
$filters = $this->createFilters($filtersConfig);
942942

943943
$filters = $filters->initialize('admin/foo/bar');
944-
$filters->enableFilter('role:admin , super', 'before');
945-
$filters->enableFilter('role:admin , super', 'after');
944+
$filters->enableFilters(['role:admin , super'], 'before');
945+
$filters->enableFilters(['role:admin , super'], 'after');
946946
$found = $filters->getFilters();
947947

948948
$this->assertContains('role', $found['before']);
@@ -973,8 +973,8 @@ public function testEnableFilterWithNoArguments(): void
973973
$filters = $this->createFilters($filtersConfig);
974974

975975
$filters = $filters->initialize('admin/foo/bar');
976-
$filters->enableFilter('role', 'before');
977-
$filters->enableFilter('role', 'after');
976+
$filters->enableFilters(['role'], 'before');
977+
$filters->enableFilters(['role'], 'after');
978978
$found = $filters->getFilters();
979979

980980
$this->assertContains('role', $found['before']);
@@ -1005,7 +1005,7 @@ public function testEnableNonFilter(): void
10051005
$filters = $this->createFilters($filtersConfig);
10061006

10071007
$filters = $filters->initialize('admin/foo/bar');
1008-
$filters->enableFilter('goggle', 'before');
1008+
$filters->enableFilters(['goggle'], 'before');
10091009
}
10101010

10111011
/**

tests/system/Router/RouterTest.php

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ public function testRouteWorksWithFilters(): void
496496

497497
$this->assertSame('\TestController', $router->controllerName());
498498
$this->assertSame('foobar', $router->methodName());
499-
$this->assertSame('test', $router->getFilter());
499+
$this->assertSame(['test'], $router->getFilters());
500500
}
501501

502502
/**
@@ -526,25 +526,25 @@ static function (RouteCollection $routes): void {
526526

527527
$this->assertSame('\App\Controllers\Api\PostController', $router->controllerName());
528528
$this->assertSame('index', $router->methodName());
529-
$this->assertSame('api-auth', $router->getFilter());
529+
$this->assertSame(['api-auth'], $router->getFilters());
530530

531531
$router->handle('api/posts/new');
532532

533533
$this->assertSame('\App\Controllers\Api\PostController', $router->controllerName());
534534
$this->assertSame('new', $router->methodName());
535-
$this->assertSame('api-auth', $router->getFilter());
535+
$this->assertSame(['api-auth'], $router->getFilters());
536536

537537
$router->handle('api/posts/50');
538538

539539
$this->assertSame('\App\Controllers\Api\PostController', $router->controllerName());
540540
$this->assertSame('show', $router->methodName());
541-
$this->assertSame('api-auth', $router->getFilter());
541+
$this->assertSame(['api-auth'], $router->getFilters());
542542

543543
$router->handle('api/posts/50/edit');
544544

545545
$this->assertSame('\App\Controllers\Api\PostController', $router->controllerName());
546546
$this->assertSame('edit', $router->methodName());
547-
$this->assertSame('api-auth', $router->getFilter());
547+
$this->assertSame(['api-auth'], $router->getFilters());
548548

549549
// POST
550550
$this->collection->group(...$group);
@@ -556,7 +556,7 @@ static function (RouteCollection $routes): void {
556556

557557
$this->assertSame('\App\Controllers\Api\PostController', $router->controllerName());
558558
$this->assertSame('create', $router->methodName());
559-
$this->assertSame('api-auth', $router->getFilter());
559+
$this->assertSame(['api-auth'], $router->getFilters());
560560

561561
// PUT
562562
$this->collection->group(...$group);
@@ -568,7 +568,7 @@ static function (RouteCollection $routes): void {
568568

569569
$this->assertSame('\App\Controllers\Api\PostController', $router->controllerName());
570570
$this->assertSame('update', $router->methodName());
571-
$this->assertSame('api-auth', $router->getFilter());
571+
$this->assertSame(['api-auth'], $router->getFilters());
572572

573573
// PATCH
574574
$this->collection->group(...$group);
@@ -580,7 +580,7 @@ static function (RouteCollection $routes): void {
580580

581581
$this->assertSame('\App\Controllers\Api\PostController', $router->controllerName());
582582
$this->assertSame('update', $router->methodName());
583-
$this->assertSame('api-auth', $router->getFilter());
583+
$this->assertSame(['api-auth'], $router->getFilters());
584584

585585
// DELETE
586586
$this->collection->group(...$group);
@@ -592,7 +592,7 @@ static function (RouteCollection $routes): void {
592592

593593
$this->assertSame('\App\Controllers\Api\PostController', $router->controllerName());
594594
$this->assertSame('delete', $router->methodName());
595-
$this->assertSame('api-auth', $router->getFilter());
595+
$this->assertSame(['api-auth'], $router->getFilters());
596596
}
597597

598598
public function testRouteWorksWithClassnameFilter(): void
@@ -606,16 +606,13 @@ public function testRouteWorksWithClassnameFilter(): void
606606

607607
$this->assertSame('\TestController', $router->controllerName());
608608
$this->assertSame('foo', $router->methodName());
609-
$this->assertSame(Customfilter::class, $router->getFilter());
609+
$this->assertSame([Customfilter::class], $router->getFilters());
610610

611611
$this->resetServices();
612612
}
613613

614614
public function testRouteWorksWithMultipleFilters(): void
615615
{
616-
$feature = config('Feature');
617-
$feature->multipleFilters = true;
618-
619616
$collection = $this->collection;
620617

621618
$collection->add('foo', 'TestController::foo', ['filter' => ['filter1', 'filter2:param']]);
@@ -626,8 +623,6 @@ public function testRouteWorksWithMultipleFilters(): void
626623
$this->assertSame('\TestController', $router->controllerName());
627624
$this->assertSame('foo', $router->methodName());
628625
$this->assertSame(['filter1', 'filter2:param'], $router->getFilters());
629-
630-
$feature->multipleFilters = false;
631626
}
632627

633628
/**

0 commit comments

Comments
 (0)