2 declare(strict_types = 1);
20 use TYPO3\CMS\Core\Package\PackageManager;
64 public function resolve(
string $stackName): array
68 if ($this->cache->has($cacheIdentifier)) {
69 return $this->cache->require($cacheIdentifier);
76 if (!isset($middlewares[$stackName])) {
77 $middlewares[$stackName] = [];
80 foreach ($middlewares as $stack => $middlewaresOfStack) {
81 $this->cache->set($this->
getCacheIdentifier($stack),
'return ' . var_export($middlewaresOfStack,
true) .
';');
84 return $middlewares[$stackName];
94 $packages = $this->packageManager->getActivePackages();
95 $allMiddlewares = [[]];
96 foreach ($packages as $package) {
97 $packageConfiguration = $package->getPackagePath() .
'Configuration/RequestMiddlewares.php';
98 if (file_exists($packageConfiguration)) {
99 $middlewaresInPackage = require $packageConfiguration;
100 if (is_array($middlewaresInPackage)) {
101 $allMiddlewares[] = $middlewaresInPackage;
105 return array_replace_recursive(...$allMiddlewares);
118 foreach ($allMiddlewares as $stack => $middlewaresOfStack) {
119 $middlewaresOfStack = $this->dependencyOrderingService->orderByDependencies($middlewaresOfStack);
121 $sanitizedMiddlewares = [];
122 foreach ($middlewaresOfStack as $name => $middleware) {
123 if (isset($middleware[
'disabled']) && $middleware[
'disabled'] ===
true) {
127 $sanitizedMiddlewares[$name] = $middleware[
'target'];
131 $middlewares[$stack] = array_reverse($sanitizedMiddlewares);