Skip to content

Commit 05346e5

Browse files
Merge pull request #17871 from kamil-tekiela/Remove-$params
Remove $params array
2 parents 6134966 + 94ba7d6 commit 05346e5

File tree

10 files changed

+57
-124
lines changed

10 files changed

+57
-124
lines changed

libraries/classes/Controllers/Database/MultiTableQuery/QueryController.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ final class QueryController extends AbstractController
1212
{
1313
public function __invoke(ServerRequest $request): void
1414
{
15-
$params = [
16-
'sql_query' => $request->getParsedBodyParam('sql_query'),
17-
'db' => $request->getParam('db'),
18-
];
19-
20-
$this->response->addHTML(MultiTableQuery::displayResults($params['sql_query'], $params['db']));
15+
$this->response->addHTML(MultiTableQuery::displayResults(
16+
$request->getParsedBodyParam('sql_query'),
17+
$request->getParam('db')
18+
));
2119
}
2220
}

libraries/classes/Controllers/Database/MultiTableQuery/TablesController.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,21 @@ public function __construct(ResponseRenderer $response, Template $template, Data
2626

2727
public function __invoke(ServerRequest $request): void
2828
{
29-
$params = [
30-
'tables' => $request->getQueryParam('tables', []),
31-
'db' => $request->getQueryParam('db', ''),
32-
];
29+
/** @var string[] $tables */
30+
$tables = $request->getQueryParam('tables', []);
31+
/** @var string $db */
32+
$db = $request->getQueryParam('db', '');
3333

3434
$tablesListForQuery = '';
35-
foreach ($params['tables'] as $table) {
35+
foreach ($tables as $table) {
3636
$tablesListForQuery .= "'" . $this->dbi->escapeString($table) . "',";
3737
}
3838

3939
$tablesListForQuery = rtrim($tablesListForQuery, ',');
4040

4141
$constrains = $this->dbi->fetchResult(
4242
QueryGenerator::getInformationSchemaForeignKeyConstraintsRequest(
43-
$this->dbi->escapeString($params['db']),
43+
$this->dbi->escapeString($db),
4444
$tablesListForQuery
4545
)
4646
);

libraries/classes/Controllers/Database/SqlFormatController.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,15 @@
88
use PhpMyAdmin\Http\ServerRequest;
99
use PhpMyAdmin\SqlParser\Utils\Formatter;
1010

11-
use function strlen;
12-
1311
/**
1412
* Format SQL for SQL editors.
1513
*/
1614
class SqlFormatController extends AbstractController
1715
{
1816
public function __invoke(ServerRequest $request): void
1917
{
20-
$params = ['sql' => $request->getParsedBodyParam('sql')];
21-
$query = strlen((string) $params['sql']) > 0 ? $params['sql'] : '';
18+
/** @var string $query */
19+
$query = $request->getParsedBodyParam('sql', '');
2220
$this->response->addJSON(['sql' => Formatter::format($query)]);
2321
}
2422
}

libraries/classes/Controllers/LintController.php

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use PhpMyAdmin\Linter;
1313

1414
use function header;
15+
use function is_array;
1516
use function json_encode;
1617
use function sprintf;
1718

@@ -22,11 +23,6 @@ class LintController extends AbstractController
2223
{
2324
public function __invoke(ServerRequest $request): void
2425
{
25-
$params = [
26-
'sql_query' => $request->getParsedBodyParam('sql_query'),
27-
'options' => $request->getParsedBodyParam('options'),
28-
];
29-
3026
/**
3127
* The SQL query to be analyzed.
3228
*
@@ -38,7 +34,7 @@ public function __invoke(ServerRequest $request): void
3834
*
3935
* @var string
4036
*/
41-
$sqlQuery = ! empty($params['sql_query']) ? $params['sql_query'] : '';
37+
$sqlQuery = $request->getParsedBodyParam('sql_query', '');
4238

4339
$this->response->setAjax(true);
4440

@@ -49,9 +45,8 @@ public function __invoke(ServerRequest $request): void
4945
header(sprintf('%s: %s', $name, $value));
5046
}
5147

52-
if (! empty($params['options'])) {
53-
$options = $params['options'];
54-
48+
$options = $request->getParsedBodyParam('options');
49+
if (is_array($options)) {
5550
if (! empty($options['routineEditor'])) {
5651
$sqlQuery = 'CREATE PROCEDURE `a`() ' . $sqlQuery;
5752
} elseif (! empty($options['triggerEditor'])) {

libraries/classes/Controllers/Server/Databases/CreateController.php

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
use function __;
1919
use function array_key_exists;
2020
use function explode;
21-
use function mb_strlen;
21+
use function is_string;
2222
use function mb_strtolower;
2323
use function str_contains;
2424

@@ -35,36 +35,34 @@ public function __construct(ResponseRenderer $response, Template $template, Data
3535

3636
public function __invoke(ServerRequest $request): void
3737
{
38-
$params = [
39-
'new_db' => $_POST['new_db'] ?? null,
40-
'db_collation' => $_POST['db_collation'] ?? null,
41-
];
38+
$newDb = $request->getParsedBodyParam('new_db');
39+
$dbCollation = $request->getParsedBodyParam('db_collation');
4240

43-
if (! isset($params['new_db']) || mb_strlen($params['new_db']) === 0 || ! $this->response->isAjax()) {
41+
if (! is_string($newDb) || $newDb === '' || ! $this->response->isAjax()) {
4442
$this->response->addJSON(['message' => Message::error()]);
4543

4644
return;
4745
}
4846

4947
// lower_case_table_names=1 `DB` becomes `db`
5048
if ($this->dbi->getLowerCaseNames() === '1') {
51-
$params['new_db'] = mb_strtolower($params['new_db']);
49+
$newDb = mb_strtolower($newDb);
5250
}
5351

5452
/**
5553
* Builds and executes the db creation sql query
5654
*/
57-
$sqlQuery = 'CREATE DATABASE ' . Util::backquote($params['new_db']);
58-
if (! empty($params['db_collation'])) {
59-
[$databaseCharset] = explode('_', $params['db_collation']);
55+
$sqlQuery = 'CREATE DATABASE ' . Util::backquote($newDb);
56+
if (is_string($dbCollation) && $dbCollation !== '') {
57+
[$databaseCharset] = explode('_', $dbCollation);
6058
$charsets = Charsets::getCharsets($this->dbi, $GLOBALS['cfg']['Server']['DisableIS']);
6159
$collations = Charsets::getCollations($this->dbi, $GLOBALS['cfg']['Server']['DisableIS']);
6260
if (
6361
array_key_exists($databaseCharset, $charsets)
64-
&& array_key_exists($params['db_collation'], $collations[$databaseCharset])
62+
&& array_key_exists($dbCollation, $collations[$databaseCharset])
6563
) {
6664
$sqlQuery .= ' DEFAULT'
67-
. Util::getCharsetQueryPart($params['db_collation']);
65+
. Util::getCharsetQueryPart($dbCollation);
6866
}
6967
}
7068

@@ -81,18 +79,18 @@ public function __invoke(ServerRequest $request): void
8179

8280
$this->response->setRequestStatus(false);
8381
} else {
84-
$GLOBALS['db'] = $params['new_db'];
82+
$GLOBALS['db'] = $newDb;
8583

8684
$message = Message::success(__('Database %1$s has been created.'));
87-
$message->addParam($params['new_db']);
85+
$message->addParam($newDb);
8886

8987
$scriptName = Util::getScriptNameForOption($GLOBALS['cfg']['DefaultTabDatabase'], 'database');
9088

9189
$json = [
9290
'message' => $message,
9391
'sql_query' => Generator::getMessage('', $sqlQuery, 'success'),
9492
'url' => $scriptName . Url::getCommon(
95-
['db' => $params['new_db']],
93+
['db' => $newDb],
9694
! str_contains($scriptName, '?') ? '?' : '&'
9795
),
9896
];

libraries/classes/Controllers/Server/VariablesController.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,13 @@ public function __construct(ResponseRenderer $response, Template $template, Data
3737

3838
public function __invoke(ServerRequest $request): void
3939
{
40-
$GLOBALS['errorUrl'] = $GLOBALS['errorUrl'] ?? null;
41-
42-
$params = ['filter' => $_GET['filter'] ?? null];
4340
$GLOBALS['errorUrl'] = Url::getFromRoute('/');
4441

4542
if ($this->dbi->isSuperUser()) {
4643
$this->dbi->selectDb('mysql');
4744
}
4845

49-
$filterValue = ! empty($params['filter']) ? $params['filter'] : '';
46+
$filterValue = $request->getQueryParam('filter', '');
5047

5148
$this->addScriptFiles(['server/variables.js']);
5249

phpstan-baseline.neon

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,16 +1045,6 @@ parameters:
10451045
count: 1
10461046
path: libraries/classes/Controllers/Database/MultiTableQuery/QueryController.php
10471047

1048-
-
1049-
message: "#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\\.$#"
1050-
count: 1
1051-
path: libraries/classes/Controllers/Database/MultiTableQuery/TablesController.php
1052-
1053-
-
1054-
message: "#^Parameter \\#1 \\$str of method PhpMyAdmin\\\\DatabaseInterface\\:\\:escapeString\\(\\) expects string, mixed given\\.$#"
1055-
count: 2
1056-
path: libraries/classes/Controllers/Database/MultiTableQuery/TablesController.php
1057-
10581048
-
10591049
message: "#^Parameter \\#1 \\$collation of static method PhpMyAdmin\\\\Util\\:\\:getCharsetQueryPart\\(\\) expects string, mixed given\\.$#"
10601050
count: 2
@@ -1090,16 +1080,6 @@ parameters:
10901080
count: 1
10911081
path: libraries/classes/Controllers/Database/SqlController.php
10921082

1093-
-
1094-
message: "#^Cannot cast mixed to string\\.$#"
1095-
count: 1
1096-
path: libraries/classes/Controllers/Database/SqlFormatController.php
1097-
1098-
-
1099-
message: "#^Parameter \\#1 \\$query of static method PhpMyAdmin\\\\SqlParser\\\\Utils\\\\Formatter\\:\\:format\\(\\) expects string, mixed given\\.$#"
1100-
count: 1
1101-
path: libraries/classes/Controllers/Database/SqlFormatController.php
1102-
11031083
-
11041084
message: "#^Cannot access offset int\\<0, max\\> on mixed\\.$#"
11051085
count: 1
@@ -1365,21 +1345,6 @@ parameters:
13651345
count: 1
13661346
path: libraries/classes/Controllers/HomeController.php
13671347

1368-
-
1369-
message: "#^Cannot access offset 'eventEditor' on mixed\\.$#"
1370-
count: 1
1371-
path: libraries/classes/Controllers/LintController.php
1372-
1373-
-
1374-
message: "#^Cannot access offset 'routineEditor' on mixed\\.$#"
1375-
count: 1
1376-
path: libraries/classes/Controllers/LintController.php
1377-
1378-
-
1379-
message: "#^Cannot access offset 'triggerEditor' on mixed\\.$#"
1380-
count: 1
1381-
path: libraries/classes/Controllers/LintController.php
1382-
13831348
-
13841349
message: "#^Parameter \\#1 \\$partialDependencies of method PhpMyAdmin\\\\Normalization\\:\\:createNewTablesFor2NF\\(\\) expects array, mixed given\\.$#"
13851350
count: 1

psalm-baseline.xml

Lines changed: 6 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,19 +1219,10 @@
12191219
</file>
12201220
<file src="libraries/classes/Controllers/Database/MultiTableQuery/QueryController.php">
12211221
<MixedArgument occurrences="2">
1222-
<code>$params['db']</code>
1223-
<code>$params['sql_query']</code>
1222+
<code>$request-&gt;getParam('db')</code>
1223+
<code>$request-&gt;getParsedBodyParam('sql_query')</code>
12241224
</MixedArgument>
12251225
</file>
1226-
<file src="libraries/classes/Controllers/Database/MultiTableQuery/TablesController.php">
1227-
<MixedArgument occurrences="2">
1228-
<code>$params['db']</code>
1229-
<code>$table</code>
1230-
</MixedArgument>
1231-
<MixedAssignment occurrences="1">
1232-
<code>$table</code>
1233-
</MixedAssignment>
1234-
</file>
12351226
<file src="libraries/classes/Controllers/Database/Operations/CollationController.php">
12361227
<MixedArgument occurrences="2">
12371228
<code>$dbCollation</code>
@@ -1387,14 +1378,6 @@
13871378
<code>$delimiter</code>
13881379
</MixedAssignment>
13891380
</file>
1390-
<file src="libraries/classes/Controllers/Database/SqlFormatController.php">
1391-
<MixedArgument occurrences="1">
1392-
<code>$query</code>
1393-
</MixedArgument>
1394-
<MixedAssignment occurrences="1">
1395-
<code>$query</code>
1396-
</MixedAssignment>
1397-
</file>
13981381
<file src="libraries/classes/Controllers/Database/Structure/AddPrefixController.php">
13991382
<MixedAssignment occurrences="2">
14001383
<code>$params['selected'][]</code>
@@ -2571,23 +2554,9 @@
25712554
</RiskyCast>
25722555
</file>
25732556
<file src="libraries/classes/Controllers/Server/Databases/CreateController.php">
2574-
<InvalidArgument occurrences="1">
2575-
<code>['db' =&gt; $params['new_db']]</code>
2576-
</InvalidArgument>
2577-
<PossiblyInvalidArgument occurrences="6">
2578-
<code>$params['db_collation']</code>
2579-
<code>$params['db_collation']</code>
2580-
<code>$params['db_collation']</code>
2581-
<code>$params['new_db']</code>
2582-
<code>$params['new_db']</code>
2583-
<code>$params['new_db']</code>
2584-
</PossiblyInvalidArgument>
2585-
<PossiblyInvalidCast occurrences="4">
2586-
<code>$params['db_collation']</code>
2587-
<code>$params['db_collation']</code>
2588-
<code>$params['new_db']</code>
2589-
<code>$params['new_db']</code>
2590-
</PossiblyInvalidCast>
2557+
<MixedAssignment occurrences="1">
2558+
<code>$dbCollation</code>
2559+
</MixedAssignment>
25912560
</file>
25922561
<file src="libraries/classes/Controllers/Server/Databases/DestroyController.php">
25932562
<InvalidArrayOffset occurrences="1">
@@ -3042,7 +3011,7 @@
30423011
<code>$serverVarsSession[$name]</code>
30433012
</MixedArrayTypeCoercion>
30443013
<MixedAssignment occurrences="2">
3045-
<code>$GLOBALS['errorUrl']</code>
3014+
<code>$filterValue</code>
30463015
<code>$value</code>
30473016
</MixedAssignment>
30483017
</file>

test/classes/Controllers/LintControllerTest.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@ protected function setUp(): void
2626

2727
public function testWithoutParams(): void
2828
{
29-
$this->getLintController()($this->createStub(ServerRequest::class));
29+
$request = $this->createStub(ServerRequest::class);
30+
$request->method('getParsedBodyParam')->willReturnMap([
31+
['sql_query', '', ''],
32+
['options', null, null],
33+
]);
34+
35+
$this->getLintController()($request);
3036

3137
$output = $this->getActualOutputForAssertion();
3238
$this->assertJson($output);
@@ -37,7 +43,7 @@ public function testWithoutSqlErrors(): void
3743
{
3844
$request = $this->createStub(ServerRequest::class);
3945
$request->method('getParsedBodyParam')->willReturnMap([
40-
['sql_query', null, 'SELECT * FROM `actor` WHERE `actor_id` = 1;'],
46+
['sql_query', '', 'SELECT * FROM `actor` WHERE `actor_id` = 1;'],
4147
['options', null, null],
4248
]);
4349

@@ -88,7 +94,7 @@ public function testWithSqlErrors(): void
8894

8995
$request = $this->createStub(ServerRequest::class);
9096
$request->method('getParsedBodyParam')->willReturnMap([
91-
['sql_query', null, 'SELECT * FROM `actor` WHEREE `actor_id` = 1;'],
97+
['sql_query', '', 'SELECT * FROM `actor` WHEREE `actor_id` = 1;'],
9298
['options', null, null],
9399
]);
94100

test/classes/Controllers/Server/Databases/CreateControllerTest.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,13 @@ public function testCreateDatabase(): void
4949
$template = new Template();
5050
$controller = new CreateController($response, $template, $this->dbi);
5151

52-
$_POST['new_db'] = 'test_db_error';
52+
$request = $this->createStub(ServerRequest::class);
53+
$request->method('getParsedBodyParam')->willReturnMap([
54+
['new_db', null, 'test_db_error'],
55+
['db_collation', null, null],
56+
]);
5357

54-
$controller($this->createStub(ServerRequest::class));
58+
$controller($request);
5559
$actual = $response->getJSONResult();
5660

5761
$this->assertArrayHasKey('message', $actual);
@@ -62,10 +66,13 @@ public function testCreateDatabase(): void
6266

6367
$controller = new CreateController($response, $template, $this->dbi);
6468

65-
$_POST['new_db'] = 'test_db';
66-
$_POST['db_collation'] = 'utf8_general_ci';
69+
$request = $this->createStub(ServerRequest::class);
70+
$request->method('getParsedBodyParam')->willReturnMap([
71+
['new_db', null, 'test_db'],
72+
['db_collation', null, 'utf8_general_ci'],
73+
]);
6774

68-
$controller($this->createStub(ServerRequest::class));
75+
$controller($request);
6976
$actual = $response->getJSONResult();
7077

7178
$this->assertArrayHasKey('message', $actual);

0 commit comments

Comments
 (0)