diff --git a/libraries/classes/Controllers/CollationConnectionController.php b/libraries/classes/Controllers/CollationConnectionController.php
index a61c7b98f8..15fdc71610 100644
--- a/libraries/classes/Controllers/CollationConnectionController.php
+++ b/libraries/classes/Controllers/CollationConnectionController.php
@@ -26,7 +26,7 @@ final class CollationConnectionController extends AbstractController
$this->config->setUserValue(
null,
'DefaultConnectionCollation',
- $_POST['collation_connection'],
+ $request->getParsedBodyParam('collation_connection'),
'utf8mb4_unicode_ci'
);
diff --git a/libraries/classes/Controllers/SchemaExportController.php b/libraries/classes/Controllers/SchemaExportController.php
index 96fb90d24c..84bad61c3b 100644
--- a/libraries/classes/Controllers/SchemaExportController.php
+++ b/libraries/classes/Controllers/SchemaExportController.php
@@ -26,7 +26,7 @@ class SchemaExportController
public function __invoke(ServerRequest $request): void
{
- if (! isset($_POST['export_type'])) {
+ if ($request->getParsedBodyParam('export_type') === null) {
$errorMessage = __('Missing parameter:') . ' export_type'
. MySQLDocumentation::showDocumentation('faq', 'faqmissingparameters', true)
. '[br]';
diff --git a/libraries/classes/Controllers/Sql/SetValuesController.php b/libraries/classes/Controllers/Sql/SetValuesController.php
index db2999df21..ec01e0d896 100644
--- a/libraries/classes/Controllers/Sql/SetValuesController.php
+++ b/libraries/classes/Controllers/Sql/SetValuesController.php
@@ -42,10 +42,10 @@ final class SetValuesController extends AbstractController
{
$this->checkUserPrivileges->getPrivileges();
- $column = $_POST['column'];
- $currentValue = $_POST['curr_value'];
- $fullValues = $_POST['get_full_values'] ?? false;
- $whereClause = $_POST['where_clause'] ?? null;
+ $column = $request->getParsedBodyParam('column');
+ $currentValue = $request->getParsedBodyParam('curr_value');
+ $fullValues = $request->getParsedBodyParam('get_full_values', false);
+ $whereClause = $request->getParsedBodyParam('where_clause');
$values = $this->sql->getValuesForColumn($GLOBALS['db'], $GLOBALS['table'], $column);
diff --git a/libraries/classes/Controllers/TableController.php b/libraries/classes/Controllers/TableController.php
index 27f74d46c7..a2e0cefda0 100644
--- a/libraries/classes/Controllers/TableController.php
+++ b/libraries/classes/Controllers/TableController.php
@@ -23,13 +23,13 @@ final class TableController extends AbstractController
public function __invoke(ServerRequest $request): void
{
- if (! isset($_POST['db'])) {
+ if ($request->getParsedBodyParam('db') === null) {
$this->response->setRequestStatus(false);
$this->response->addJSON(['message' => Message::error()]);
return;
}
- $this->response->addJSON(['tables' => $this->dbi->getTables($_POST['db'])]);
+ $this->response->addJSON(['tables' => $this->dbi->getTables($request->getParsedBodyParam('db'))]);
}
}
diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon
index 5d98f7ddfa..c98a7a3ac3 100644
--- a/phpstan-baseline.neon
+++ b/phpstan-baseline.neon
@@ -1010,6 +1010,11 @@ parameters:
count: 1
path: libraries/classes/Controllers/AbstractController.php
+ -
+ message: "#^Parameter \\#3 \\$new_cfg_value of method PhpMyAdmin\\\\Config\\:\\:setUserValue\\(\\) expects string, mixed given\\.$#"
+ count: 1
+ path: libraries/classes/Controllers/CollationConnectionController.php
+
-
message: "#^Parameter \\#3 \\$new_cfg_value of method PhpMyAdmin\\\\Config\\:\\:setUserValue\\(\\) expects string, mixed given\\.$#"
count: 1
@@ -1465,6 +1470,26 @@ parameters:
count: 1
path: libraries/classes/Controllers/Setup/ServersController.php
+ -
+ message: "#^Parameter \\#1 \\$string of function htmlentities expects string, mixed given\\.$#"
+ count: 1
+ path: libraries/classes/Controllers/Sql/SetValuesController.php
+
+ -
+ message: "#^Parameter \\#3 \\$column of method PhpMyAdmin\\\\Sql\\:\\:getFullValuesForSetColumn\\(\\) expects string, mixed given\\.$#"
+ count: 1
+ path: libraries/classes/Controllers/Sql/SetValuesController.php
+
+ -
+ message: "#^Parameter \\#3 \\$column of method PhpMyAdmin\\\\Sql\\:\\:getValuesForColumn\\(\\) expects string, mixed given\\.$#"
+ count: 1
+ path: libraries/classes/Controllers/Sql/SetValuesController.php
+
+ -
+ message: "#^Parameter \\#4 \\$whereClause of method PhpMyAdmin\\\\Sql\\:\\:getFullValuesForSetColumn\\(\\) expects string, mixed given\\.$#"
+ count: 1
+ path: libraries/classes/Controllers/Sql/SetValuesController.php
+
-
message: "#^Property PhpMyAdmin\\\\SqlParser\\\\Statements\\\\SelectStatement\\:\\:\\$limit \\(PhpMyAdmin\\\\SqlParser\\\\Components\\\\Limit\\) in empty\\(\\) is not falsy\\.$#"
count: 1
@@ -1755,6 +1780,11 @@ parameters:
count: 1
path: libraries/classes/Controllers/Table/ZoomSearchController.php
+ -
+ message: "#^Parameter \\#1 \\$database of method PhpMyAdmin\\\\DatabaseInterface\\:\\:getTables\\(\\) expects string, mixed given\\.$#"
+ count: 1
+ path: libraries/classes/Controllers/TableController.php
+
-
message: "#^Parameter \\#1 \\$string of function substr expects string, mixed given\\.$#"
count: 1
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
index 58e1e04d37..4bcbafee9f 100644
--- a/psalm-baseline.xml
+++ b/psalm-baseline.xml
@@ -969,12 +969,9 @@
-
- $_POST['collation_connection']
-
-
- $_POST['collation_connection']
-
+
+ $request->getParsedBodyParam('collation_connection')
+
@@ -3159,18 +3156,17 @@
-
- $column
+
$column
$currentValue
$whereClause
-
-
- $column
+
+
$column
$currentValue
+ $fullValues
$whereClause
-
+
@@ -4466,12 +4462,9 @@
-
- $_POST['db']
-
-
- $_POST['db']
-
+
+ $request->getParsedBodyParam('db')
+
diff --git a/test/classes/Controllers/CollationConnectionControllerTest.php b/test/classes/Controllers/CollationConnectionControllerTest.php
index 1b581104fd..adc699eb8c 100644
--- a/test/classes/Controllers/CollationConnectionControllerTest.php
+++ b/test/classes/Controllers/CollationConnectionControllerTest.php
@@ -19,7 +19,10 @@ class CollationConnectionControllerTest extends AbstractTestCase
{
public function testInvoke(): void
{
- $_POST['collation_connection'] = 'utf8mb4_general_ci';
+ $request = $this->createStub(ServerRequest::class);
+ $request->method('getParsedBodyParam')->willReturnMap([
+ ['collation_connection', null, 'utf8mb4_general_ci'],
+ ]);
$response = $this->createMock(ResponseRenderer::class);
$response->expects($this->once())->method('header')
@@ -33,6 +36,6 @@ class CollationConnectionControllerTest extends AbstractTestCase
$response,
new Template(),
$config
- ))($this->createStub(ServerRequest::class));
+ ))($request);
}
}
diff --git a/test/classes/Controllers/Sql/SetValuesControllerTest.php b/test/classes/Controllers/Sql/SetValuesControllerTest.php
index 2d578cefef..6f42751b04 100644
--- a/test/classes/Controllers/Sql/SetValuesControllerTest.php
+++ b/test/classes/Controllers/Sql/SetValuesControllerTest.php
@@ -39,21 +39,23 @@ class SetValuesControllerTest extends AbstractTestCase
{
$this->dummyDbi->addResult('SHOW COLUMNS FROM `cvv`.`enums` LIKE \'set\'', false);
- $_POST = [
- 'ajax_request' => true,
- 'db' => 'cvv',
- 'table' => 'enums',
- 'column' => 'set',
- 'curr_value' => 'b&c',
- ];
- $GLOBALS['db'] = $_POST['db'];
- $GLOBALS['table'] = $_POST['table'];
+ $request = $this->createStub(ServerRequest::class);
+ $request->method('getParsedBodyParam')->willReturnMap([
+ ['ajax_request', null, true],
+ ['db', null, 'cvv'],
+ ['table', null, 'enums'],
+ ['column', null, 'set'],
+ ['curr_value', null, 'b&c'],
+ ]);
+
+ $GLOBALS['db'] = 'cvv';
+ $GLOBALS['table'] = 'enums';
$GLOBALS['containerBuilder']->setParameter('db', $GLOBALS['db']);
$GLOBALS['containerBuilder']->setParameter('table', $GLOBALS['table']);
/** @var SetValuesController $sqlController */
$sqlController = $GLOBALS['containerBuilder']->get(SetValuesController::class);
- $sqlController($this->createStub(ServerRequest::class));
+ $sqlController($request);
$this->assertResponseWasNotSuccessfull();
@@ -87,21 +89,23 @@ class SetValuesControllerTest extends AbstractTestCase
]
);
- $_POST = [
- 'ajax_request' => true,
- 'db' => 'cvv',
- 'table' => 'enums',
- 'column' => 'set',
- 'curr_value' => 'b&c',
- ];
- $GLOBALS['db'] = $_POST['db'];
- $GLOBALS['table'] = $_POST['table'];
+ $request = $this->createStub(ServerRequest::class);
+ $request->method('getParsedBodyParam')->willReturnMap([
+ ['ajax_request', null, true],
+ ['db', null, 'cvv'],
+ ['table', null, 'enums'],
+ ['column', null, 'set'],
+ ['curr_value', null, 'b&c'],
+ ]);
+
+ $GLOBALS['db'] = 'cvv';
+ $GLOBALS['table'] = 'enums';
$GLOBALS['containerBuilder']->setParameter('db', $GLOBALS['db']);
$GLOBALS['containerBuilder']->setParameter('table', $GLOBALS['table']);
/** @var SetValuesController $sqlController */
$sqlController = $GLOBALS['containerBuilder']->get(SetValuesController::class);
- $sqlController($this->createStub(ServerRequest::class));
+ $sqlController($request);
$this->assertResponseWasSuccessfull();