EnginesController.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. declare(strict_types=1);
  3. namespace PhpMyAdmin\Controllers\Server;
  4. use PhpMyAdmin\Controllers\AbstractController;
  5. use PhpMyAdmin\DatabaseInterface;
  6. use PhpMyAdmin\Response;
  7. use PhpMyAdmin\StorageEngine;
  8. use PhpMyAdmin\Template;
  9. use PhpMyAdmin\Url;
  10. /**
  11. * Handles viewing storage engine details
  12. */
  13. class EnginesController extends AbstractController
  14. {
  15. /** @var DatabaseInterface */
  16. private $dbi;
  17. /**
  18. * @param Response $response
  19. * @param DatabaseInterface $dbi
  20. */
  21. public function __construct($response, Template $template, $dbi)
  22. {
  23. parent::__construct($response, $template);
  24. $this->dbi = $dbi;
  25. }
  26. public function index(): void
  27. {
  28. global $err_url;
  29. $err_url = Url::getFromRoute('/');
  30. if ($this->dbi->isSuperUser()) {
  31. $this->dbi->selectDb('mysql');
  32. }
  33. $this->render('server/engines/index', [
  34. 'engines' => StorageEngine::getStorageEngines(),
  35. ]);
  36. }
  37. /**
  38. * Displays details about a given Storage Engine
  39. *
  40. * @param array $params Request params
  41. */
  42. public function show(array $params): void
  43. {
  44. global $err_url;
  45. $err_url = Url::getFromRoute('/');
  46. if ($this->dbi->isSuperUser()) {
  47. $this->dbi->selectDb('mysql');
  48. }
  49. $page = $params['page'] ?? '';
  50. $engine = [];
  51. if (StorageEngine::isValid($params['engine'])) {
  52. $storageEngine = StorageEngine::getEngine($params['engine']);
  53. $engine = [
  54. 'engine' => $params['engine'],
  55. 'title' => $storageEngine->getTitle(),
  56. 'help_page' => $storageEngine->getMysqlHelpPage(),
  57. 'comment' => $storageEngine->getComment(),
  58. 'info_pages' => $storageEngine->getInfoPages(),
  59. 'support' => $storageEngine->getSupportInformationMessage(),
  60. 'variables' => $storageEngine->getHtmlVariables(),
  61. 'page' => ! empty($page) ? $storageEngine->getPage($page) : '',
  62. ];
  63. }
  64. $this->render('server/engines/show', [
  65. 'engine' => $engine,
  66. 'page' => $page,
  67. ]);
  68. }
  69. }