diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index db786c5e93..d7cee56df6 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -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\\, array\\ 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 diff --git a/psalm-baseline.xml b/psalm-baseline.xml index ca234ddd3f..5ae3376114 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -917,11 +917,13 @@ - + getParsedBodyParam('cur_table', '')]]> + getParsedBodyParam('pos', '')]]> + getParsedBodyParam('total_rows', '')]]> $variables diff --git a/src/Controllers/Database/CentralColumnsController.php b/src/Controllers/Database/CentralColumnsController.php index a71d86b4d2..eef48e0082 100644 --- a/src/Controllers/Database/CentralColumnsController.php +++ b/src/Controllers/Database/CentralColumnsController.php @@ -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'],