phpmyadmin/libraries/classes/Controllers/CheckRelationsController.php
Maria Papadopoulou cb7d976a69
Abstract & CheckRelations Controllers - Refactored (#17829)
* Abstract & CheckRelations Controllers - Refactored

Signed-off-by: Maria Papadopoulou <1maria.papa@gmail.com>

* Requested Changes

Signed-off-by: Maria Papadopoulou <1maria.papa@gmail.com>

* Fix some small issues

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>

Signed-off-by: Maria Papadopoulou <1maria.papa@gmail.com>
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
Co-authored-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2022-10-29 16:56:39 -03:00

71 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Controllers;
use PhpMyAdmin\ConfigStorage\Relation;
use PhpMyAdmin\Dbal\DatabaseName;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Template;
use const SQL_DIR;
/**
* Displays status of phpMyAdmin configuration storage
*/
class CheckRelationsController extends AbstractController
{
/** @var Relation */
private $relation;
public function __construct(ResponseRenderer $response, Template $template, Relation $relation)
{
parent::__construct($response, $template);
$this->relation = $relation;
}
public function __invoke(ServerRequest $request): void
{
/** @var string|null $createPmaDb */
$createPmaDb = $request->getParsedBodyParam('create_pmadb');
/** @var string|null $fixAllPmaDb */
$fixAllPmaDb = $request->getParsedBodyParam('fixall_pmadb');
/** @var string|null $fixPmaDb */
$fixPmaDb = $request->getParsedBodyParam('fix_pmadb');
$cfgStorageDbName = $this->relation->getConfigurationStorageDbName();
$db = DatabaseName::tryFromValue($GLOBALS['db']);
// If request for creating the pmadb
if (isset($createPmaDb) && $this->relation->createPmaDatabase($cfgStorageDbName)) {
$this->relation->fixPmaTables($cfgStorageDbName);
}
// If request for creating all PMA tables.
if (isset($fixAllPmaDb) && $db !== null) {
$this->relation->fixPmaTables($db->getName());
}
// If request for creating missing PMA tables.
if (isset($fixPmaDb)) {
$relationParameters = $this->relation->getRelationParameters();
$this->relation->fixPmaTables((string) $relationParameters->db);
}
// Do not use any previous $relationParameters value as it could have changed after a successful fixPmaTables()
$relationParameters = $this->relation->getRelationParameters();
$this->render('relation/check_relations', [
'db' => $db !== null ? $db->getName() : '',
'zero_conf' => $GLOBALS['cfg']['ZeroConf'],
'relation_parameters' => $relationParameters->toArray(),
'sql_dir' => SQL_DIR,
'config_storage_database_name' => $cfgStorageDbName,
'are_config_storage_tables_defined' => $this->relation->arePmadbTablesDefined(),
]);
}
}