Update website

This commit is contained in:
Guilhem Lavaux 2025-03-24 09:27:39 +01:00
parent a0b0d3dae7
commit ae7ef6ad45
3151 changed files with 566766 additions and 48 deletions

View file

@ -0,0 +1,56 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Controllers\Setup;
use PhpMyAdmin\Config\ConfigFile;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Setup\SetupFormList;
use PhpMyAdmin\Template;
use function in_array;
abstract class AbstractController
{
/** @var ConfigFile */
protected $config;
/** @var Template */
protected $template;
/**
* @param ConfigFile $config ConfigFile instance
* @param Template $template Template instance
*/
public function __construct($config, $template)
{
$this->config = $config;
$this->template = $template;
}
/**
* @return array
*/
protected function getPages(): array
{
$ignored = [
'Config',
'Servers',
];
$pages = [];
foreach (SetupFormList::getAll() as $formset) {
if (in_array($formset, $ignored)) {
continue;
}
/** @var BaseForm $formClass */
$formClass = SetupFormList::get($formset);
$pages[$formset] = [
'name' => $formClass::getName(),
'formset' => $formset,
];
}
return $pages;
}
}

View file

@ -0,0 +1,47 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Controllers\Setup;
use PhpMyAdmin\Config\FormDisplayTemplate;
use PhpMyAdmin\Core;
use PhpMyAdmin\Setup\ConfigGenerator;
class ConfigController extends AbstractController
{
/**
* @param array $params Request parameters
*
* @return string HTML
*/
public function index(array $params): string
{
$pages = $this->getPages();
$formDisplayTemplate = new FormDisplayTemplate($GLOBALS['PMA_Config']);
$formTop = $formDisplayTemplate->displayFormTop('config.php');
$fieldsetTop = $formDisplayTemplate->displayFieldsetTop(
'config.inc.php',
'',
null,
['class' => 'simple']
);
$formBottom = $formDisplayTemplate->displayFieldsetBottom(false);
$fieldsetBottom = $formDisplayTemplate->displayFormBottom();
$config = ConfigGenerator::getConfigFile($this->config);
return $this->template->render('setup/config/index', [
'formset' => $params['formset'] ?? '',
'pages' => $pages,
'form_top_html' => $formTop,
'fieldset_top_html' => $fieldsetTop,
'form_bottom_html' => $formBottom,
'fieldset_bottom_html' => $fieldsetBottom,
'eol' => Core::ifSetOr($params['eol'], 'unix'),
'config' => $config,
]);
}
}

View file

@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Controllers\Setup;
use PhpMyAdmin\Config\Forms\BaseForm;
use PhpMyAdmin\Config\Forms\Setup\SetupFormList;
use PhpMyAdmin\Core;
use PhpMyAdmin\Setup\FormProcessing;
use function ob_get_clean;
use function ob_start;
class FormController extends AbstractController
{
/**
* @param array $params Request parameters
*
* @return string HTML
*/
public function index(array $params): string
{
$pages = $this->getPages();
$formset = Core::isValid($params['formset'], 'scalar') ? $params['formset'] : null;
$formClass = SetupFormList::get($formset);
if ($formClass === null) {
Core::fatalError(__('Incorrect form specified!'));
}
ob_start();
/** @var BaseForm $form */
$form = new $formClass($this->config);
FormProcessing::process($form);
$page = ob_get_clean();
return $this->template->render('setup/form/index', [
'formset' => $params['formset'] ?? '',
'pages' => $pages,
'name' => $form::getName(),
'page' => $page,
]);
}
}

View file

@ -0,0 +1,222 @@
<?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,
]);
}
}

View file

@ -0,0 +1,61 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Controllers\Setup;
use PhpMyAdmin\Config\Forms\Setup\ServersForm;
use PhpMyAdmin\Core;
use PhpMyAdmin\Setup\FormProcessing;
use function ob_get_clean;
use function ob_start;
class ServersController extends AbstractController
{
/**
* @param array $params Request parameters
*
* @return string HTML
*/
public function index(array $params): string
{
$pages = $this->getPages();
$id = Core::isValid($params['id'], 'numeric') ? (int) $params['id'] : null;
$hasServer = ! empty($id) && $this->config->get('Servers/' . $id) !== null;
if (! $hasServer && ($params['mode'] !== 'revert' && $params['mode'] !== 'edit')) {
$id = 0;
}
ob_start();
FormProcessing::process(new ServersForm($this->config, $id));
$page = ob_get_clean();
return $this->template->render('setup/servers/index', [
'formset' => $params['formset'] ?? '',
'pages' => $pages,
'has_server' => $hasServer,
'mode' => $params['mode'],
'server_id' => $id,
'server_dsn' => $this->config->getServerDSN($id),
'page' => $page,
]);
}
/**
* @param array $params Request parameters
*/
public function destroy(array $params): void
{
$id = Core::isValid($params['id'], 'numeric') ? (int) $params['id'] : null;
$hasServer = ! empty($id) && $this->config->get('Servers/' . $id) !== null;
if (! $hasServer) {
return;
}
$this->config->removeServer($id);
}
}