Skip to content

Commit 5e976d4

Browse files
fix: resolve CI lint and static analysis failures
Add type casts for ServerRequest params to satisfy phpstan/psalm strict typing. Update baselines to reflect removed $_REQUEST usage and line-length fixes in ChartController and test file. Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
1 parent 7d54a5a commit 5e976d4

File tree

9 files changed

+40
-56
lines changed

9 files changed

+40
-56
lines changed

phpstan-baseline.neon

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1629,6 +1629,12 @@ parameters:
16291629
count: 1
16301630
path: src/Controllers/Database/Structure/CopyFormController.php
16311631

1632+
-
1633+
message: '#^Cannot cast mixed to int\.$#'
1634+
identifier: cast.int
1635+
count: 1
1636+
path: src/Controllers/Database/Structure/EmptyTableController.php
1637+
16321638
-
16331639
message: '#^Cannot access offset ''table_limit_offset'' on mixed\.$#'
16341640
identifier: offsetAccess.nonOffsetAccessible
@@ -1654,22 +1660,16 @@ parameters:
16541660
path: src/Controllers/Database/Structure/DropTableController.php
16551661

16561662
-
1657-
message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#'
1658-
identifier: empty.notAllowed
1659-
count: 1
1660-
path: src/Controllers/Database/Structure/EmptyTableController.php
1661-
1662-
-
1663-
message: '#^Parameter \#3 \$pos of method PhpMyAdmin\\Sql\:\:calculatePosForLastPage\(\) expects int\|null, mixed given\.$#'
1664-
identifier: argument.type
1663+
message: '#^Cannot cast mixed to string\.$#'
1664+
identifier: cast.string
16651665
count: 1
1666-
path: src/Controllers/Database/Structure/EmptyTableController.php
1666+
path: src/Controllers/Database/Structure/RealRowCountController.php
16671667

16681668
-
16691669
message: '#^Cannot cast mixed to string\.$#'
16701670
identifier: cast.string
1671-
count: 1
1672-
path: src/Controllers/Database/Structure/RealRowCountController.php
1671+
count: 2
1672+
path: src/Controllers/Database/StructureController.php
16731673

16741674
-
16751675
message: '#^Binary operation "\+" between bool\|int\|string\|null and bool\|int\|string\|null results in an error\.$#'
@@ -2673,6 +2673,12 @@ parameters:
26732673
count: 1
26742674
path: src/Controllers/Table/ChangeRowsController.php
26752675

2676+
-
2677+
message: '#^Cannot cast mixed to int\.$#'
2678+
identifier: cast.int
2679+
count: 2
2680+
path: src/Controllers/Table/ChartController.php
2681+
26762682
-
26772683
message: '#^Binary operation "\+" between int\|string and mixed results in an error\.$#'
26782684
identifier: binaryOp.invalid
@@ -2752,20 +2758,14 @@ parameters:
27522758
path: src/Controllers/Table/CreateController.php
27532759

27542760
-
2755-
message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#'
2756-
identifier: foreach.nonIterable
2757-
count: 1
2758-
path: src/Controllers/Table/DeleteRowsController.php
2759-
2760-
-
2761-
message: '#^Construct empty\(\) is not allowed\. Use more strict comparison\.$#'
2762-
identifier: empty.notAllowed
2761+
message: '#^Cannot cast mixed to int\.$#'
2762+
identifier: cast.int
27632763
count: 1
27642764
path: src/Controllers/Table/DeleteRowsController.php
27652765

27662766
-
2767-
message: '#^Parameter \#3 \$pos of method PhpMyAdmin\\Sql\:\:calculatePosForLastPage\(\) expects int\|null, mixed given\.$#'
2768-
identifier: argument.type
2767+
message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#'
2768+
identifier: foreach.nonIterable
27692769
count: 1
27702770
path: src/Controllers/Table/DeleteRowsController.php
27712771

psalm-baseline.xml

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,15 +1043,9 @@
10431043
</PossiblyUnusedMethod>
10441044
</file>
10451045
<file src="src/Controllers/Database/Structure/EmptyTableController.php">
1046-
<InvalidArgument>
1047-
<code><![CDATA[$_REQUEST['pos']]]></code>
1048-
</InvalidArgument>
10491046
<PossiblyUnusedMethod>
10501047
<code><![CDATA[__construct]]></code>
10511048
</PossiblyUnusedMethod>
1052-
<RiskyTruthyFalsyComparison>
1053-
<code><![CDATA[empty($_REQUEST['pos'])]]></code>
1054-
</RiskyTruthyFalsyComparison>
10551049
</file>
10561050
<file src="src/Controllers/Database/Structure/FavoriteTableController.php">
10571051
<MixedAssignment>
@@ -1069,9 +1063,6 @@
10691063
<code><![CDATA[Current::$database]]></code>
10701064
<code><![CDATA[Current::$database]]></code>
10711065
</MixedArgument>
1072-
<PossiblyInvalidCast>
1073-
<code><![CDATA[$parameters['table']]]></code>
1074-
</PossiblyInvalidCast>
10751066
<PossiblyUnusedReturnValue>
10761067
<code><![CDATA[Response]]></code>
10771068
</PossiblyUnusedReturnValue>
@@ -2082,18 +2073,6 @@
20822073
<MixedPropertyTypeCoercion>
20832074
<code><![CDATA[['db' => Current::$database, 'table' => Current::$table]]]></code>
20842075
</MixedPropertyTypeCoercion>
2085-
<PossiblyInvalidArgument>
2086-
<code><![CDATA[$_REQUEST['pos']]]></code>
2087-
<code><![CDATA[$_REQUEST['session_max_rows']]]></code>
2088-
<code><![CDATA[$rows]]></code>
2089-
<code><![CDATA[$start]]></code>
2090-
</PossiblyInvalidArgument>
2091-
<PossiblyInvalidOperand>
2092-
<code><![CDATA[$_REQUEST['pos']]]></code>
2093-
<code><![CDATA[$_REQUEST['pos']]]></code>
2094-
<code><![CDATA[$statement->limit->offset]]></code>
2095-
<code><![CDATA[$statement->limit->rowCount]]></code>
2096-
</PossiblyInvalidOperand>
20972076
<PossiblyUnusedReturnValue>
20982077
<code><![CDATA[Response]]></code>
20992078
</PossiblyUnusedReturnValue>
@@ -2147,9 +2126,6 @@
21472126
</PossiblyUnusedReturnValue>
21482127
</file>
21492128
<file src="src/Controllers/Table/DeleteRowsController.php">
2150-
<InvalidArgument>
2151-
<code><![CDATA[$_REQUEST['pos']]]></code>
2152-
</InvalidArgument>
21532129
<MixedArgument>
21542130
<code><![CDATA[$row]]></code>
21552131
</MixedArgument>
@@ -2162,9 +2138,6 @@
21622138
<PossiblyUnusedReturnValue>
21632139
<code><![CDATA[Response]]></code>
21642140
</PossiblyUnusedReturnValue>
2165-
<RiskyTruthyFalsyComparison>
2166-
<code><![CDATA[empty($_REQUEST['pos'])]]></code>
2167-
</RiskyTruthyFalsyComparison>
21682141
</file>
21692142
<file src="src/Controllers/Table/DropColumnConfirmationController.php">
21702143
<PossiblyUnusedReturnValue>

src/Controllers/Database/ImportController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ public function __invoke(ServerRequest $request): Response
8383
$offset = (int) $request->getParam('offset');
8484
}
8585

86+
/** @var string|null $timeoutPassed */
8687
$timeoutPassed = $request->getParam('timeout_passed');
88+
/** @var string|null $localImportFile */
8789
$localImportFile = $request->getParam('local_import_file');
8890
$compressions = Import::getCompressions($this->config);
8991

src/Controllers/Database/Structure/EmptyTableController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public function __invoke(ServerRequest $request): Response
6767
$_REQUEST['pos'] = $this->sql->calculatePosForLastPage(
6868
Current::$database,
6969
Current::$table,
70-
$request->getParam('pos'),
70+
(int) $request->getParam('pos'),
7171
);
7272
}
7373

src/Controllers/Database/StructureController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,11 +184,11 @@ public function __invoke(ServerRequest $request): Response
184184
if ($this->numTables > 0) {
185185
$urlParams = ['pos' => $this->position, 'db' => Current::$database];
186186
if (isset($parameters['sort'])) {
187-
$urlParams['sort'] = $parameters['sort'];
187+
$urlParams['sort'] = (string) $parameters['sort'];
188188
}
189189

190190
if (isset($parameters['sort_order'])) {
191-
$urlParams['sort_order'] = $parameters['sort_order'];
191+
$urlParams['sort_order'] = (string) $parameters['sort_order'];
192192
}
193193

194194
$listNavigator = Generator::getListNavigator(

src/Controllers/Server/ImportController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ public function __invoke(ServerRequest $request): Response
6868
$offset = (int) $request->getParam('offset');
6969
}
7070

71+
/** @var string|null $timeoutPassed */
7172
$timeoutPassed = $request->getParam('timeout_passed');
73+
/** @var string|null $localImportFile */
7274
$localImportFile = $request->getParam('local_import_file');
7375
$compressions = Import::getCompressions($this->config);
7476

src/Controllers/Table/ChartController.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,11 +215,13 @@ public function ajax(ServerRequest $request): void
215215
$parser = new Parser(Current::$sqlQuery);
216216
/** @var SelectStatement $statement */
217217
$statement = $parser->statements[0];
218+
$pos = (int) $request->getParam('pos');
219+
$sessionMaxRows = (int) $request->getParam('session_max_rows');
218220
if (empty($statement->limit)) {
219-
$statement->limit = new Limit($request->getParam('session_max_rows'), $request->getParam('pos'));
221+
$statement->limit = new Limit($sessionMaxRows, $pos);
220222
} else {
221-
$start = $statement->limit->offset + $request->getParam('pos');
222-
$rows = min($request->getParam('session_max_rows'), $statement->limit->rowCount - $request->getParam('pos'));
223+
$start = (int) $statement->limit->offset + $pos;
224+
$rows = min($sessionMaxRows, (int) $statement->limit->rowCount - $pos);
223225
$statement->limit = new Limit($rows, $start);
224226
}
225227

src/Controllers/Table/DeleteRowsController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function __invoke(ServerRequest $request): Response
5151
$_REQUEST['pos'] = $this->sql->calculatePosForLastPage(
5252
Current::$database,
5353
Current::$table,
54-
$request->getParam('pos'),
54+
(int) $request->getParam('pos'),
5555
);
5656
}
5757

tests/unit/Controllers/Database/Structure/RealRowCountControllerTest.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@ public function testRealRowCount(): void
4040
self::assertSame('4,079', $json['real_row_count']);
4141

4242
$requestAll = $requestFactory->createServerRequest('GET', 'http://example.com/')
43-
->withQueryParams(['db' => 'world', 'table' => 'City', 'ajax_request' => '1', 'real_row_count_all' => 'on']);
43+
->withQueryParams([
44+
'db' => 'world',
45+
'table' => 'City',
46+
'ajax_request' => '1',
47+
'real_row_count_all' => 'on',
48+
]);
4449

4550
(new RealRowCountController($response, $dbi, new DbTableExists($dbi)))($requestAll);
4651

0 commit comments

Comments
 (0)