diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 07830f7933..055e3889cf 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1549,11 +1549,6 @@ parameters: count: 1 path: src/Controllers/Database/ExportController.php - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Controllers/Database/ExportController.php - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" count: 2 @@ -1663,11 +1658,6 @@ parameters: count: 3 path: src/Controllers/Database/RoutinesController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Database/RoutinesController.php - - message: "#^Parameter \\#1 \\$string of function htmlentities expects string, mixed given\\.$#" count: 3 @@ -1711,11 +1701,6 @@ parameters: count: 1 path: src/Controllers/Database/SearchController.php - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Controllers/Database/SearchController.php - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" count: 1 @@ -1967,26 +1952,11 @@ parameters: count: 1 path: src/Controllers/Database/TrackingController.php - - - message: "#^Cannot access offset 'back' on mixed\\.$#" - count: 1 - path: src/Controllers/Database/TrackingController.php - - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Controllers/Database/TrackingController.php - - message: "#^Parameter \\#2 \\$selected of method PhpMyAdmin\\\\Tracking\\\\Tracking\\:\\:createTrackingForMultipleTables\\(\\) expects array, mixed given\\.$#" count: 1 path: src/Controllers/Database/TrackingController.php - - - message: "#^Parameter \\#2 \\$urlParams of method PhpMyAdmin\\\\Tracking\\\\Tracking\\:\\:getHtmlForDbTrackingTables\\(\\) expects array, mixed given\\.$#" - count: 1 - path: src/Controllers/Database/TrackingController.php - - message: """ #^Call to deprecated method getInstance\\(\\) of class PhpMyAdmin\\\\Config\\: @@ -2311,21 +2281,11 @@ parameters: count: 4 path: src/Controllers/Import/ImportController.php - - - message: "#^Cannot access offset 'local_import_file' on mixed\\.$#" - count: 1 - path: src/Controllers/Import/ImportController.php - - message: "#^Cannot access offset 'message' on mixed\\.$#" count: 6 path: src/Controllers/Import/ImportController.php - - - message: "#^Cannot access offset 'offset' on mixed\\.$#" - count: 1 - path: src/Controllers/Import/ImportController.php - - message: "#^Cannot access offset 'reload' on mixed\\.$#" count: 5 @@ -2336,11 +2296,6 @@ parameters: count: 1 path: src/Controllers/Import/ImportController.php - - - message: "#^Cannot access offset 'timeout_passed' on mixed\\.$#" - count: 1 - path: src/Controllers/Import/ImportController.php - - message: "#^Cannot call method getDisplay\\(\\) on mixed\\.$#" count: 1 @@ -2371,11 +2326,6 @@ parameters: count: 1 path: src/Controllers/Import/ImportController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 2 - path: src/Controllers/Import/ImportController.php - - message: "#^Parameter \\#1 \\$sqlQuery of method PhpMyAdmin\\\\Import\\\\Import\\:\\:handleRollbackRequest\\(\\) expects string, mixed given\\.$#" count: 1 @@ -2552,11 +2502,6 @@ parameters: count: 1 path: src/Controllers/Operations/DatabaseController.php - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Controllers/Operations/DatabaseController.php - - message: "#^Cannot call method isSuccess\\(\\) on mixed\\.$#" count: 1 @@ -2595,16 +2540,6 @@ parameters: count: 1 path: src/Controllers/Operations/TableController.php - - - message: "#^Cannot access offset 'back' on mixed\\.$#" - count: 2 - path: src/Controllers/Operations/TableController.php - - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 2 - path: src/Controllers/Operations/TableController.php - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" count: 9 @@ -2620,16 +2555,6 @@ parameters: count: 1 path: src/Controllers/Operations/TableController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Operations/TableController.php - - - - message: "#^Parameter \\#1 \\$urlParams of method PhpMyAdmin\\\\Operations\\:\\:getForeignersForReferentialIntegrityCheck\\(\\) expects array, mixed given\\.$#" - count: 1 - path: src/Controllers/Operations/TableController.php - - message: "#^Parameter \\#2 \\$sqlQuery of static method PhpMyAdmin\\\\Html\\\\Generator\\:\\:getMessage\\(\\) expects string\\|null, mixed given\\.$#" count: 3 @@ -2648,21 +2573,6 @@ parameters: count: 1 path: src/Controllers/Operations/ViewController.php - - - message: "#^Cannot access offset 'back' on mixed\\.$#" - count: 1 - path: src/Controllers/Operations/ViewController.php - - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Controllers/Operations/ViewController.php - - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Operations/ViewController.php - - message: "#^Parameter \\#2 \\$sqlQuery of static method PhpMyAdmin\\\\Html\\\\Generator\\:\\:getMessage\\(\\) expects string\\|null, mixed given\\.$#" count: 1 @@ -3378,16 +3288,6 @@ parameters: count: 1 path: src/Controllers/Table/AddFieldController.php - - - message: "#^Cannot access offset 'db' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/ChangeController.php - - - - message: "#^Cannot access offset 'table' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/ChangeController.php - - message: "#^Cannot access offset \\(int\\|string\\) on mixed\\.$#" count: 1 @@ -3418,11 +3318,6 @@ parameters: count: 1 path: src/Controllers/Table/ChangeController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/ChangeController.php - - message: "#^Parameter \\#1 \\$rowId of method PhpMyAdmin\\\\InsertEdit\\:\\:getHtmlForIgnoreOption\\(\\) expects int, \\(int\\<1, max\\>\\|string\\) given\\.$#" count: 1 @@ -3438,16 +3333,6 @@ parameters: count: 1 path: src/Controllers/Table/ChangeController.php - - - message: "#^Parameter \\#1 \\$urlParams of method PhpMyAdmin\\\\Controllers\\\\Table\\\\ChangeController\\:\\:urlParamsInEditMode\\(\\) expects array, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/ChangeController.php - - - - message: "#^Parameter \\#1 \\$urlParams of method PhpMyAdmin\\\\InsertEdit\\:\\:getHtmlForInsertEditRow\\(\\) expects array, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/ChangeController.php - - message: "#^Parameter \\#1 \\$value of function count expects array\\|Countable, mixed given\\.$#" count: 2 @@ -3493,11 +3378,6 @@ parameters: count: 1 path: src/Controllers/Table/ChangeController.php - - - message: "#^Parameter \\#5 \\$errorUrl of method PhpMyAdmin\\\\InsertEdit\\:\\:getFormParametersForInsertForm\\(\\) expects string, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/ChangeController.php - - message: "#^Parameter \\#7 \\$isUpload of method PhpMyAdmin\\\\InsertEdit\\:\\:getHtmlForInsertEditRow\\(\\) expects bool, mixed given\\.$#" count: 1 @@ -3536,11 +3416,6 @@ parameters: count: 1 path: src/Controllers/Table/ChartController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/ChartController.php - - message: "#^Parameter \\#1 \\$query of method PhpMyAdmin\\\\DatabaseInterface\\:\\:tryQuery\\(\\) expects string, mixed given\\.$#" count: 1 @@ -3609,11 +3484,6 @@ parameters: count: 1 path: src/Controllers/Table/DeleteConfirmController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/DeleteConfirmController.php - - message: "#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\\.$#" count: 1 @@ -3700,16 +3570,6 @@ parameters: count: 1 path: src/Controllers/Table/ExportController.php - - - message: "#^Cannot access offset 'back' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/ExportController.php - - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/ExportController.php - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" count: 3 @@ -3720,11 +3580,6 @@ parameters: count: 1 path: src/Controllers/Table/ExportController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/ExportController.php - - message: "#^Parameter \\#2 \\$list of static method PhpMyAdmin\\\\SqlParser\\\\Utils\\\\Query\\:\\:replaceClauses\\(\\) expects PhpMyAdmin\\\\SqlParser\\\\TokensList, PhpMyAdmin\\\\SqlParser\\\\TokensList\\|null given\\.$#" count: 1 @@ -3768,11 +3623,6 @@ parameters: count: 16 path: src/Controllers/Table/FindReplaceController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/FindReplaceController.php - - message: "#^Parameter \\#1 \\$str of method PhpMyAdmin\\\\DatabaseInterface\\:\\:quoteString\\(\\) expects string, mixed given\\.$#" count: 2 @@ -3796,16 +3646,6 @@ parameters: count: 3 path: src/Controllers/Table/GisVisualizationController.php - - - message: "#^Cannot access offset 'back' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/GisVisualizationController.php - - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/GisVisualizationController.php - - message: "#^Cannot access offset 'max_rows' on mixed\\.$#" count: 1 @@ -3816,16 +3656,6 @@ parameters: count: 1 path: src/Controllers/Table/GisVisualizationController.php - - - message: "#^Cannot access offset 'sql_query' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/GisVisualizationController.php - - - - message: "#^Cannot access offset 'sql_signature' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/GisVisualizationController.php - - message: "#^Cannot cast mixed to int\\.$#" count: 3 @@ -3844,16 +3674,6 @@ parameters: count: 1 path: src/Controllers/Table/ImportController.php - - - message: "#^Cannot access offset 'back' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/ImportController.php - - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/ImportController.php - - message: "#^Cannot access offset 'handler' on mixed\\.$#" count: 2 @@ -3874,11 +3694,6 @@ parameters: count: 1 path: src/Controllers/Table/ImportController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/ImportController.php - - message: """ #^Call to deprecated method getInstance\\(\\) of class PhpMyAdmin\\\\Config\\: @@ -3887,11 +3702,6 @@ parameters: count: 1 path: src/Controllers/Table/IndexRenameController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/IndexRenameController.php - - message: """ #^Call to deprecated method getInstance\\(\\) of class PhpMyAdmin\\\\Config\\: @@ -3925,11 +3735,6 @@ parameters: count: 1 path: src/Controllers/Table/IndexesController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/IndexesController.php - - message: "#^Parameter \\#1 \\$value of function count expects array\\|Countable, mixed given\\.$#" count: 2 @@ -4096,11 +3901,6 @@ parameters: count: 2 path: src/Controllers/Table/ReplaceController.php - - - message: "#^Cannot access offset 'after_insert' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/ReplaceController.php - - message: "#^Cannot access offset 'multi_edit' on mixed\\.$#" count: 11 @@ -4113,11 +3913,6 @@ parameters: - message: "#^Cannot access offset 'sql_query' on mixed\\.$#" - count: 2 - path: src/Controllers/Table/ReplaceController.php - - - - message: "#^Cannot access offset 'where_clause' on mixed\\.$#" count: 1 path: src/Controllers/Table/ReplaceController.php @@ -4226,11 +4021,6 @@ parameters: count: 1 path: src/Controllers/Table/ReplaceController.php - - - message: "#^Parameter \\#1 \\$urlParams of method PhpMyAdmin\\\\InsertEdit\\:\\:getErrorUrl\\(\\) expects array, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/ReplaceController.php - - message: "#^Parameter \\#2 \\$relationField of method PhpMyAdmin\\\\InsertEdit\\:\\:getLinkForRelationalDisplayField\\(\\) expects string, \\(int\\|string\\) given\\.$#" count: 1 @@ -4319,11 +4109,6 @@ parameters: count: 1 path: src/Controllers/Table/SearchController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/SearchController.php - - message: "#^Parameter \\#1 \\$string of function strtoupper expects string, string\\|null given\\.$#" count: 1 @@ -4455,11 +4240,6 @@ parameters: count: 1 path: src/Controllers/Table/Structure/PrimaryController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/Structure/PrimaryController.php - - message: "#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\\.$#" count: 1 @@ -4712,46 +4492,16 @@ parameters: count: 1 path: src/Controllers/Table/TrackingController.php - - - message: "#^Cannot access offset 'back' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/TrackingController.php - - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Controllers/Table/TrackingController.php - - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/TrackingController.php - - message: "#^Parameter \\#2 \\$entries of method PhpMyAdmin\\\\Tracking\\\\Tracking\\:\\:getDownloadInfoForExport\\(\\) expects array\\\\>, array given\\.$#" count: 1 path: src/Controllers/Table/TrackingController.php - - - message: "#^Parameter \\#2 \\$urlParams of method PhpMyAdmin\\\\Tracking\\\\Tracking\\:\\:getHtmlForTrackingReport\\(\\) expects array, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/TrackingController.php - - - - message: "#^Parameter \\#3 \\$urlParams of method PhpMyAdmin\\\\Tracking\\\\Tracking\\:\\:getHtmlForMainPage\\(\\) expects array, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/TrackingController.php - - message: "#^Parameter \\#3 \\$version of method PhpMyAdmin\\\\Tracking\\\\Tracking\\:\\:deleteTrackingVersion\\(\\) expects string, mixed given\\.$#" count: 1 path: src/Controllers/Table/TrackingController.php - - - message: "#^Parameter \\#4 \\$params of method PhpMyAdmin\\\\Tracking\\\\Tracking\\:\\:getHtmlForSchemaSnapshot\\(\\) expects array, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/TrackingController.php - - message: """ #^Call to deprecated method getInstance\\(\\) of class PhpMyAdmin\\\\Config\\: @@ -4825,11 +4575,6 @@ parameters: count: 2 path: src/Controllers/Table/ZoomSearchController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Table/ZoomSearchController.php - - message: "#^Parameter \\#1 \\$sqlQuery of static method PhpMyAdmin\\\\Core\\:\\:checkSqlQuerySignature\\(\\) expects string, mixed given\\.$#" count: 1 @@ -4921,11 +4666,6 @@ parameters: count: 1 path: src/Controllers/Triggers/IndexController.php - - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" - count: 1 - path: src/Controllers/Triggers/IndexController.php - - message: "#^Parameter \\#1 \\$string of function mb_strtoupper expects string, mixed given\\.$#" count: 1 @@ -4972,26 +4712,6 @@ parameters: count: 1 path: src/Controllers/View/CreateController.php - - - message: "#^Cannot access offset 'back' on mixed\\.$#" - count: 1 - path: src/Controllers/View/CreateController.php - - - - message: "#^Cannot access offset 'db' on mixed\\.$#" - count: 1 - path: src/Controllers/View/CreateController.php - - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Controllers/View/CreateController.php - - - - message: "#^Cannot access offset 'reload' on mixed\\.$#" - count: 1 - path: src/Controllers/View/CreateController.php - - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" count: 3 @@ -7687,16 +7407,6 @@ parameters: count: 1 path: src/Http/Middleware/ConfigLoading.php - - - message: "#^Cannot access offset 'server' on mixed\\.$#" - count: 1 - path: src/Http/Middleware/CurrentServerGlobalSetting.php - - - - message: "#^Cannot access offset 'table' on mixed\\.$#" - count: 1 - path: src/Http/Middleware/DatabaseAndTableSetting.php - - message: """ #^Call to deprecated method getInstance\\(\\) of class PhpMyAdmin\\\\DatabaseInterface\\: @@ -7754,11 +7464,6 @@ parameters: count: 1 path: src/Http/Middleware/TokenRequestParamChecking.php - - - message: "#^Cannot access offset 'goto' on mixed\\.$#" - count: 1 - path: src/Http/Middleware/UrlParamsSetting.php - - message: "#^Parameter \\#1 \\$page of static method PhpMyAdmin\\\\Core\\:\\:checkPageValidity\\(\\) expects string, mixed given\\.$#" count: 2 @@ -11923,21 +11628,6 @@ parameters: count: 1 path: src/Replication/ReplicationGui.php - - - message: "#^Cannot access offset 'primary_add_user' on mixed\\.$#" - count: 1 - path: src/Replication/ReplicationGui.php - - - - message: "#^Cannot access offset 'replica_clear_screen' on mixed\\.$#" - count: 2 - path: src/Replication/ReplicationGui.php - - - - message: "#^Cannot access offset 'replica_configure' on mixed\\.$#" - count: 1 - path: src/Replication/ReplicationGui.php - - message: "#^Cannot access offset 'sr_action_info' on mixed\\.$#" count: 6 @@ -11948,31 +11638,6 @@ parameters: count: 7 path: src/Replication/ReplicationGui.php - - - message: "#^Cannot access offset 'sr_replica_action' on mixed\\.$#" - count: 7 - path: src/Replication/ReplicationGui.php - - - - message: "#^Cannot access offset 'sr_replica_control…' on mixed\\.$#" - count: 3 - path: src/Replication/ReplicationGui.php - - - - message: "#^Cannot access offset 'sr_replica_server…' on mixed\\.$#" - count: 1 - path: src/Replication/ReplicationGui.php - - - - message: "#^Cannot access offset 'sr_replica_skip…' on mixed\\.$#" - count: 1 - path: src/Replication/ReplicationGui.php - - - - message: "#^Cannot access offset 'sr_take_action' on mixed\\.$#" - count: 2 - path: src/Replication/ReplicationGui.php - - message: "#^Cannot access offset string on mixed\\.$#" count: 1 @@ -11994,12 +11659,12 @@ parameters: path: src/Replication/ReplicationGui.php - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, mixed given\\.$#" + message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\, array given\\.$#" count: 6 path: src/Replication/ReplicationGui.php - - message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommonRaw\\(\\) expects array\\, mixed given\\.$#" + message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommonRaw\\(\\) expects array\\, array given\\.$#" count: 1 path: src/Replication/ReplicationGui.php @@ -12018,11 +11683,6 @@ parameters: count: 1 path: src/Replication/ReplicationGui.php - - - message: "#^Cannot access offset 'primary_connection' on mixed\\.$#" - count: 1 - path: src/Replication/ReplicationInfo.php - - message: "#^Cannot access offset string on mixed\\.$#" count: 1 @@ -13987,6 +13647,11 @@ parameters: count: 1 path: src/Url.php + - + message: "#^Property PhpMyAdmin\\\\UrlParams\\:\\:\\$params type has no value type specified in iterable type array\\.$#" + count: 1 + path: src/UrlParams.php + - message: """ #^Call to deprecated method getInstance\\(\\) of class PhpMyAdmin\\\\DatabaseInterface\\: @@ -16605,6 +16270,11 @@ parameters: count: 1 path: tests/unit/Html/MySQLDocumentationTest.php + - + message: "#^Static property PhpMyAdmin\\\\UrlParams\\:\\:\\$params \\(array\\) does not accept null\\.$#" + count: 1 + path: tests/unit/Http/Middleware/UrlParamsSettingTest.php + - message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertTrue\\(\\) with true will always evaluate to true\\.$#" count: 1 diff --git a/psalm-baseline.xml b/psalm-baseline.xml index cd0ec70646..54ba2fc0c7 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1841,7 +1841,7 @@ - + @@ -2916,8 +2916,12 @@ + + + + @@ -2948,7 +2952,7 @@ - + @@ -3431,11 +3435,11 @@ getParsedBodyParam('fields_name')['multi_edit']]]> - + @@ -3447,7 +3451,6 @@ - @@ -3470,13 +3473,11 @@ + - - - @@ -9596,13 +9597,13 @@ - + diff --git a/psalm.xml b/psalm.xml index c3a7ff0cd8..3a6da9f241 100644 --- a/psalm.xml +++ b/psalm.xml @@ -110,7 +110,6 @@ tbl_storage_engine: string, token_mismatch: bool, token_provided: bool, - urlParams: array, username: string, xml_export_triggers: bool, xml_export_views: bool diff --git a/src/Controllers/Database/ExportController.php b/src/Controllers/Database/ExportController.php index e5e72f3de2..439916aa90 100644 --- a/src/Controllers/Database/ExportController.php +++ b/src/Controllers/Database/ExportController.php @@ -18,6 +18,7 @@ use PhpMyAdmin\Message; use PhpMyAdmin\Plugins; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -38,7 +39,6 @@ final class ExportController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['table_select'] ??= null; $GLOBALS['unlim_num_rows'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -73,7 +73,7 @@ final class ExportController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/database/export'); + UrlParams::$params['goto'] = Url::getFromRoute('/database/export'); $tableNames = $this->export->getTableNames(Current::$database); $GLOBALS['num_tables'] = count($tableNames); diff --git a/src/Controllers/Database/RoutinesController.php b/src/Controllers/Database/RoutinesController.php index 3d460450fa..ab3f06cb10 100644 --- a/src/Controllers/Database/RoutinesController.php +++ b/src/Controllers/Database/RoutinesController.php @@ -19,6 +19,7 @@ use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\UserPrivilegesFactory; use PhpMyAdmin\Util; @@ -51,7 +52,6 @@ final class RoutinesController implements InvocableController { $GLOBALS['errors'] ??= null; $GLOBALS['errorUrl'] ??= null; - $GLOBALS['urlParams'] ??= null; $this->response->addScriptFiles(['database/routines.js', 'sql.js']); @@ -69,9 +69,9 @@ final class RoutinesController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption($config->settings['DefaultTabTable'], 'table'); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { diff --git a/src/Controllers/Database/SearchController.php b/src/Controllers/Database/SearchController.php index a8d0b70eee..229d230f71 100644 --- a/src/Controllers/Database/SearchController.php +++ b/src/Controllers/Database/SearchController.php @@ -18,6 +18,7 @@ use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -35,7 +36,6 @@ final class SearchController implements InvocableController public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; - $GLOBALS['urlParams'] ??= null; $this->response->addScriptFiles(['database/search.js', 'sql.js', 'makegrid.js']); @@ -81,7 +81,7 @@ final class SearchController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/database/search'); + UrlParams::$params['goto'] = Url::getFromRoute('/database/search'); // Create a database search instance $databaseSearch = new Search($this->dbi, Current::$database, $this->template); diff --git a/src/Controllers/Database/TrackingController.php b/src/Controllers/Database/TrackingController.php index 81a9d2aebb..c72db7b7ee 100644 --- a/src/Controllers/Database/TrackingController.php +++ b/src/Controllers/Database/TrackingController.php @@ -18,6 +18,7 @@ use PhpMyAdmin\Query\Utilities; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Tracking\Tracking; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -39,7 +40,6 @@ final class TrackingController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; $this->response->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'database/tracking.js']); @@ -66,8 +66,8 @@ final class TrackingController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/tracking'); - $GLOBALS['urlParams']['back'] = Url::getFromRoute('/database/tracking'); + UrlParams::$params['goto'] = Url::getFromRoute('/table/tracking'); + UrlParams::$params['back'] = Url::getFromRoute('/database/tracking'); $isSystemSchema = Utilities::isSystemSchema(Current::$database); @@ -105,7 +105,7 @@ final class TrackingController implements InvocableController } elseif ($request->getParsedBodyParam('submit_mult') === 'track') { $this->response->render('create_tracking_version', [ 'route' => '/database/tracking', - 'url_params' => $GLOBALS['urlParams'], + 'url_params' => UrlParams::$params, 'last_version' => 0, 'db' => Current::$database, 'selected' => $selectedTable, @@ -138,7 +138,7 @@ final class TrackingController implements InvocableController $this->response->addHTML($this->tracking->getHtmlForDbTrackingTables( Current::$database, - $GLOBALS['urlParams'], + UrlParams::$params, )); // If available print out database log diff --git a/src/Controllers/Import/ImportController.php b/src/Controllers/Import/ImportController.php index 85f0673b94..70063b6469 100644 --- a/src/Controllers/Import/ImportController.php +++ b/src/Controllers/Import/ImportController.php @@ -26,6 +26,7 @@ use PhpMyAdmin\Plugins\Import\ImportFormat; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; use Throwable; @@ -66,7 +67,6 @@ final class ImportController implements InvocableController $GLOBALS['import_text'] ??= null; $GLOBALS['message'] ??= null; $GLOBALS['errorUrl'] ??= null; - $GLOBALS['urlParams'] ??= null; $GLOBALS['error'] ??= null; $GLOBALS['result'] ??= null; @@ -197,11 +197,11 @@ final class ImportController implements InvocableController } if (Current::$table !== '' && Current::$database !== '') { - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; } elseif (Current::$database !== '') { - $GLOBALS['urlParams'] = ['db' => Current::$database]; + UrlParams::$params = ['db' => Current::$database]; } else { - $GLOBALS['urlParams'] = []; + UrlParams::$params = []; } // Create error and goto url @@ -221,7 +221,7 @@ final class ImportController implements InvocableController } } - $GLOBALS['errorUrl'] = $GLOBALS['goto'] . Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] = $GLOBALS['goto'] . Url::getCommon(UrlParams::$params, '&'); $_SESSION['Import_message']['go_back_url'] = $GLOBALS['errorUrl']; if (Current::$database !== '') { @@ -553,13 +553,13 @@ final class ImportController implements InvocableController // Did we hit timeout? Tell it user. if (ImportSettings::$timeoutPassed) { - $GLOBALS['urlParams']['timeout_passed'] = '1'; - $GLOBALS['urlParams']['offset'] = ImportSettings::$offset; + UrlParams::$params['timeout_passed'] = '1'; + UrlParams::$params['offset'] = ImportSettings::$offset; if (ImportSettings::$localImportFile !== '') { - $GLOBALS['urlParams']['local_import_file'] = ImportSettings::$localImportFile; + UrlParams::$params['local_import_file'] = ImportSettings::$localImportFile; } - $importUrl = $GLOBALS['errorUrl'] = $GLOBALS['goto'] . Url::getCommon($GLOBALS['urlParams'], '&'); + $importUrl = $GLOBALS['errorUrl'] = $GLOBALS['goto'] . Url::getCommon(UrlParams::$params, '&'); $GLOBALS['message'] = Message::error( __( diff --git a/src/Controllers/Operations/DatabaseController.php b/src/Controllers/Operations/DatabaseController.php index c06a1cda45..6812202827 100644 --- a/src/Controllers/Operations/DatabaseController.php +++ b/src/Controllers/Operations/DatabaseController.php @@ -24,6 +24,7 @@ use PhpMyAdmin\Plugins; use PhpMyAdmin\Query\Utilities; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\UserPrivilegesFactory; use PhpMyAdmin\Util; @@ -50,7 +51,6 @@ final class DatabaseController implements InvocableController { $GLOBALS['message'] ??= null; $GLOBALS['errorUrl'] ??= null; - $GLOBALS['urlParams'] ??= null; $GLOBALS['single_table'] ??= null; $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -247,7 +247,7 @@ final class DatabaseController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/database/operations'); + UrlParams::$params['goto'] = Url::getFromRoute('/database/operations'); $oldMessage = ''; if (isset($GLOBALS['message'])) { diff --git a/src/Controllers/Operations/TableController.php b/src/Controllers/Operations/TableController.php index 1033637afe..abd8bb2f4f 100644 --- a/src/Controllers/Operations/TableController.php +++ b/src/Controllers/Operations/TableController.php @@ -26,6 +26,7 @@ use PhpMyAdmin\Query\Utilities; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\StorageEngine; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\UserPrivilegesFactory; use PhpMyAdmin\Util; @@ -54,7 +55,6 @@ final class TableController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['auto_increment'] ??= null; $GLOBALS['message_to_show'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -74,10 +74,10 @@ final class TableController implements InvocableController } $isSystemSchema = Utilities::isSystemSchema(Current::$database); - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $config = Config::getInstance(); $GLOBALS['errorUrl'] = Util::getScriptNameForOption($config->settings['DefaultTabTable'], 'table'); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { @@ -107,7 +107,7 @@ final class TableController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams']['goto'] = $GLOBALS['urlParams']['back'] = Url::getFromRoute('/table/operations'); + UrlParams::$params['goto'] = UrlParams::$params['back'] = Url::getFromRoute('/table/operations'); $relationParameters = $this->relation->getRelationParameters(); @@ -400,7 +400,7 @@ final class TableController implements InvocableController unset($newMessage); } - $GLOBALS['urlParams']['goto'] = $GLOBALS['urlParams']['back'] = Url::getFromRoute('/table/operations'); + UrlParams::$params['goto'] = UrlParams::$params['back'] = Url::getFromRoute('/table/operations'); $columns = $this->dbi->getColumns(Current::$database, Current::$table); @@ -482,14 +482,14 @@ final class TableController implements InvocableController } $foreigners = $this->operations->getForeignersForReferentialIntegrityCheck( - $GLOBALS['urlParams'], + UrlParams::$params, $relationParameters->relationFeature !== null, ); $this->response->render('table/operations/index', [ 'db' => Current::$database, 'table' => Current::$table, - 'url_params' => $GLOBALS['urlParams'], + 'url_params' => UrlParams::$params, 'columns' => $columns, 'hide_order_table' => $hideOrderTable, 'table_comment' => $comment, diff --git a/src/Controllers/Operations/ViewController.php b/src/Controllers/Operations/ViewController.php index ae4171e9d3..27939f2943 100644 --- a/src/Controllers/Operations/ViewController.php +++ b/src/Controllers/Operations/ViewController.php @@ -18,6 +18,7 @@ use PhpMyAdmin\Message; use PhpMyAdmin\MessageType; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -39,7 +40,6 @@ final class ViewController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $tableObject = $this->dbi->getTable(Current::$database, Current::$table); $GLOBALS['errorUrl'] ??= null; @@ -49,12 +49,12 @@ final class ViewController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabTable'], 'table', ); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { @@ -84,7 +84,7 @@ final class ViewController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams']['goto'] = $GLOBALS['urlParams']['back'] = Url::getFromRoute('/view/operations'); + UrlParams::$params['goto'] = UrlParams::$params['back'] = Url::getFromRoute('/view/operations'); $message = new Message(); $type = MessageType::Success; @@ -137,7 +137,7 @@ final class ViewController implements InvocableController $this->response->render('table/operations/view', [ 'db' => Current::$database, 'table' => Current::$table, - 'url_params' => $GLOBALS['urlParams'], + 'url_params' => UrlParams::$params, ]); return $this->response->response(); diff --git a/src/Controllers/Server/ReplicationController.php b/src/Controllers/Server/ReplicationController.php index 779cd8782d..ac27da8483 100644 --- a/src/Controllers/Server/ReplicationController.php +++ b/src/Controllers/Server/ReplicationController.php @@ -15,6 +15,7 @@ use PhpMyAdmin\Replication\ReplicationGui; use PhpMyAdmin\Replication\ReplicationInfo; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use function is_array; @@ -32,7 +33,6 @@ final class ReplicationController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; $hasReplicaClearScreen = (bool) $request->getParsedBodyParamAsStringOrNull('replica_clear_screen'); @@ -56,7 +56,7 @@ final class ReplicationController implements InvocableController $urlParams = $request->getParsedBodyParam('url_params'); if (is_array($urlParams)) { - $GLOBALS['urlParams'] = $urlParams; + UrlParams::$params = $urlParams; } if ($this->dbi->isSuperUser()) { @@ -113,7 +113,7 @@ final class ReplicationController implements InvocableController } $this->response->render('server/replication/index', [ - 'url_params' => $GLOBALS['urlParams'], + 'url_params' => UrlParams::$params, 'is_super_user' => $this->dbi->isSuperUser(), 'error_messages' => $errorMessages, 'is_primary' => $primaryInfo['status'], diff --git a/src/Controllers/Table/ChangeController.php b/src/Controllers/Table/ChangeController.php index 1660662e6b..56f10dad98 100644 --- a/src/Controllers/Table/ChangeController.php +++ b/src/Controllers/Table/ChangeController.php @@ -21,6 +21,7 @@ use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use function __; use function array_fill; @@ -51,7 +52,6 @@ class ChangeController implements InvocableController public function __invoke(ServerRequest $request): Response { $GLOBALS['disp_message'] ??= null; - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; $GLOBALS['where_clause'] ??= null; $GLOBALS['unsaved_values'] ??= null; @@ -135,17 +135,17 @@ class ChangeController implements InvocableController /** @var mixed $sqlQuery */ $sqlQuery = $request->getParsedBodyParam('sql_query'); - $GLOBALS['urlParams'] = ['db' => Current::$database, 'sql_query' => is_string($sqlQuery) ? $sqlQuery : '']; + UrlParams::$params = ['db' => Current::$database, 'sql_query' => is_string($sqlQuery) ? $sqlQuery : '']; if (str_starts_with($GLOBALS['goto'] ?? '', 'index.php?route=/table')) { - $GLOBALS['urlParams']['table'] = Current::$table; + UrlParams::$params['table'] = Current::$table; } $GLOBALS['errorUrl'] = $GLOBALS['goto'] . Url::getCommon( - $GLOBALS['urlParams'], + UrlParams::$params, ! str_contains($GLOBALS['goto'], '?') ? '?' : '&', ); - unset($GLOBALS['urlParams']); + unset(UrlParams::$params); $commentsMap = $this->insertEdit->getCommentsMap(Current::$database, Current::$table); @@ -192,9 +192,9 @@ class ChangeController implements InvocableController $htmlOutput = ''; - $GLOBALS['urlParams']['db'] = Current::$database; - $GLOBALS['urlParams']['table'] = Current::$table; - $GLOBALS['urlParams'] = $this->urlParamsInEditMode($GLOBALS['urlParams'], $whereClauseArray); + UrlParams::$params['db'] = Current::$database; + UrlParams::$params['table'] = Current::$table; + UrlParams::$params = $this->urlParamsInEditMode(UrlParams::$params, $whereClauseArray); $hasBlobField = false; foreach ($tableColumns as $tableColumn) { @@ -220,11 +220,11 @@ class ChangeController implements InvocableController } if (! $this->config->settings['ShowFunctionFields']) { - $htmlOutput .= $this->insertEdit->showTypeOrFunction('function', $GLOBALS['urlParams'], false); + $htmlOutput .= $this->insertEdit->showTypeOrFunction('function', UrlParams::$params, false); } if (! $this->config->settings['ShowFieldTypesInDataEditView']) { - $htmlOutput .= $this->insertEdit->showTypeOrFunction('type', $GLOBALS['urlParams'], false); + $htmlOutput .= $this->insertEdit->showTypeOrFunction('type', UrlParams::$params, false); } $GLOBALS['plugin_scripts'] = []; @@ -244,7 +244,7 @@ class ChangeController implements InvocableController } $htmlOutput .= $this->insertEdit->getHtmlForInsertEditRow( - $GLOBALS['urlParams'], + UrlParams::$params, $tableColumns, $commentsMap, $GLOBALS['current_result'], diff --git a/src/Controllers/Table/ChartController.php b/src/Controllers/Table/ChartController.php index fa1fee9681..9c6d2ac7f7 100644 --- a/src/Controllers/Table/ChartController.php +++ b/src/Controllers/Table/ChartController.php @@ -21,6 +21,7 @@ use PhpMyAdmin\SqlParser\Components\Limit; use PhpMyAdmin\SqlParser\Parser; use PhpMyAdmin\SqlParser\Statements\SelectStatement; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -209,15 +210,14 @@ final class ChartController implements InvocableController */ public function ajax(ServerRequest $request): void { - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (Current::$table !== '' && Current::$database !== '') { - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabTable'], 'table', ); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { diff --git a/src/Controllers/Table/DeleteConfirmController.php b/src/Controllers/Table/DeleteConfirmController.php index a1735e53e7..9e24cf460d 100644 --- a/src/Controllers/Table/DeleteConfirmController.php +++ b/src/Controllers/Table/DeleteConfirmController.php @@ -15,6 +15,7 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; @@ -31,7 +32,6 @@ final class DeleteConfirmController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; $selected = $_POST['rows_to_delete'] ?? null; @@ -47,12 +47,12 @@ final class DeleteConfirmController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabTable'], 'table', ); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { diff --git a/src/Controllers/Table/ExportController.php b/src/Controllers/Table/ExportController.php index 68dadad239..0e0a8207b2 100644 --- a/src/Controllers/Table/ExportController.php +++ b/src/Controllers/Table/ExportController.php @@ -18,6 +18,7 @@ use PhpMyAdmin\SqlParser\Parser; use PhpMyAdmin\SqlParser\Statements\SelectStatement; use PhpMyAdmin\SqlParser\Utils\Query; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -36,7 +37,6 @@ class ExportController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; $GLOBALS['where_clause'] ??= null; $GLOBALS['unlim_num_rows'] ??= null; @@ -51,15 +51,15 @@ class ExportController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabTable'], 'table', ); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); - $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/export'); - $GLOBALS['urlParams']['back'] = Url::getFromRoute('/table/export'); + UrlParams::$params['goto'] = Url::getFromRoute('/table/export'); + UrlParams::$params['back'] = Url::getFromRoute('/table/export'); // When we have some query, we need to remove LIMIT from that and possibly // generate WHERE clause (if we are asked to export specific rows) diff --git a/src/Controllers/Table/FindReplaceController.php b/src/Controllers/Table/FindReplaceController.php index 3e7dc8db2e..694fd167ec 100644 --- a/src/Controllers/Table/FindReplaceController.php +++ b/src/Controllers/Table/FindReplaceController.php @@ -19,6 +19,7 @@ use PhpMyAdmin\MessageType; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -54,18 +55,17 @@ final class FindReplaceController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! $this->response->checkParameters(['db', 'table'])) { return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabTable'], 'table', ); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { diff --git a/src/Controllers/Table/GisVisualizationController.php b/src/Controllers/Table/GisVisualizationController.php index 5f01ebbcda..8c11488bdd 100644 --- a/src/Controllers/Table/GisVisualizationController.php +++ b/src/Controllers/Table/GisVisualizationController.php @@ -22,6 +22,7 @@ use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -137,7 +138,7 @@ final class GisVisualizationController implements InvocableController /** * Displays the page */ - $urlParams = $GLOBALS['urlParams'] ?? []; + $urlParams = UrlParams::$params; $urlParams['goto'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabDatabase'], 'database', diff --git a/src/Controllers/Table/ImportController.php b/src/Controllers/Table/ImportController.php index 20a2da8a20..35d44d4a2a 100644 --- a/src/Controllers/Table/ImportController.php +++ b/src/Controllers/Table/ImportController.php @@ -23,6 +23,7 @@ use PhpMyAdmin\Message; use PhpMyAdmin\Plugins; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; @@ -41,7 +42,6 @@ final class ImportController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['SESSION_KEY'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -55,10 +55,10 @@ final class ImportController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $config = Config::getInstance(); $GLOBALS['errorUrl'] = Util::getScriptNameForOption($config->settings['DefaultTabTable'], 'table'); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { @@ -88,8 +88,8 @@ final class ImportController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/import'); - $GLOBALS['urlParams']['back'] = Url::getFromRoute('/table/import'); + UrlParams::$params['goto'] = Url::getFromRoute('/table/import'); + UrlParams::$params['back'] = Url::getFromRoute('/table/import'); [$GLOBALS['SESSION_KEY'], $uploadId] = Ajax::uploadProgressSetup(); diff --git a/src/Controllers/Table/IndexRenameController.php b/src/Controllers/Table/IndexRenameController.php index ba9d4a22f4..dec3014990 100644 --- a/src/Controllers/Table/IndexRenameController.php +++ b/src/Controllers/Table/IndexRenameController.php @@ -21,6 +21,7 @@ use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Indexes; use PhpMyAdmin\Template; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -38,19 +39,18 @@ final class IndexRenameController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! $this->response->checkParameters(['db', 'table'])) { return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabTable'], 'table', ); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { diff --git a/src/Controllers/Table/IndexesController.php b/src/Controllers/Table/IndexesController.php index ef6925ccc8..b12cb717ae 100644 --- a/src/Controllers/Table/IndexesController.php +++ b/src/Controllers/Table/IndexesController.php @@ -22,6 +22,7 @@ use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Indexes; use PhpMyAdmin\Template; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -47,7 +48,6 @@ final class IndexesController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! isset($_POST['create_edit_table'])) { @@ -55,12 +55,12 @@ final class IndexesController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabTable'], 'table', ); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { diff --git a/src/Controllers/Table/RelationController.php b/src/Controllers/Table/RelationController.php index 314e507ed9..41a5c52094 100644 --- a/src/Controllers/Table/RelationController.php +++ b/src/Controllers/Table/RelationController.php @@ -20,6 +20,7 @@ use PhpMyAdmin\MessageType; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Table; use PhpMyAdmin\Template; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; @@ -206,7 +207,7 @@ final class RelationController implements InvocableController 'tbl_storage_engine' => $storageEngine, 'db' => Current::$database, 'table' => Current::$table, - 'url_params' => $GLOBALS['urlParams'], + 'url_params' => UrlParams::$params, 'databases' => $this->dbi->getDatabaseList(), 'foreign_db' => $foreignDb, 'foreign_table' => $foreignTable, @@ -225,7 +226,7 @@ final class RelationController implements InvocableController 'tbl_storage_engine' => $storageEngine, 'db' => Current::$database, 'table' => Current::$table, - 'url_params' => $GLOBALS['urlParams'], + 'url_params' => UrlParams::$params, 'databases' => $this->dbi->getDatabaseList(), 'foreign_db' => false, 'foreign_table' => false, @@ -293,7 +294,7 @@ final class RelationController implements InvocableController 'tbl_storage_engine' => $storageEngine, 'options_array' => $options, 'internal_relation_columns' => $internalRelationColumns, - 'url_params' => $GLOBALS['urlParams'], + 'url_params' => UrlParams::$params, 'databases' => $this->dbi->getDatabaseList(), 'default_sliders_state' => $config->settings['InitialSlidersState'], 'route' => $request->getRoute(), diff --git a/src/Controllers/Table/ReplaceController.php b/src/Controllers/Table/ReplaceController.php index fad1c80af4..86654f6e38 100644 --- a/src/Controllers/Table/ReplaceController.php +++ b/src/Controllers/Table/ReplaceController.php @@ -25,6 +25,7 @@ use PhpMyAdmin\Query\Generator as QueryGenerator; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Table; use PhpMyAdmin\Transformations; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -56,7 +57,6 @@ final class ReplaceController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['message'] ??= null; if (! $this->response->checkParameters(['db', 'table', 'goto'])) { return $this->response->response(); @@ -74,12 +74,12 @@ final class ReplaceController implements InvocableController $afterInsert = $request->getParsedBodyParamAsStringOrNull('after_insert'); if (in_array($afterInsert, ['new_insert', 'same_insert', 'edit_next'], true)) { - $GLOBALS['urlParams']['after_insert'] = $afterInsert; + UrlParams::$params['after_insert'] = $afterInsert; $whereClause = $request->getParsedBodyParam('where_clause'); if ($whereClause !== null) { foreach ($whereClause as $oneWhereClause) { if ($afterInsert === 'same_insert') { - $GLOBALS['urlParams']['where_clause'][] = $oneWhereClause; + UrlParams::$params['where_clause'][] = $oneWhereClause; } elseif ($afterInsert === 'edit_next') { $this->insertEdit->setSessionForEditNext($oneWhereClause); } @@ -91,7 +91,7 @@ final class ReplaceController implements InvocableController $gotoInclude = $this->insertEdit->getGotoInclude(false); // Defines the url to return in case of failure of the query - $GLOBALS['errorUrl'] = $this->insertEdit->getErrorUrl($GLOBALS['urlParams']); + $GLOBALS['errorUrl'] = $this->insertEdit->getErrorUrl(UrlParams::$params); /** * Prepares the update/insert of a row @@ -304,7 +304,7 @@ final class ReplaceController implements InvocableController $returnToSqlQuery = ''; if (! empty($GLOBALS['sql_query'])) { - $GLOBALS['urlParams']['sql_query'] = $GLOBALS['sql_query']; + UrlParams::$params['sql_query'] = $GLOBALS['sql_query']; $returnToSqlQuery = $GLOBALS['sql_query']; } diff --git a/src/Controllers/Table/SearchController.php b/src/Controllers/Table/SearchController.php index 8f946c6f8e..e052400f00 100644 --- a/src/Controllers/Table/SearchController.php +++ b/src/Controllers/Table/SearchController.php @@ -23,6 +23,7 @@ use PhpMyAdmin\Table\Search; use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\Gis; @@ -159,12 +160,12 @@ final class SearchController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabTable'], 'table', ); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { diff --git a/src/Controllers/Table/Structure/PrimaryController.php b/src/Controllers/Table/Structure/PrimaryController.php index e9fcaf6df6..957ca6bd93 100644 --- a/src/Controllers/Table/Structure/PrimaryController.php +++ b/src/Controllers/Table/Structure/PrimaryController.php @@ -17,6 +17,7 @@ use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -36,7 +37,6 @@ final class PrimaryController implements InvocableController public function __invoke(ServerRequest $request): Response { $GLOBALS['message'] ??= null; - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; /** @var string[]|null $selected */ @@ -59,12 +59,12 @@ final class PrimaryController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabTable'], 'table', ); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { diff --git a/src/Controllers/Table/TrackingController.php b/src/Controllers/Table/TrackingController.php index e8a822cf30..c4512a007c 100644 --- a/src/Controllers/Table/TrackingController.php +++ b/src/Controllers/Table/TrackingController.php @@ -22,6 +22,7 @@ use PhpMyAdmin\Tracking\Tracker; use PhpMyAdmin\Tracking\Tracking; use PhpMyAdmin\Tracking\TrackingChecker; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use Throwable; use Webmozart\Assert\Assert; @@ -48,7 +49,6 @@ final class TrackingController implements InvocableController public function __invoke(ServerRequest $request): Response { - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; $this->response->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'table/tracking.js']); @@ -57,12 +57,12 @@ final class TrackingController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( Config::getInstance()->settings['DefaultTabTable'], 'table', ); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { @@ -98,8 +98,8 @@ final class TrackingController implements InvocableController )->getDisplay(); } - $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/tracking'); - $GLOBALS['urlParams']['back'] = Url::getFromRoute('/table/tracking'); + UrlParams::$params['goto'] = Url::getFromRoute('/table/tracking'); + UrlParams::$params['back'] = Url::getFromRoute('/table/tracking'); $versionParam = $request->getParsedBodyParamAsString('version', ''); $tableParam = $request->getParsedBodyParamAsString('table', ''); @@ -178,7 +178,7 @@ final class TrackingController implements InvocableController $trackingReport = $this->tracking->getHtmlForTrackingReport( $trackedData, - $GLOBALS['urlParams'], + UrlParams::$params, $logType, $filterUsers, $versionParam, @@ -239,11 +239,11 @@ final class TrackingController implements InvocableController $db, $tableParam, $versionParam, - $GLOBALS['urlParams'], + UrlParams::$params, ); } - $main = $this->tracking->getHtmlForMainPage(Current::$database, Current::$table, $GLOBALS['urlParams']); + $main = $this->tracking->getHtmlForMainPage(Current::$database, Current::$table, UrlParams::$params); $this->response->render('table/tracking/index', [ 'active_message' => $activeMessage, diff --git a/src/Controllers/Table/ZoomSearchController.php b/src/Controllers/Table/ZoomSearchController.php index 44eec14ef6..98227f5bf8 100644 --- a/src/Controllers/Table/ZoomSearchController.php +++ b/src/Controllers/Table/ZoomSearchController.php @@ -21,6 +21,7 @@ use PhpMyAdmin\Table\Search; use PhpMyAdmin\Template; use PhpMyAdmin\UniqueCondition; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\Gis; @@ -82,16 +83,15 @@ final class ZoomSearchController implements InvocableController public function __invoke(ServerRequest $request): Response { $GLOBALS['goto'] ??= null; - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! $this->response->checkParameters(['db', 'table'])) { return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $config = Config::getInstance(); $GLOBALS['errorUrl'] = Util::getScriptNameForOption($config->settings['DefaultTabTable'], 'table'); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { diff --git a/src/Controllers/Triggers/IndexController.php b/src/Controllers/Triggers/IndexController.php index 9deb6642ef..6c6cff4266 100644 --- a/src/Controllers/Triggers/IndexController.php +++ b/src/Controllers/Triggers/IndexController.php @@ -20,6 +20,7 @@ use PhpMyAdmin\Template; use PhpMyAdmin\Triggers\Trigger; use PhpMyAdmin\Triggers\Triggers; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -47,7 +48,6 @@ final class IndexController implements InvocableController public function __invoke(ServerRequest $request): Response { $GLOBALS['errors'] ??= null; - $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; $this->response->addScriptFiles(['triggers.js', 'sql.js']); @@ -62,9 +62,9 @@ final class IndexController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; + UrlParams::$params = ['db' => Current::$database, 'table' => Current::$table]; $GLOBALS['errorUrl'] = Util::getScriptNameForOption($config->settings['DefaultTabTable'], 'table'); - $GLOBALS['errorUrl'] .= Url::getCommon($GLOBALS['urlParams'], '&'); + $GLOBALS['errorUrl'] .= Url::getCommon(UrlParams::$params, '&'); $databaseName = DatabaseName::tryFrom($request->getParam('db')); if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { diff --git a/src/Controllers/View/CreateController.php b/src/Controllers/View/CreateController.php index ceb4c4a63c..ba2f25a906 100644 --- a/src/Controllers/View/CreateController.php +++ b/src/Controllers/View/CreateController.php @@ -22,6 +22,7 @@ use PhpMyAdmin\SqlParser\Statements\CreateStatement; use PhpMyAdmin\SqlParser\TokensList; use PhpMyAdmin\SystemDatabase; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -58,7 +59,6 @@ final class CreateController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams'] ??= null; $GLOBALS['message'] ??= null; $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -81,8 +81,8 @@ final class CreateController implements InvocableController return $this->response->response(); } - $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/structure'); - $GLOBALS['urlParams']['back'] = Url::getFromRoute('/view/create'); + UrlParams::$params['goto'] = Url::getFromRoute('/table/structure'); + UrlParams::$params['back'] = Url::getFromRoute('/view/create'); /** @var array|null $view */ $view = $request->getParsedBodyParam('view'); @@ -181,14 +181,14 @@ final class CreateController implements InvocableController $viewData = array_merge($viewData, $view); } - $GLOBALS['urlParams']['db'] = Current::$database; - $GLOBALS['urlParams']['reload'] = 1; + UrlParams::$params['db'] = Current::$database; + UrlParams::$params['reload'] = 1; $this->response->addScriptFiles(['sql.js']); $this->response->render('view_create', [ 'ajax_dialog' => $ajaxdialog, - 'url_params' => $GLOBALS['urlParams'], + 'url_params' => UrlParams::$params, 'view' => $viewData, 'view_algorithm_options' => self::VIEW_ALGORITHM_OPTIONS, 'view_with_options' => self::VIEW_WITH_OPTIONS, diff --git a/src/Http/Middleware/CurrentServerGlobalSetting.php b/src/Http/Middleware/CurrentServerGlobalSetting.php index 3f0675d20d..fca7871f76 100644 --- a/src/Http/Middleware/CurrentServerGlobalSetting.php +++ b/src/Http/Middleware/CurrentServerGlobalSetting.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Http\Middleware; use PhpMyAdmin\Config; use PhpMyAdmin\Current; use PhpMyAdmin\Http\ServerRequest; +use PhpMyAdmin\UrlParams; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; @@ -33,6 +34,6 @@ final class CurrentServerGlobalSetting implements MiddlewareInterface mixed $serverParamFromRequest, ): void { Current::$server = $config->selectServer($serverParamFromRequest); - $GLOBALS['urlParams']['server'] = Current::$server; + UrlParams::$params['server'] = Current::$server; } } diff --git a/src/Http/Middleware/DatabaseAndTableSetting.php b/src/Http/Middleware/DatabaseAndTableSetting.php index 8e3f4ae2cf..bcc6ed6634 100644 --- a/src/Http/Middleware/DatabaseAndTableSetting.php +++ b/src/Http/Middleware/DatabaseAndTableSetting.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; +use PhpMyAdmin\UrlParams; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; @@ -28,19 +29,13 @@ final class DatabaseAndTableSetting implements MiddlewareInterface private function setDatabaseAndTableFromRequest(ServerRequest $request): void { - $GLOBALS['urlParams'] ??= null; - $db = DatabaseName::tryFrom($request->getParam('db')); $table = TableName::tryFrom($request->getParam('table')); Current::$database = $db?->getName() ?? ''; Current::$table = $table?->getName() ?? ''; - if (! is_array($GLOBALS['urlParams'])) { - $GLOBALS['urlParams'] = []; - } - - $GLOBALS['urlParams']['db'] = Current::$database; - $GLOBALS['urlParams']['table'] = Current::$table; + UrlParams::$params['db'] = Current::$database; + UrlParams::$params['table'] = Current::$table; } } diff --git a/src/Http/Middleware/UrlParamsSetting.php b/src/Http/Middleware/UrlParamsSetting.php index b456bac75e..e6b04dc5c9 100644 --- a/src/Http/Middleware/UrlParamsSetting.php +++ b/src/Http/Middleware/UrlParamsSetting.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Http\Middleware; use PhpMyAdmin\Config; use PhpMyAdmin\Core; +use PhpMyAdmin\UrlParams; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; @@ -19,7 +20,7 @@ final class UrlParamsSetting implements MiddlewareInterface public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { - $GLOBALS['urlParams'] = []; + UrlParams::$params = []; $this->setGotoAndBackGlobals(); @@ -33,7 +34,7 @@ final class UrlParamsSetting implements MiddlewareInterface if (isset($_REQUEST['goto']) && Core::checkPageValidity($_REQUEST['goto'])) { $GLOBALS['goto'] = $_REQUEST['goto']; - $GLOBALS['urlParams']['goto'] = $GLOBALS['goto']; + UrlParams::$params['goto'] = $GLOBALS['goto']; } else { if ($this->config->issetCookie('goto')) { $this->config->removeCookie('goto'); diff --git a/src/Replication/ReplicationGui.php b/src/Replication/ReplicationGui.php index 7081da8d13..811a994a90 100644 --- a/src/Replication/ReplicationGui.php +++ b/src/Replication/ReplicationGui.php @@ -15,6 +15,7 @@ use PhpMyAdmin\Query\Utilities; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PhpMyAdmin\Util; use function __; @@ -83,7 +84,7 @@ class ReplicationGui $replicas = $dbi->fetchResult('SHOW SLAVE HOSTS'); } - $urlParams = $GLOBALS['urlParams']; + $urlParams = UrlParams::$params; $urlParams['primary_add_user'] = true; $urlParams['replica_clear_screen'] = true; } @@ -146,7 +147,7 @@ class ReplicationGui $isReplicaSqlRunning = false; if ($serverReplicaStatus) { - $urlParams = $GLOBALS['urlParams']; + $urlParams = UrlParams::$params; $urlParams['sr_take_action'] = true; $urlParams['sr_replica_server_control'] = true; @@ -190,12 +191,12 @@ class ReplicationGui $urlParams['sr_replica_action'] = 'reset'; $replicaControlResetLink = Url::getCommon($urlParams, '', false); - $urlParams = $GLOBALS['urlParams']; + $urlParams = UrlParams::$params; $urlParams['sr_take_action'] = true; $urlParams['sr_replica_skip_error'] = true; $replicaSkipErrorLink = Url::getCommon($urlParams, '', false); - $urlParams = $GLOBALS['urlParams']; + $urlParams = UrlParams::$params; $urlParams['replica_configure'] = true; $urlParams['replica_clear_screen'] = true; @@ -206,7 +207,7 @@ class ReplicationGui return $this->template->render('server/replication/replica_configuration', [ 'server_replica_multi_replication' => $serverReplicaMultiReplication, - 'url_params' => $GLOBALS['urlParams'], + 'url_params' => UrlParams::$params, 'primary_connection' => $connection ?? '', 'server_replica_status' => $serverReplicaStatus, 'replica_status_table' => $replicaStatusTable ?? '', @@ -491,7 +492,7 @@ class ReplicationGui ); } else { $response->redirect( - './index.php?route=/server/replication' . Url::getCommonRaw($GLOBALS['urlParams'], '&'), + './index.php?route=/server/replication' . Url::getCommonRaw(UrlParams::$params, '&'), ); } } diff --git a/src/Replication/ReplicationInfo.php b/src/Replication/ReplicationInfo.php index 73c0d10a21..3777d0a74e 100644 --- a/src/Replication/ReplicationInfo.php +++ b/src/Replication/ReplicationInfo.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Replication; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Query\Compatibility; +use PhpMyAdmin\UrlParams; use function explode; use function sprintf; @@ -90,8 +91,6 @@ final class ReplicationInfo public function load(string|null $connection = null): void { - $GLOBALS['urlParams'] ??= null; - $this->setPrimaryStatus(); if ($connection !== null && $connection !== '') { @@ -99,7 +98,7 @@ final class ReplicationInfo if ($this->multiPrimaryStatus !== []) { $this->setDefaultPrimaryConnection($connection); - $GLOBALS['urlParams']['primary_connection'] = $connection; + UrlParams::$params['primary_connection'] = $connection; } } diff --git a/src/Sql.php b/src/Sql.php index 4bbd9e97f1..d4e5605580 100644 --- a/src/Sql.php +++ b/src/Sql.php @@ -1675,7 +1675,7 @@ class Sql $template = new Template(); return $template->render('indexes', [ - 'url_params' => $GLOBALS['urlParams'], + 'url_params' => UrlParams::$params, 'indexes' => $indexes, 'indexes_duplicates' => $indexesDuplicates, ]); diff --git a/src/UrlParams.php b/src/UrlParams.php new file mode 100644 index 0000000000..3ef4822104 --- /dev/null +++ b/src/UrlParams.php @@ -0,0 +1,13 @@ +selectedServer = $config->getSettings()->Servers[1]->asArray(); $config->selectedServer['DisableIS'] = true; diff --git a/tests/unit/Controllers/Table/IndexesControllerTest.php b/tests/unit/Controllers/Table/IndexesControllerTest.php index db38f037d9..754118efe5 100644 --- a/tests/unit/Controllers/Table/IndexesControllerTest.php +++ b/tests/unit/Controllers/Table/IndexesControllerTest.php @@ -19,6 +19,7 @@ use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer as ResponseStub; use PhpMyAdmin\Url; +use PhpMyAdmin\UrlParams; use PHPUnit\Framework\Attributes\CoversClass; use ReflectionMethod; @@ -43,7 +44,7 @@ class IndexesControllerTest extends AbstractTestCase $config = Config::getInstance(); $config->selectedServer['pmadb'] = ''; $config->selectedServer['DisableIS'] = false; - $GLOBALS['urlParams'] = ['db' => 'db', 'server' => 1]; + UrlParams::$params = ['db' => 'db', 'server' => 1]; } protected function tearDown(): void diff --git a/tests/unit/Controllers/Table/ReplaceControllerTest.php b/tests/unit/Controllers/Table/ReplaceControllerTest.php index 75aa1dcb00..239b6c4544 100644 --- a/tests/unit/Controllers/Table/ReplaceControllerTest.php +++ b/tests/unit/Controllers/Table/ReplaceControllerTest.php @@ -26,6 +26,7 @@ use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\DbiDummy; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; use PhpMyAdmin\Transformations; +use PhpMyAdmin\UrlParams; use PHPUnit\Framework\Attributes\CoversClass; use ReflectionProperty; @@ -71,7 +72,7 @@ class ReplaceControllerTest extends AbstractTestCase public function testReplace(): void { - $GLOBALS['urlParams'] = []; + UrlParams::$params = []; $_POST['db'] = Current::$database; $_POST['table'] = Current::$table; $_POST['ajax_request'] = 'true'; diff --git a/tests/unit/Http/Middleware/UrlParamsSettingTest.php b/tests/unit/Http/Middleware/UrlParamsSettingTest.php index 0d54d49410..4f0dc8948f 100644 --- a/tests/unit/Http/Middleware/UrlParamsSettingTest.php +++ b/tests/unit/Http/Middleware/UrlParamsSettingTest.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Tests\Http\Middleware; use PhpMyAdmin\Config; use PhpMyAdmin\Http\Middleware\UrlParamsSetting; use PhpMyAdmin\Tests\AbstractTestCase; +use PhpMyAdmin\UrlParams; use PHPUnit\Framework\Attributes\CoversClass; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -17,7 +18,7 @@ final class UrlParamsSettingTest extends AbstractTestCase { public function testProcess(): void { - $GLOBALS['urlParams'] = null; + UrlParams::$params = null; $GLOBALS['goto'] = null; $GLOBALS['back'] = null; $_REQUEST['goto'] = 'index.php?route=/'; @@ -35,6 +36,6 @@ final class UrlParamsSettingTest extends AbstractTestCase /** @psalm-suppress TypeDoesNotContainType */ self::assertSame('index.php?route=/', $GLOBALS['back']); /** @psalm-suppress TypeDoesNotContainType */ - self::assertSame(['goto' => 'index.php?route=/'], $GLOBALS['urlParams']); + self::assertSame(['goto' => 'index.php?route=/'], UrlParams::$params); } } diff --git a/tests/unit/Replication/ReplicationGuiTest.php b/tests/unit/Replication/ReplicationGuiTest.php index 936e75277a..350323dbce 100644 --- a/tests/unit/Replication/ReplicationGuiTest.php +++ b/tests/unit/Replication/ReplicationGuiTest.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Replication\ReplicationGui; use PhpMyAdmin\Replication\ReplicationInfo; use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; +use PhpMyAdmin\UrlParams; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\Medium; @@ -48,7 +49,7 @@ class ReplicationGuiTest extends AbstractTestCase $config->settings['ShowHint'] = true; Current::$table = 'table'; - $GLOBALS['urlParams'] = []; + UrlParams::$params = []; $this->replicationGui = new ReplicationGui(new Replication(DatabaseInterface::getInstance()), new Template()); }