123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- <?php
- declare(strict_types=1);
- namespace PhpMyAdmin\Controllers\Setup;
- use PhpMyAdmin\Config\FormDisplay;
- use PhpMyAdmin\Config\FormDisplayTemplate;
- use PhpMyAdmin\Config\ServerConfigChecks;
- use PhpMyAdmin\Core;
- use PhpMyAdmin\LanguageManager;
- use PhpMyAdmin\Sanitize;
- use PhpMyAdmin\Setup\Index;
- use function preg_replace;
- use function uniqid;
- class HomeController extends AbstractController
- {
- /**
- * @param array $params Request parameters
- *
- * @return string HTML
- */
- public function index(array $params): string
- {
- $pages = $this->getPages();
- // Handle done action info
- $actionDone = Core::isValid($params['action_done'], 'scalar') ? $params['action_done'] : '';
- $actionDone = preg_replace('/[^a-z_]/', '', $actionDone);
- // message handling
- Index::messagesBegin();
- // Check phpMyAdmin version
- if (isset($params['version_check'])) {
- Index::versionCheck();
- }
- // Perform various security, compatibility and consistency checks
- $configChecker = new ServerConfigChecks($this->config);
- $configChecker->performConfigChecks();
- $text = __(
- 'You are not using a secure connection; all data (including potentially '
- . 'sensitive information, like passwords) is transferred unencrypted!'
- );
- $text .= ' <a href="#">';
- $text .= __(
- 'If your server is also configured to accept HTTPS requests '
- . 'follow this link to use a secure connection.'
- );
- $text .= '</a>';
- Index::messagesSet('notice', 'no_https', __('Insecure connection'), $text);
- // Check for done action info and set notice message if present
- switch ($actionDone) {
- case 'config_saved':
- /* Use uniqid to display this message every time configuration is saved */
- Index::messagesSet(
- 'notice',
- uniqid('config_saved'),
- __('Configuration saved.'),
- Sanitize::sanitizeMessage(
- __(
- 'Configuration saved to file config/config.inc.php in phpMyAdmin '
- . 'top level directory, copy it to top level one and delete '
- . 'directory config to use it.'
- )
- )
- );
- break;
- case 'config_not_saved':
- /* Use uniqid to display this message every time configuration is saved */
- Index::messagesSet(
- 'notice',
- uniqid('config_not_saved'),
- __('Configuration not saved!'),
- Sanitize::sanitizeMessage(
- __(
- 'Please create web server writable folder [em]config[/em] in '
- . 'phpMyAdmin top level directory as described in '
- . '[doc@setup_script]documentation[/doc]. Otherwise you will be '
- . 'only able to download or display it.'
- )
- )
- );
- break;
- default:
- break;
- }
- Index::messagesEnd();
- $messages = Index::messagesShowHtml();
- $formDisplay = new FormDisplay($this->config);
- $defaultLanguageOptions = [
- 'doc' => $formDisplay->getDocLink('DefaultLang'),
- 'values' => [],
- 'values_escaped' => true,
- ];
- // prepare unfiltered language list
- $sortedLanguages = LanguageManager::getInstance()->sortedLanguages();
- $languages = [];
- foreach ($sortedLanguages as $language) {
- $languages[] = [
- 'code' => $language->getCode(),
- 'name' => $language->getName(),
- 'is_active' => $language->isActive(),
- ];
- $defaultLanguageOptions['values'][$language->getCode()] = $language->getName();
- }
- $serverDefaultOptions = [
- 'doc' => $formDisplay->getDocLink('ServerDefault'),
- 'values' => [],
- 'values_disabled' => [],
- ];
- $servers = [];
- if ($this->config->getServerCount() > 0) {
- $serverDefaultOptions['values']['0'] = __('let the user choose');
- $serverDefaultOptions['values']['-'] = '------------------------------';
- if ($this->config->getServerCount() === 1) {
- $serverDefaultOptions['values_disabled'][] = '0';
- }
- $serverDefaultOptions['values_disabled'][] = '-';
- foreach ($this->config->getServers() as $id => $server) {
- $servers[$id] = [
- 'id' => $id,
- 'name' => $this->config->getServerName($id),
- 'auth_type' => $this->config->getValue('Servers/' . $id . '/auth_type'),
- 'dsn' => $this->config->getServerDSN($id),
- 'params' => [
- 'token' => $_SESSION[' PMA_token '],
- 'edit' => [
- 'page' => 'servers',
- 'mode' => 'edit',
- 'id' => $id,
- ],
- 'remove' => [
- 'page' => 'servers',
- 'mode' => 'remove',
- 'id' => $id,
- ],
- ],
- ];
- $serverDefaultOptions['values'][(string) $id] = $this->config->getServerName($id) . ' [' . $id . ']';
- }
- } else {
- $serverDefaultOptions['values']['1'] = __('- none -');
- $serverDefaultOptions['values_escaped'] = true;
- }
- $formDisplayTemplate = new FormDisplayTemplate($GLOBALS['PMA_Config']);
- $serversFormTopHtml = $formDisplayTemplate->displayFormTop(
- 'index.php',
- 'get',
- [
- 'page' => 'servers',
- 'mode' => 'add',
- ]
- );
- $configFormTopHtml = $formDisplayTemplate->displayFormTop('config.php');
- $formBottomHtml = $formDisplayTemplate->displayFormBottom();
- $defaultLanguageInput = $formDisplayTemplate->displayInput(
- 'DefaultLang',
- __('Default language'),
- 'select',
- $this->config->getValue('DefaultLang'),
- '',
- true,
- $defaultLanguageOptions
- );
- $serverDefaultInput = $formDisplayTemplate->displayInput(
- 'ServerDefault',
- __('Default server'),
- 'select',
- $this->config->getValue('ServerDefault'),
- '',
- true,
- $serverDefaultOptions
- );
- $eolOptions = [
- 'values' => [
- 'unix' => 'UNIX / Linux (\n)',
- 'win' => 'Windows (\r\n)',
- ],
- 'values_escaped' => true,
- ];
- $eol = Core::ifSetOr($_SESSION['eol'], (PMA_IS_WINDOWS ? 'win' : 'unix'));
- $eolInput = $formDisplayTemplate->displayInput(
- 'eol',
- __('End of line'),
- 'select',
- $eol,
- '',
- true,
- $eolOptions
- );
- return $this->template->render('setup/home/index', [
- 'formset' => $params['formset'] ?? '',
- 'languages' => $languages,
- 'messages' => $messages,
- 'servers_form_top_html' => $serversFormTopHtml,
- 'config_form_top_html' => $configFormTopHtml,
- 'form_bottom_html' => $formBottomHtml,
- 'server_count' => $this->config->getServerCount(),
- 'servers' => $servers,
- 'default_language_input' => $defaultLanguageInput,
- 'server_default_input' => $serverDefaultInput,
- 'eol_input' => $eolInput,
- 'pages' => $pages,
- ]);
- }
- }
|