diff --git a/libraries/classes/Controllers/Database/CentralColumns/PopulateColumnsController.php b/libraries/classes/Controllers/Database/CentralColumns/PopulateColumnsController.php index 8bec9c24e5..a3fa59ace0 100644 --- a/libraries/classes/Controllers/Database/CentralColumns/PopulateColumnsController.php +++ b/libraries/classes/Controllers/Database/CentralColumns/PopulateColumnsController.php @@ -26,7 +26,10 @@ final class PopulateColumnsController extends AbstractController public function __invoke(ServerRequest $request): void { - $columns = $this->centralColumns->getColumnsNotInCentralList($GLOBALS['db'], $_POST['selectedTable']); + $columns = $this->centralColumns->getColumnsNotInCentralList( + $GLOBALS['db'], + $request->getParsedBodyParam('selectedTable') + ); $this->render('database/central_columns/populate_columns', ['columns' => $columns]); } } diff --git a/libraries/classes/Controllers/Database/SqlController.php b/libraries/classes/Controllers/Database/SqlController.php index 43f28085ed..5f6e7b395b 100644 --- a/libraries/classes/Controllers/Database/SqlController.php +++ b/libraries/classes/Controllers/Database/SqlController.php @@ -63,7 +63,7 @@ class SqlController extends AbstractController true, false, isset($_POST['delimiter']) - ? htmlspecialchars($_POST['delimiter']) + ? htmlspecialchars($request->getParsedBodyParam('delimiter')) : ';' )); } diff --git a/libraries/classes/Controllers/Database/SqlFormatController.php b/libraries/classes/Controllers/Database/SqlFormatController.php index e468687e68..1fd48e01c9 100644 --- a/libraries/classes/Controllers/Database/SqlFormatController.php +++ b/libraries/classes/Controllers/Database/SqlFormatController.php @@ -17,7 +17,7 @@ class SqlFormatController extends AbstractController { public function __invoke(ServerRequest $request): void { - $params = ['sql' => $_POST['sql'] ?? null]; + $params = ['sql' => $request->getParsedBodyParam('sql')]; $query = strlen((string) $params['sql']) > 0 ? $params['sql'] : ''; $this->response->addJSON(['sql' => Formatter::format($query)]); } diff --git a/libraries/classes/Controllers/Database/StructureController.php b/libraries/classes/Controllers/Database/StructureController.php index 5cc807e7ac..0efc2c1f41 100644 --- a/libraries/classes/Controllers/Database/StructureController.php +++ b/libraries/classes/Controllers/Database/StructureController.php @@ -168,7 +168,7 @@ class StructureController extends AbstractController ]); } - $this->replicationInfo->load($_POST['primary_connection'] ?? null); + $this->replicationInfo->load($request->getParsedBodyParam('primary_connection')); $replicaInfo = $this->replicationInfo->getReplicaInfo(); $pageSettings = new PageSettings('DbStructure'); diff --git a/libraries/classes/Controllers/HomeController.php b/libraries/classes/Controllers/HomeController.php index f84ff96e37..5985d72491 100644 --- a/libraries/classes/Controllers/HomeController.php +++ b/libraries/classes/Controllers/HomeController.php @@ -82,7 +82,7 @@ class HomeController extends AbstractController // This is for $cfg['ShowDatabasesNavigationAsTree'] = false; // See: https://github.com/phpmyadmin/phpmyadmin/issues/16520 // The DB is defined here and sent to the JS front-end to refresh the DB tree - $GLOBALS['db'] = $_POST['db'] ?? ''; + $GLOBALS['db'] = $request->getParsedBodyParam('db', ''); $GLOBALS['table'] = ''; $GLOBALS['show_query'] = '1'; $GLOBALS['errorUrl'] = Url::getFromRoute('/'); diff --git a/libraries/classes/Controllers/LintController.php b/libraries/classes/Controllers/LintController.php index f25651ed42..a8c5cc3d74 100644 --- a/libraries/classes/Controllers/LintController.php +++ b/libraries/classes/Controllers/LintController.php @@ -22,7 +22,7 @@ class LintController extends AbstractController { $params = [ 'sql_query' => $_POST['sql_query'] ?? null, - 'options' => $_POST['options'] ?? null, + 'options' => $request->getParsedBodyParam('options'), ]; /** diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index c78f450b0c..411118fc8e 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -975,6 +975,11 @@ parameters: count: 1 path: libraries/classes/Controllers/Config/SetConfigController.php + - + message: "#^Parameter \\#2 \\$table of method PhpMyAdmin\\\\Database\\\\CentralColumns\\:\\:getColumnsNotInCentralList\\(\\) expects string, mixed given\\.$#" + count: 1 + path: libraries/classes/Controllers/Database/CentralColumns/PopulateColumnsController.php + - message: "#^Method PhpMyAdmin\\\\Controllers\\\\Database\\\\CentralColumnsController\\:\\:addColumn\\(\\) has parameter \\$params with no value type specified in iterable type array\\.$#" count: 1 @@ -1055,6 +1060,21 @@ parameters: count: 1 path: libraries/classes/Controllers/Database/SqlAutoCompleteController.php + - + message: "#^Parameter \\#1 \\$string of function htmlspecialchars expects string, mixed given\\.$#" + count: 1 + path: libraries/classes/Controllers/Database/SqlController.php + + - + message: "#^Cannot cast mixed to string\\.$#" + count: 1 + path: libraries/classes/Controllers/Database/SqlFormatController.php + + - + message: "#^Parameter \\#1 \\$query of static method PhpMyAdmin\\\\SqlParser\\\\Utils\\\\Formatter\\:\\:format\\(\\) expects string, mixed given\\.$#" + count: 1 + path: libraries/classes/Controllers/Database/SqlFormatController.php + - message: "#^Cannot access offset non\\-empty\\-string on mixed\\.$#" count: 1 @@ -1160,6 +1180,11 @@ parameters: count: 1 path: libraries/classes/Controllers/Database/StructureController.php + - + message: "#^Parameter \\#1 \\$connection of method PhpMyAdmin\\\\ReplicationInfo\\:\\:load\\(\\) expects string\\|null, mixed given\\.$#" + count: 1 + path: libraries/classes/Controllers/Database/StructureController.php + - message: "#^Parameter \\#4 \\$formattedSize of method PhpMyAdmin\\\\Controllers\\\\Database\\\\StructureController\\:\\:getValuesForAriaTable\\(\\) expects int, string given\\.$#" count: 1 @@ -1240,6 +1265,21 @@ parameters: count: 1 path: libraries/classes/Controllers/HomeController.php + - + message: "#^Cannot access offset 'eventEditor' on mixed\\.$#" + count: 1 + path: libraries/classes/Controllers/LintController.php + + - + message: "#^Cannot access offset 'routineEditor' on mixed\\.$#" + count: 1 + path: libraries/classes/Controllers/LintController.php + + - + message: "#^Cannot access offset 'triggerEditor' on mixed\\.$#" + count: 1 + path: libraries/classes/Controllers/LintController.php + - message: "#^Parameter \\#1 \\$partialDependencies of method PhpMyAdmin\\\\Normalization\\:\\:createNewTablesFor2NF\\(\\) expects array, mixed given\\.$#" count: 1 diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 5af461fd9d..7f3ab93c68 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -941,12 +941,9 @@ - - $_POST['selectedTable'] - - - $_POST['selectedTable'] - + + $request->getParsedBodyParam('selectedTable') + @@ -1395,22 +1392,21 @@ + + $request->getParsedBodyParam('delimiter') + $GLOBALS['back'] $GLOBALS['errorUrl'] - - $_POST['delimiter'] - - + $query - - - $params['sql'] + + $query - + @@ -1668,7 +1664,7 @@ $formattedOverhead $formattedSize - + $checkTime $checkTimeAll $createTime @@ -1700,6 +1696,7 @@ $replicaInfo['Ignore_Table'] $replicaInfo['Wild_Do_Table'] $replicaInfo['Wild_Ignore_Table'] + $request->getParsedBodyParam('primary_connection') $sumSize $tableIsView $truename @@ -1771,9 +1768,6 @@ $currentTable['TABLE_NAME'] $currentTable['TABLE_ROWS'] - - $_POST['primary_connection'] ?? null - $formattedOverhead $formattedSize @@ -2192,7 +2186,8 @@ $GLOBALS['language_stats'][$GLOBALS['lang']] - + + $GLOBALS['db'] $GLOBALS['errorUrl'] $GLOBALS['show_query'] @@ -2334,6 +2329,11 @@ $_GET['id'] + + + $options + + $GLOBALS['auth_plugin']