diff --git a/psalm-baseline.xml b/psalm-baseline.xml
index 7c6f1b9853..858215ce33 100644
--- a/psalm-baseline.xml
+++ b/psalm-baseline.xml
@@ -4238,6 +4238,8 @@
+
+
@@ -4264,9 +4266,6 @@
-
-
-
diff --git a/src/Command/TwigLintCommand.php b/src/Command/TwigLintCommand.php
index c413f44145..d1bd770dcf 100644
--- a/src/Command/TwigLintCommand.php
+++ b/src/Command/TwigLintCommand.php
@@ -252,12 +252,12 @@ class TwigLintCommand extends Command
}
/** @return string[] */
- private function getContext(string $template, int $line, int $context = 3): array
+ private function getContext(string $template, int $line): array
{
$lines = explode("\n", $template);
- $position = max(0, $line - $context);
- $max = min(count($lines), $line - 1 + $context);
+ $position = max(0, $line - 3);
+ $max = min(count($lines), $line - 1 + 3);
$result = [];
while ($position < $max) {
diff --git a/src/Controllers/Export/ExportController.php b/src/Controllers/Export/ExportController.php
index 6aef528183..3f1452a270 100644
--- a/src/Controllers/Export/ExportController.php
+++ b/src/Controllers/Export/ExportController.php
@@ -66,7 +66,7 @@ final readonly class ExportController implements InvocableController
/** @var array|null $aliasesParam */
$aliasesParam = $request->getParsedBodyParam('aliases');
$structureOrDataForced = (bool) $request->getParsedBodyParamAsStringOrNull('structure_or_data_forced');
- $rememberTemplate = $request->getParsedBodyParamAsString('remember_template', '');
+ $rememberTemplate = $request->hasBodyParam('remember_template');
$dbSelect = $request->getParsedBodyParam('db_select');
$tableStructure = $request->getParsedBodyParam('table_structure');
$lockTables = $request->hasBodyParam('lock_tables');
@@ -231,7 +231,7 @@ final readonly class ExportController implements InvocableController
if (OutputHandler::$asFile) {
$filenameTemplate = $request->getParsedBodyParamAsString('filename_template', '');
- if ((bool) $rememberTemplate) {
+ if ($rememberTemplate) {
$this->export->rememberFilename($this->userPreferencesHandler, $exportType, $filenameTemplate);
}
diff --git a/src/Controllers/Import/ImportController.php b/src/Controllers/Import/ImportController.php
index 5ca0b3b026..8bebcda3ce 100644
--- a/src/Controllers/Import/ImportController.php
+++ b/src/Controllers/Import/ImportController.php
@@ -7,7 +7,6 @@ namespace PhpMyAdmin\Controllers\Import;
use PhpMyAdmin\Bookmarks\Bookmark;
use PhpMyAdmin\Bookmarks\BookmarkRepository;
use PhpMyAdmin\Config;
-use PhpMyAdmin\ConfigStorage\Relation;
use PhpMyAdmin\Controllers\InvocableController;
use PhpMyAdmin\Core;
use PhpMyAdmin\Current;
@@ -704,8 +703,6 @@ final readonly class ImportController implements InvocableController
if (Import::$result) {
// Save a Bookmark with more than one queries (if Bookmark label given).
if (! empty($request->getParsedBodyParam('bkm_label')) && Import::$importText !== '') {
- $relation = new Relation($this->dbi);
-
$this->sql->storeTheQueryAsBookmark(
Current::$database,
$this->config->selectedServer['user'],
diff --git a/src/Controllers/Server/DatabasesController.php b/src/Controllers/Server/DatabasesController.php
index bd8cab81dd..904afe98eb 100644
--- a/src/Controllers/Server/DatabasesController.php
+++ b/src/Controllers/Server/DatabasesController.php
@@ -37,15 +37,6 @@ final class DatabasesController implements InvocableController
/** @var mixed[] array of database details */
private array $databases = [];
- /** @var int number of databases */
- private int $databaseCount = 0;
-
- /** @var string sort by column */
- private string $sortBy = '';
-
- /** @var string sort order of databases */
- private string $sortOrder = '';
-
/** @var bool whether to show database statistics */
private bool $hasStatistics = false;
@@ -77,11 +68,11 @@ final class DatabasesController implements InvocableController
$sortBy = $request->getParam('sort_by', '');
Assert::string($sortBy);
- $this->sortBy = self::SORT_BY_ALLOWED_LIST[array_search($sortBy, self::SORT_BY_ALLOWED_LIST, true)];
+ $sortBy = self::SORT_BY_ALLOWED_LIST[array_search($sortBy, self::SORT_BY_ALLOWED_LIST, true)];
$sortOrder = $request->getParam('sort_order', '');
Assert::string($sortOrder);
- $this->sortOrder = strtolower($sortOrder) !== 'desc' ? 'asc' : 'desc';
+ $sortOrder = strtolower($sortOrder) !== 'desc' ? 'asc' : 'desc';
$this->response->addScriptFiles(['server/databases.js']);
@@ -95,6 +86,8 @@ final class DatabasesController implements InvocableController
$primaryInfo = $replicationInfo->getPrimaryInfo();
$replicaInfo = $replicationInfo->getReplicaInfo();
+ $databaseCount = 0;
+
/**
* Gets the databases list
*/
@@ -104,8 +97,8 @@ final class DatabasesController implements InvocableController
null,
$this->hasStatistics,
ConnectionType::User,
- $this->sortBy,
- $this->sortOrder,
+ $sortBy,
+ $sortOrder,
$position,
true,
);
@@ -122,14 +115,14 @@ final class DatabasesController implements InvocableController
return $this->response->response();
}
- $this->databaseCount = count($this->dbi->getDatabaseList());
+ $databaseCount = count($this->dbi->getDatabaseList());
}
$urlParams = [
'statistics' => $this->hasStatistics,
'pos' => $position,
- 'sort_by' => $this->sortBy,
- 'sort_order' => $this->sortOrder,
+ 'sort_by' => $sortBy,
+ 'sort_order' => $sortOrder,
];
$databases = $this->getDatabases($primaryInfo, $replicaInfo);
@@ -168,7 +161,7 @@ final class DatabasesController implements InvocableController
'total_statistics' => $databases['total_statistics'],
'header_statistics' => $headerStatistics,
'charsets' => $charsetsList,
- 'database_count' => $this->databaseCount,
+ 'database_count' => $databaseCount,
'pos' => $position,
'url_params' => $urlParams,
'max_db_list' => $this->config->config->MaxDbList,
diff --git a/src/Database/Designer.php b/src/Database/Designer.php
index 7ff2d52b2c..0531dd0075 100644
--- a/src/Database/Designer.php
+++ b/src/Database/Designer.php
@@ -191,8 +191,8 @@ class Designer
}
/**
- * @param list[] $tableColumnsInfo table column info
- * @param array $tablesAllKeys unique or primary indices
+ * @param array> $tableColumnsInfo table column info
+ * @param array $tablesAllKeys unique or primary indices
*
* @return array
*/
diff --git a/src/Database/Designer/Common.php b/src/Database/Designer/Common.php
index 8522892add..905d4a58a4 100644
--- a/src/Database/Designer/Common.php
+++ b/src/Database/Designer/Common.php
@@ -77,7 +77,7 @@ class Common
*
* @param DesignerTable[] $designerTables The designer tables
*
- * @return list[] table column nfo
+ * @return array> table column nfo
*/
public function getColumnsInfo(array $designerTables): array
{
diff --git a/src/Footer.php b/src/Footer.php
index 2834e5d2a9..61746c234c 100644
--- a/src/Footer.php
+++ b/src/Footer.php
@@ -48,7 +48,7 @@ class Footer
*
* @return mixed Reference passed object
*/
- private static function removeRecursion(mixed &$object, array $stack = []): mixed
+ private static function removeRecursion(mixed $object, array $stack = []): mixed
{
if ((is_object($object) || is_array($object)) && $object) {
if ($object instanceof Traversable) {
@@ -57,7 +57,7 @@ class Footer
$stack[] = $object;
// @phpstan-ignore-next-line
foreach ($object as &$subObject) {
- self::removeRecursion($subObject, $stack);
+ $subObject = self::removeRecursion($subObject, $stack);
}
} else {
$object = '***RECURSION***';
@@ -74,8 +74,7 @@ class Footer
{
$retval = '\'false\'';
if ($this->config->config->debug->sql && empty($_REQUEST['no_debug']) && ! empty($_SESSION['debug'])) {
- // Remove recursions and iterators from $_SESSION['debug']
- self::removeRecursion($_SESSION['debug']);
+ $_SESSION['debug'] = self::removeRecursion($_SESSION['debug']);
$retval = (string) json_encode($_SESSION['debug']);
$_SESSION['debug'] = [];
diff --git a/src/Http/Middleware/SqlQueryGlobalSetting.php b/src/Http/Middleware/SqlQueryGlobalSetting.php
index eac03ad76c..a71f47fa83 100644
--- a/src/Http/Middleware/SqlQueryGlobalSetting.php
+++ b/src/Http/Middleware/SqlQueryGlobalSetting.php
@@ -12,7 +12,6 @@ use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use function assert;
-use function is_string;
final class SqlQueryGlobalSetting implements MiddlewareInterface
{
@@ -28,11 +27,7 @@ final class SqlQueryGlobalSetting implements MiddlewareInterface
{
$sqlQuery = '';
if ($request->isPost()) {
- /** @var mixed $sqlQuery */
- $sqlQuery = $request->getParsedBodyParam('sql_query');
- if (! is_string($sqlQuery)) {
- $sqlQuery = '';
- }
+ $sqlQuery = $request->getParsedBodyParamAsString('sql_query', '');
}
Current::$sqlQuery = $sqlQuery;
diff --git a/src/Plugins/Export/ExportExcel.php b/src/Plugins/Export/ExportExcel.php
index 047e62cd66..36390aa99d 100644
--- a/src/Plugins/Export/ExportExcel.php
+++ b/src/Plugins/Export/ExportExcel.php
@@ -23,7 +23,6 @@ use PhpMyAdmin\Properties\Plugins\ExportPluginProperties;
use function __;
use function implode;
-use function in_array;
use function is_string;
use function preg_replace;
use function str_replace;
@@ -261,10 +260,9 @@ class ExportExcel extends ExportPlugin
/** @return 'win'|'mac_excel2003'|'mac_excel2008' */
private function setEdition(string $edition): string
{
- if (in_array($edition, ['mac_excel2003', 'mac_excel2008'], true)) {
- return $edition;
- }
-
- return 'win';
+ return match ($edition) {
+ 'mac_excel2003', 'mac_excel2008' => $edition,
+ default => 'win',
+ };
}
}
diff --git a/src/Plugins/Export/ExportSql.php b/src/Plugins/Export/ExportSql.php
index 6473a9885e..894da88b84 100644
--- a/src/Plugins/Export/ExportSql.php
+++ b/src/Plugins/Export/ExportSql.php
@@ -2635,21 +2635,19 @@ class ExportSql extends ExportPlugin
/** @return 'NONE'|'ANSI'|'DB2'|'MAXDB'|'MYSQL323'|'MYSQL40'|'MSSQL'|'ORACLE'|'TRADITIONAL' */
private function setCompatibility(string $mode): string
{
- if (in_array($mode, ['ANSI', 'DB2', 'MAXDB', 'MYSQL323', 'MYSQL40', 'MSSQL', 'ORACLE', 'TRADITIONAL'], true)) {
- return $mode;
- }
-
- return 'NONE';
+ return match ($mode) {
+ 'ANSI', 'DB2', 'MAXDB', 'MYSQL323', 'MYSQL40', 'MSSQL', 'ORACLE', 'TRADITIONAL' => $mode,
+ default => 'NONE',
+ };
}
/** @return 'INSERT'|'UPDATE'|'REPLACE' */
private function setType(string $type): string
{
- if (in_array($type, ['UPDATE', 'REPLACE'], true)) {
- return $type;
- }
-
- return 'INSERT';
+ return match ($type) {
+ 'UPDATE', 'REPLACE' => $type,
+ default => 'INSERT',
+ };
}
public function setAutoIncrement(bool $autoIncrement): void
@@ -2660,11 +2658,10 @@ class ExportSql extends ExportPlugin
/** @return 'complete'|'extended'|'both'|'none' */
private function setInsertSyntax(string $syntax): string
{
- if (in_array($syntax, ['complete', 'extended', 'none'], true)) {
- return $syntax;
- }
-
- return 'both';
+ return match ($syntax) {
+ 'complete', 'extended', 'none' => $syntax,
+ default => 'both',
+ };
}
/** @return int<0, max> */
diff --git a/src/Plugins/Export/Helpers/Pdf.php b/src/Plugins/Export/Helpers/Pdf.php
index 3ae21fc440..c1081106cd 100644
--- a/src/Plugins/Export/Helpers/Pdf.php
+++ b/src/Plugins/Export/Helpers/Pdf.php
@@ -22,6 +22,7 @@ use function __;
use function array_key_exists;
use function count;
use function ksort;
+use function max;
/**
* Adapted from a LGPL script by Philip Clarke
@@ -155,7 +156,7 @@ class Pdf extends PdfLib
$this->setXY($l, $this->tMargin);
$this->MultiCell($this->tablewidths[$col], $this->FontSizePt, $txt ?? 'NULL');
$l += $this->tablewidths[$col];
- $maxY = $maxY < $this->GetY() ? $this->GetY() : $maxY;
+ $maxY = max($maxY, $this->GetY());
}
$this->setXY($this->lMargin, $this->tMargin);
diff --git a/src/Util.php b/src/Util.php
index 948ad77b7e..f82318a2f1 100644
--- a/src/Util.php
+++ b/src/Util.php
@@ -332,7 +332,7 @@ class Util
// use 1024.0 to avoid integer overflow on 64-bit machines
$value = round($value / (1024 ** $d / $dh)) / $dh;
$unit = $byteUnits[$d];
- break 1;
+ break;
}
}