‪TYPO3CMS  ‪main
RequestBuilderDefaultValues.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
24 {
32  private function ‪__construct(
33  private readonly string $extensionName,
34  private readonly string $pluginName,
35  private readonly string $defaultControllerClassName,
36  private readonly string $defaultControllerAlias,
37  private readonly string $defaultFormat,
38  private readonly array $allowedControllerActions,
39  private readonly array $controllerAliasToClassMapping,
40  private readonly array $controllerClassToAliasMapping,
41  ) {}
42 
43  public static function ‪fromConfiguration(array $configuration): self
44  {
45  $extensionName = $configuration['extensionName'] ?? null;
46  $extensionName = is_string($extensionName) && $extensionName !== '' ? $extensionName : null;
47 
48  $pluginName = $configuration['pluginName'] ?? null;
49  $pluginName = is_string($pluginName) && $pluginName !== '' ? $pluginName : null;
50 
51  $controllerConfigurations = $configuration['controllerConfiguration'] ?? [];
52  $controllerConfigurations = is_array($controllerConfigurations) ? $controllerConfigurations : [];
53 
54  if (!is_string($extensionName)) {
55  throw new \InvalidArgumentException('"extensionName" is not properly configured. Request can\'t be dispatched!', 1289843275);
56  }
57  if (!is_string($pluginName)) {
58  throw new \InvalidArgumentException('"pluginName" is not properly configured. Request can\'t be dispatched!', 1289843277);
59  }
60 
61  if ($controllerConfigurations === []) {
62  throw new \InvalidArgumentException(
63  sprintf(
64  'The default controller for extension "%s" and plugin "%s" can not be determined. ' .
65  'Please check for TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin() in your ext_localconf.php.',
66  $extensionName,
67  $pluginName
68  ),
69  1316104317
70  );
71  }
72 
73  $defaultFormat = $configuration['format'] ?? null;
74  $defaultFormat = is_string($defaultFormat) && $defaultFormat !== '' ? $defaultFormat : 'html';
75 
76  $defaultControllerClassName = null;
77  $defaultControllerAlias = null;
78 
79  $allowedControllerActions = [];
80  $controllerClassToAliasMapping = [];
81  $controllerAliasToClassMapping = [];
82 
83  $firstItem = true;
84  foreach ($controllerConfigurations as $controllerClassName => $controllerConfiguration) {
85  if (!is_string($controllerClassName) || $controllerClassName === '') {
86  continue;
87  }
88 
89  if (!is_array($controllerConfiguration)) {
90  continue;
91  }
92 
93  $actions = $controllerConfiguration['actions'] ?? [];
94  $actions = is_array($actions) ? $actions : [];
95 
96  if ($actions === []) {
97  continue;
98  }
99 
100  $controllerClassName = $controllerConfiguration['className'] ?? null;
101  $controllerClassName = is_string($controllerClassName) && $controllerClassName !== '' ? $controllerClassName : null;
102 
103  if ($controllerClassName === null) {
104  continue;
105  }
106 
107  $controllerAlias = $controllerConfiguration['alias'] ?? null;
108  $controllerAlias = is_string($controllerAlias) && $controllerAlias !== '' ? $controllerAlias : null;
109 
110  if ($controllerAlias === null) {
111  continue;
112  }
113 
114  $allowedControllerActions[$controllerClassName] = $actions;
115  $controllerClassToAliasMapping[$controllerClassName] = $controllerAlias;
116  $controllerAliasToClassMapping[$controllerAlias] = $controllerClassName;
117 
118  if ($firstItem) {
119  $defaultControllerClassName = $controllerClassName;
120  $defaultControllerAlias = $controllerAlias;
121  }
122 
123  $firstItem = false;
124  }
125 
126  if ($defaultControllerClassName === null || $defaultControllerAlias === null) {
127  throw new \LogicException(
128  'Either $defaultControllerClassName or $defaultControllerAlias are unexpectedly null',
129  1679051921
130  );
131  }
132 
133  if ($allowedControllerActions === []) {
134  throw new \LengthException(
135  '$allowedControllerActions is expected to not be empty',
136  1679051891
137  );
138  }
139 
140  return new self(
141  $extensionName,
142  $pluginName,
143  $defaultControllerClassName,
144  $defaultControllerAlias,
145  $defaultFormat,
146  $allowedControllerActions,
147  $controllerAliasToClassMapping,
148  $controllerClassToAliasMapping,
149  );
150  }
151 
155  public function ‪getExtensionName(): string
156  {
157  return $this->extensionName;
158  }
159 
163  public function ‪getPluginName(): string
164  {
165  return $this->pluginName;
166  }
167 
171  public function ‪getDefaultControllerClassName(): string
172  {
173  return $this->defaultControllerClassName;
174  }
175 
179  public function ‪getDefaultControllerAlias(): string
180  {
181  return $this->defaultControllerAlias;
182  }
183 
187  public function ‪getDefaultFormat(): string
188  {
189  return $this->defaultFormat;
190  }
191 
195  public function getAllowedControllerActions(): array
196  {
197  return $this->allowedControllerActions;
198  }
199 
203  public function ‪getAllowedControllerActionsOfController(string $controllerClassName): array
204  {
205  return $this->‪allowedControllerActions[$controllerClassName] ?? [];
206  }
207 
211  public function getControllerAliasToClassMapping(): array
212  {
213  return $this->controllerAliasToClassMapping;
214  }
215 
219  public function getControllerClassToAliasMapping(): array
220  {
221  return $this->controllerClassToAliasMapping;
222  }
223 
228  public function ‪getControllerClassNameForAlias(string $controllerAlias): ?string
229  {
230  return $this->‪controllerAliasToClassMapping[$controllerAlias] ?? null;
231  }
232 
237  public function ‪getControllerAliasForControllerClassName(string $controllerClassName): ?string
238  {
239  return $this->‪controllerClassToAliasMapping[$controllerClassName] ?? null;
240  }
241 
242  public function ‪getDefaultActionName(string $controllerClassName): ?string
243  {
244  $actions = $this->‪allowedControllerActions[$controllerClassName] ?? [];
245  return $actions[0] ?? null;
246  }
247 }
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\controllerAliasToClassMapping
‪array< non-empty-string, function getControllerAliasToClassMapping():array { return $this-> controllerAliasToClassMapping
Definition: RequestBuilderDefaultValues.php:213
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\getDefaultControllerAlias
‪non empty string getDefaultControllerAlias()
Definition: RequestBuilderDefaultValues.php:179
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues
Definition: RequestBuilderDefaultValues.php:24
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\allowedControllerActions
‪array< class-string, function getAllowedControllerActions():array { return $this-> allowedControllerActions
Definition: RequestBuilderDefaultValues.php:197
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\getControllerAliasForControllerClassName
‪non empty string null getControllerAliasForControllerClassName(string $controllerClassName)
Definition: RequestBuilderDefaultValues.php:237
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\fromConfiguration
‪static fromConfiguration(array $configuration)
Definition: RequestBuilderDefaultValues.php:43
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\getDefaultFormat
‪non empty string getDefaultFormat()
Definition: RequestBuilderDefaultValues.php:187
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\controllerClassToAliasMapping
‪array< class-string, function getControllerClassToAliasMapping():array { return $this-> controllerClassToAliasMapping
Definition: RequestBuilderDefaultValues.php:221
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\getDefaultControllerClassName
‪class string getDefaultControllerClassName()
Definition: RequestBuilderDefaultValues.php:171
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\getDefaultActionName
‪getDefaultActionName(string $controllerClassName)
Definition: RequestBuilderDefaultValues.php:242
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\getExtensionName
‪non empty string getExtensionName()
Definition: RequestBuilderDefaultValues.php:155
‪TYPO3\CMS\Extbase\Mvc\Web
Definition: RequestBuilder.php:18
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\getAllowedControllerActionsOfController
‪list< string > getAllowedControllerActionsOfController(string $controllerClassName)
Definition: RequestBuilderDefaultValues.php:203
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\__construct
‪__construct(private readonly string $extensionName, private readonly string $pluginName, private readonly string $defaultControllerClassName, private readonly string $defaultControllerAlias, private readonly string $defaultFormat, private readonly array $allowedControllerActions, private readonly array $controllerAliasToClassMapping, private readonly array $controllerClassToAliasMapping,)
Definition: RequestBuilderDefaultValues.php:32
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\getPluginName
‪non empty string getPluginName()
Definition: RequestBuilderDefaultValues.php:163
‪TYPO3\CMS\Extbase\Mvc\Web\RequestBuilderDefaultValues\getControllerClassNameForAlias
‪class string null getControllerClassNameForAlias(string $controllerAlias)
Definition: RequestBuilderDefaultValues.php:228