Merge pull request #18847 from kamil-tekiela/CentralColumnsController

Refactor CentralColumnsController to use DatabaseName
This commit is contained in:
Maurício Meneghini Fauth 2023-12-17 14:15:10 -03:00 committed by GitHub
commit 5abc1a5870
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 63 deletions

View File

@ -1505,41 +1505,11 @@ parameters:
count: 1
path: src/Controllers/Database/CentralColumns/PopulateColumnsController.php
-
message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#"
count: 1
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#1 \\$database of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:deleteColumnsFromList\\(\\) expects string, mixed given\\.$#"
count: 1
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:getColumnsCount\\(\\) expects string, mixed given\\.$#"
count: 1
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:getCount\\(\\) expects string, mixed given\\.$#"
count: 1
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:getListRaw\\(\\) expects string, mixed given\\.$#"
count: 1
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:getTemplateVariablesForMain\\(\\) expects string, mixed given\\.$#"
count: 1
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:updateOneColumn\\(\\) expects string, mixed given\\.$#"
count: 2
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#1 \\$fieldSelect of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:syncUniqueColumns\\(\\) expects array\\<string\\>, array\\<int, mixed\\> given\\.$#"
count: 1
@ -1550,6 +1520,11 @@ parameters:
count: 1
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#1 \\$totalRows of method PhpMyAdmin\\\\Controllers\\\\Database\\\\CentralColumnsController\\:\\:main\\(\\) expects string, mixed given\\.$#"
count: 1
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#10 \\$colDefault of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:updateOneColumn\\(\\) expects string, mixed given\\.$#"
count: 2
@ -1560,6 +1535,11 @@ parameters:
count: 1
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#2 \\$position of method PhpMyAdmin\\\\Controllers\\\\Database\\\\CentralColumnsController\\:\\:main\\(\\) expects string, mixed given\\.$#"
count: 1
path: src/Controllers/Database/CentralColumnsController.php
-
message: "#^Parameter \\#2 \\$selectedDb of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:getHtmlForEditingPage\\(\\) expects string, mixed given\\.$#"
count: 1

View File

@ -917,11 +917,13 @@
<code><![CDATA[$params['col_type']]]></code>
<code><![CDATA[$params['collation']]]></code>
<code><![CDATA[$params['collation']]]></code>
<code><![CDATA[$params['cur_table'] ?? '']]></code>
<code><![CDATA[$params['db']]]></code>
<code><![CDATA[$params['db']]]></code>
<code><![CDATA[$params['orig_col_name']]]></code>
<code><![CDATA[$params['table-select']]]></code>
<code><![CDATA[$request->getParsedBodyParam('cur_table', '')]]></code>
<code><![CDATA[$request->getParsedBodyParam('pos', '')]]></code>
<code><![CDATA[$request->getParsedBodyParam('total_rows', '')]]></code>
</MixedArgument>
<MixedArgumentTypeCoercion>
<code>$variables</code>

View File

@ -11,6 +11,7 @@ use PhpMyAdmin\Config;
use PhpMyAdmin\Controllers\AbstractController;
use PhpMyAdmin\Database\CentralColumns;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\Identifiers\DatabaseName;
use PhpMyAdmin\Message;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Template;
@ -35,6 +36,7 @@ class CentralColumnsController extends AbstractController
public function __invoke(ServerRequest $request): void
{
$GLOBALS['message'] ??= null;
$db = DatabaseName::from($request->getParam('db'));
if ($request->hasBodyParam('edit_save')) {
$this->response->addHTML((string) $this->editSave([
@ -48,7 +50,7 @@ class CentralColumnsController extends AbstractController
'col_attribute' => $request->getParsedBodyParam('col_attribute'),
'col_type' => $request->getParsedBodyParam('col_type'),
'collation' => $request->getParsedBodyParam('collation'),
]));
], $db));
return;
}
@ -64,13 +66,14 @@ class CentralColumnsController extends AbstractController
'col_attribute' => $request->getParsedBodyParam('col_attribute'),
'col_type' => $request->getParsedBodyParam('col_type'),
'collation' => $request->getParsedBodyParam('collation'),
]);
], $db);
}
if ($request->hasBodyParam('getColumnList')) {
$this->response->addJSON('message', $this->getColumnList([
'cur_table' => $request->getParsedBodyParam('cur_table'),
]));
$this->response->addJSON('message', $this->centralColumns->getListRaw(
$db->getName(),
$request->getParsedBodyParam('cur_table', ''),
));
return;
}
@ -124,10 +127,11 @@ class CentralColumnsController extends AbstractController
]);
}
$this->main([
'pos' => $request->getParsedBodyParam('pos'),
'total_rows' => $request->getParsedBodyParam('total_rows'),
]);
$this->main(
$request->getParsedBodyParam('pos', ''),
$request->getParsedBodyParam('total_rows', ''),
$db,
);
$pos = 0;
if (is_numeric($request->getParsedBodyParam('pos'))) {
@ -135,7 +139,7 @@ class CentralColumnsController extends AbstractController
}
$numberOfColumns = $this->centralColumns->getColumnsCount(
$GLOBALS['db'],
$db->getName(),
$pos,
Config::getInstance()->settings['MaxRows'],
);
@ -149,24 +153,23 @@ class CentralColumnsController extends AbstractController
$GLOBALS['message'] = $tmpMsg;
}
/** @param mixed[] $params Request parameters */
public function main(array $params): void
public function main(string $totalRows, string $position, DatabaseName $db): void
{
$GLOBALS['text_dir'] ??= null;
if (! empty($params['total_rows']) && is_numeric($params['total_rows'])) {
$totalRows = (int) $params['total_rows'];
if ($totalRows !== '' && $totalRows !== '0' && is_numeric($totalRows)) {
$totalRows = (int) $totalRows;
} else {
$totalRows = $this->centralColumns->getCount($GLOBALS['db']);
$totalRows = $this->centralColumns->getCount($db->getName());
}
$pos = 0;
if (isset($params['pos']) && is_numeric($params['pos'])) {
$pos = (int) $params['pos'];
if (is_numeric($position)) {
$pos = (int) $position;
}
$variables = $this->centralColumns->getTemplateVariablesForMain(
$GLOBALS['db'],
$db->getName(),
$totalRows,
$pos,
$GLOBALS['text_dir'],
@ -175,22 +178,12 @@ class CentralColumnsController extends AbstractController
$this->render('database/central_columns/main', $variables);
}
/**
* @param mixed[] $params Request parameters
*
* @return mixed[] JSON
*/
public function getColumnList(array $params): array
{
return $this->centralColumns->getListRaw($GLOBALS['db'], $params['cur_table'] ?? '');
}
/**
* @param mixed[] $params Request parameters
*
* @return true|Message
*/
public function editSave(array $params): bool|Message
public function editSave(array $params, DatabaseName $db): bool|Message
{
$columnDefault = $params['col_default'];
if ($columnDefault === 'NONE' && $params['col_default_sel'] !== 'USER_DEFINED') {
@ -198,7 +191,7 @@ class CentralColumnsController extends AbstractController
}
return $this->centralColumns->updateOneColumn(
$GLOBALS['db'],
$db->getName(),
$params['orig_col_name'],
$params['col_name'],
$params['col_type'],
@ -216,7 +209,7 @@ class CentralColumnsController extends AbstractController
*
* @return true|Message
*/
public function addNewColumn(array $params): bool|Message
public function addNewColumn(array $params, DatabaseName $db): bool|Message
{
$columnDefault = $params['col_default'];
if ($columnDefault === 'NONE' && $params['col_default_sel'] !== 'USER_DEFINED') {
@ -224,7 +217,7 @@ class CentralColumnsController extends AbstractController
}
return $this->centralColumns->updateOneColumn(
$GLOBALS['db'],
$db->getName(),
'',
$params['col_name'],
$params['col_type'],