|
12 | 12 | use PhpMyAdmin\Template; |
13 | 13 | use PhpMyAdmin\Url; |
14 | 14 |
|
| 15 | +use function is_array; |
| 16 | +use function is_string; |
| 17 | + |
15 | 18 | /** |
16 | 19 | * Displays details about a given Storage Engine. |
17 | 20 | */ |
18 | 21 | final class ShowEngineController extends AbstractController |
19 | 22 | { |
| 23 | + private string $engine = ''; |
| 24 | + private string $page = ''; |
| 25 | + |
20 | 26 | public function __construct(ResponseRenderer $response, Template $template, private DatabaseInterface $dbi) |
21 | 27 | { |
22 | 28 | parent::__construct($response, $template); |
23 | 29 | } |
24 | 30 |
|
25 | | - /** |
26 | | - * @param array $params |
27 | | - * @psalm-param array{engine: string, page?: string} $params |
28 | | - */ |
29 | | - public function __invoke(ServerRequest $request, array $params): void |
| 31 | + public function __invoke(ServerRequest $request): void |
30 | 32 | { |
| 33 | + $this->setEngineAndPageProperties($request->getAttribute('routeVars')); |
| 34 | + |
31 | 35 | $GLOBALS['errorUrl'] = Url::getFromRoute('/'); |
32 | 36 |
|
33 | 37 | if ($this->dbi->isSuperUser()) { |
34 | 38 | $this->dbi->selectDb('mysql'); |
35 | 39 | } |
36 | 40 |
|
37 | | - $page = $params['page'] ?? ''; |
38 | | - |
39 | 41 | $engine = []; |
40 | | - if (StorageEngine::isValid($params['engine'])) { |
41 | | - $storageEngine = StorageEngine::getEngine($params['engine']); |
| 42 | + if (StorageEngine::isValid($this->engine)) { |
| 43 | + $storageEngine = StorageEngine::getEngine($this->engine); |
42 | 44 | $engine = [ |
43 | | - 'engine' => $params['engine'], |
| 45 | + 'engine' => $this->engine, |
44 | 46 | 'title' => $storageEngine->getTitle(), |
45 | 47 | 'help_page' => $storageEngine->getMysqlHelpPage(), |
46 | 48 | 'comment' => $storageEngine->getComment(), |
47 | 49 | 'info_pages' => $storageEngine->getInfoPages(), |
48 | 50 | 'support' => $storageEngine->getSupportInformationMessage(), |
49 | 51 | 'variables' => $storageEngine->getHtmlVariables(), |
50 | | - 'page' => ! empty($page) ? $storageEngine->getPage($page) : '', |
| 52 | + 'page' => $this->page !== '' ? $storageEngine->getPage($this->page) : '', |
51 | 53 | ]; |
52 | 54 | } |
53 | 55 |
|
54 | | - $this->render('server/engines/show', ['engine' => $engine, 'page' => $page]); |
| 56 | + $this->render('server/engines/show', ['engine' => $engine, 'page' => $this->page]); |
| 57 | + } |
| 58 | + |
| 59 | + private function setEngineAndPageProperties(mixed $routeVars): void |
| 60 | + { |
| 61 | + if (! is_array($routeVars)) { |
| 62 | + return; |
| 63 | + } |
| 64 | + |
| 65 | + $this->engine = isset($routeVars['engine']) && is_string($routeVars['engine']) ? $routeVars['engine'] : ''; |
| 66 | + $this->page = isset($routeVars['page']) && is_string($routeVars['page']) ? $routeVars['page'] : ''; |
55 | 67 | } |
56 | 68 | } |
0 commit comments