From 181f971bc92555f7a865d135928d4a7c734bde40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Wed, 3 Apr 2024 17:03:00 -0300 Subject: [PATCH] Create InvocableController interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This creates the contract for the controllers. Signed-off-by: MaurĂ­cio Meneghini Fauth --- psalm-baseline.xml | 465 ++++++++++++++---- src/Controllers/AbstractController.php | 2 +- .../BrowseForeignersController.php | 7 +- src/Controllers/ChangeLogController.php | 7 +- src/Controllers/CheckRelationsController.php | 5 +- .../CollationConnectionController.php | 5 +- src/Controllers/ColumnController.php | 7 +- .../Console/Bookmark/AddController.php | 9 +- .../Console/Bookmark/RefreshController.php | 5 +- .../PopulateColumnsController.php | 5 +- .../Database/CentralColumnsController.php | 13 +- .../Database/DataDictionaryController.php | 7 +- .../Database/DesignerController.php | 17 +- src/Controllers/Database/EventsController.php | 21 +- src/Controllers/Database/ExportController.php | 15 +- src/Controllers/Database/ImportController.php | 13 +- .../MultiTableQuery/QueryController.php | 5 +- .../MultiTableQuery/TablesController.php | 5 +- .../Database/MultiTableQueryController.php | 5 +- .../Database/PrivilegesController.php | 9 +- .../Database/RoutinesController.php | 43 +- src/Controllers/Database/SearchController.php | 17 +- .../Database/SqlAutoCompleteController.php | 5 +- src/Controllers/Database/SqlController.php | 11 +- .../Database/SqlFormatController.php | 5 +- .../Structure/AddPrefixController.php | 7 +- .../Structure/AddPrefixTableController.php | 5 +- .../CentralColumns/AddController.php | 7 +- .../MakeConsistentController.php | 7 +- .../CentralColumns/RemoveController.php | 7 +- .../Structure/ChangePrefixFormController.php | 7 +- .../Database/Structure/CopyFormController.php | 7 +- .../Structure/CopyTableController.php | 5 +- .../CopyTableWithPrefixController.php | 5 +- .../Database/Structure/DropFormController.php | 7 +- .../Structure/DropTableController.php | 7 +- .../Structure/EmptyFormController.php | 7 +- .../Structure/EmptyTableController.php | 7 +- .../Structure/FavoriteTableController.php | 15 +- .../Structure/RealRowCountController.php | 13 +- .../Structure/ReplacePrefixController.php | 5 +- .../Structure/ShowCreateController.php | 7 +- .../Database/StructureController.php | 11 +- .../Database/TrackingController.php | 17 +- src/Controllers/DatabaseController.php | 5 +- src/Controllers/ErrorReportController.php | 7 +- .../Export/CheckTimeOutController.php | 9 +- src/Controllers/Export/ExportController.php | 21 +- src/Controllers/Export/TablesController.php | 7 +- .../Export/Template/CreateController.php | 9 +- .../Export/Template/DeleteController.php | 9 +- .../Export/Template/LoadController.php | 9 +- .../Export/Template/UpdateController.php | 9 +- src/Controllers/GisDataEditorController.php | 11 +- src/Controllers/GitInfoController.php | 11 +- src/Controllers/Import/ImportController.php | 25 +- .../Import/SimulateDmlController.php | 7 +- src/Controllers/Import/StatusController.php | 8 +- src/Controllers/InvocableController.php | 13 + .../JavaScriptMessagesController.php | 5 +- src/Controllers/LicenseController.php | 7 +- src/Controllers/LintController.php | 7 +- src/Controllers/LogoutController.php | 9 +- .../UpdateNavWidthConfigController.php | 9 +- src/Controllers/NavigationController.php | 15 +- .../Normalization/AddNewPrimaryController.php | 5 +- .../CreateNewColumnController.php | 5 +- .../FirstNormalForm/FirstStepController.php | 5 +- .../FirstNormalForm/FourthStepController.php | 5 +- .../FirstNormalForm/SecondStepController.php | 5 +- .../FirstNormalForm/ThirdStepController.php | 5 +- .../Normalization/GetColumnsController.php | 5 +- .../Normalization/MainController.php | 5 +- .../Normalization/MoveRepeatingGroup.php | 5 +- .../PartialDependenciesController.php | 5 +- .../CreateNewTablesController.php | 5 +- .../SecondNormalForm/FirstStepController.php | 5 +- .../SecondNormalForm/NewTablesController.php | 5 +- .../CreateNewTablesController.php | 5 +- .../ThirdNormalForm/FirstStepController.php | 5 +- .../ThirdNormalForm/NewTablesController.php | 5 +- .../Database/CollationController.php | 13 +- .../Operations/DatabaseController.php | 15 +- .../Operations/TableController.php | 27 +- src/Controllers/Operations/ViewController.php | 15 +- src/Controllers/PhpInfoController.php | 7 +- .../Preferences/ExportController.php | 9 +- .../Preferences/FeaturesController.php | 9 +- .../Preferences/ImportController.php | 9 +- .../Preferences/MainPanelController.php | 9 +- .../Preferences/ManageController.php | 19 +- .../Preferences/NavigationController.php | 11 +- src/Controllers/Preferences/SqlController.php | 9 +- .../Preferences/TwoFactorController.php | 9 +- .../RecentTablesListController.php | 7 +- src/Controllers/SchemaExportController.php | 11 +- src/Controllers/Server/BinlogController.php | 5 +- .../Server/CollationsController.php | 5 +- .../Server/Databases/CreateController.php | 7 +- .../Server/Databases/DestroyController.php | 9 +- .../Server/DatabasesController.php | 5 +- src/Controllers/Server/EnginesController.php | 5 +- src/Controllers/Server/ExportController.php | 7 +- src/Controllers/Server/ImportController.php | 7 +- src/Controllers/Server/PluginsController.php | 5 +- .../Privileges/AccountLockController.php | 9 +- .../Privileges/AccountUnlockController.php | 9 +- .../Server/PrivilegesController.php | 15 +- .../Server/ReplicationController.php | 5 +- .../Server/ShowEngineController.php | 5 +- src/Controllers/Server/SqlController.php | 5 +- .../Server/Status/AdvisorController.php | 5 +- .../Status/Monitor/ChartingDataController.php | 7 +- .../Status/Monitor/GeneralLogController.php | 9 +- .../Status/Monitor/LogVarsController.php | 7 +- .../Monitor/QueryAnalyzerController.php | 7 +- .../Status/Monitor/SlowLogController.php | 9 +- .../Server/Status/MonitorController.php | 5 +- .../Status/Processes/KillController.php | 7 +- .../Status/Processes/RefreshController.php | 7 +- .../Server/Status/ProcessesController.php | 5 +- .../Server/Status/QueriesController.php | 5 +- .../Server/Status/StatusController.php | 5 +- .../Server/Status/VariablesController.php | 5 +- .../Server/UserGroupsController.php | 9 +- .../Server/UserGroupsFormController.php | 11 +- .../Variables/GetVariableController.php | 7 +- .../Variables/SetVariableController.php | 7 +- .../Server/VariablesController.php | 5 +- src/Controllers/Setup/MainController.php | 3 +- .../Setup/ShowConfigController.php | 3 +- src/Controllers/Setup/ValidateController.php | 3 +- .../Sql/ColumnPreferencesController.php | 7 +- .../DefaultForeignKeyCheckValueController.php | 5 +- src/Controllers/Sql/EnumValuesController.php | 7 +- .../Sql/RelationalValuesController.php | 5 +- src/Controllers/Sql/SetValuesController.php | 7 +- src/Controllers/Sql/SqlController.php | 9 +- src/Controllers/Table/AddFieldController.php | 23 +- src/Controllers/Table/ChangeController.php | 13 +- .../Table/ChangeRowsController.php | 7 +- src/Controllers/Table/ChartController.php | 29 +- src/Controllers/Table/CreateController.php | 13 +- .../Table/DeleteConfirmController.php | 17 +- .../Table/DeleteRowsController.php | 5 +- .../DropColumnConfirmationController.php | 17 +- .../Table/DropColumnController.php | 7 +- src/Controllers/Table/ExportController.php | 9 +- .../Table/ExportRowsController.php | 7 +- .../Table/FindReplaceController.php | 17 +- src/Controllers/Table/GetFieldController.php | 11 +- .../Table/GisVisualizationController.php | 17 +- src/Controllers/Table/ImportController.php | 17 +- .../Table/IndexRenameController.php | 21 +- src/Controllers/Table/IndexesController.php | 23 +- .../Table/Maintenance/AnalyzeController.php | 11 +- .../Table/Maintenance/CheckController.php | 11 +- .../Table/Maintenance/ChecksumController.php | 11 +- .../Table/Maintenance/OptimizeController.php | 11 +- .../Table/Maintenance/RepairController.php | 11 +- .../Table/Partition/AnalyzeController.php | 7 +- .../Table/Partition/CheckController.php | 7 +- .../Table/Partition/DropController.php | 7 +- .../Table/Partition/OptimizeController.php | 7 +- .../Table/Partition/RebuildController.php | 7 +- .../Table/Partition/RepairController.php | 7 +- .../Table/Partition/TruncateController.php | 7 +- .../Table/PrivilegesController.php | 9 +- .../Table/RecentFavoriteController.php | 7 +- src/Controllers/Table/RelationController.php | 9 +- src/Controllers/Table/ReplaceController.php | 13 +- src/Controllers/Table/SearchController.php | 17 +- src/Controllers/Table/SqlController.php | 15 +- .../Table/Structure/AddIndexController.php | 5 +- .../Table/Structure/AddKeyController.php | 5 +- .../Table/Structure/BrowseController.php | 7 +- .../Structure/CentralColumnsAddController.php | 7 +- .../CentralColumnsRemoveController.php | 7 +- .../Table/Structure/ChangeController.php | 11 +- .../Table/Structure/FulltextController.php | 5 +- .../Table/Structure/MoveColumnsController.php | 13 +- .../Structure/PartitioningController.php | 7 +- .../Table/Structure/PrimaryController.php | 19 +- .../Structure/ReservedWordCheckController.php | 7 +- .../Table/Structure/SaveController.php | 5 +- .../Table/Structure/SpatialController.php | 5 +- .../Table/Structure/UniqueController.php | 5 +- src/Controllers/Table/StructureController.php | 15 +- src/Controllers/Table/TrackingController.php | 13 +- .../Table/ZoomSearchController.php | 21 +- src/Controllers/TableController.php | 7 +- src/Controllers/ThemeSetController.php | 11 +- src/Controllers/ThemesController.php | 7 +- .../Transformation/OverviewController.php | 5 +- .../Transformation/WrapperController.php | 25 +- src/Controllers/Triggers/IndexController.php | 29 +- src/Controllers/UserPasswordController.php | 13 +- src/Controllers/VersionCheckController.php | 7 +- src/Controllers/View/CreateController.php | 19 +- src/Routing/Routing.php | 6 +- .../Controllers/AbstractControllerTest.php | 22 + .../JavaScriptMessagesControllerTest.php | 4 +- 202 files changed, 1630 insertions(+), 715 deletions(-) create mode 100644 src/Controllers/InvocableController.php diff --git a/psalm-baseline.xml b/psalm-baseline.xml index fa16cf5303..3fb7fe2d7f 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -844,26 +844,47 @@ + + + + + - - - + + + + + + + + + + + + + + + + + + + - - - + + + @@ -927,9 +948,6 @@ - - - @@ -996,6 +1014,9 @@ + + + @@ -1027,6 +1048,9 @@ + + + @@ -1078,6 +1102,9 @@ + + + @@ -1114,18 +1141,23 @@ getParsedBodyParam('sql_query')]]> + + + + + - - - + + + @@ -1222,6 +1254,9 @@ + + + @@ -1296,6 +1331,9 @@ + + + @@ -1434,6 +1472,9 @@ + + + @@ -1551,6 +1592,9 @@ + + + @@ -1578,9 +1622,9 @@ - - - + + + @@ -1822,6 +1866,9 @@ + + + @@ -1847,21 +1894,33 @@ + + + + + + + + + + + + @@ -1949,6 +2008,9 @@ + + + getParsedBodyParam('import_type')]]> @@ -1985,15 +2047,23 @@ - - - - - + + + + + + + + + + + + + @@ -2010,41 +2080,52 @@ + + + - - - + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -2059,11 +2140,14 @@ + + + - - - + + + @@ -2076,11 +2160,14 @@ + + + - - - + + + @@ -2090,6 +2177,9 @@ + + + @@ -2099,6 +2189,9 @@ + + + @@ -2107,6 +2200,9 @@ + + + @@ -2119,6 +2215,9 @@ + + + @@ -2192,6 +2291,9 @@ + + + @@ -2215,9 +2317,6 @@ - - - @@ -2421,6 +2520,11 @@ + + + + + @@ -2433,14 +2537,17 @@ + + + - - - + + + @@ -2449,6 +2556,9 @@ + + + @@ -2466,6 +2576,9 @@ + + + @@ -2516,11 +2629,14 @@ + + + - - - + + + @@ -2573,9 +2689,19 @@ - - - + + + + + + + + + + + + + @@ -2605,6 +2731,9 @@ + + + @@ -2634,6 +2763,11 @@ + + + + + @@ -2644,14 +2778,11 @@ - - - - - - + + + @@ -2675,6 +2806,9 @@ + + + @@ -2687,6 +2821,9 @@ + + + @@ -2699,6 +2836,9 @@ + + + @@ -2707,17 +2847,30 @@ + + + - - - + + + + + + + + + + + + + @@ -2743,9 +2896,9 @@ - - - + + + @@ -2788,6 +2941,9 @@ data->status['Uptime']]]> data->status['Uptime']]]> + + + @@ -2818,6 +2974,9 @@ data->status['Qcache_total_blocks']]]> data->variables['thread_cache_size']]]> + + + @@ -2872,6 +3031,9 @@ + + + @@ -2899,16 +3061,14 @@ - - - - - + + + @@ -2935,6 +3095,9 @@ + + + @@ -2980,6 +3143,9 @@ + + + @@ -3021,6 +3187,9 @@ + + + @@ -3062,6 +3231,9 @@ + + + @@ -3077,6 +3249,9 @@ + + + @@ -3106,6 +3281,9 @@ limit->offset]]> limit->rowCount]]> + + + @@ -3141,6 +3319,9 @@ + + + @@ -3152,6 +3333,9 @@ + + + @@ -3179,10 +3363,18 @@ + + + + + + + + @@ -3201,12 +3393,12 @@ + + + isError()]]> - - - @@ -3235,6 +3427,9 @@ list]]> + + + statements[0])]]> @@ -3251,6 +3446,9 @@ + + + @@ -3290,11 +3488,17 @@ + + + + + + @@ -3312,6 +3516,9 @@ + + + @@ -3339,6 +3546,9 @@ + + + @@ -3357,6 +3567,9 @@ + + + @@ -3390,26 +3603,41 @@ + + + config->get('DisableMultiTableMaintenance')]]> + + + config->get('DisableMultiTableMaintenance')]]> + + + config->get('DisableMultiTableMaintenance')]]> + + + config->get('DisableMultiTableMaintenance')]]> + + + config->get('DisableMultiTableMaintenance')]]> @@ -3418,32 +3646,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3585,6 +3846,9 @@ + + + @@ -3609,6 +3873,9 @@ + + + settings['MaxRows']]]> @@ -3634,6 +3901,9 @@ + + + @@ -3664,9 +3934,6 @@ - - - @@ -3879,6 +4146,19 @@ + + + + + + + + + + + + + @@ -3917,6 +4197,9 @@ + + + @@ -3943,6 +4226,9 @@ + + + @@ -3986,6 +4272,9 @@ + + + settings['maxRowPlotLimit']]]> @@ -4010,6 +4299,9 @@ + + + @@ -4017,9 +4309,9 @@ - - - + + + @@ -4059,6 +4351,9 @@ + + + @@ -4105,9 +4400,9 @@ - - - + + + diff --git a/src/Controllers/AbstractController.php b/src/Controllers/AbstractController.php index 63efb7d907..b928002404 100644 --- a/src/Controllers/AbstractController.php +++ b/src/Controllers/AbstractController.php @@ -14,7 +14,7 @@ use PhpMyAdmin\Url; use function __; -abstract class AbstractController +abstract class AbstractController implements InvocableController { public function __construct(protected ResponseRenderer $response, protected Template $template) { diff --git a/src/Controllers/BrowseForeignersController.php b/src/Controllers/BrowseForeignersController.php index 03055d55ff..fbe1662935 100644 --- a/src/Controllers/BrowseForeignersController.php +++ b/src/Controllers/BrowseForeignersController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers; use PhpMyAdmin\BrowseForeigners; use PhpMyAdmin\ConfigStorage\Relation; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -24,7 +25,7 @@ class BrowseForeignersController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string|null $database */ $database = $request->getParsedBodyParam('db'); @@ -42,7 +43,7 @@ class BrowseForeignersController extends AbstractController $foreignFilter = $request->getParsedBodyParam('foreign_filter', ''); if (! isset($database, $table, $field)) { - return; + return null; } $this->response->setMinimalFooter(); @@ -69,5 +70,7 @@ class BrowseForeignersController extends AbstractController $fieldKey, $data, )); + + return null; } } diff --git a/src/Controllers/ChangeLogController.php b/src/Controllers/ChangeLogController.php index 4b6df57c96..368e0ad473 100644 --- a/src/Controllers/ChangeLogController.php +++ b/src/Controllers/ChangeLogController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Config; use PhpMyAdmin\Core; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -31,7 +32,7 @@ final class ChangeLogController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->response->disable(); $this->response->getHeader()->sendHttpHeaders(); @@ -52,7 +53,7 @@ final class ChangeLogController extends AbstractController . '" rel="noopener noreferrer" target="_blank">phpmyadmin.net', ); - return; + return null; } // Test if the file is in a compressed format @@ -115,5 +116,7 @@ final class ChangeLogController extends AbstractController $this->render('changelog', [ 'changelog' => preg_replace(array_keys($replaces), $replaces, $changelog), ]); + + return null; } } diff --git a/src/Controllers/CheckRelationsController.php b/src/Controllers/CheckRelationsController.php index 18d6c735ec..6f042de979 100644 --- a/src/Controllers/CheckRelationsController.php +++ b/src/Controllers/CheckRelationsController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\ResponseRenderer; @@ -24,7 +25,7 @@ class CheckRelationsController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $cfgStorageDbName = $this->relation->getConfigurationStorageDbName(); @@ -57,5 +58,7 @@ class CheckRelationsController extends AbstractController 'config_storage_database_name' => $cfgStorageDbName, 'are_config_storage_tables_defined' => $this->relation->arePmadbTablesDefined(), ]); + + return null; } } diff --git a/src/Controllers/CollationConnectionController.php b/src/Controllers/CollationConnectionController.php index b78e39b121..9dce75561b 100644 --- a/src/Controllers/CollationConnectionController.php +++ b/src/Controllers/CollationConnectionController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Config; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -17,7 +18,7 @@ final class CollationConnectionController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->config->setUserValue( null, @@ -27,5 +28,7 @@ final class CollationConnectionController extends AbstractController ); $this->response->redirect('index.php?route=/' . Url::getCommonRaw([], '&')); + + return null; } } diff --git a/src/Controllers/ColumnController.php b/src/Controllers/ColumnController.php index 94c42a21ac..c0df51ef7e 100644 --- a/src/Controllers/ColumnController.php +++ b/src/Controllers/ColumnController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -17,7 +18,7 @@ final class ColumnController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string|null $db */ $db = $request->getParsedBodyParam('db'); @@ -28,9 +29,11 @@ final class ColumnController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON(['message' => Message::error()]); - return; + return null; } $this->response->addJSON(['columns' => $this->dbi->getColumnNames($db, $table)]); + + return null; } } diff --git a/src/Controllers/Console/Bookmark/AddController.php b/src/Controllers/Console/Bookmark/AddController.php index fee7827dde..9a19b66cc9 100644 --- a/src/Controllers/Console/Bookmark/AddController.php +++ b/src/Controllers/Console/Bookmark/AddController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Console\Bookmark; use PhpMyAdmin\Bookmarks\BookmarkRepository; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -24,7 +25,7 @@ final class AddController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $db = $request->getParsedBodyParam('db'); $label = $request->getParsedBodyParam('label'); @@ -34,7 +35,7 @@ final class AddController extends AbstractController if (! is_string($label) || ! is_string($db) || ! is_string($bookmarkQuery) || ! is_string($shared)) { $this->response->addJSON('message', __('Incomplete params')); - return; + return null; } $bookmark = $this->bookmarkRepository->createBookmark( @@ -47,7 +48,7 @@ final class AddController extends AbstractController if ($bookmark === false || ! $bookmark->save()) { $this->response->addJSON('message', __('Failed')); - return; + return null; } $bookmarkFields = [ @@ -60,5 +61,7 @@ final class AddController extends AbstractController $this->response->addJSON('message', __('Succeeded')); $this->response->addJSON('data', $bookmarkFields); $this->response->addJSON('isShared', $shared === 'true'); + + return null; } } diff --git a/src/Controllers/Console/Bookmark/RefreshController.php b/src/Controllers/Console/Bookmark/RefreshController.php index eb6765ac9a..c456a776f9 100644 --- a/src/Controllers/Console/Bookmark/RefreshController.php +++ b/src/Controllers/Console/Bookmark/RefreshController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Console\Bookmark; use PhpMyAdmin\Console; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -20,8 +21,10 @@ final class RefreshController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->response->addJSON('console_message_bookmark', $this->console->getBookmarkContent()); + + return null; } } diff --git a/src/Controllers/Database/CentralColumns/PopulateColumnsController.php b/src/Controllers/Database/CentralColumns/PopulateColumnsController.php index 554bc35c8d..16e2464713 100644 --- a/src/Controllers/Database/CentralColumns/PopulateColumnsController.php +++ b/src/Controllers/Database/CentralColumns/PopulateColumnsController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Database\CentralColumns; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\CentralColumns; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -21,12 +22,14 @@ final class PopulateColumnsController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $columns = $this->centralColumns->getColumnsNotInCentralList( Current::$database, $request->getParsedBodyParam('selectedTable'), ); $this->render('database/central_columns/populate_columns', ['columns' => $columns]); + + return null; } } diff --git a/src/Controllers/Database/CentralColumnsController.php b/src/Controllers/Database/CentralColumnsController.php index 2610059a76..0333a96eff 100644 --- a/src/Controllers/Database/CentralColumnsController.php +++ b/src/Controllers/Database/CentralColumnsController.php @@ -10,6 +10,7 @@ namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Database\CentralColumns; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\LanguageManager; @@ -34,7 +35,7 @@ class CentralColumnsController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['message'] ??= null; $db = DatabaseName::from($request->getParam('db')); @@ -54,7 +55,7 @@ class CentralColumnsController extends AbstractController $db, )); - return; + return null; } if ($request->hasBodyParam('add_new_column')) { @@ -78,7 +79,7 @@ class CentralColumnsController extends AbstractController $request->getParsedBodyParam('cur_table', ''), )); - return; + return null; } if ($request->hasBodyParam('add_column')) { @@ -102,7 +103,7 @@ class CentralColumnsController extends AbstractController 'db' => $request->getParsedBodyParam('db'), ]); - return; + return null; } if ($request->hasBodyParam('multi_edit_central_column_save')) { @@ -152,10 +153,12 @@ class CentralColumnsController extends AbstractController sprintf(__('Showing rows %1$s - %2$s.'), $pos + 1, $pos + $numberOfColumns), ); if (! isset($tmpMsg) || $tmpMsg === true) { - return; + return null; } $GLOBALS['message'] = $tmpMsg; + + return null; } public function main(string $totalRows, string $position, DatabaseName $db): void diff --git a/src/Controllers/Database/DataDictionaryController.php b/src/Controllers/Database/DataDictionaryController.php index 8500575b2c..8822af7e56 100644 --- a/src/Controllers/Database/DataDictionaryController.php +++ b/src/Controllers/Database/DataDictionaryController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Index; use PhpMyAdmin\ResponseRenderer; @@ -30,10 +31,10 @@ class DataDictionaryController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $this->checkParameters(['db'], true)) { - return; + return null; } $relationParameters = $this->relation->getRelationParameters(); @@ -111,5 +112,7 @@ class DataDictionaryController extends AbstractController 'comment' => $comment, 'tables' => $tables, ]); + + return null; } } diff --git a/src/Controllers/Database/DesignerController.php b/src/Controllers/Database/DesignerController.php index e66a7eb04a..bd8d4ee5bd 100644 --- a/src/Controllers/Database/DesignerController.php +++ b/src/Controllers/Database/DesignerController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\Database\Designer; use PhpMyAdmin\Database\Designer\Common as DesignerCommon; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\LanguageManager; @@ -37,7 +38,7 @@ class DesignerController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['message'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -83,7 +84,7 @@ class DesignerController extends AbstractController $this->response->addHTML($html); } - return; + return null; } if ($request->hasBodyParam('operation')) { @@ -105,7 +106,7 @@ class DesignerController extends AbstractController ); $this->response->setRequestStatus(false); - return; + return null; } else { $page = $this->designerCommon->createNewPage($request->getParsedBodyParam('selected_value'), $db); $this->response->addJSON('id', $page); @@ -150,11 +151,11 @@ class DesignerController extends AbstractController $this->response->setRequestStatus($success); } - return; + return null; } if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -169,12 +170,12 @@ class DesignerController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $scriptDisplayField = $this->designerCommon->getTablesInfo(); @@ -256,5 +257,7 @@ class DesignerController extends AbstractController $this->response->addHTML($mainHtml); $this->response->addHTML('
'); + + return null; } } diff --git a/src/Controllers/Database/EventsController.php b/src/Controllers/Database/EventsController.php index 5f71e6f08f..a7451ef164 100644 --- a/src/Controllers/Database/EventsController.php +++ b/src/Controllers/Database/EventsController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\Database\Events; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\LanguageManager; @@ -38,7 +39,7 @@ final class EventsController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errors'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -47,7 +48,7 @@ final class EventsController extends AbstractController if (! $request->isAjax()) { if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -60,7 +61,7 @@ final class EventsController extends AbstractController if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } } elseif (Current::$database !== '') { $this->dbi->selectDb(Current::$database); @@ -111,7 +112,7 @@ final class EventsController extends AbstractController $this->response->addJSON('tableType', 'events'); - return; + return null; } } @@ -184,12 +185,12 @@ final class EventsController extends AbstractController $this->response->addJSON('message', $editor); $this->response->addJSON('title', $title); - return; + return null; } $this->response->addHTML("\n\n

" . $title . "

\n\n" . $editor); - return; + return null; } $message = __('Error in processing request:') . ' '; @@ -203,7 +204,7 @@ final class EventsController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return; + return null; } $this->response->addHTML($message->getDisplay()); @@ -226,7 +227,7 @@ final class EventsController extends AbstractController $this->response->addJSON('message', $exportData); $this->response->addJSON('title', $title); - return; + return null; } $output = '
'; @@ -248,7 +249,7 @@ final class EventsController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return; + return null; } $this->response->addHTML($message->getDisplay()); @@ -265,5 +266,7 @@ final class EventsController extends AbstractController 'text_dir' => LanguageManager::$textDir, 'is_ajax' => $request->isAjax() && empty($_REQUEST['ajax_page_request']), ]); + + return null; } } diff --git a/src/Controllers/Database/ExportController.php b/src/Controllers/Database/ExportController.php index 0271a46671..d459a78f8b 100644 --- a/src/Controllers/Database/ExportController.php +++ b/src/Controllers/Database/ExportController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Export\Export; use PhpMyAdmin\Export\Options; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; @@ -38,7 +39,7 @@ final class ExportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['table_select'] ??= null; @@ -52,7 +53,7 @@ final class ExportController extends AbstractController $this->addScriptFiles(['export.js']); if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -67,12 +68,12 @@ final class ExportController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/database/export'); @@ -86,7 +87,7 @@ final class ExportController extends AbstractController Message::error(__('No tables found in database.'))->getDisplay(), ); - return; + return null; } $selectedTable = $request->getParsedBodyParam('selected_tbl'); @@ -152,7 +153,7 @@ final class ExportController extends AbstractController __('Could not load export plugins, please check your installation!'), )->getDisplay()); - return; + return null; } $options = $this->exportOptions->getOptions( @@ -171,5 +172,7 @@ final class ExportController extends AbstractController 'structure_or_data_forced' => $request->getParsedBodyParam('structure_or_data_forced', 0), 'tables' => $tablesForMultiValues, ])); + + return null; } } diff --git a/src/Controllers/Database/ImportController.php b/src/Controllers/Database/ImportController.php index 6ed70d5c9a..348213c1ce 100644 --- a/src/Controllers/Database/ImportController.php +++ b/src/Controllers/Database/ImportController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Encoding; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Import\Ajax; @@ -40,7 +41,7 @@ final class ImportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['SESSION_KEY'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -52,7 +53,7 @@ final class ImportController extends AbstractController $this->addScriptFiles(['import.js']); if (! $this->checkParameters(['db'])) { - return; + return null; } $config = Config::getInstance(); @@ -65,12 +66,12 @@ final class ImportController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } [$GLOBALS['SESSION_KEY'], $uploadId] = Ajax::uploadProgressSetup(); @@ -83,7 +84,7 @@ final class ImportController extends AbstractController 'Could not load import plugins, please check your installation!', ))->getDisplay()); - return; + return null; } $offset = null; @@ -139,5 +140,7 @@ final class ImportController extends AbstractController 'user_upload_dir' => Util::userDir($config->settings['UploadDir'] ?? ''), 'local_files' => Import::getLocalFiles($importList), ]); + + return null; } } diff --git a/src/Controllers/Database/MultiTableQuery/QueryController.php b/src/Controllers/Database/MultiTableQuery/QueryController.php index 49723fe545..5ee51658af 100644 --- a/src/Controllers/Database/MultiTableQuery/QueryController.php +++ b/src/Controllers/Database/MultiTableQuery/QueryController.php @@ -6,15 +6,18 @@ namespace PhpMyAdmin\Controllers\Database\MultiTableQuery; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Database\MultiTableQuery; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; final class QueryController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->response->addHTML(MultiTableQuery::displayResults( $request->getParsedBodyParam('sql_query'), $request->getParam('db'), )); + + return null; } } diff --git a/src/Controllers/Database/MultiTableQuery/TablesController.php b/src/Controllers/Database/MultiTableQuery/TablesController.php index 4437912e69..8b26aebb5a 100644 --- a/src/Controllers/Database/MultiTableQuery/TablesController.php +++ b/src/Controllers/Database/MultiTableQuery/TablesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Database\MultiTableQuery; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Query\Generator as QueryGenerator; use PhpMyAdmin\ResponseRenderer; @@ -21,7 +22,7 @@ final class TablesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $tables */ $tables = $request->getQueryParam('tables', []); @@ -37,5 +38,7 @@ final class TablesController extends AbstractController ), ); $this->response->addJSON(['foreignKeyConstrains' => $constrains]); + + return null; } } diff --git a/src/Controllers/Database/MultiTableQueryController.php b/src/Controllers/Database/MultiTableQueryController.php index bdee507ccd..c8024f4dcd 100644 --- a/src/Controllers/Database/MultiTableQueryController.php +++ b/src/Controllers/Database/MultiTableQueryController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\MultiTableQuery; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -22,12 +23,14 @@ class MultiTableQueryController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->addScriptFiles(['database/multi_table_query.js', 'database/query_generator.js']); $queryInstance = new MultiTableQuery($this->dbi, $this->template, Current::$database); $this->response->addHTML($queryInstance->getFormHtml()); + + return null; } } diff --git a/src/Controllers/Database/PrivilegesController.php b/src/Controllers/Database/PrivilegesController.php index 8541b2d3d0..36dab1dd75 100644 --- a/src/Controllers/Database/PrivilegesController.php +++ b/src/Controllers/Database/PrivilegesController.php @@ -10,6 +10,7 @@ namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidDatabaseName; @@ -37,7 +38,7 @@ class PrivilegesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { try { $db = DatabaseName::from($request->getParam('db')); @@ -47,7 +48,7 @@ class PrivilegesController extends AbstractController } catch (InvalidDatabaseName $exception) { $this->response->addHTML(Message::error($exception->getMessage())->getDisplay()); - return; + return null; } $this->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); @@ -65,7 +66,7 @@ class PrivilegesController extends AbstractController ->getDisplay(), ); - return; + return null; } if (! $isGrantUser && ! $isCreateUser) { @@ -91,5 +92,7 @@ class PrivilegesController extends AbstractController 'privileges' => $privileges, ]); $this->render('export_modal'); + + return null; } } diff --git a/src/Controllers/Database/RoutinesController.php b/src/Controllers/Database/RoutinesController.php index f13b2efb35..844fd94de5 100644 --- a/src/Controllers/Database/RoutinesController.php +++ b/src/Controllers/Database/RoutinesController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\Database\Routines; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -47,7 +48,7 @@ class RoutinesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errors'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -66,7 +67,7 @@ class RoutinesController extends AbstractController */ if (Current::$table !== '' && in_array(Current::$table, $this->dbi->getTables(Current::$database), true)) { if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -77,20 +78,20 @@ class RoutinesController extends AbstractController if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); if ($tableName === null || ! $this->dbTableExists->hasTable($databaseName, $tableName)) { $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } } else { Current::$table = ''; if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -103,7 +104,7 @@ class RoutinesController extends AbstractController if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } } } elseif (Current::$database !== '') { @@ -124,7 +125,7 @@ class RoutinesController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $output); - return; + return null; } $routines = Routines::getDetails( @@ -148,7 +149,7 @@ class RoutinesController extends AbstractController $this->response->addJSON('message', $output); $this->response->addJSON('tableType', 'routines'); - return; + return null; } } @@ -276,12 +277,12 @@ class RoutinesController extends AbstractController ); $this->response->addJSON('type', $routine['item_type']); - return; + return null; } $this->response->addHTML("\n\n

" . $title . "

\n\n" . $editor); - return; + return null; } $message = __('Error in processing request:') . ' '; @@ -301,7 +302,7 @@ class RoutinesController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return; + return null; } $this->response->addHTML($message->getDisplay()); @@ -325,12 +326,12 @@ class RoutinesController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return; + return null; } $this->response->addHTML($message->getDisplay()); - return; + return null; } [$output, $message] = $this->routines->handleExecuteRoutine($routine); @@ -341,14 +342,14 @@ class RoutinesController extends AbstractController $this->response->addJSON('message', $message->getDisplay() . $output); $this->response->addJSON('dialog', false); - return; + return null; } $this->response->addHTML($message->getDisplay() . $output); if ($message->isError()) { // At least one query has failed, so shouldn't // execute any more queries, so we quit. - return; + return null; } } elseif (! empty($_GET['execute_dialog']) && ! empty($_GET['item_name'])) { /** @@ -372,13 +373,13 @@ class RoutinesController extends AbstractController $this->response->addJSON('title', $title); $this->response->addJSON('dialog', true); - return; + return null; } $this->response->addHTML("\n\n

" . __('Execute routine') . "

\n\n"); $this->response->addHTML($form); - return; + return null; } if ($request->isAjax()) { @@ -393,7 +394,7 @@ class RoutinesController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return; + return null; } } @@ -433,7 +434,7 @@ class RoutinesController extends AbstractController $this->response->addJSON('message', $exportData); $this->response->addJSON('title', $title); - return; + return null; } $output = '
'; @@ -458,7 +459,7 @@ class RoutinesController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return; + return null; } $this->response->addHTML($message->getDisplay()); @@ -487,5 +488,7 @@ class RoutinesController extends AbstractController 'rows' => $rows, 'has_privilege' => Util::currentUserHasPrivilege('CREATE ROUTINE', Current::$database, Current::$table), ]); + + return null; } } diff --git a/src/Controllers/Database/SearchController.php b/src/Controllers/Database/SearchController.php index 7b37b9821f..110250c5e5 100644 --- a/src/Controllers/Database/SearchController.php +++ b/src/Controllers/Database/SearchController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\Database\Search; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\MySQLDocumentation; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; @@ -32,7 +33,7 @@ class SearchController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; $GLOBALS['urlParams'] ??= null; @@ -40,7 +41,7 @@ class SearchController extends AbstractController $this->addScriptFiles(['database/search.js', 'sql.js', 'makegrid.js']); if (! $this->checkParameters(['db'])) { - return; + return null; } $config = Config::getInstance(); @@ -53,12 +54,12 @@ class SearchController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } if (! $config->settings['UseDbSearch']) { @@ -70,12 +71,12 @@ class SearchController extends AbstractController if ($request->isAjax()) { $this->response->addJSON('message', Message::error($errorMessage)->getDisplay()); - return; + return null; } $this->render('error/simple', ['error_message' => $errorMessage, 'back_url' => $GLOBALS['errorUrl']]); - return; + return null; } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/database/search'); @@ -90,10 +91,12 @@ class SearchController extends AbstractController // If we are in an Ajax request, we need to exit after displaying all the HTML if ($request->isAjax() && empty($_REQUEST['ajax_page_request'])) { - return; + return null; } // Display the search form $this->response->addHTML($databaseSearch->getMainHtml()); + + return null; } } diff --git a/src/Controllers/Database/SqlAutoCompleteController.php b/src/Controllers/Database/SqlAutoCompleteController.php index de860c6403..87034c4a38 100644 --- a/src/Controllers/Database/SqlAutoCompleteController.php +++ b/src/Controllers/Database/SqlAutoCompleteController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\ResponseRenderer; @@ -28,7 +29,7 @@ class SqlAutoCompleteController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $sqlAutocomplete = []; if ($this->config->settings['EnableAutocompleteForTablesAndColumns']) { @@ -39,6 +40,8 @@ class SqlAutoCompleteController extends AbstractController } $this->response->addJSON(['tables' => $sqlAutocomplete]); + + return null; } /** @return string[][][] */ diff --git a/src/Controllers/Database/SqlController.php b/src/Controllers/Database/SqlController.php index 971416f152..d5111991f0 100644 --- a/src/Controllers/Database/SqlController.php +++ b/src/Controllers/Database/SqlController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Config\PageSettings; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; @@ -36,7 +37,7 @@ class SqlController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['goto'] ??= null; $GLOBALS['back'] ??= null; @@ -49,7 +50,7 @@ class SqlController extends AbstractController $this->response->addHTML($this->pageSettings->getHTML()); if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -64,12 +65,12 @@ class SqlController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } /** @@ -87,5 +88,7 @@ class SqlController extends AbstractController false, htmlspecialchars($delimiter), )); + + return null; } } diff --git a/src/Controllers/Database/SqlFormatController.php b/src/Controllers/Database/SqlFormatController.php index 1aadaf6cda..4916bd370b 100644 --- a/src/Controllers/Database/SqlFormatController.php +++ b/src/Controllers/Database/SqlFormatController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\SqlParser\Utils\Formatter; @@ -13,10 +14,12 @@ use PhpMyAdmin\SqlParser\Utils\Formatter; */ class SqlFormatController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string $query */ $query = $request->getParsedBodyParam('sql', ''); $this->response->addJSON(['sql' => Formatter::format($query)]); + + return null; } } diff --git a/src/Controllers/Database/Structure/AddPrefixController.php b/src/Controllers/Database/Structure/AddPrefixController.php index 538ff2c79d..b5675d0921 100644 --- a/src/Controllers/Database/Structure/AddPrefixController.php +++ b/src/Controllers/Database/Structure/AddPrefixController.php @@ -6,13 +6,14 @@ namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use function __; final class AddPrefixController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -21,7 +22,7 @@ final class AddPrefixController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } $params = ['db' => Current::$database]; @@ -31,5 +32,7 @@ final class AddPrefixController extends AbstractController $this->response->disable(); $this->render('database/structure/add_prefix', ['url_params' => $params]); + + return null; } } diff --git a/src/Controllers/Database/Structure/AddPrefixTableController.php b/src/Controllers/Database/Structure/AddPrefixTableController.php index 63f37d217a..230713117c 100644 --- a/src/Controllers/Database/Structure/AddPrefixTableController.php +++ b/src/Controllers/Database/Structure/AddPrefixTableController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -25,7 +26,7 @@ final class AddPrefixTableController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected', []); @@ -45,5 +46,7 @@ final class AddPrefixTableController extends AbstractController $GLOBALS['message'] = Message::success(); ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Database/Structure/CentralColumns/AddController.php b/src/Controllers/Database/Structure/CentralColumns/AddController.php index 56199bc554..bd407f42be 100644 --- a/src/Controllers/Database/Structure/CentralColumns/AddController.php +++ b/src/Controllers/Database/Structure/CentralColumns/AddController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; @@ -29,7 +30,7 @@ final class AddController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['message'] ??= null; @@ -39,7 +40,7 @@ final class AddController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } Assert::allString($selected); @@ -52,5 +53,7 @@ final class AddController extends AbstractController unset($_POST['submit_mult']); ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php b/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php index f81077488c..420854d727 100644 --- a/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php +++ b/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Controllers\Database\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -29,7 +30,7 @@ final class MakeConsistentController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['message'] ??= null; @@ -39,7 +40,7 @@ final class MakeConsistentController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } Assert::allString($selected); @@ -52,5 +53,7 @@ final class MakeConsistentController extends AbstractController unset($_POST['submit_mult']); ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Database/Structure/CentralColumns/RemoveController.php b/src/Controllers/Database/Structure/CentralColumns/RemoveController.php index 35fd71fe7f..b101c660f3 100644 --- a/src/Controllers/Database/Structure/CentralColumns/RemoveController.php +++ b/src/Controllers/Database/Structure/CentralColumns/RemoveController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; use PhpMyAdmin\Database\CentralColumns; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -28,7 +29,7 @@ final class RemoveController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['message'] ??= null; @@ -38,7 +39,7 @@ final class RemoveController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } Assert::allString($selected); @@ -51,5 +52,7 @@ final class RemoveController extends AbstractController unset($_POST['submit_mult']); ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Database/Structure/ChangePrefixFormController.php b/src/Controllers/Database/Structure/ChangePrefixFormController.php index 55f54e9716..657ca0c8ba 100644 --- a/src/Controllers/Database/Structure/ChangePrefixFormController.php +++ b/src/Controllers/Database/Structure/ChangePrefixFormController.php @@ -6,13 +6,14 @@ namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use function __; final class ChangePrefixFormController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -21,7 +22,7 @@ final class ChangePrefixFormController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } $route = '/database/structure/replace-prefix'; @@ -36,5 +37,7 @@ final class ChangePrefixFormController extends AbstractController $this->response->disable(); $this->render('database/structure/change_prefix_form', ['route' => $route, 'url_params' => $urlParams]); + + return null; } } diff --git a/src/Controllers/Database/Structure/CopyFormController.php b/src/Controllers/Database/Structure/CopyFormController.php index a3f90a1bfa..563d986622 100644 --- a/src/Controllers/Database/Structure/CopyFormController.php +++ b/src/Controllers/Database/Structure/CopyFormController.php @@ -7,13 +7,14 @@ namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use function __; final class CopyFormController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -22,7 +23,7 @@ final class CopyFormController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } $urlParams = ['db' => Current::$database]; @@ -43,5 +44,7 @@ final class CopyFormController extends AbstractController 'url_params' => $urlParams, 'options' => $databasesList->getList(), ]); + + return null; } } diff --git a/src/Controllers/Database/Structure/CopyTableController.php b/src/Controllers/Database/Structure/CopyTableController.php index 7dac01a306..4ae08dc85b 100644 --- a/src/Controllers/Database/Structure/CopyTableController.php +++ b/src/Controllers/Database/Structure/CopyTableController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Operations; @@ -27,7 +28,7 @@ final class CopyTableController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected', []); @@ -64,5 +65,7 @@ final class CopyTableController extends AbstractController $GLOBALS['message'] = Message::success(); ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Database/Structure/CopyTableWithPrefixController.php b/src/Controllers/Database/Structure/CopyTableWithPrefixController.php index f7950717b2..98d1bc4561 100644 --- a/src/Controllers/Database/Structure/CopyTableWithPrefixController.php +++ b/src/Controllers/Database/Structure/CopyTableWithPrefixController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -26,7 +27,7 @@ final class CopyTableWithPrefixController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected', []); @@ -53,5 +54,7 @@ final class CopyTableWithPrefixController extends AbstractController $GLOBALS['message'] = Message::success(); ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Database/Structure/DropFormController.php b/src/Controllers/Database/Structure/DropFormController.php index 94c0538054..cc25e835a2 100644 --- a/src/Controllers/Database/Structure/DropFormController.php +++ b/src/Controllers/Database/Structure/DropFormController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -23,7 +24,7 @@ final class DropFormController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -32,7 +33,7 @@ final class DropFormController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } $fullQueryViews = ''; @@ -66,5 +67,7 @@ final class DropFormController extends AbstractController 'full_query' => $fullQuery, 'is_foreign_key_check' => ForeignKey::isCheckEnabled(), ]); + + return null; } } diff --git a/src/Controllers/Database/Structure/DropTableController.php b/src/Controllers/Database/Structure/DropTableController.php index 0928d8bffe..177da1ecc7 100644 --- a/src/Controllers/Database/Structure/DropTableController.php +++ b/src/Controllers/Database/Structure/DropTableController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -30,7 +31,7 @@ final class DropTableController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['reload'] = $_POST['reload'] ?? $GLOBALS['reload'] ?? null; $multBtn = $_POST['mult_btn'] ?? ''; @@ -44,7 +45,7 @@ final class DropTableController extends AbstractController ($this->structureController)($request); - return; + return null; } $defaultFkCheckValue = ForeignKey::handleDisableCheckInit(); @@ -106,5 +107,7 @@ final class DropTableController extends AbstractController unset($_POST['mult_btn']); ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Database/Structure/EmptyFormController.php b/src/Controllers/Database/Structure/EmptyFormController.php index ddf0ec878a..b116720b17 100644 --- a/src/Controllers/Database/Structure/EmptyFormController.php +++ b/src/Controllers/Database/Structure/EmptyFormController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Database\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Util; use PhpMyAdmin\Utils\ForeignKey; @@ -15,7 +16,7 @@ use function htmlspecialchars; final class EmptyFormController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -24,7 +25,7 @@ final class EmptyFormController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } $fullQuery = ''; @@ -41,5 +42,7 @@ final class EmptyFormController extends AbstractController 'full_query' => $fullQuery, 'is_foreign_key_check' => ForeignKey::isCheckEnabled(), ]); + + return null; } } diff --git a/src/Controllers/Database/Structure/EmptyTableController.php b/src/Controllers/Database/Structure/EmptyTableController.php index 8eb68a4096..64b561ec9c 100644 --- a/src/Controllers/Database/Structure/EmptyTableController.php +++ b/src/Controllers/Database/Structure/EmptyTableController.php @@ -13,6 +13,7 @@ use PhpMyAdmin\Controllers\Database\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -39,7 +40,7 @@ final class EmptyTableController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $multBtn = $_POST['mult_btn'] ?? ''; /** @var string[] $selected */ @@ -49,7 +50,7 @@ final class EmptyTableController extends AbstractController $this->flash->addMessage('success', __('No change')); $this->redirect('/database/structure', ['db' => Current::$database]); - return; + return null; } $defaultFkCheckValue = ForeignKey::handleDisableCheckInit(); @@ -91,5 +92,7 @@ final class EmptyTableController extends AbstractController unset($_POST['mult_btn']); ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Database/Structure/FavoriteTableController.php b/src/Controllers/Database/Structure/FavoriteTableController.php index 80bd0ae242..d1e8137a46 100644 --- a/src/Controllers/Database/Structure/FavoriteTableController.php +++ b/src/Controllers/Database/Structure/FavoriteTableController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Favorites\RecentFavoriteTable; use PhpMyAdmin\Favorites\RecentFavoriteTables; use PhpMyAdmin\Favorites\TableType; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -39,12 +40,12 @@ final class FavoriteTableController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; if (Current::$database === '') { - return; + return null; } $config = Config::getInstance(); @@ -52,7 +53,7 @@ final class FavoriteTableController extends AbstractController $GLOBALS['errorUrl'] .= Url::getCommon(['db' => Current::$database], '&'); if (! $request->isAjax()) { - return; + return null; } $favoriteInstance = RecentFavoriteTables::getInstance(TableType::Favorite); @@ -74,7 +75,7 @@ final class FavoriteTableController extends AbstractController )); } - return; + return null; } $databaseName = DatabaseName::tryFrom($request->getParam('db')); @@ -82,7 +83,7 @@ final class FavoriteTableController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $changes = true; @@ -120,7 +121,7 @@ final class FavoriteTableController extends AbstractController ]); $this->response->addJSON($json); - return; + return null; } // Check if current table is already in favorite list. @@ -142,6 +143,8 @@ final class FavoriteTableController extends AbstractController ]); $this->response->addJSON($json); + + return null; } /** diff --git a/src/Controllers/Database/Structure/RealRowCountController.php b/src/Controllers/Database/Structure/RealRowCountController.php index 80e1381fe0..226f0aec06 100644 --- a/src/Controllers/Database/Structure/RealRowCountController.php +++ b/src/Controllers/Database/Structure/RealRowCountController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; @@ -33,7 +34,7 @@ final class RealRowCountController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; @@ -43,7 +44,7 @@ final class RealRowCountController extends AbstractController ]; if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -53,7 +54,7 @@ final class RealRowCountController extends AbstractController $GLOBALS['errorUrl'] .= Url::getCommon(['db' => Current::$database], '&'); if (! $request->isAjax()) { - return; + return null; } $databaseName = DatabaseName::tryFrom($request->getParam('db')); @@ -61,7 +62,7 @@ final class RealRowCountController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } // If there is a request to update all table's row count. @@ -75,7 +76,7 @@ final class RealRowCountController extends AbstractController $this->response->addJSON(['real_row_count' => $realRowCount]); - return; + return null; } // Array to store the results. @@ -89,5 +90,7 @@ final class RealRowCountController extends AbstractController } $this->response->addJSON(['real_row_count_all' => $realRowCountAll]); + + return null; } } diff --git a/src/Controllers/Database/Structure/ReplacePrefixController.php b/src/Controllers/Database/Structure/ReplacePrefixController.php index 76e1b66f35..c00ddbc7aa 100644 --- a/src/Controllers/Database/Structure/ReplacePrefixController.php +++ b/src/Controllers/Database/Structure/ReplacePrefixController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -28,7 +29,7 @@ final class ReplacePrefixController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected', []); @@ -58,5 +59,7 @@ final class ReplacePrefixController extends AbstractController $GLOBALS['message'] = Message::success(); ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Database/Structure/ShowCreateController.php b/src/Controllers/Database/Structure/ShowCreateController.php index 67ffd794b6..0c3bb930b8 100644 --- a/src/Controllers/Database/Structure/ShowCreateController.php +++ b/src/Controllers/Database/Structure/ShowCreateController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -21,7 +22,7 @@ final class ShowCreateController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -30,7 +31,7 @@ final class ShowCreateController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } $tables = $this->getShowCreateTables($selected); @@ -38,6 +39,8 @@ final class ShowCreateController extends AbstractController $showCreate = $this->template->render('database/structure/show_create', ['tables' => $tables]); $this->response->addJSON('message', $showCreate); + + return null; } /** diff --git a/src/Controllers/Database/StructureController.php b/src/Controllers/Database/StructureController.php index 5343ec2ca1..6f9564c2fd 100644 --- a/src/Controllers/Database/StructureController.php +++ b/src/Controllers/Database/StructureController.php @@ -16,6 +16,7 @@ use PhpMyAdmin\Favorites\RecentFavoriteTable; use PhpMyAdmin\Favorites\RecentFavoriteTables; use PhpMyAdmin\Favorites\TableType; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -122,14 +123,14 @@ final class StructureController extends AbstractController $this->dbIsSystemSchema = true; } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; $parameters = ['sort' => $_REQUEST['sort'] ?? null, 'sort_order' => $_REQUEST['sort_order'] ?? null]; if (! $this->checkParameters(['db'])) { - return; + return null; } $config = Config::getInstance(); @@ -142,12 +143,12 @@ final class StructureController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $this->addScriptFiles(['database/structure.js', 'table/change.js']); @@ -208,6 +209,8 @@ final class StructureController extends AbstractController 'is_system_schema' => $this->dbIsSystemSchema, 'create_table_html' => $createTable, ]); + + return null; } /** @param mixed[] $replicaInfo */ diff --git a/src/Controllers/Database/TrackingController.php b/src/Controllers/Database/TrackingController.php index 41776a33c3..c6ceaa4da3 100644 --- a/src/Controllers/Database/TrackingController.php +++ b/src/Controllers/Database/TrackingController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\LanguageManager; @@ -40,7 +41,7 @@ class TrackingController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -48,7 +49,7 @@ class TrackingController extends AbstractController $this->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'database/tracking.js']); if (! $this->checkParameters(['db'])) { - return; + return null; } $config = Config::getInstance(); @@ -61,12 +62,12 @@ class TrackingController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/tracking'); @@ -116,7 +117,7 @@ class TrackingController extends AbstractController 'default_statements' => $config->selectedServer['tracking_default_statements'], ]); - return; + return null; } } else { $this->response->addHTML(Message::notice( @@ -136,7 +137,7 @@ class TrackingController extends AbstractController $this->render('database/create_table', ['db' => Current::$database]); } - return; + return null; } $this->response->addHTML($this->tracking->getHtmlForDbTrackingTables( @@ -147,7 +148,7 @@ class TrackingController extends AbstractController // If available print out database log if ($trackedData->ddlog === []) { - return; + return null; } $log = ''; @@ -157,5 +158,7 @@ class TrackingController extends AbstractController } $this->response->addHTML(Generator::getMessage(__('Database Log'), $log)); + + return null; } } diff --git a/src/Controllers/DatabaseController.php b/src/Controllers/DatabaseController.php index ee62d4297b..a72174ead8 100644 --- a/src/Controllers/DatabaseController.php +++ b/src/Controllers/DatabaseController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -16,8 +17,10 @@ final class DatabaseController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->response->addJSON(['databases' => $this->dbi->getDatabaseList()]); + + return null; } } diff --git a/src/Controllers/ErrorReportController.php b/src/Controllers/ErrorReportController.php index 235c7c37b2..5be1f83de5 100644 --- a/src/Controllers/ErrorReportController.php +++ b/src/Controllers/ErrorReportController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Error\ErrorHandler; use PhpMyAdmin\Error\ErrorReport; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -39,7 +40,7 @@ class ErrorReportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string $exceptionType */ $exceptionType = $request->getParsedBodyParam('exception_type', ''); @@ -49,7 +50,7 @@ class ErrorReportController extends AbstractController $alwaysSend = $request->getParsedBodyParam('always_send'); if (! in_array($exceptionType, ['js', 'php'], true)) { - return; + return null; } $config = Config::getInstance(); @@ -145,5 +146,7 @@ class ErrorReportController extends AbstractController // clear previous errors & save new ones. $this->errorHandler->savePreviousErrors(); } + + return null; } } diff --git a/src/Controllers/Export/CheckTimeOutController.php b/src/Controllers/Export/CheckTimeOutController.php index 16afca00a2..95b5c12579 100644 --- a/src/Controllers/Export/CheckTimeOutController.php +++ b/src/Controllers/Export/CheckTimeOutController.php @@ -5,23 +5,26 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Export; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; final class CheckTimeOutController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } if (isset($_SESSION['pma_export_error'])) { unset($_SESSION['pma_export_error']); $this->response->addJSON('message', 'timeout'); - return; + return null; } $this->response->addJSON('message', 'success'); + + return null; } } diff --git a/src/Controllers/Export/ExportController.php b/src/Controllers/Export/ExportController.php index 09a5611855..1dc4ea5b4e 100644 --- a/src/Controllers/Export/ExportController.php +++ b/src/Controllers/Export/ExportController.php @@ -13,6 +13,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\Encoding; use PhpMyAdmin\Exceptions\ExportException; use PhpMyAdmin\Export\Export; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; @@ -44,7 +45,7 @@ final class ExportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['export_type'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -97,7 +98,7 @@ final class ExportController extends AbstractController $GLOBALS['what'] = Core::securePath($whatParam); if (! $this->checkParameters(['what', 'export_type'])) { - return; + return null; } // export class instance, not array of properties, as before @@ -111,7 +112,7 @@ final class ExportController extends AbstractController $this->response->setRequestStatus(false); $this->response->addHTML(Message::error(__('Bad type!'))->getDisplay()); - return; + return null; } if ($request->hasBodyParam('sql_backquotes') && $exportPlugin instanceof ExportSql) { @@ -194,7 +195,7 @@ final class ExportController extends AbstractController $this->response->setRequestStatus(false); $this->response->addHTML(Message::error(__('Bad parameters!'))->getDisplay()); - return; + return null; } // Merge SQL Query aliases with Export aliases from @@ -281,7 +282,7 @@ final class ExportController extends AbstractController $location = $this->export->getPageLocationAndSaveMessage($GLOBALS['export_type'], $message); $this->response->redirect($location); - return; + return null; } } elseif ($GLOBALS['asfile']) { /** @@ -306,7 +307,7 @@ final class ExportController extends AbstractController $controller = ContainerBuilder::getContainer()->get(DatabaseExportController::class); $controller($request); - return; + return null; } } @@ -492,7 +493,7 @@ final class ExportController extends AbstractController $location = $this->export->getPageLocationAndSaveMessage($GLOBALS['export_type'], $GLOBALS['message']); $this->response->redirect($location); - return; + return null; } /** @@ -505,7 +506,7 @@ final class ExportController extends AbstractController Current::$table, ); - return; + return null; } // Convert the charset if required. @@ -544,10 +545,12 @@ final class ExportController extends AbstractController $location = $this->export->getPageLocationAndSaveMessage($GLOBALS['export_type'], $message); $this->response->redirect($location); - return; + return null; } echo $this->export->dumpBuffer; + + return null; } /** diff --git a/src/Controllers/Export/TablesController.php b/src/Controllers/Export/TablesController.php index ff45ec5dda..732839127f 100644 --- a/src/Controllers/Export/TablesController.php +++ b/src/Controllers/Export/TablesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Export; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Database\ExportController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -22,15 +23,17 @@ final class TablesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->hasBodyParam('selected_tbl')) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } ($this->exportController)($request); + + return null; } } diff --git a/src/Controllers/Export/Template/CreateController.php b/src/Controllers/Export/Template/CreateController.php index 5d9f80cc47..ff47cc055a 100644 --- a/src/Controllers/Export/Template/CreateController.php +++ b/src/Controllers/Export/Template/CreateController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Export\Template as ExportTemplate; use PhpMyAdmin\Export\TemplateModel; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -26,7 +27,7 @@ final class CreateController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string $exportType */ $exportType = $request->getParsedBodyParam('exportType', ''); @@ -39,7 +40,7 @@ final class CreateController extends AbstractController $exportTemplatesFeature = $this->relation->getRelationParameters()->exportTemplatesFeature; if ($exportTemplatesFeature === null) { - return; + return null; } $template = ExportTemplate::fromArray([ @@ -58,7 +59,7 @@ final class CreateController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $result); - return; + return null; } $templates = $this->model->getAll( @@ -76,5 +77,7 @@ final class CreateController extends AbstractController 'selected_template' => $templateId, ]), ); + + return null; } } diff --git a/src/Controllers/Export/Template/DeleteController.php b/src/Controllers/Export/Template/DeleteController.php index a7b459b311..9ed9272cad 100644 --- a/src/Controllers/Export/Template/DeleteController.php +++ b/src/Controllers/Export/Template/DeleteController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Export\TemplateModel; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -23,13 +24,13 @@ final class DeleteController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $templateId = (int) $request->getParsedBodyParam('templateId'); $exportTemplatesFeature = $this->relation->getRelationParameters()->exportTemplatesFeature; if ($exportTemplatesFeature === null) { - return; + return null; } $result = $this->model->delete( @@ -43,9 +44,11 @@ final class DeleteController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $result); - return; + return null; } $this->response->setRequestStatus(true); + + return null; } } diff --git a/src/Controllers/Export/Template/LoadController.php b/src/Controllers/Export/Template/LoadController.php index 615661dfbd..12e99041a0 100644 --- a/src/Controllers/Export/Template/LoadController.php +++ b/src/Controllers/Export/Template/LoadController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Export\Template as ExportTemplate; use PhpMyAdmin\Export\TemplateModel; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -24,13 +25,13 @@ final class LoadController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $templateId = (int) $request->getParsedBodyParam('templateId'); $exportTemplatesFeature = $this->relation->getRelationParameters()->exportTemplatesFeature; if ($exportTemplatesFeature === null) { - return; + return null; } $template = $this->model->load( @@ -44,10 +45,12 @@ final class LoadController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $template); - return; + return null; } $this->response->setRequestStatus(true); $this->response->addJSON('data', $template->getData()); + + return null; } } diff --git a/src/Controllers/Export/Template/UpdateController.php b/src/Controllers/Export/Template/UpdateController.php index 68cb3c407c..bf71e6547d 100644 --- a/src/Controllers/Export/Template/UpdateController.php +++ b/src/Controllers/Export/Template/UpdateController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Export\Template as ExportTemplate; use PhpMyAdmin\Export\TemplateModel; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -24,7 +25,7 @@ final class UpdateController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $templateId = (int) $request->getParsedBodyParam('templateId'); /** @var string $templateData */ @@ -32,7 +33,7 @@ final class UpdateController extends AbstractController $exportTemplatesFeature = $this->relation->getRelationParameters()->exportTemplatesFeature; if ($exportTemplatesFeature === null) { - return; + return null; } $template = ExportTemplate::fromArray([ @@ -50,9 +51,11 @@ final class UpdateController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $result); - return; + return null; } $this->response->setRequestStatus(true); + + return null; } } diff --git a/src/Controllers/GisDataEditorController.php b/src/Controllers/GisDataEditorController.php index fbc2c9d2aa..07ffaa1db0 100644 --- a/src/Controllers/GisDataEditorController.php +++ b/src/Controllers/GisDataEditorController.php @@ -9,6 +9,7 @@ namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Gis\GisFactory; use PhpMyAdmin\Gis\GisVisualization; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use function array_merge; @@ -33,7 +34,7 @@ class GisDataEditorController extends AbstractController 'GEOMETRYCOLLECTION', ]; - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { /** @var string|null $field */ $field = $request->getParsedBodyParam('field'); @@ -47,7 +48,7 @@ class GisDataEditorController extends AbstractController $inputName = $request->getParsedBodyParam('input_name'); if (! isset($field)) { - return; + return null; } // Get data if any posted @@ -59,7 +60,7 @@ class GisDataEditorController extends AbstractController // Generate parameters from value passed. $gisObj = GisFactory::fromType($geomType); if ($gisObj === null) { - return; + return null; } if (isset($value)) { @@ -84,7 +85,7 @@ class GisDataEditorController extends AbstractController if ($request->hasBodyParam('generate')) { $this->response->addJSON(['result' => $result, 'visualization' => $svg, 'openLayers' => $openLayers]); - return; + return null; } $templateOutput = $this->template->render('gis_data_editor_form', [ @@ -103,6 +104,8 @@ class GisDataEditorController extends AbstractController ]); $this->response->addJSON(['gis_editor' => $templateOutput]); + + return null; } /** diff --git a/src/Controllers/GitInfoController.php b/src/Controllers/GitInfoController.php index 103e33d4bb..c620759a9a 100644 --- a/src/Controllers/GitInfoController.php +++ b/src/Controllers/GitInfoController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Config; use PhpMyAdmin\Git; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -20,16 +21,16 @@ final class GitInfoController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } $git = new Git($this->config->get('ShowGitRevision') ?? true); if (! $git->isGitRevision()) { - return; + return null; } $commit = $git->checkGitRevision(); @@ -37,12 +38,14 @@ final class GitInfoController extends AbstractController if (! $git->hasGitInformation() || $commit === null) { $this->response->setRequestStatus(false); - return; + return null; } $commit['author']['date'] = Util::localisedDate(strtotime($commit['author']['date'])); $commit['committer']['date'] = Util::localisedDate(strtotime($commit['committer']['date'])); $this->render('home/git_info', $commit); + + return null; } } diff --git a/src/Controllers/Import/ImportController.php b/src/Controllers/Import/ImportController.php index 7622d1a313..1c405f73fa 100644 --- a/src/Controllers/Import/ImportController.php +++ b/src/Controllers/Import/ImportController.php @@ -15,6 +15,7 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Encoding; use PhpMyAdmin\File; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Import\Import; use PhpMyAdmin\Import\ImportSettings; @@ -60,7 +61,7 @@ final class ImportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['goto'] ??= null; $GLOBALS['display_query'] ??= null; @@ -177,7 +178,7 @@ final class ImportController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $GLOBALS['message']); - return; // the footer is displayed automatically + return null; // the footer is displayed automatically } // Add console message id to response output @@ -192,7 +193,7 @@ final class ImportController extends AbstractController $this->response->setRequestStatus(false); $this->response->addHTML(Message::error(__('Incorrect format parameter'))->getDisplay()); - return; + return null; } if (Current::$table !== '' && Current::$database !== '') { @@ -305,7 +306,7 @@ final class ImportController extends AbstractController $this->response->addJSON('sql_query', $GLOBALS['import_text']); $this->response->addJSON('action_bookmark', $actionBookmark); - return; + return null; } ImportSettings::$runQuery = false; @@ -326,7 +327,7 @@ final class ImportController extends AbstractController $this->response->addJSON('action_bookmark', $actionBookmark); $this->response->addJSON('id_bookmark', $idBookmark); - return; + return null; } ImportSettings::$runQuery = false; @@ -409,7 +410,7 @@ final class ImportController extends AbstractController $this->response->addJSON('message', $errorMessage->getDisplay()); $this->response->addHTML($errorMessage->getDisplay()); - return; + return null; } $importHandle->setDecompressContent(true); @@ -426,7 +427,7 @@ final class ImportController extends AbstractController $this->response->addJSON('message', $errorMessage->getDisplay()); $this->response->addHTML($errorMessage->getDisplay()); - return; + return null; } } elseif (! $GLOBALS['error'] && empty($GLOBALS['import_text'])) { $GLOBALS['message'] = Message::error( @@ -443,7 +444,7 @@ final class ImportController extends AbstractController $this->response->addJSON('message', $GLOBALS['message']->getDisplay()); $this->response->addHTML($GLOBALS['message']->getDisplay()); - return; + return null; } // Convert the file's charset if necessary @@ -636,7 +637,7 @@ final class ImportController extends AbstractController $_SESSION['Import_message']['go_back_url'], ); - return; + return null; } if (Current::$table != $tableFromSql && $tableFromSql !== '') { @@ -678,7 +679,7 @@ final class ImportController extends AbstractController $this->response->addJSON('ajax_reload', $GLOBALS['ajax_reload']); $this->response->addHTML($htmlOutput); - return; + return null; } if ($GLOBALS['result']) { @@ -712,9 +713,11 @@ final class ImportController extends AbstractController // If there is request for ROLLBACK in the end. if (! $request->hasBodyParam('rollback_query')) { - return; + return null; } $this->dbi->query('ROLLBACK'); + + return null; } } diff --git a/src/Controllers/Import/SimulateDmlController.php b/src/Controllers/Import/SimulateDmlController.php index 5d564d6c34..b33290f98f 100644 --- a/src/Controllers/Import/SimulateDmlController.php +++ b/src/Controllers/Import/SimulateDmlController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Import; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Import\SimulateDml; use PhpMyAdmin\Message; @@ -29,7 +30,7 @@ final class SimulateDmlController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $error = ''; $errorMsg = __('Only single-table UPDATE and DELETE queries can be simulated.'); @@ -81,9 +82,11 @@ final class SimulateDmlController extends AbstractController $this->response->addJSON('message', $message); $this->response->addJSON('sql_data', false); - return; + return null; } $this->response->addJSON('sql_data', $sqlData); + + return null; } } diff --git a/src/Controllers/Import/StatusController.php b/src/Controllers/Import/StatusController.php index 85f1e294ff..23544e41ab 100644 --- a/src/Controllers/Import/StatusController.php +++ b/src/Controllers/Import/StatusController.php @@ -4,7 +4,9 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Import; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Import\Ajax; use PhpMyAdmin\Message; @@ -22,13 +24,13 @@ use function usleep; /** * Import progress bar backend */ -class StatusController +class StatusController implements InvocableController { public function __construct(private Template $template) { } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['SESSION_KEY'] ??= null; @@ -75,5 +77,7 @@ class StatusController } else { Ajax::status($request->getQueryParam('id')); } + + return null; } } diff --git a/src/Controllers/InvocableController.php b/src/Controllers/InvocableController.php new file mode 100644 index 0000000000..e61bb81fe4 --- /dev/null +++ b/src/Controllers/InvocableController.php @@ -0,0 +1,13 @@ +responseFactory->createResponse() ->withHeader('Content-Type', 'text/javascript; charset=UTF-8') diff --git a/src/Controllers/LicenseController.php b/src/Controllers/LicenseController.php index 01d9dd6f23..a307653448 100644 --- a/src/Controllers/LicenseController.php +++ b/src/Controllers/LicenseController.php @@ -7,6 +7,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use function __; @@ -19,7 +20,7 @@ use function readfile; */ class LicenseController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->response->disable(); $this->response->addHeader('Content-Type', 'text/plain; charset=utf-8'); @@ -30,7 +31,7 @@ class LicenseController extends AbstractController if (@is_readable($filename)) { readfile($filename); - return; + return null; } printf( @@ -40,5 +41,7 @@ class LicenseController extends AbstractController $filename, 'https://www.phpmyadmin.net/', ); + + return null; } } diff --git a/src/Controllers/LintController.php b/src/Controllers/LintController.php index c6aca46f48..15c14da1fa 100644 --- a/src/Controllers/LintController.php +++ b/src/Controllers/LintController.php @@ -8,6 +8,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Core; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Linter; @@ -21,10 +22,10 @@ use function sprintf; */ class LintController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } /** @@ -59,5 +60,7 @@ class LintController extends AbstractController } echo json_encode(Linter::lint("DELIMITER $$\n" . $sqlQuery . "$$\nDELIMITER ;\n")); + + return null; } } diff --git a/src/Controllers/LogoutController.php b/src/Controllers/LogoutController.php index ba04cce359..86caa5572c 100644 --- a/src/Controllers/LogoutController.php +++ b/src/Controllers/LogoutController.php @@ -4,25 +4,28 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Plugins\AuthenticationPluginFactory; use PhpMyAdmin\ResponseRenderer; -class LogoutController +class LogoutController implements InvocableController { public function __construct(private AuthenticationPluginFactory $authPluginFactory) { } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isPost() || $GLOBALS['token_mismatch']) { ResponseRenderer::getInstance()->redirect('./index.php?route=/'); - return; + return null; } $authPlugin = $this->authPluginFactory->create(); $authPlugin->logOut(); + + return null; } } diff --git a/src/Controllers/Navigation/UpdateNavWidthConfigController.php b/src/Controllers/Navigation/UpdateNavWidthConfigController.php index 3a1c0c4afe..dc45973392 100644 --- a/src/Controllers/Navigation/UpdateNavWidthConfigController.php +++ b/src/Controllers/Navigation/UpdateNavWidthConfigController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Navigation; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -21,22 +22,24 @@ final class UpdateNavWidthConfigController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $value = $request->getParsedBodyParam('value'); if (! is_numeric($value) || $value < 0) { $this->response->setRequestStatus(false); $this->response->addJSON(['message' => Message::error(__('Unexpected parameter value.'))]); - return; + return null; } $result = $this->config->setUserValue(null, 'NavigationWidth', (int) $value); if ($result === true) { - return; + return null; } $this->response->setRequestStatus(false); $this->response->addJSON(['message' => $result]); + + return null; } } diff --git a/src/Controllers/NavigationController.php b/src/Controllers/NavigationController.php index 5d3c955825..6324400e6d 100644 --- a/src/Controllers/NavigationController.php +++ b/src/Controllers/NavigationController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Config\PageSettings; use PhpMyAdmin\ConfigStorage\Relation; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Navigation\Navigation; @@ -32,7 +33,7 @@ class NavigationController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { $this->response->addHTML( @@ -41,7 +42,7 @@ class NavigationController extends AbstractController )->getDisplay(), ); - return; + return null; } if ($request->hasBodyParam('getNaviSettings')) { @@ -49,7 +50,7 @@ class NavigationController extends AbstractController $this->response->addHTML($this->pageSettings->getErrorHTML()); $this->response->addJSON('message', $this->pageSettings->getHTML()); - return; + return null; } if ($request->hasBodyParam('reload')) { @@ -67,7 +68,7 @@ class NavigationController extends AbstractController $this->navigation->hideNavigationItem($itemName, $itemType, $dbName); } - return; + return null; } if ($request->hasBodyParam('unhideNavItem')) { @@ -75,7 +76,7 @@ class NavigationController extends AbstractController $this->navigation->unhideNavigationItem($itemName, $itemType, $dbName); } - return; + return null; } if ($request->hasBodyParam('showUnhideDialog')) { @@ -86,10 +87,12 @@ class NavigationController extends AbstractController ); } - return; + return null; } } $this->response->addJSON('message', $this->navigation->getDisplay()); + + return null; } } diff --git a/src/Controllers/Normalization/AddNewPrimaryController.php b/src/Controllers/Normalization/AddNewPrimaryController.php index c2a5ca9ac1..3116de24cc 100644 --- a/src/Controllers/Normalization/AddNewPrimaryController.php +++ b/src/Controllers/Normalization/AddNewPrimaryController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -26,7 +27,7 @@ final class AddNewPrimaryController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -47,5 +48,7 @@ final class AddNewPrimaryController extends AbstractController ); $html .= Url::getHiddenInputs($dbName, $tableName); $this->response->addHTML($html); + + return null; } } diff --git a/src/Controllers/Normalization/CreateNewColumnController.php b/src/Controllers/Normalization/CreateNewColumnController.php index f7ab8ea4ef..bf613043bf 100644 --- a/src/Controllers/Normalization/CreateNewColumnController.php +++ b/src/Controllers/Normalization/CreateNewColumnController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -26,7 +27,7 @@ final class CreateNewColumnController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -39,5 +40,7 @@ final class CreateNewColumnController extends AbstractController ); $html .= Url::getHiddenInputs(Current::$database, Current::$table); $this->response->addHTML($html); + + return null; } } diff --git a/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php b/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php index 25bd357e3d..90d1aafdcd 100644 --- a/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization\FirstNormalForm; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -20,7 +21,7 @@ final class FirstStepController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->addScriptFiles(['normalization.js', 'vendor/jquery/jquery.uitablefilter.js']); @@ -32,5 +33,7 @@ final class FirstStepController extends AbstractController $html = $this->normalization->getHtmlFor1NFStep1(Current::$database, Current::$table, $normalForm); $this->response->addHTML($html); + + return null; } } diff --git a/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php b/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php index 0937b93670..7f0d9cd95d 100644 --- a/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization\FirstNormalForm; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -18,9 +19,11 @@ final class FourthStepController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $res = $this->normalization->getHtmlContentsFor1NFStep4(Current::$database, Current::$table); $this->response->addJSON($res); + + return null; } } diff --git a/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php b/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php index 99ce542c14..d3970f24b3 100644 --- a/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization\FirstNormalForm; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -18,9 +19,11 @@ final class SecondStepController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $res = $this->normalization->getHtmlContentsFor1NFStep2(Current::$database, Current::$table); $this->response->addJSON($res); + + return null; } } diff --git a/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php b/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php index 361c81a1d8..323e76412c 100644 --- a/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization\FirstNormalForm; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -18,9 +19,11 @@ final class ThirdStepController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $res = $this->normalization->getHtmlContentsFor1NFStep3(Current::$database, Current::$table); $this->response->addJSON($res); + + return null; } } diff --git a/src/Controllers/Normalization/GetColumnsController.php b/src/Controllers/Normalization/GetColumnsController.php index 41880db9e7..3979b275b9 100644 --- a/src/Controllers/Normalization/GetColumnsController.php +++ b/src/Controllers/Normalization/GetColumnsController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -21,7 +22,7 @@ final class GetColumnsController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $html = '' . ''; @@ -32,5 +33,7 @@ final class GetColumnsController extends AbstractController _pgettext('string types', 'String'), ); $this->response->addHTML($html); + + return null; } } diff --git a/src/Controllers/Normalization/MainController.php b/src/Controllers/Normalization/MainController.php index 6448245777..4cbf23d516 100644 --- a/src/Controllers/Normalization/MainController.php +++ b/src/Controllers/Normalization/MainController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; /** @@ -13,9 +14,11 @@ use PhpMyAdmin\Http\ServerRequest; */ class MainController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->addScriptFiles(['normalization.js', 'vendor/jquery/jquery.uitablefilter.js']); $this->render('table/normalization/normalization', ['db' => Current::$database, 'table' => Current::$table]); + + return null; } } diff --git a/src/Controllers/Normalization/MoveRepeatingGroup.php b/src/Controllers/Normalization/MoveRepeatingGroup.php index 239f596bfc..4ddf9cf506 100644 --- a/src/Controllers/Normalization/MoveRepeatingGroup.php +++ b/src/Controllers/Normalization/MoveRepeatingGroup.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -18,7 +19,7 @@ final class MoveRepeatingGroup extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $repeatingColumns = $request->getParsedBodyParam('repeatingColumns'); $newTable = $request->getParsedBodyParam('newTable'); @@ -33,5 +34,7 @@ final class MoveRepeatingGroup extends AbstractController Current::$database, ); $this->response->addJSON($res); + + return null; } } diff --git a/src/Controllers/Normalization/PartialDependenciesController.php b/src/Controllers/Normalization/PartialDependenciesController.php index 501abb83a5..42d1d5f016 100644 --- a/src/Controllers/Normalization/PartialDependenciesController.php +++ b/src/Controllers/Normalization/PartialDependenciesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -18,9 +19,11 @@ final class PartialDependenciesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $html = $this->normalization->findPartialDependencies(Current::$table, Current::$database); $this->response->addHTML($html); + + return null; } } diff --git a/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php b/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php index b464c62f4b..9e67a799f6 100644 --- a/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php +++ b/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization\SecondNormalForm; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -20,7 +21,7 @@ final class CreateNewTablesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $partialDependencies = json_decode($request->getParsedBodyParam('pd'), true); $tablesName = json_decode($request->getParsedBodyParam('newTablesName')); @@ -31,5 +32,7 @@ final class CreateNewTablesController extends AbstractController Current::$database, ); $this->response->addJSON($res); + + return null; } } diff --git a/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php b/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php index 8cf69de60e..f2eeee54f7 100644 --- a/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php +++ b/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization\SecondNormalForm; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -18,9 +19,11 @@ final class FirstStepController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $res = $this->normalization->getHtmlFor2NFstep1(Current::$database, Current::$table); $this->response->addJSON($res); + + return null; } } diff --git a/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php b/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php index 412cb9764b..b97b4d38cb 100644 --- a/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php +++ b/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization\SecondNormalForm; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -20,10 +21,12 @@ final class NewTablesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $partialDependencies = json_decode($request->getParsedBodyParam('pd'), true); $html = $this->normalization->getHtmlForNewTables2NF($partialDependencies, Current::$table); $this->response->addHTML($html); + + return null; } } diff --git a/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php b/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php index d38dd667c4..6a2c796717 100644 --- a/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php +++ b/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization\ThirdNormalForm; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -20,10 +21,12 @@ final class CreateNewTablesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $newtables = json_decode($request->getParsedBodyParam('newTables'), true); $res = $this->normalization->createNewTablesFor3NF($newtables, Current::$database); $this->response->addJSON($res); + + return null; } } diff --git a/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php b/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php index be3e63828e..ad5dd8ca8a 100644 --- a/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php +++ b/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization\ThirdNormalForm; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -18,10 +19,12 @@ final class FirstStepController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $tables = $request->getParsedBodyParam('tables'); $res = $this->normalization->getHtmlFor3NFstep1(Current::$database, $tables); $this->response->addJSON($res); + + return null; } } diff --git a/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php b/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php index 742f682d38..b2de3dac3c 100644 --- a/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php +++ b/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Normalization\ThirdNormalForm; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; @@ -20,11 +21,13 @@ final class NewTablesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $dependencies = json_decode($request->getParsedBodyParam('pd')); $tables = json_decode($request->getParsedBodyParam('tables'), true); $newTables = $this->normalization->getHtmlForNewTables3NF($dependencies, $tables, Current::$database); $this->response->addJSON($newTables); + + return null; } } diff --git a/src/Controllers/Operations/Database/CollationController.php b/src/Controllers/Operations/Database/CollationController.php index 1f3f724cfb..958c2169e7 100644 --- a/src/Controllers/Operations/Database/CollationController.php +++ b/src/Controllers/Operations/Database/CollationController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; @@ -32,12 +33,12 @@ final class CollationController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; if (! $request->isAjax()) { - return; + return null; } $dbCollation = $request->getParsedBodyParam('db_collation') ?? ''; @@ -45,11 +46,11 @@ final class CollationController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No collation provided.'))); - return; + return null; } if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -63,7 +64,7 @@ final class CollationController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $sqlQuery = 'ALTER DATABASE ' . Util::backquote(Current::$database) @@ -103,5 +104,7 @@ final class CollationController extends AbstractController $this->response->setRequestStatus($message->isSuccess()); $this->response->addJSON('message', $message); + + return null; } } diff --git a/src/Controllers/Operations/DatabaseController.php b/src/Controllers/Operations/DatabaseController.php index 7a767fcc5a..e6882922bc 100644 --- a/src/Controllers/Operations/DatabaseController.php +++ b/src/Controllers/Operations/DatabaseController.php @@ -13,6 +13,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidDatabaseName; @@ -47,7 +48,7 @@ class DatabaseController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['message'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -212,7 +213,7 @@ class DatabaseController extends AbstractController ); $this->response->addJSON('db', Current::$database); - return; + return null; } } @@ -227,7 +228,7 @@ class DatabaseController extends AbstractController } if (! $this->checkParameters(['db'])) { - return; + return null; } $config = Config::getInstance(); @@ -240,12 +241,12 @@ class DatabaseController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/database/operations'); @@ -259,7 +260,7 @@ class DatabaseController extends AbstractController $dbCollation = $this->dbi->getDbCollation(Current::$database); if (Utilities::isSystemSchema(Current::$database)) { - return; + return null; } $databaseComment = ''; @@ -307,5 +308,7 @@ class DatabaseController extends AbstractController 'charsets' => $charsets, 'collations' => $collations, ]); + + return null; } } diff --git a/src/Controllers/Operations/TableController.php b/src/Controllers/Operations/TableController.php index dda40c9c8f..54d8c54913 100644 --- a/src/Controllers/Operations/TableController.php +++ b/src/Controllers/Operations/TableController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -53,7 +54,7 @@ class TableController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['auto_increment'] ??= null; @@ -71,7 +72,7 @@ class TableController extends AbstractController $this->addScriptFiles(['table/operations.js']); if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $isSystemSchema = Utilities::isSystemSchema(Current::$database); @@ -86,12 +87,12 @@ class TableController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -100,12 +101,12 @@ class TableController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $GLOBALS['urlParams']['goto'] = $GLOBALS['urlParams']['back'] = Url::getFromRoute('/table/operations'); @@ -155,7 +156,7 @@ class TableController extends AbstractController $message = $this->operations->moveOrCopyTable($userPrivileges, Current::$database, Current::$table); if (! $request->isAjax()) { - return; + return null; } $this->response->addJSON('message', $message); @@ -169,12 +170,12 @@ class TableController extends AbstractController $this->response->addJSON('db', Current::$database); - return; + return null; } $this->response->setRequestStatus(false); - return; + return null; } $newMessage = ''; @@ -278,7 +279,7 @@ class TableController extends AbstractController Message::error(__('No collation provided.')), ); - return; + return null; } } } @@ -362,7 +363,7 @@ class TableController extends AbstractController ); } - return; + return null; } } else { $newMessage = $result @@ -384,7 +385,7 @@ class TableController extends AbstractController ); } - return; + return null; } } @@ -521,5 +522,7 @@ class TableController extends AbstractController 'partitions_choices' => $partitionsChoices, 'foreigners' => $foreigners, ]); + + return null; } } diff --git a/src/Controllers/Operations/ViewController.php b/src/Controllers/Operations/ViewController.php index b5ed5f73cc..da5ccad5e1 100644 --- a/src/Controllers/Operations/ViewController.php +++ b/src/Controllers/Operations/ViewController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -38,7 +39,7 @@ class ViewController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $tableObject = $this->dbi->getTable(Current::$database, Current::$table); @@ -47,7 +48,7 @@ class ViewController extends AbstractController $this->addScriptFiles(['table/operations.js']); if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -63,12 +64,12 @@ class ViewController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -77,12 +78,12 @@ class ViewController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $GLOBALS['urlParams']['goto'] = $GLOBALS['urlParams']['back'] = Url::getFromRoute('/view/operations'); @@ -140,5 +141,7 @@ class ViewController extends AbstractController 'table' => Current::$table, 'url_params' => $GLOBALS['urlParams'], ]); + + return null; } } diff --git a/src/Controllers/PhpInfoController.php b/src/Controllers/PhpInfoController.php index 1d5353f634..9fc3e3639d 100644 --- a/src/Controllers/PhpInfoController.php +++ b/src/Controllers/PhpInfoController.php @@ -8,6 +8,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Config; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use function phpinfo; @@ -21,15 +22,17 @@ use const INFO_MODULES; */ class PhpInfoController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->response->disable(); $this->response->getHeader()->sendHttpHeaders(); if (! Config::getInstance()->settings['ShowPhpInfo']) { - return; + return null; } phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES); + + return null; } } diff --git a/src/Controllers/Preferences/ExportController.php b/src/Controllers/Preferences/ExportController.php index 048541b79c..56271f7c21 100644 --- a/src/Controllers/Preferences/ExportController.php +++ b/src/Controllers/Preferences/ExportController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Config\Forms\User\ExportForm; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -35,7 +36,7 @@ class ExportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['cf'] ??= null; $GLOBALS['error'] ??= null; @@ -52,7 +53,7 @@ class ExportController extends AbstractController $formDisplay->fixErrors(); $this->redirect('/preferences/export'); - return; + return null; } $GLOBALS['error'] = null; @@ -70,7 +71,7 @@ class ExportController extends AbstractController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/export', null, $GLOBALS['hash']); - return; + return null; } $GLOBALS['error'] = $result; @@ -102,5 +103,7 @@ class ExportController extends AbstractController } else { define('PMA_DISABLE_NAVI_SETTINGS', true); } + + return null; } } diff --git a/src/Controllers/Preferences/FeaturesController.php b/src/Controllers/Preferences/FeaturesController.php index 3b2f5d04fb..3981b2d73f 100644 --- a/src/Controllers/Preferences/FeaturesController.php +++ b/src/Controllers/Preferences/FeaturesController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Config\Forms\User\FeaturesForm; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -35,7 +36,7 @@ class FeaturesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['cf'] ??= null; $GLOBALS['error'] ??= null; @@ -52,7 +53,7 @@ class FeaturesController extends AbstractController $formDisplay->fixErrors(); $this->redirect('/preferences/features'); - return; + return null; } $GLOBALS['error'] = null; @@ -70,7 +71,7 @@ class FeaturesController extends AbstractController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/features', null, $GLOBALS['hash']); - return; + return null; } $GLOBALS['error'] = $result; @@ -102,5 +103,7 @@ class FeaturesController extends AbstractController } else { define('PMA_DISABLE_NAVI_SETTINGS', true); } + + return null; } } diff --git a/src/Controllers/Preferences/ImportController.php b/src/Controllers/Preferences/ImportController.php index a343ef1a2c..ee1fee7fad 100644 --- a/src/Controllers/Preferences/ImportController.php +++ b/src/Controllers/Preferences/ImportController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Config\Forms\User\ImportForm; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -35,7 +36,7 @@ class ImportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['cf'] ??= null; $GLOBALS['error'] ??= null; @@ -52,7 +53,7 @@ class ImportController extends AbstractController $formDisplay->fixErrors(); $this->redirect('/preferences/import'); - return; + return null; } $GLOBALS['error'] = null; @@ -70,7 +71,7 @@ class ImportController extends AbstractController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/import', null, $GLOBALS['hash']); - return; + return null; } $GLOBALS['error'] = $result; @@ -102,5 +103,7 @@ class ImportController extends AbstractController } else { define('PMA_DISABLE_NAVI_SETTINGS', true); } + + return null; } } diff --git a/src/Controllers/Preferences/MainPanelController.php b/src/Controllers/Preferences/MainPanelController.php index f5b81da88e..7bcf4ed91d 100644 --- a/src/Controllers/Preferences/MainPanelController.php +++ b/src/Controllers/Preferences/MainPanelController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Config\Forms\User\MainForm; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -35,7 +36,7 @@ class MainPanelController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['cf'] ??= null; $GLOBALS['error'] ??= null; @@ -52,7 +53,7 @@ class MainPanelController extends AbstractController $formDisplay->fixErrors(); $this->redirect('/preferences/main-panel'); - return; + return null; } $GLOBALS['error'] = null; @@ -70,7 +71,7 @@ class MainPanelController extends AbstractController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/main-panel', null, $GLOBALS['hash']); - return; + return null; } $GLOBALS['error'] = $result; @@ -102,5 +103,7 @@ class MainPanelController extends AbstractController } else { define('PMA_DISABLE_NAVI_SETTINGS', true); } + + return null; } } diff --git a/src/Controllers/Preferences/ManageController.php b/src/Controllers/Preferences/ManageController.php index 42648b2411..a815c68ab5 100644 --- a/src/Controllers/Preferences/ManageController.php +++ b/src/Controllers/Preferences/ManageController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Core; use PhpMyAdmin\File; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -56,7 +57,7 @@ class ManageController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['cf'] ??= null; $GLOBALS['error'] ??= null; @@ -77,7 +78,7 @@ class ManageController extends AbstractController $settings = $this->userPreferences->load(); echo json_encode($settings['config_data'], JSON_PRETTY_PRINT); - return; + return null; } if ($request->hasBodyParam('submit_export') && $request->getParsedBodyParam('export_type') === 'php_file') { @@ -93,7 +94,7 @@ class ManageController extends AbstractController echo var_export($val, true) . ";\n"; } - return; + return null; } if ($request->hasBodyParam('submit_get_json')) { @@ -101,7 +102,7 @@ class ManageController extends AbstractController $this->response->addJSON('prefs', json_encode($settings['config_data'])); $this->response->addJSON('mtime', $settings['mtime']); - return; + return null; } if ($request->hasBodyParam('submit_import')) { @@ -181,7 +182,7 @@ class ManageController extends AbstractController 'return_url' => $returnUrl, ]); - return; + return null; } // check for ThemeDefault @@ -223,7 +224,7 @@ class ManageController extends AbstractController $this->config->loadUserPreferences($this->themeManager); $this->userPreferences->redirect($returnUrl ?? '', $redirectParams); - return; + return null; } $GLOBALS['error'] = $result; @@ -234,12 +235,12 @@ class ManageController extends AbstractController $this->config->removeCookie('pma_lang'); $this->userPreferences->redirect('index.php?route=/preferences/manage'); - return; + return null; } $GLOBALS['error'] = $result; - return; + return null; } $relationParameters = $this->relation->getRelationParameters(); @@ -270,5 +271,7 @@ class ManageController extends AbstractController } else { define('PMA_DISABLE_NAVI_SETTINGS', true); } + + return null; } } diff --git a/src/Controllers/Preferences/NavigationController.php b/src/Controllers/Preferences/NavigationController.php index 4ed9cb8202..cc0e4ae320 100644 --- a/src/Controllers/Preferences/NavigationController.php +++ b/src/Controllers/Preferences/NavigationController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Config\Forms\User\NaviForm; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -35,7 +36,7 @@ class NavigationController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['cf'] ??= null; $GLOBALS['error'] ??= null; @@ -52,7 +53,7 @@ class NavigationController extends AbstractController $formDisplay->fixErrors(); $this->redirect('/preferences/navigation'); - return; + return null; } $GLOBALS['error'] = null; @@ -70,7 +71,7 @@ class NavigationController extends AbstractController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/navigation', null, $GLOBALS['hash']); - return; + return null; } $GLOBALS['error'] = $result; @@ -100,9 +101,11 @@ class NavigationController extends AbstractController if ($request->isAjax()) { $this->response->addJSON('disableNaviSettings', true); - return; + return null; } define('PMA_DISABLE_NAVI_SETTINGS', true); + + return null; } } diff --git a/src/Controllers/Preferences/SqlController.php b/src/Controllers/Preferences/SqlController.php index 40db4c451a..b66c29ed65 100644 --- a/src/Controllers/Preferences/SqlController.php +++ b/src/Controllers/Preferences/SqlController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Config\Forms\User\SqlForm; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -35,7 +36,7 @@ class SqlController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['cf'] ??= null; $GLOBALS['error'] ??= null; @@ -52,7 +53,7 @@ class SqlController extends AbstractController $formDisplay->fixErrors(); $this->redirect('/preferences/sql'); - return; + return null; } $GLOBALS['error'] = null; @@ -70,7 +71,7 @@ class SqlController extends AbstractController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/sql', null, $GLOBALS['hash']); - return; + return null; } $GLOBALS['error'] = $result; @@ -102,5 +103,7 @@ class SqlController extends AbstractController } else { define('PMA_DISABLE_NAVI_SETTINGS', true); } + + return null; } } diff --git a/src/Controllers/Preferences/TwoFactorController.php b/src/Controllers/Preferences/TwoFactorController.php index 0be510ff10..9915a84afa 100644 --- a/src/Controllers/Preferences/TwoFactorController.php +++ b/src/Controllers/Preferences/TwoFactorController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Preferences; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -24,7 +25,7 @@ class TwoFactorController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $relationParameters = $this->relation->getRelationParameters(); @@ -40,7 +41,7 @@ class TwoFactorController extends AbstractController if (! $twoFactor->check($request, true)) { $this->render('preferences/two_factor/confirm', ['form' => $twoFactor->render($request)]); - return; + return null; } $twoFactor->configure($request, ''); @@ -54,7 +55,7 @@ class TwoFactorController extends AbstractController 'configure' => $request->getParsedBodyParam('2fa_configure'), ]); - return; + return null; } $this->response->addHTML( @@ -78,5 +79,7 @@ class TwoFactorController extends AbstractController } else { define('PMA_DISABLE_NAVI_SETTINGS', true); } + + return null; } } diff --git a/src/Controllers/RecentTablesListController.php b/src/Controllers/RecentTablesListController.php index 0304f2ad45..b80c4e2d77 100644 --- a/src/Controllers/RecentTablesListController.php +++ b/src/Controllers/RecentTablesListController.php @@ -6,16 +6,19 @@ namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Favorites\RecentFavoriteTables; use PhpMyAdmin\Favorites\TableType; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; final class RecentTablesListController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } $this->response->addJSON(['list' => RecentFavoriteTables::getInstance(TableType::Recent)->getHtmlList()]); + + return null; } } diff --git a/src/Controllers/SchemaExportController.php b/src/Controllers/SchemaExportController.php index 031d1131ae..f096093461 100644 --- a/src/Controllers/SchemaExportController.php +++ b/src/Controllers/SchemaExportController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Exceptions\ExportException; use PhpMyAdmin\Export\Export; use PhpMyAdmin\Html\MySQLDocumentation; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; @@ -20,13 +21,13 @@ use function mb_strlen; /** * Schema export handler */ -class SchemaExportController +class SchemaExportController implements InvocableController { public function __construct(private Export $export, private ResponseRenderer $response) { } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $db = DatabaseName::tryFrom($request->getParsedBodyParam('db')); /** @var mixed $exportType */ @@ -38,7 +39,7 @@ class SchemaExportController $this->response->setRequestStatus(false); $this->response->addHTML(Message::error($errorMessage)->getDisplay()); - return; + return null; } /** @@ -50,7 +51,7 @@ class SchemaExportController $this->response->setRequestStatus(false); $this->response->addHTML(Message::error($exception->getMessage())->getDisplay()); - return; + return null; } $this->response->disable(); @@ -60,5 +61,7 @@ class SchemaExportController mb_strlen($exportInfo['fileData'], '8bit'), ); echo $exportInfo['fileData']; + + return null; } } diff --git a/src/Controllers/Server/BinlogController.php b/src/Controllers/Server/BinlogController.php index d2cf0b8cf2..e9c265ad59 100644 --- a/src/Controllers/Server/BinlogController.php +++ b/src/Controllers/Server/BinlogController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -36,7 +37,7 @@ final class BinlogController extends AbstractController $this->binaryLogs = $this->dbi->fetchResult('SHOW MASTER LOGS', 'Log_name'); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $log = $request->getParsedBodyParam('log'); $position = (int) $request->getParsedBodyParam('pos', 0); @@ -99,6 +100,8 @@ final class BinlogController extends AbstractController 'has_icons' => Util::showIcons('TableNavigationLinksMode'), 'is_full_query' => $isFullQuery, ]); + + return null; } /** diff --git a/src/Controllers/Server/CollationsController.php b/src/Controllers/Server/CollationsController.php index 36d62612bc..b67184259e 100644 --- a/src/Controllers/Server/CollationsController.php +++ b/src/Controllers/Server/CollationsController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Charsets\Collation; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -44,7 +45,7 @@ class CollationsController extends AbstractController $this->collations = $collations ?? Charsets::getCollations($this->dbi, $config->selectedServer['DisableIS']); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -71,5 +72,7 @@ class CollationsController extends AbstractController } $this->render('server/collations/index', ['charsets' => $charsets]); + + return null; } } diff --git a/src/Controllers/Server/Databases/CreateController.php b/src/Controllers/Server/Databases/CreateController.php index df7566bf0d..2d0095ade0 100644 --- a/src/Controllers/Server/Databases/CreateController.php +++ b/src/Controllers/Server/Databases/CreateController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -31,7 +32,7 @@ final class CreateController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $newDb = $request->getParsedBodyParam('new_db'); $dbCollation = $request->getParsedBodyParam('db_collation'); @@ -39,7 +40,7 @@ final class CreateController extends AbstractController if (! is_string($newDb) || $newDb === '' || ! $request->isAjax()) { $this->response->addJSON(['message' => Message::error()]); - return; + return null; } if ($this->dbi->getLowerCaseNames() === 1) { @@ -95,5 +96,7 @@ final class CreateController extends AbstractController } $this->response->addJSON($json); + + return null; } } diff --git a/src/Controllers/Server/Databases/DestroyController.php b/src/Controllers/Server/Databases/DestroyController.php index 1630122d85..93bbaf9404 100644 --- a/src/Controllers/Server/Databases/DestroyController.php +++ b/src/Controllers/Server/Databases/DestroyController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\RelationCleanup; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -35,7 +36,7 @@ final class DestroyController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['selected'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -53,7 +54,7 @@ final class DestroyController extends AbstractController $this->response->setRequestStatus($message->isSuccess()); $this->response->addJSON($json); - return; + return null; } if ( @@ -65,7 +66,7 @@ final class DestroyController extends AbstractController $this->response->setRequestStatus($message->isSuccess()); $this->response->addJSON($json); - return; + return null; } $GLOBALS['errorUrl'] = Url::getFromRoute('/server/databases'); @@ -94,5 +95,7 @@ final class DestroyController extends AbstractController $json = ['message' => $message]; $this->response->setRequestStatus($message->isSuccess()); $this->response->addJSON($json); + + return null; } } diff --git a/src/Controllers/Server/DatabasesController.php b/src/Controllers/Server/DatabasesController.php index 2e8f6bb66f..2268e59ea6 100644 --- a/src/Controllers/Server/DatabasesController.php +++ b/src/Controllers/Server/DatabasesController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Dbal\ConnectionType; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\LanguageManager; use PhpMyAdmin\Query\Utilities; @@ -68,7 +69,7 @@ class DatabasesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; @@ -167,6 +168,8 @@ class DatabasesController extends AbstractController 'is_drop_allowed' => $this->dbi->isSuperUser() || $config->settings['AllowUserDropDatabase'], 'text_dir' => LanguageManager::$textDir, ]); + + return null; } /** diff --git a/src/Controllers/Server/EnginesController.php b/src/Controllers/Server/EnginesController.php index 76aa170fb6..0977f44edf 100644 --- a/src/Controllers/Server/EnginesController.php +++ b/src/Controllers/Server/EnginesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\StorageEngine; @@ -22,7 +23,7 @@ class EnginesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -31,5 +32,7 @@ class EnginesController extends AbstractController } $this->render('server/engines/index', ['engines' => StorageEngine::getStorageEngines()]); + + return null; } } diff --git a/src/Controllers/Server/ExportController.php b/src/Controllers/Server/ExportController.php index 2929ecfde1..0ebaf3b323 100644 --- a/src/Controllers/Server/ExportController.php +++ b/src/Controllers/Server/ExportController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Export\Options; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Plugins; @@ -31,7 +32,7 @@ final class ExportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['unlim_num_rows'] ??= null; $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -72,7 +73,7 @@ final class ExportController extends AbstractController __('Could not load export plugins, please check your installation!'), )->getDisplay()); - return; + return null; } $options = $this->export->getOptions( @@ -90,5 +91,7 @@ final class ExportController extends AbstractController 'page_settings_html' => $pageSettingsHtml, 'databases' => $databases, ])); + + return null; } } diff --git a/src/Controllers/Server/ImportController.php b/src/Controllers/Server/ImportController.php index 18e02bd5be..2ef1ee8ce0 100644 --- a/src/Controllers/Server/ImportController.php +++ b/src/Controllers/Server/ImportController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Encoding; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Import\Ajax; use PhpMyAdmin\Import\Import; @@ -37,7 +38,7 @@ final class ImportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['SESSION_KEY'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -63,7 +64,7 @@ final class ImportController extends AbstractController 'Could not load import plugins, please check your installation!', ))->getDisplay()); - return; + return null; } $offset = null; @@ -120,5 +121,7 @@ final class ImportController extends AbstractController 'user_upload_dir' => Util::userDir($config->settings['UploadDir'] ?? ''), 'local_files' => Import::getLocalFiles($importList), ]); + + return null; } } diff --git a/src/Controllers/Server/PluginsController.php b/src/Controllers/Server/PluginsController.php index d2222c7f1c..746832ad41 100644 --- a/src/Controllers/Server/PluginsController.php +++ b/src/Controllers/Server/PluginsController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Plugins; @@ -31,7 +32,7 @@ class PluginsController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -59,5 +60,7 @@ class PluginsController extends AbstractController } $this->render('server/plugins/index', ['plugins' => $plugins, 'clean_types' => $cleanTypes]); + + return null; } } diff --git a/src/Controllers/Server/Privileges/AccountLockController.php b/src/Controllers/Server/Privileges/AccountLockController.php index 321118f55f..81ec452757 100644 --- a/src/Controllers/Server/Privileges/AccountLockController.php +++ b/src/Controllers/Server/Privileges/AccountLockController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Privileges; use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -22,10 +23,10 @@ final class AccountLockController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } /** @var string $userName */ @@ -40,12 +41,14 @@ final class AccountLockController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON(['message' => Message::error($exception->getMessage())]); - return; + return null; } $message = Message::success(__('The account %s@%s has been successfully locked.')); $message->addParam($userName); $message->addParam($hostName); $this->response->addJSON(['message' => $message]); + + return null; } } diff --git a/src/Controllers/Server/Privileges/AccountUnlockController.php b/src/Controllers/Server/Privileges/AccountUnlockController.php index d9ecba5e75..bad69bf071 100644 --- a/src/Controllers/Server/Privileges/AccountUnlockController.php +++ b/src/Controllers/Server/Privileges/AccountUnlockController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Privileges; use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -22,10 +23,10 @@ final class AccountUnlockController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } /** @var string $userName */ @@ -40,12 +41,14 @@ final class AccountUnlockController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON(['message' => Message::error($exception->getMessage())]); - return; + return null; } $message = Message::success(__('The account %s@%s has been successfully unlocked.')); $message->addParam($userName); $message->addParam($hostName); $this->response->addJSON(['message' => $message]); + + return null; } } diff --git a/src/Controllers/Server/PrivilegesController.php b/src/Controllers/Server/PrivilegesController.php index 58b79abbb1..be09637ace 100644 --- a/src/Controllers/Server/PrivilegesController.php +++ b/src/Controllers/Server/PrivilegesController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\ConfigStorage\RelationCleanup; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\LanguageManager; use PhpMyAdmin\Message; @@ -42,7 +43,7 @@ class PrivilegesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; $GLOBALS['message'] ??= null; @@ -106,7 +107,7 @@ class PrivilegesController extends AbstractController ->getDisplay(), ); - return; + return null; } if (! $isGrantUser && ! $isCreateUser) { @@ -135,7 +136,7 @@ class PrivilegesController extends AbstractController ); $this->response->setRequestStatus(false); - return; + return null; } /** @@ -300,7 +301,7 @@ class PrivilegesController extends AbstractController $this->response->addJSON('message', $GLOBALS['message']); $this->response->addJSON($extraData); - return; + return null; } } @@ -331,7 +332,7 @@ class PrivilegesController extends AbstractController $this->response->addJSON('message', $export); $this->response->addJSON('title', $title); - return; + return null; } $this->response->addHTML('

' . $title . '

' . $export); @@ -395,10 +396,12 @@ class PrivilegesController extends AbstractController } if ($relationParameters->configurableMenusFeature === null) { - return; + return null; } $this->response->addHTML('
'); + + return null; } private function getExportPageTitle(string $username, string $hostname, array|null $selectedUsers): string diff --git a/src/Controllers/Server/ReplicationController.php b/src/Controllers/Server/ReplicationController.php index 429ca2418b..82bc0afecc 100644 --- a/src/Controllers/Server/ReplicationController.php +++ b/src/Controllers/Server/ReplicationController.php @@ -9,6 +9,7 @@ namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Replication\ReplicationGui; use PhpMyAdmin\Replication\ReplicationInfo; @@ -32,7 +33,7 @@ class ReplicationController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -134,5 +135,7 @@ class ReplicationController extends AbstractController 'replica_configuration_html' => $replicaConfigurationHtml ?? '', 'change_primary_html' => $changePrimaryHtml ?? '', ]); + + return null; } } diff --git a/src/Controllers/Server/ShowEngineController.php b/src/Controllers/Server/ShowEngineController.php index 3222a5b066..9be262cf71 100644 --- a/src/Controllers/Server/ShowEngineController.php +++ b/src/Controllers/Server/ShowEngineController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\StorageEngine; @@ -28,7 +29,7 @@ final class ShowEngineController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->setEngineAndPageProperties($request->getAttribute('routeVars')); @@ -54,6 +55,8 @@ final class ShowEngineController extends AbstractController } $this->render('server/engines/show', ['engine' => $engine, 'page' => $this->page]); + + return null; } private function setEngineAndPageProperties(mixed $routeVars): void diff --git a/src/Controllers/Server/SqlController.php b/src/Controllers/Server/SqlController.php index c42abbfd3b..459feb919a 100644 --- a/src/Controllers/Server/SqlController.php +++ b/src/Controllers/Server/SqlController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Config\PageSettings; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\SqlQueryForm; @@ -28,7 +29,7 @@ class SqlController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; @@ -44,5 +45,7 @@ class SqlController extends AbstractController } $this->response->addHTML($this->sqlQueryForm->getHtml('', '')); + + return null; } } diff --git a/src/Controllers/Server/Status/AdvisorController.php b/src/Controllers/Server/Status/AdvisorController.php index af825c925d..689d365dc5 100644 --- a/src/Controllers/Server/Status/AdvisorController.php +++ b/src/Controllers/Server/Status/AdvisorController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; use PhpMyAdmin\Advisory\Advisor; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -20,7 +21,7 @@ class AdvisorController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $data = []; if ($this->data->dataLoaded) { @@ -28,5 +29,7 @@ class AdvisorController extends AbstractController } $this->render('server/status/advisor/index', ['data' => $data]); + + return null; } } diff --git a/src/Controllers/Server/Status/Monitor/ChartingDataController.php b/src/Controllers/Server/Status/Monitor/ChartingDataController.php index d20da58025..fc09638ef1 100644 --- a/src/Controllers/Server/Status/Monitor/ChartingDataController.php +++ b/src/Controllers/Server/Status/Monitor/ChartingDataController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Status\Monitor; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -25,7 +26,7 @@ final class ChartingDataController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; @@ -37,9 +38,11 @@ final class ChartingDataController extends AbstractController } if (! $request->isAjax()) { - return; + return null; } $this->response->addJSON(['message' => $this->monitor->getJsonForChartingData($requiredData)]); + + return null; } } diff --git a/src/Controllers/Server/Status/Monitor/GeneralLogController.php b/src/Controllers/Server/Status/Monitor/GeneralLogController.php index e94471af9c..867cc4980a 100644 --- a/src/Controllers/Server/Status/Monitor/GeneralLogController.php +++ b/src/Controllers/Server/Status/Monitor/GeneralLogController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Status\Monitor; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -25,7 +26,7 @@ final class GeneralLogController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; @@ -36,7 +37,7 @@ final class GeneralLogController extends AbstractController } if (! $request->isAjax()) { - return; + return null; } $data = $this->monitor->getJsonForLogDataTypeGeneral( @@ -48,9 +49,11 @@ final class GeneralLogController extends AbstractController if ($data === null) { $this->response->setRequestStatus(false); - return; + return null; } $this->response->addJSON(['message' => $data]); + + return null; } } diff --git a/src/Controllers/Server/Status/Monitor/LogVarsController.php b/src/Controllers/Server/Status/Monitor/LogVarsController.php index b921a0dbad..4df5e4fa2e 100644 --- a/src/Controllers/Server/Status/Monitor/LogVarsController.php +++ b/src/Controllers/Server/Status/Monitor/LogVarsController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Status\Monitor; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -25,7 +26,7 @@ final class LogVarsController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; @@ -36,7 +37,7 @@ final class LogVarsController extends AbstractController } if (! $request->isAjax()) { - return; + return null; } $this->response->addJSON([ @@ -45,5 +46,7 @@ final class LogVarsController extends AbstractController $request->getParsedBodyParam('varValue'), ), ]); + + return null; } } diff --git a/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php b/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php index b81c5ab42e..843e3b2ac7 100644 --- a/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php +++ b/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Status\Monitor; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -25,7 +26,7 @@ final class QueryAnalyzerController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; @@ -36,7 +37,7 @@ final class QueryAnalyzerController extends AbstractController } if (! $request->isAjax()) { - return; + return null; } $this->response->addJSON([ @@ -45,5 +46,7 @@ final class QueryAnalyzerController extends AbstractController $request->getParsedBodyParam('query', ''), ), ]); + + return null; } } diff --git a/src/Controllers/Server/Status/Monitor/SlowLogController.php b/src/Controllers/Server/Status/Monitor/SlowLogController.php index b733ec8e65..be04507deb 100644 --- a/src/Controllers/Server/Status/Monitor/SlowLogController.php +++ b/src/Controllers/Server/Status/Monitor/SlowLogController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Status\Monitor; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -25,7 +26,7 @@ final class SlowLogController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; @@ -36,7 +37,7 @@ final class SlowLogController extends AbstractController } if (! $request->isAjax()) { - return; + return null; } $data = $this->monitor->getJsonForLogDataTypeSlow( @@ -46,9 +47,11 @@ final class SlowLogController extends AbstractController if ($data === null) { $this->response->setRequestStatus(false); - return; + return null; } $this->response->addJSON(['message' => $data]); + + return null; } } diff --git a/src/Controllers/Server/Status/MonitorController.php b/src/Controllers/Server/Status/MonitorController.php index 4a051db273..6e8b3e9af0 100644 --- a/src/Controllers/Server/Status/MonitorController.php +++ b/src/Controllers/Server/Status/MonitorController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -26,7 +27,7 @@ class MonitorController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -70,5 +71,7 @@ class MonitorController extends AbstractController 'javascript_variable_names' => $javascriptVariableNames, 'form' => $form, ]); + + return null; } } diff --git a/src/Controllers/Server/Status/Processes/KillController.php b/src/Controllers/Server/Status/Processes/KillController.php index 11eb226c4f..ee50dae48b 100644 --- a/src/Controllers/Server/Status/Processes/KillController.php +++ b/src/Controllers/Server/Status/Processes/KillController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Status\Processes; use PhpMyAdmin\Controllers\Server\Status\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -27,10 +28,10 @@ final class KillController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } $processId = $this->getProcessId($request->getAttribute('routeVars')); @@ -53,6 +54,8 @@ final class KillController extends AbstractController $message->addParam($processId); $this->response->addJSON(['message' => $message]); + + return null; } private function getProcessId(mixed $routeVars): int diff --git a/src/Controllers/Server/Status/Processes/RefreshController.php b/src/Controllers/Server/Status/Processes/RefreshController.php index d94337a6e0..d9bf68c38b 100644 --- a/src/Controllers/Server/Status/Processes/RefreshController.php +++ b/src/Controllers/Server/Status/Processes/RefreshController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status\Processes; use PhpMyAdmin\Controllers\Server\Status\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -22,10 +23,10 @@ final class RefreshController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } $this->render('server/status/processes/list', $this->processes->getList( @@ -34,5 +35,7 @@ final class RefreshController extends AbstractController (string) $request->getParsedBodyParam('order_by_field', ''), (string) $request->getParsedBodyParam('sort_order', ''), )); + + return null; } } diff --git a/src/Controllers/Server/Status/ProcessesController.php b/src/Controllers/Server/Status/ProcessesController.php index bcb09b664f..3fbff15c50 100644 --- a/src/Controllers/Server/Status/ProcessesController.php +++ b/src/Controllers/Server/Status/ProcessesController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -24,7 +25,7 @@ class ProcessesController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -59,5 +60,7 @@ class ProcessesController extends AbstractController 'is_checked' => $showExecuting, 'server_process_list' => $listHtml, ]); + + return null; } } diff --git a/src/Controllers/Server/Status/QueriesController.php b/src/Controllers/Server/Status/QueriesController.php index eb05aab3c5..d83bb369dc 100644 --- a/src/Controllers/Server/Status/QueriesController.php +++ b/src/Controllers/Server/Status/QueriesController.php @@ -8,6 +8,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -36,7 +37,7 @@ class QueriesController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -99,5 +100,7 @@ class QueriesController extends AbstractController 'queries' => $queries ?? [], 'chart_data' => $chartData, ]); + + return null; } } diff --git a/src/Controllers/Server/Status/StatusController.php b/src/Controllers/Server/Status/StatusController.php index 224b5c7ca3..105e56304a 100644 --- a/src/Controllers/Server/Status/StatusController.php +++ b/src/Controllers/Server/Status/StatusController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Server\Status; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Replication\ReplicationGui; use PhpMyAdmin\ResponseRenderer; @@ -31,7 +32,7 @@ class StatusController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -89,6 +90,8 @@ class StatusController extends AbstractController 'is_replica' => $replicaInfo['status'], 'replication' => $replication, ]); + + return null; } private function getStartTime(): int diff --git a/src/Controllers/Server/Status/VariablesController.php b/src/Controllers/Server/Status/VariablesController.php index 9b6530ebe3..dcf6ad8a02 100644 --- a/src/Controllers/Server/Status/VariablesController.php +++ b/src/Controllers/Server/Status/VariablesController.php @@ -9,6 +9,7 @@ namespace PhpMyAdmin\Controllers\Server\Status; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Server\Status\Data; @@ -31,7 +32,7 @@ class VariablesController extends AbstractController parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; @@ -127,6 +128,8 @@ class VariablesController extends AbstractController 'links' => $links ?? [], 'variables' => $variables ?? [], ]); + + return null; } /** diff --git a/src/Controllers/Server/UserGroupsController.php b/src/Controllers/Server/UserGroupsController.php index cf99b497d6..a8af16a5a5 100644 --- a/src/Controllers/Server/UserGroupsController.php +++ b/src/Controllers/Server/UserGroupsController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\UserGroups; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -30,11 +31,11 @@ class UserGroupsController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $configurableMenusFeature = $this->relation->getRelationParameters()->configurableMenusFeature; if ($configurableMenusFeature === null) { - return; + return null; } $this->addScriptFiles(['server/user_groups.js']); @@ -47,7 +48,7 @@ class UserGroupsController extends AbstractController Message::error(__('No Privileges'))->getDisplay(), ); - return; + return null; } $this->response->addHTML('
'); @@ -99,5 +100,7 @@ class UserGroupsController extends AbstractController } $this->response->addHTML('
'); + + return null; } } diff --git a/src/Controllers/Server/UserGroupsFormController.php b/src/Controllers/Server/UserGroupsFormController.php index 011d1e7ab7..ca98c31848 100644 --- a/src/Controllers/Server/UserGroupsFormController.php +++ b/src/Controllers/Server/UserGroupsFormController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Dbal\ConnectionType; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -29,10 +30,10 @@ final class UserGroupsFormController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } /** @var string $username */ @@ -43,7 +44,7 @@ final class UserGroupsFormController extends AbstractController $this->response->setStatusCode(StatusCodeInterface::STATUS_BAD_REQUEST); $this->response->addJSON('message', __('Missing parameter:') . ' username'); - return; + return null; } $configurableMenusFeature = $this->relation->getRelationParameters()->configurableMenusFeature; @@ -52,12 +53,14 @@ final class UserGroupsFormController extends AbstractController $this->response->setStatusCode(StatusCodeInterface::STATUS_BAD_REQUEST); $this->response->addJSON('message', __('User groups management is not enabled.')); - return; + return null; } $form = $this->getHtmlToChooseUserGroup($username, $configurableMenusFeature); $this->response->addJSON('message', $form); + + return null; } /** diff --git a/src/Controllers/Server/Variables/GetVariableController.php b/src/Controllers/Server/Variables/GetVariableController.php index 2b02b37f07..ddc5f460aa 100644 --- a/src/Controllers/Server/Variables/GetVariableController.php +++ b/src/Controllers/Server/Variables/GetVariableController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Variables; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Providers\ServerVariables\ServerVariablesProvider; use PhpMyAdmin\ResponseRenderer; @@ -23,10 +24,10 @@ final class GetVariableController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } $name = $this->getName($request->getAttribute('routeVars')); @@ -50,6 +51,8 @@ final class GetVariableController extends AbstractController } $this->response->addJSON($json); + + return null; } private function getName(mixed $routeVars): string diff --git a/src/Controllers/Server/Variables/SetVariableController.php b/src/Controllers/Server/Variables/SetVariableController.php index 4b30c90609..df9e2e1ed8 100644 --- a/src/Controllers/Server/Variables/SetVariableController.php +++ b/src/Controllers/Server/Variables/SetVariableController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Server\Variables; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Providers\ServerVariables\ServerVariablesProvider; use PhpMyAdmin\ResponseRenderer; @@ -32,10 +33,10 @@ final class SetVariableController extends AbstractController /** * Handle the AJAX request for setting value for a single variable */ - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->isAjax()) { - return; + return null; } $value = (string) $request->getParsedBodyParam('varValue'); @@ -79,6 +80,8 @@ final class SetVariableController extends AbstractController } $this->response->addJSON($json); + + return null; } /** diff --git a/src/Controllers/Server/VariablesController.php b/src/Controllers/Server/VariablesController.php index 77a92f274a..7afa1bc4ce 100644 --- a/src/Controllers/Server/VariablesController.php +++ b/src/Controllers/Server/VariablesController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Server; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Providers\ServerVariables\ServerVariablesProvider; use PhpMyAdmin\ResponseRenderer; @@ -31,7 +32,7 @@ class VariablesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -89,6 +90,8 @@ class VariablesController extends AbstractController 'is_superuser' => $this->dbi->isSuperUser(), 'is_mariadb' => $this->dbi->isMariaDB(), ]); + + return null; } /** diff --git a/src/Controllers/Setup/MainController.php b/src/Controllers/Setup/MainController.php index 6b74caacef..71bc2703ff 100644 --- a/src/Controllers/Setup/MainController.php +++ b/src/Controllers/Setup/MainController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Setup; use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\Config; use PhpMyAdmin\Console; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Header; use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\Response; @@ -21,7 +22,7 @@ use function in_array; use const CONFIG_FILE; -final class MainController +final class MainController implements InvocableController { public function __construct( private readonly ResponseFactory $responseFactory, diff --git a/src/Controllers/Setup/ShowConfigController.php b/src/Controllers/Setup/ShowConfigController.php index 7cd0be7038..9a6fe7f535 100644 --- a/src/Controllers/Setup/ShowConfigController.php +++ b/src/Controllers/Setup/ShowConfigController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Setup; use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\Config\Forms\Setup\ConfigForm; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; @@ -15,7 +16,7 @@ use PhpMyAdmin\Url; use function is_string; -final class ShowConfigController +final class ShowConfigController implements InvocableController { public function __invoke(ServerRequest $request): Response { diff --git a/src/Controllers/Setup/ValidateController.php b/src/Controllers/Setup/ValidateController.php index b8827fc652..0e0d900356 100644 --- a/src/Controllers/Setup/ValidateController.php +++ b/src/Controllers/Setup/ValidateController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Setup; use PhpMyAdmin\Config\Validator; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Core; use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\Response; @@ -19,7 +20,7 @@ use function json_decode; use function json_encode; use function sprintf; -final class ValidateController +final class ValidateController implements InvocableController { public function __construct(private readonly ResponseFactory $responseFactory) { diff --git a/src/Controllers/Sql/ColumnPreferencesController.php b/src/Controllers/Sql/ColumnPreferencesController.php index 65b884e5c0..9c6ddc9a1f 100644 --- a/src/Controllers/Sql/ColumnPreferencesController.php +++ b/src/Controllers/Sql/ColumnPreferencesController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Sql; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -28,7 +29,7 @@ final class ColumnPreferencesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $tableObject = $this->dbi->getTable(Current::$database, Current::$table); $status = false; @@ -54,9 +55,11 @@ final class ColumnPreferencesController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $status->getString()); - return; + return null; } $this->response->setRequestStatus($status); + + return null; } } diff --git a/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php b/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php index 2d8c1a9c82..69ff9e8373 100644 --- a/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php +++ b/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php @@ -5,13 +5,16 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Sql; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Utils\ForeignKey; final class DefaultForeignKeyCheckValueController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->response->addJSON('default_fk_check_value', ForeignKey::isCheckEnabled()); + + return null; } } diff --git a/src/Controllers/Sql/EnumValuesController.php b/src/Controllers/Sql/EnumValuesController.php index 9ea9a251fc..ceff2327ae 100644 --- a/src/Controllers/Sql/EnumValuesController.php +++ b/src/Controllers/Sql/EnumValuesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Sql; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; @@ -26,7 +27,7 @@ final class EnumValuesController extends AbstractController /** * Get possible values for enum fields during grid edit. */ - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $column = $request->getParsedBodyParam('column'); $currValue = $request->getParsedBodyParam('curr_value'); @@ -36,7 +37,7 @@ final class EnumValuesController extends AbstractController $this->response->addJSON('message', __('Error in processing request')); $this->response->setRequestStatus(false); - return; + return null; } $dropdown = $this->template->render('sql/enum_column_dropdown', [ @@ -45,5 +46,7 @@ final class EnumValuesController extends AbstractController ]); $this->response->addJSON('dropdown', $dropdown); + + return null; } } diff --git a/src/Controllers/Sql/RelationalValuesController.php b/src/Controllers/Sql/RelationalValuesController.php index bf90961d78..1baaa891e9 100644 --- a/src/Controllers/Sql/RelationalValuesController.php +++ b/src/Controllers/Sql/RelationalValuesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Sql; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; @@ -26,7 +27,7 @@ final class RelationalValuesController extends AbstractController * * During grid edit, if we have a relational field, show the dropdown for it. */ - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $column = $request->getParsedBodyParam('column'); $relationKeyOrDisplayColumn = $request->getParsedBodyParam('relation_key_or_display_column'); @@ -44,5 +45,7 @@ final class RelationalValuesController extends AbstractController (string) $currValue, ); $this->response->addJSON('dropdown', $dropdown); + + return null; } } diff --git a/src/Controllers/Sql/SetValuesController.php b/src/Controllers/Sql/SetValuesController.php index ba477471f4..d96b3df379 100644 --- a/src/Controllers/Sql/SetValuesController.php +++ b/src/Controllers/Sql/SetValuesController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Sql; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; @@ -27,7 +28,7 @@ final class SetValuesController extends AbstractController /** * Get possible values for SET fields during grid edit. */ - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $column = $request->getParsedBodyParam('column'); $currentValue = $request->getParsedBodyParam('curr_value'); @@ -39,7 +40,7 @@ final class SetValuesController extends AbstractController $this->response->addJSON('message', __('Error in processing request')); $this->response->setRequestStatus(false); - return; + return null; } // If the $currentValue was truncated, we should fetch the correct full values from the table. @@ -58,5 +59,7 @@ final class SetValuesController extends AbstractController ]); $this->response->addJSON('select', $select); + + return null; } } diff --git a/src/Controllers/Sql/SqlController.php b/src/Controllers/Sql/SqlController.php index d1998b0384..055155d8f9 100644 --- a/src/Controllers/Sql/SqlController.php +++ b/src/Controllers/Sql/SqlController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ParseAnalyze; @@ -39,7 +40,7 @@ class SqlController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['display_query'] ??= null; $GLOBALS['ajax_reload'] ??= null; @@ -128,7 +129,7 @@ class SqlController extends AbstractController // set $goto to what will be displayed if query returns 0 rows $GLOBALS['goto'] = ''; } elseif (! $this->checkParameters(['sql_query'])) { - return; + return null; } /** @@ -173,7 +174,7 @@ class SqlController extends AbstractController if ($storeBkm && $bkmFields !== null) { $this->addBookmark($GLOBALS['goto'], $bkmFields, (bool) $bkmAllUsers); - return; + return null; } /** @@ -202,6 +203,8 @@ class SqlController extends AbstractController $GLOBALS['sql_query'], $GLOBALS['complete_query'] ?? null, )); + + return null; } /** @param array $bkmFields */ diff --git a/src/Controllers/Table/AddFieldController.php b/src/Controllers/Table/AddFieldController.php index 3112a09bee..d976a1e4d4 100644 --- a/src/Controllers/Table/AddFieldController.php +++ b/src/Controllers/Table/AddFieldController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -48,7 +49,7 @@ class AddFieldController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; $GLOBALS['message'] ??= null; @@ -59,7 +60,7 @@ class AddFieldController extends AbstractController $this->addScriptFiles(['table/structure.js']); if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -94,7 +95,7 @@ class AddFieldController extends AbstractController if (isset($_POST['preview_sql'])) { Core::previewSQL($GLOBALS['sql_query']); - return; + return null; } $result = $createAddField->tryColumnCreationQuery( @@ -108,7 +109,7 @@ class AddFieldController extends AbstractController $this->response->addHTML($errorMessageHtml ?? ''); $this->response->setRequestStatus(false); - return; + return null; } // Update comment table for mime types [MIME] @@ -151,7 +152,7 @@ class AddFieldController extends AbstractController ]), ); - return; + return null; } $urlParams = ['db' => Current::$database, 'table' => Current::$table]; @@ -164,12 +165,12 @@ class AddFieldController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -178,22 +179,24 @@ class AddFieldController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $this->addScriptFiles(['vendor/jquery/jquery.uitablefilter.js']); if (! $this->checkParameters(['server', 'db', 'table'])) { - return; + return null; } $templateData = $this->columnsDefinition->displayForm($userPrivileges, '/table/add-field', $numFields); $this->render('columns_definitions/column_definitions_form', $templateData); + + return null; } } diff --git a/src/Controllers/Table/ChangeController.php b/src/Controllers/Table/ChangeController.php index a6cc4a0df2..6072d477a7 100644 --- a/src/Controllers/Table/ChangeController.php +++ b/src/Controllers/Table/ChangeController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -49,7 +50,7 @@ class ChangeController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['disp_message'] ??= null; $GLOBALS['urlParams'] ??= null; @@ -68,12 +69,12 @@ class ChangeController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -82,12 +83,12 @@ class ChangeController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $this->setInsertRowsParam($request->getParsedBodyParam('insert_rows')); @@ -290,6 +291,8 @@ class ChangeController extends AbstractController } $this->response->addHTML($htmlOutput); + + return null; } /** diff --git a/src/Controllers/Table/ChangeRowsController.php b/src/Controllers/Table/ChangeRowsController.php index 19bc922a48..cca4a760ad 100644 --- a/src/Controllers/Table/ChangeRowsController.php +++ b/src/Controllers/Table/ChangeRowsController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -23,7 +24,7 @@ final class ChangeRowsController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['where_clause'] ??= null; @@ -36,7 +37,7 @@ final class ChangeRowsController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No row selected.')); - return; + return null; } // As we got the rows to be edited from the @@ -49,5 +50,7 @@ final class ChangeRowsController extends AbstractController } ($this->changeController)($request); + + return null; } } diff --git a/src/Controllers/Table/ChartController.php b/src/Controllers/Table/ChartController.php index 71b6e62729..43c8ce82e1 100644 --- a/src/Controllers/Table/ChartController.php +++ b/src/Controllers/Table/ChartController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\FieldMetadata; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -43,18 +44,18 @@ class ChartController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; if (isset($_REQUEST['pos'], $_REQUEST['session_max_rows']) && $request->isAjax()) { if (Current::$table !== '' && Current::$database !== '' && ! $this->checkParameters(['db', 'table'])) { - return; + return null; } $this->ajax($request); - return; + return null; } // Throw error if no sql query is set @@ -64,7 +65,7 @@ class ChartController extends AbstractController Message::error(__('No SQL query was set to fetch data.'))->getDisplay(), ); - return; + return null; } $this->addScriptFiles([ @@ -90,7 +91,7 @@ class ChartController extends AbstractController */ if (Current::$table !== '') { if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $urlParams = ['db' => Current::$database, 'table' => Current::$table]; @@ -103,12 +104,12 @@ class ChartController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -117,12 +118,12 @@ class ChartController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $urlParams['goto'] = Util::getScriptNameForOption($config->settings['DefaultTabTable'], 'table'); @@ -133,7 +134,7 @@ class ChartController extends AbstractController $urlParams['back'] = Url::getFromRoute('/sql'); if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption($config->settings['DefaultTabDatabase'], 'database'); @@ -145,12 +146,12 @@ class ChartController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } } else { $urlParams['goto'] = Util::getScriptNameForOption($config->settings['DefaultTabServer'], 'server'); @@ -190,7 +191,7 @@ class ChartController extends AbstractController __('No numeric columns present in the table to plot.'), ); - return; + return null; } $urlParams['db'] = Current::$database; @@ -208,6 +209,8 @@ class ChartController extends AbstractController 'table_has_a_numeric_column' => true, 'start_and_number_of_rows_fieldset' => $startAndNumberOfRowsFieldset, ]); + + return null; } /** diff --git a/src/Controllers/Table/CreateController.php b/src/Controllers/Table/CreateController.php index d19ec01c1b..986520f6a9 100644 --- a/src/Controllers/Table/CreateController.php +++ b/src/Controllers/Table/CreateController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\CreateAddField; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\ColumnsDefinition; @@ -44,10 +45,10 @@ class CreateController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $this->checkParameters(['db'])) { - return; + return null; } $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -105,7 +106,7 @@ class CreateController extends AbstractController if (isset($_POST['preview_sql'])) { Core::previewSQL($GLOBALS['sql_query']); - return; + return null; } // Executes the query @@ -139,7 +140,7 @@ class CreateController extends AbstractController $this->response->addJSON('message', $this->dbi->getError()); } - return; + return null; } // Do not display the table in the header since it hasn't been created yet @@ -148,12 +149,14 @@ class CreateController extends AbstractController $this->addScriptFiles(['vendor/jquery/jquery.uitablefilter.js']); if (! $this->checkParameters(['server', 'db'])) { - return; + return null; } $templateData = $this->columnsDefinition->displayForm($userPrivileges, '/table/create', $numFields); $this->render('columns_definitions/column_definitions_form', $templateData); + + return null; } /** diff --git a/src/Controllers/Table/DeleteConfirmController.php b/src/Controllers/Table/DeleteConfirmController.php index cfba4a22f8..eda3b93238 100644 --- a/src/Controllers/Table/DeleteConfirmController.php +++ b/src/Controllers/Table/DeleteConfirmController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -31,7 +32,7 @@ final class DeleteConfirmController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -42,11 +43,11 @@ final class DeleteConfirmController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No row selected.')); - return; + return null; } if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -62,12 +63,12 @@ final class DeleteConfirmController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -76,12 +77,12 @@ final class DeleteConfirmController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $this->render('table/delete/confirm', [ @@ -91,5 +92,7 @@ final class DeleteConfirmController extends AbstractController 'sql_query' => $GLOBALS['sql_query'], 'is_foreign_key_check' => ForeignKey::isCheckEnabled(), ]); + + return null; } } diff --git a/src/Controllers/Table/DeleteRowsController.php b/src/Controllers/Table/DeleteRowsController.php index abd1cae39f..1fa40da652 100644 --- a/src/Controllers/Table/DeleteRowsController.php +++ b/src/Controllers/Table/DeleteRowsController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\ConfigStorage\RelationCleanup; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; @@ -32,7 +33,7 @@ final class DeleteRowsController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['goto'] ??= null; $GLOBALS['disp_message'] ??= null; @@ -96,5 +97,7 @@ final class DeleteRowsController extends AbstractController $GLOBALS['sql_query'], null, )); + + return null; } } diff --git a/src/Controllers/Table/DropColumnConfirmationController.php b/src/Controllers/Table/DropColumnConfirmationController.php index b2626056a3..d171ff8cd7 100644 --- a/src/Controllers/Table/DropColumnConfirmationController.php +++ b/src/Controllers/Table/DropColumnConfirmationController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -28,7 +29,7 @@ final class DropColumnConfirmationController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $fields = $request->getParsedBodyParam('selected_fld'); try { @@ -38,11 +39,11 @@ final class DropColumnConfirmationController extends AbstractController } catch (InvalidIdentifier $exception) { $this->sendErrorResponse($exception->getMessage()); - return; + return null; } catch (InvalidArgumentException) { $this->sendErrorResponse(__('No column selected.')); - return; + return null; } if (! $this->dbTableExists->selectDatabase($db)) { @@ -50,12 +51,12 @@ final class DropColumnConfirmationController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } if (! $this->dbTableExists->hasTable($db, $table)) { @@ -63,12 +64,12 @@ final class DropColumnConfirmationController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $this->render('table/structure/drop_confirm', [ @@ -76,5 +77,7 @@ final class DropColumnConfirmationController extends AbstractController 'table' => $table->getName(), 'fields' => $fields, ]); + + return null; } } diff --git a/src/Controllers/Table/DropColumnController.php b/src/Controllers/Table/DropColumnController.php index f6658d2dad..c14298c9ac 100644 --- a/src/Controllers/Table/DropColumnController.php +++ b/src/Controllers/Table/DropColumnController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\FlashMessages; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -31,7 +32,7 @@ final class DropColumnController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $selected = $_POST['selected'] ?? []; @@ -39,7 +40,7 @@ final class DropColumnController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return; + return null; } $selectedCount = count($selected); @@ -76,5 +77,7 @@ final class DropColumnController extends AbstractController $this->flash->addMessage($message->isError() ? 'danger' : 'success', $message->getMessage()); $this->redirect('/table/structure', ['db' => Current::$database, 'table' => Current::$table]); + + return null; } } diff --git a/src/Controllers/Table/ExportController.php b/src/Controllers/Table/ExportController.php index cc11332f7f..5ead08f031 100644 --- a/src/Controllers/Table/ExportController.php +++ b/src/Controllers/Table/ExportController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Config\PageSettings; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\Export\Options; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Plugins; @@ -36,7 +37,7 @@ class ExportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -50,7 +51,7 @@ class ExportController extends AbstractController $this->addScriptFiles(['export.js']); if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -105,7 +106,7 @@ class ExportController extends AbstractController __('Could not load export plugins, please check your installation!'), )->getDisplay()); - return; + return null; } $exportType = 'table'; @@ -129,5 +130,7 @@ class ExportController extends AbstractController 'page_settings_error_html' => $pageSettingsErrorHtml, 'page_settings_html' => $pageSettingsHtml, ])); + + return null; } } diff --git a/src/Controllers/Table/ExportRowsController.php b/src/Controllers/Table/ExportRowsController.php index 32a11a8af2..aaa2884298 100644 --- a/src/Controllers/Table/ExportRowsController.php +++ b/src/Controllers/Table/ExportRowsController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -23,7 +24,7 @@ final class ExportRowsController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['single_table'] ??= null; $GLOBALS['where_clause'] ??= null; @@ -32,7 +33,7 @@ final class ExportRowsController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No row selected.')); - return; + return null; } // Needed to allow SQL export @@ -48,5 +49,7 @@ final class ExportRowsController extends AbstractController } ($this->exportController)($request); + + return null; } } diff --git a/src/Controllers/Table/FindReplaceController.php b/src/Controllers/Table/FindReplaceController.php index 9a9641cc0b..c889b55810 100644 --- a/src/Controllers/Table/FindReplaceController.php +++ b/src/Controllers/Table/FindReplaceController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -51,12 +52,12 @@ class FindReplaceController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -72,12 +73,12 @@ class FindReplaceController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -86,12 +87,12 @@ class FindReplaceController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $this->loadTableInfo(); @@ -106,7 +107,7 @@ class FindReplaceController extends AbstractController $preview = $this->getReplacePreview($columnIndex, $find, $replaceWith, $useRegex, $connectionCharSet); $this->response->addJSON('preview', $preview); - return; + return null; } $this->addScriptFiles(['table/find_replace.js']); @@ -125,6 +126,8 @@ class FindReplaceController extends AbstractController // Displays the find and replace form $this->displaySelectionFormAction(); + + return null; } /** diff --git a/src/Controllers/Table/GetFieldController.php b/src/Controllers/Table/GetFieldController.php index 8f0a764ed9..d7d534844f 100644 --- a/src/Controllers/Table/GetFieldController.php +++ b/src/Controllers/Table/GetFieldController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Mime; @@ -35,12 +36,12 @@ class GetFieldController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->response->disable(); if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } /* Select database */ @@ -67,7 +68,7 @@ class GetFieldController extends AbstractController /* l10n: In case a SQL query did not pass a security check */ $this->response->addHTML(Message::error(__('There is an issue with your request.'))->getDisplay()); - return; + return null; } $transformKey = (string) $request->getQueryParam('transform_key', ''); @@ -84,7 +85,7 @@ class GetFieldController extends AbstractController $sql, ); - return; + return null; } /* Avoid corrupting data */ @@ -96,5 +97,7 @@ class GetFieldController extends AbstractController mb_strlen($result, '8bit'), ); echo $result; + + return null; } } diff --git a/src/Controllers/Table/GisVisualizationController.php b/src/Controllers/Table/GisVisualizationController.php index e3a4842e96..da87a1390e 100644 --- a/src/Controllers/Table/GisVisualizationController.php +++ b/src/Controllers/Table/GisVisualizationController.php @@ -13,6 +13,7 @@ use PhpMyAdmin\DbTableExists; use PhpMyAdmin\FieldMetadata; use PhpMyAdmin\Gis\GisVisualization; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; @@ -40,10 +41,10 @@ final class GisVisualizationController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -58,12 +59,12 @@ final class GisVisualizationController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } // SQL query for retrieving GIS data @@ -76,7 +77,7 @@ final class GisVisualizationController extends AbstractController Message::error(__('No SQL query was set to fetch data.'))->getDisplay(), ); - return; + return null; } $meta = $this->getColumnMeta($sqlQuery); @@ -98,7 +99,7 @@ final class GisVisualizationController extends AbstractController Message::error(__('No spatial column found for this SQL query.'))->getDisplay(), ); - return; + return null; } // Get settings if any posted @@ -116,7 +117,7 @@ final class GisVisualizationController extends AbstractController $filename = $visualization->getSpatialColumn(); $visualization->toFile($filename, $_GET['fileFormat']); - return; + return null; } $this->addScriptFiles(['vendor/openlayers/OpenLayers.js', 'table/gis_visualization.js']); @@ -162,6 +163,8 @@ final class GisVisualizationController extends AbstractController ]); $this->response->addHTML($html); + + return null; } /** diff --git a/src/Controllers/Table/ImportController.php b/src/Controllers/Table/ImportController.php index 988b5c1c9f..5579c596d6 100644 --- a/src/Controllers/Table/ImportController.php +++ b/src/Controllers/Table/ImportController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Encoding; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -41,7 +42,7 @@ final class ImportController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['SESSION_KEY'] ??= null; @@ -54,7 +55,7 @@ final class ImportController extends AbstractController $this->addScriptFiles(['import.js']); if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -68,12 +69,12 @@ final class ImportController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -82,12 +83,12 @@ final class ImportController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/import'); @@ -103,7 +104,7 @@ final class ImportController extends AbstractController 'Could not load import plugins, please check your installation!', ))->getDisplay()); - return; + return null; } $offset = null; @@ -164,5 +165,7 @@ final class ImportController extends AbstractController 'user_upload_dir' => Util::userDir($config->settings['UploadDir'] ?? ''), 'local_files' => Import::getLocalFiles($importList), ]); + + return null; } } diff --git a/src/Controllers/Table/IndexRenameController.php b/src/Controllers/Table/IndexRenameController.php index 9f9b40c917..86659fb326 100644 --- a/src/Controllers/Table/IndexRenameController.php +++ b/src/Controllers/Table/IndexRenameController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -35,13 +36,13 @@ final class IndexRenameController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -57,12 +58,12 @@ final class IndexRenameController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -71,12 +72,12 @@ final class IndexRenameController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $oldIndexName = $request->getParsedBodyParam('old_index'); @@ -92,7 +93,7 @@ final class IndexRenameController extends AbstractController $this->render('table/index_rename_form', ['index' => $index, 'form_params' => $formParams]); - return; + return null; } // coming already from form @@ -114,7 +115,7 @@ final class IndexRenameController extends AbstractController $this->template->render('preview_sql', ['query_data' => $sqlQuery]), ); - return; + return null; } $logicError = $this->indexes->getError(); @@ -122,7 +123,7 @@ final class IndexRenameController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $logicError); - return; + return null; } $this->dbi->query($sqlQuery); @@ -145,5 +146,7 @@ final class IndexRenameController extends AbstractController 'indexes_duplicates' => $indexesDuplicates, ]), ); + + return null; } } diff --git a/src/Controllers/Table/IndexesController.php b/src/Controllers/Table/IndexesController.php index 368d4fd098..2c7773e4f3 100644 --- a/src/Controllers/Table/IndexesController.php +++ b/src/Controllers/Table/IndexesController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -44,14 +45,14 @@ class IndexesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! isset($_POST['create_edit_table'])) { if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -67,12 +68,12 @@ class IndexesController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -81,12 +82,12 @@ class IndexesController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } } @@ -123,7 +124,7 @@ class IndexesController extends AbstractController $this->template->render('preview_sql', ['query_data' => $sqlQuery]), ); - return; + return null; } $logicError = $this->indexes->getError(); @@ -131,7 +132,7 @@ class IndexesController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $logicError); - return; + return null; } $this->dbi->query($sqlQuery); @@ -158,17 +159,19 @@ class IndexesController extends AbstractController ]), ); - return; + return null; } /** @var StructureController $controller */ $controller = ContainerBuilder::getContainer()->get(StructureController::class); $controller($request); - return; + return null; } $this->displayForm($index); + + return null; } /** diff --git a/src/Controllers/Table/Maintenance/AnalyzeController.php b/src/Controllers/Table/Maintenance/AnalyzeController.php index ae6cb41048..c1af92d0d5 100644 --- a/src/Controllers/Table/Maintenance/AnalyzeController.php +++ b/src/Controllers/Table/Maintenance/AnalyzeController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Table\Maintenance; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -32,7 +33,7 @@ final class AnalyzeController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $selectedTablesParam = $request->getParsedBodyParam('selected_tbl'); @@ -44,7 +45,7 @@ final class AnalyzeController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } try { @@ -58,14 +59,14 @@ final class AnalyzeController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message->getDisplay()); - return; + return null; } if ($this->config->get('DisableMultiTableMaintenance') && count($selectedTables) > 1) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('Maintenance operations on multiple tables are disabled.')); - return; + return null; } [$rows, $query] = $this->model->getAnalyzeTableRows($database, $selectedTables); @@ -77,5 +78,7 @@ final class AnalyzeController extends AbstractController ); $this->render('table/maintenance/analyze', ['message' => $message, 'rows' => $rows]); + + return null; } } diff --git a/src/Controllers/Table/Maintenance/CheckController.php b/src/Controllers/Table/Maintenance/CheckController.php index 5328e5adaf..7ec546e0db 100644 --- a/src/Controllers/Table/Maintenance/CheckController.php +++ b/src/Controllers/Table/Maintenance/CheckController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Table\Maintenance; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -32,7 +33,7 @@ final class CheckController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $selectedTablesParam = $request->getParsedBodyParam('selected_tbl'); @@ -44,7 +45,7 @@ final class CheckController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } try { @@ -58,14 +59,14 @@ final class CheckController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message->getDisplay()); - return; + return null; } if ($this->config->get('DisableMultiTableMaintenance') && count($selectedTables) > 1) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('Maintenance operations on multiple tables are disabled.')); - return; + return null; } [$rows, $query] = $this->model->getCheckTableRows($database, $selectedTables); @@ -83,5 +84,7 @@ final class CheckController extends AbstractController 'rows' => $rows, 'indexes_problems' => $indexesProblems, ]); + + return null; } } diff --git a/src/Controllers/Table/Maintenance/ChecksumController.php b/src/Controllers/Table/Maintenance/ChecksumController.php index 02a56c12e0..15ac0c29c3 100644 --- a/src/Controllers/Table/Maintenance/ChecksumController.php +++ b/src/Controllers/Table/Maintenance/ChecksumController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Table\Maintenance; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -32,7 +33,7 @@ final class ChecksumController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $selectedTablesParam = $request->getParsedBodyParam('selected_tbl'); @@ -44,7 +45,7 @@ final class ChecksumController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } try { @@ -58,14 +59,14 @@ final class ChecksumController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message->getDisplay()); - return; + return null; } if ($this->config->get('DisableMultiTableMaintenance') && count($selectedTables) > 1) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('Maintenance operations on multiple tables are disabled.')); - return; + return null; } [$rows, $query, $warnings] = $this->model->getChecksumTableRows($database, $selectedTables); @@ -77,5 +78,7 @@ final class ChecksumController extends AbstractController ); $this->render('table/maintenance/checksum', ['message' => $message, 'rows' => $rows, 'warnings' => $warnings]); + + return null; } } diff --git a/src/Controllers/Table/Maintenance/OptimizeController.php b/src/Controllers/Table/Maintenance/OptimizeController.php index 21d6ba1418..e753fe6e0f 100644 --- a/src/Controllers/Table/Maintenance/OptimizeController.php +++ b/src/Controllers/Table/Maintenance/OptimizeController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Table\Maintenance; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -32,7 +33,7 @@ final class OptimizeController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $selectedTablesParam = $request->getParsedBodyParam('selected_tbl'); @@ -44,7 +45,7 @@ final class OptimizeController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } try { @@ -58,14 +59,14 @@ final class OptimizeController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message->getDisplay()); - return; + return null; } if ($this->config->get('DisableMultiTableMaintenance') && count($selectedTables) > 1) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('Maintenance operations on multiple tables are disabled.')); - return; + return null; } [$rows, $query] = $this->model->getOptimizeTableRows($database, $selectedTables); @@ -77,5 +78,7 @@ final class OptimizeController extends AbstractController ); $this->render('table/maintenance/optimize', ['message' => $message, 'rows' => $rows]); + + return null; } } diff --git a/src/Controllers/Table/Maintenance/RepairController.php b/src/Controllers/Table/Maintenance/RepairController.php index 47d28d5267..c64ad2efaa 100644 --- a/src/Controllers/Table/Maintenance/RepairController.php +++ b/src/Controllers/Table/Maintenance/RepairController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Table\Maintenance; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -32,7 +33,7 @@ final class RepairController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $selectedTablesParam = $request->getParsedBodyParam('selected_tbl'); @@ -44,7 +45,7 @@ final class RepairController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return; + return null; } try { @@ -58,14 +59,14 @@ final class RepairController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message->getDisplay()); - return; + return null; } if ($this->config->get('DisableMultiTableMaintenance') && count($selectedTables) > 1) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('Maintenance operations on multiple tables are disabled.')); - return; + return null; } [$rows, $query] = $this->model->getRepairTableRows($database, $selectedTables); @@ -77,5 +78,7 @@ final class RepairController extends AbstractController ); $this->render('table/maintenance/repair', ['message' => $message, 'rows' => $rows]); + + return null; } } diff --git a/src/Controllers/Table/Partition/AnalyzeController.php b/src/Controllers/Table/Partition/AnalyzeController.php index ebbcd9f8ff..15faa6bc04 100644 --- a/src/Controllers/Table/Partition/AnalyzeController.php +++ b/src/Controllers/Table/Partition/AnalyzeController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Table\Partition; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -29,7 +30,7 @@ final class AnalyzeController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -41,7 +42,7 @@ final class AnalyzeController extends AbstractController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return; + return null; } [$rows, $query] = $this->model->analyze($database, $table, $partitionName); @@ -57,5 +58,7 @@ final class AnalyzeController extends AbstractController 'message' => $message, 'rows' => $rows, ]); + + return null; } } diff --git a/src/Controllers/Table/Partition/CheckController.php b/src/Controllers/Table/Partition/CheckController.php index ec398d1910..05e46f7046 100644 --- a/src/Controllers/Table/Partition/CheckController.php +++ b/src/Controllers/Table/Partition/CheckController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Table\Partition; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -29,7 +30,7 @@ final class CheckController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -41,7 +42,7 @@ final class CheckController extends AbstractController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return; + return null; } [$rows, $query] = $this->model->check($database, $table, $partitionName); @@ -57,5 +58,7 @@ final class CheckController extends AbstractController 'message' => $message, 'rows' => $rows, ]); + + return null; } } diff --git a/src/Controllers/Table/Partition/DropController.php b/src/Controllers/Table/Partition/DropController.php index b220b53975..3b5ff176a3 100644 --- a/src/Controllers/Table/Partition/DropController.php +++ b/src/Controllers/Table/Partition/DropController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Table\Partition; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -29,7 +30,7 @@ final class DropController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -41,7 +42,7 @@ final class DropController extends AbstractController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return; + return null; } [$result, $query] = $this->model->drop($database, $table, $partitionName); @@ -61,5 +62,7 @@ final class DropController extends AbstractController } $this->render('table/partition/drop', ['partition_name' => $partitionName, 'message' => $message]); + + return null; } } diff --git a/src/Controllers/Table/Partition/OptimizeController.php b/src/Controllers/Table/Partition/OptimizeController.php index b83663b666..35666cb546 100644 --- a/src/Controllers/Table/Partition/OptimizeController.php +++ b/src/Controllers/Table/Partition/OptimizeController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Table\Partition; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -29,7 +30,7 @@ final class OptimizeController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -41,7 +42,7 @@ final class OptimizeController extends AbstractController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return; + return null; } [$rows, $query] = $this->model->optimize($database, $table, $partitionName); @@ -57,5 +58,7 @@ final class OptimizeController extends AbstractController 'message' => $message, 'rows' => $rows, ]); + + return null; } } diff --git a/src/Controllers/Table/Partition/RebuildController.php b/src/Controllers/Table/Partition/RebuildController.php index 6fa9700a57..bc0a6b111a 100644 --- a/src/Controllers/Table/Partition/RebuildController.php +++ b/src/Controllers/Table/Partition/RebuildController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Table\Partition; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -29,7 +30,7 @@ final class RebuildController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -41,7 +42,7 @@ final class RebuildController extends AbstractController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return; + return null; } [$result, $query] = $this->model->rebuild($database, $table, $partitionName); @@ -61,5 +62,7 @@ final class RebuildController extends AbstractController } $this->render('table/partition/rebuild', ['partition_name' => $partitionName, 'message' => $message]); + + return null; } } diff --git a/src/Controllers/Table/Partition/RepairController.php b/src/Controllers/Table/Partition/RepairController.php index ee5e5bb47b..45b2b7ed69 100644 --- a/src/Controllers/Table/Partition/RepairController.php +++ b/src/Controllers/Table/Partition/RepairController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Table\Partition; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -29,7 +30,7 @@ final class RepairController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -41,7 +42,7 @@ final class RepairController extends AbstractController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return; + return null; } [$rows, $query] = $this->model->repair($database, $table, $partitionName); @@ -57,5 +58,7 @@ final class RepairController extends AbstractController 'message' => $message, 'rows' => $rows, ]); + + return null; } } diff --git a/src/Controllers/Table/Partition/TruncateController.php b/src/Controllers/Table/Partition/TruncateController.php index 9ab1937a40..d55962b60c 100644 --- a/src/Controllers/Table/Partition/TruncateController.php +++ b/src/Controllers/Table/Partition/TruncateController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Table\Partition; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -29,7 +30,7 @@ final class TruncateController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -41,7 +42,7 @@ final class TruncateController extends AbstractController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return; + return null; } [$result, $query] = $this->model->truncate($database, $table, $partitionName); @@ -61,5 +62,7 @@ final class TruncateController extends AbstractController } $this->render('table/partition/truncate', ['partition_name' => $partitionName, 'message' => $message]); + + return null; } } diff --git a/src/Controllers/Table/PrivilegesController.php b/src/Controllers/Table/PrivilegesController.php index ec56ff8cf7..85a16f149c 100644 --- a/src/Controllers/Table/PrivilegesController.php +++ b/src/Controllers/Table/PrivilegesController.php @@ -10,6 +10,7 @@ namespace PhpMyAdmin\Controllers\Table; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -38,7 +39,7 @@ class PrivilegesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { try { $db = DatabaseName::from($request->getParam('db')); @@ -50,7 +51,7 @@ class PrivilegesController extends AbstractController } catch (InvalidIdentifier $exception) { $this->response->addHTML(Message::error($exception->getMessage())->getDisplay()); - return; + return null; } $this->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); @@ -68,7 +69,7 @@ class PrivilegesController extends AbstractController ->getDisplay(), ); - return; + return null; } if (! $isGrantUser && ! $isCreateUser) { @@ -95,5 +96,7 @@ class PrivilegesController extends AbstractController 'privileges' => $privileges, ]); $this->render('export_modal'); + + return null; } } diff --git a/src/Controllers/Table/RecentFavoriteController.php b/src/Controllers/Table/RecentFavoriteController.php index 1cd0aa1269..edec44778d 100644 --- a/src/Controllers/Table/RecentFavoriteController.php +++ b/src/Controllers/Table/RecentFavoriteController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Favorites\RecentFavoriteTable; use PhpMyAdmin\Favorites\RecentFavoriteTables; use PhpMyAdmin\Favorites\TableType; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -20,7 +21,7 @@ use function __; */ final class RecentFavoriteController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { try { $db = DatabaseName::from($request->getParam('db')); @@ -28,7 +29,7 @@ final class RecentFavoriteController extends AbstractController } catch (InvalidIdentifier) { $this->redirect('/', ['message' => __('Invalid database or table name.')]); - return; + return null; } $favoriteTable = new RecentFavoriteTable($db, $table); @@ -36,5 +37,7 @@ final class RecentFavoriteController extends AbstractController RecentFavoriteTables::getInstance(TableType::Favorite)->removeIfInvalid($favoriteTable); $this->redirect('/sql', ['db' => $db->getName(), 'table' => $table->getName()]); + + return null; } } diff --git a/src/Controllers/Table/RelationController.php b/src/Controllers/Table/RelationController.php index 99a9779a04..ba3671f067 100644 --- a/src/Controllers/Table/RelationController.php +++ b/src/Controllers/Table/RelationController.php @@ -13,6 +13,7 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Index; use PhpMyAdmin\ResponseRenderer; @@ -50,7 +51,7 @@ final class RelationController extends AbstractController /** * Index */ - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $options = [ 'CASCADE' => 'CASCADE', @@ -84,7 +85,7 @@ final class RelationController extends AbstractController $this->getDropdownValueForDatabase($storageEngine); } - return; + return null; } $this->addScriptFiles(['table/relation.js']); @@ -130,7 +131,7 @@ final class RelationController extends AbstractController if (isset($_POST['preview_sql'])) { Core::previewSQL($previewSqlData); - return; + return null; } if ($displayQuery !== '' && ! $seenError) { @@ -309,6 +310,8 @@ final class RelationController extends AbstractController 'display_field' => $this->relation->getDisplayField(Current::$database, Current::$table), 'foreign_key_row' => $foreignKeyRow, ]); + + return null; } /** diff --git a/src/Controllers/Table/ReplaceController.php b/src/Controllers/Table/ReplaceController.php index 425faca36b..9b7b30d27d 100644 --- a/src/Controllers/Table/ReplaceController.php +++ b/src/Controllers/Table/ReplaceController.php @@ -15,6 +15,7 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\EditField; use PhpMyAdmin\File; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\InsertEdit; use PhpMyAdmin\Message; @@ -55,12 +56,12 @@ final class ReplaceController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['message'] ??= null; if (! $this->checkParameters(['db', 'table', 'goto'])) { - return; + return null; } $GLOBALS['errorUrl'] ??= null; @@ -289,14 +290,14 @@ final class ReplaceController extends AbstractController $this->moveBackToCallingScript($gotoInclude, $request); - return; + return null; } // If there is a request for SQL previewing. if ($request->hasBodyParam('preview_sql')) { Core::previewSQL($GLOBALS['query']); - return; + return null; } $returnToSqlQuery = ''; @@ -355,7 +356,7 @@ final class ReplaceController extends AbstractController */ $this->doTransformations($mimeMap, $request); - return; + return null; } if (! empty($returnToSqlQuery)) { @@ -377,6 +378,8 @@ final class ReplaceController extends AbstractController } $this->moveBackToCallingScript($gotoInclude, $request); + + return null; } /** @param string[][] $mimeMap */ diff --git a/src/Controllers/Table/SearchController.php b/src/Controllers/Table/SearchController.php index b47a6134a3..e97c5bab40 100644 --- a/src/Controllers/Table/SearchController.php +++ b/src/Controllers/Table/SearchController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -154,10 +155,10 @@ class SearchController extends AbstractController /** * Index action */ - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -173,12 +174,12 @@ class SearchController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -187,12 +188,12 @@ class SearchController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $this->loadTableInfo(); @@ -209,7 +210,7 @@ class SearchController extends AbstractController if (isset($_POST['range_search'])) { $this->rangeSearchAction(); - return; + return null; } /** @@ -220,6 +221,8 @@ class SearchController extends AbstractController } else { $this->doSelectionAction(); } + + return null; } /** diff --git a/src/Controllers/Table/SqlController.php b/src/Controllers/Table/SqlController.php index 2431c912d2..bb241fffa9 100644 --- a/src/Controllers/Table/SqlController.php +++ b/src/Controllers/Table/SqlController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Config\PageSettings; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -37,7 +38,7 @@ class SqlController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; $GLOBALS['goto'] ??= null; @@ -50,7 +51,7 @@ class SqlController extends AbstractController $this->response->addHTML($this->pageSettings->getHTML()); if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $urlParams = ['db' => Current::$database, 'table' => Current::$table]; @@ -66,12 +67,12 @@ class SqlController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -80,12 +81,12 @@ class SqlController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } /** @@ -103,5 +104,7 @@ class SqlController extends AbstractController false, htmlspecialchars($delimiter), )); + + return null; } } diff --git a/src/Controllers/Table/Structure/AddIndexController.php b/src/Controllers/Table/Structure/AddIndexController.php index 6b3c193acd..3504eafa01 100644 --- a/src/Controllers/Table/Structure/AddIndexController.php +++ b/src/Controllers/Table/Structure/AddIndexController.php @@ -4,12 +4,15 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; final class AddIndexController extends AbstractIndexController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->handleIndexCreation($request, 'INDEX'); + + return null; } } diff --git a/src/Controllers/Table/Structure/AddKeyController.php b/src/Controllers/Table/Structure/AddKeyController.php index da90f16443..0b9b95cdbf 100644 --- a/src/Controllers/Table/Structure/AddKeyController.php +++ b/src/Controllers/Table/Structure/AddKeyController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Sql\SqlController; use PhpMyAdmin\Controllers\Table\StructureController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -22,12 +23,14 @@ final class AddKeyController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { ($this->sqlController)($request); $GLOBALS['reload'] = true; ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Table/Structure/BrowseController.php b/src/Controllers/Table/Structure/BrowseController.php index 65e9d111fc..070db1cc85 100644 --- a/src/Controllers/Table/Structure/BrowseController.php +++ b/src/Controllers/Table/Structure/BrowseController.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ParseAnalyze; use PhpMyAdmin\ResponseRenderer; @@ -24,16 +25,18 @@ final class BrowseController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (empty($_POST['selected_fld'])) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return; + return null; } $this->displayTableBrowseForSelectedColumns($GLOBALS['goto']); + + return null; } /** diff --git a/src/Controllers/Table/Structure/CentralColumnsAddController.php b/src/Controllers/Table/Structure/CentralColumnsAddController.php index 7555150ec3..c282557d5a 100644 --- a/src/Controllers/Table/Structure/CentralColumnsAddController.php +++ b/src/Controllers/Table/Structure/CentralColumnsAddController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Database\CentralColumns; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Message; @@ -28,7 +29,7 @@ final class CentralColumnsAddController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['message'] ??= null; @@ -38,7 +39,7 @@ final class CentralColumnsAddController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return; + return null; } Assert::allString($selected); @@ -59,5 +60,7 @@ final class CentralColumnsAddController extends AbstractController } ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Table/Structure/CentralColumnsRemoveController.php b/src/Controllers/Table/Structure/CentralColumnsRemoveController.php index 39da34621b..c855506890 100644 --- a/src/Controllers/Table/Structure/CentralColumnsRemoveController.php +++ b/src/Controllers/Table/Structure/CentralColumnsRemoveController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\Database\CentralColumns; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -28,7 +29,7 @@ final class CentralColumnsRemoveController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['message'] ??= null; @@ -38,7 +39,7 @@ final class CentralColumnsRemoveController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return; + return null; } Assert::allString($selected); @@ -54,5 +55,7 @@ final class CentralColumnsRemoveController extends AbstractController } ($this->structureController)($request); + + return null; } } diff --git a/src/Controllers/Table/Structure/ChangeController.php b/src/Controllers/Table/Structure/ChangeController.php index 198861c02d..6cee2c6143 100644 --- a/src/Controllers/Table/Structure/ChangeController.php +++ b/src/Controllers/Table/Structure/ChangeController.php @@ -8,6 +8,7 @@ use PhpMyAdmin\ColumnFull; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\ColumnsDefinition; @@ -34,16 +35,16 @@ final class ChangeController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $this->checkParameters(['server', 'db', 'table'])) { - return; + return null; } if ($request->getParam('change_column') !== null) { $this->displayHtmlForColumnChange([$request->getParam('field')]); - return; + return null; } $selected = $request->getParsedBodyParam('selected_fld', []); @@ -52,10 +53,12 @@ final class ChangeController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return; + return null; } $this->displayHtmlForColumnChange($selected); + + return null; } /** diff --git a/src/Controllers/Table/Structure/FulltextController.php b/src/Controllers/Table/Structure/FulltextController.php index 05c7374ad3..55ef36904f 100644 --- a/src/Controllers/Table/Structure/FulltextController.php +++ b/src/Controllers/Table/Structure/FulltextController.php @@ -4,12 +4,15 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; final class FulltextController extends AbstractIndexController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->handleIndexCreation($request, 'FULLTEXT'); + + return null; } } diff --git a/src/Controllers/Table/Structure/MoveColumnsController.php b/src/Controllers/Table/Structure/MoveColumnsController.php index b2d05d6879..a729830392 100644 --- a/src/Controllers/Table/Structure/MoveColumnsController.php +++ b/src/Controllers/Table/Structure/MoveColumnsController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -40,11 +41,11 @@ final class MoveColumnsController extends AbstractController $this->tableObj = $this->dbi->getTable(Current::$database, Current::$table); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $moveColumns = $request->getParsedBodyParam('move_columns'); if (! is_array($moveColumns) || ! $request->isAjax()) { - return; + return null; } $this->dbi->selectDb(Current::$database); @@ -131,7 +132,7 @@ final class MoveColumnsController extends AbstractController if ($changes === [] && ! isset($_REQUEST['preview_sql'])) { // should never happen $this->response->setRequestStatus(false); - return; + return null; } // query for moving the columns @@ -147,7 +148,7 @@ final class MoveColumnsController extends AbstractController $this->template->render('preview_sql', ['query_data' => $sqlQuery]), ); - return; + return null; } $this->dbi->tryQuery($sqlQuery); @@ -156,7 +157,7 @@ final class MoveColumnsController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error($tmpError)); - return; + return null; } $message = Message::success( @@ -164,5 +165,7 @@ final class MoveColumnsController extends AbstractController ); $this->response->addJSON('message', $message); $this->response->addJSON('columns', $columnNames); + + return null; } } diff --git a/src/Controllers/Table/Structure/PartitioningController.php b/src/Controllers/Table/Structure/PartitioningController.php index 0fb173b1a3..cee165ddda 100644 --- a/src/Controllers/Table/Structure/PartitioningController.php +++ b/src/Controllers/Table/Structure/PartitioningController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\CreateAddField; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Partitioning\TablePartitionDefinition; @@ -42,14 +43,14 @@ final class PartitioningController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (isset($_POST['save_partitioning'])) { $this->dbi->selectDb(Current::$database); $this->updatePartitioning(); ($this->structureController)($request); - return; + return null; } $this->pageSettings->init('TableStructure'); @@ -75,6 +76,8 @@ final class PartitioningController extends AbstractController 'partition_details' => $partitionDetails, 'storage_engines' => $storageEngines, ]); + + return null; } /** diff --git a/src/Controllers/Table/Structure/PrimaryController.php b/src/Controllers/Table/Structure/PrimaryController.php index 402b0e99fb..0e6afe052d 100644 --- a/src/Controllers/Table/Structure/PrimaryController.php +++ b/src/Controllers/Table/Structure/PrimaryController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -35,7 +36,7 @@ final class PrimaryController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['message'] ??= null; $GLOBALS['urlParams'] ??= null; @@ -48,7 +49,7 @@ final class PrimaryController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return; + return null; } $this->dbi->selectDb(Current::$database); @@ -59,7 +60,7 @@ final class PrimaryController extends AbstractController if ($hasPrimary && $deletionConfirmed === null) { if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -75,12 +76,12 @@ final class PrimaryController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -89,12 +90,12 @@ final class PrimaryController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $this->render('table/structure/primary', [ @@ -103,7 +104,7 @@ final class PrimaryController extends AbstractController 'selected' => $selected, ]); - return; + return null; } if ($deletionConfirmed === __('Yes') || ! $hasPrimary) { @@ -134,6 +135,8 @@ final class PrimaryController extends AbstractController } ($this->structureController)($request); + + return null; } private function hasPrimaryKey(): bool diff --git a/src/Controllers/Table/Structure/ReservedWordCheckController.php b/src/Controllers/Table/Structure/ReservedWordCheckController.php index 8eb771428d..e3643fb297 100644 --- a/src/Controllers/Table/Structure/ReservedWordCheckController.php +++ b/src/Controllers/Table/Structure/ReservedWordCheckController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\SqlParser\Context; @@ -18,12 +19,12 @@ use function trim; final class ReservedWordCheckController extends AbstractController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (Config::getInstance()->settings['ReservedWordDisableWarning'] !== false) { $this->response->setRequestStatus(false); - return; + return null; } $columnsNames = $request->getParsedBodyParam('field_name'); @@ -55,5 +56,7 @@ final class ReservedWordCheckController extends AbstractController implode(',', $reservedKeywordsNames), ), ); + + return null; } } diff --git a/src/Controllers/Table/Structure/SaveController.php b/src/Controllers/Table/Structure/SaveController.php index 53edb12f3d..935065b68e 100644 --- a/src/Controllers/Table/Structure/SaveController.php +++ b/src/Controllers/Table/Structure/SaveController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Index; use PhpMyAdmin\Message; @@ -51,7 +52,7 @@ final class SaveController extends AbstractController $this->tableObj = $this->dbi->getTable(Current::$database, Current::$table); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -62,6 +63,8 @@ final class SaveController extends AbstractController } ($this->structureController)($request); + + return null; } /** diff --git a/src/Controllers/Table/Structure/SpatialController.php b/src/Controllers/Table/Structure/SpatialController.php index 1e4d33f8ea..1ac8cc536a 100644 --- a/src/Controllers/Table/Structure/SpatialController.php +++ b/src/Controllers/Table/Structure/SpatialController.php @@ -4,12 +4,15 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; final class SpatialController extends AbstractIndexController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->handleIndexCreation($request, 'SPATIAL'); + + return null; } } diff --git a/src/Controllers/Table/Structure/UniqueController.php b/src/Controllers/Table/Structure/UniqueController.php index d95333e1ee..bd19086941 100644 --- a/src/Controllers/Table/Structure/UniqueController.php +++ b/src/Controllers/Table/Structure/UniqueController.php @@ -4,12 +4,15 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; final class UniqueController extends AbstractIndexController { - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->handleIndexCreation($request, 'UNIQUE'); + + return null; } } diff --git a/src/Controllers/Table/StructureController.php b/src/Controllers/Table/StructureController.php index 8b4c2f0545..cec4b4c940 100644 --- a/src/Controllers/Table/StructureController.php +++ b/src/Controllers/Table/StructureController.php @@ -17,6 +17,7 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Engines\Innodb; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -63,7 +64,7 @@ class StructureController extends AbstractController $this->tableObj = $this->dbi->getTable(Current::$database, Current::$table); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errorUrl'] ??= null; @@ -78,7 +79,7 @@ class StructureController extends AbstractController $relationParameters = $this->relation->getRelationParameters(); if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $isSystemSchema = Utilities::isSystemSchema(Current::$database); @@ -95,12 +96,12 @@ class StructureController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -109,12 +110,12 @@ class StructureController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $primary = Index::getPrimary($this->dbi, Current::$table, Current::$database); @@ -132,6 +133,8 @@ class StructureController extends AbstractController $isSystemSchema, $request->getRoute(), )); + + return null; } /** diff --git a/src/Controllers/Table/TrackingController.php b/src/Controllers/Table/TrackingController.php index dc6a8be2e6..2156e7be9d 100644 --- a/src/Controllers/Table/TrackingController.php +++ b/src/Controllers/Table/TrackingController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\LanguageManager; @@ -47,7 +48,7 @@ final class TrackingController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -55,7 +56,7 @@ final class TrackingController extends AbstractController $this->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'table/tracking.js']); if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -71,12 +72,12 @@ final class TrackingController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $activeMessage = ''; @@ -144,7 +145,7 @@ final class TrackingController extends AbstractController Core::downloadHeader($downloadInfo['filename'], 'text/x-sql', mb_strlen($downloadInfo['dump'])); echo $downloadInfo['dump']; - return; + return null; } // Export as SQL execution @@ -270,6 +271,8 @@ final class TrackingController extends AbstractController 'tracking_report' => $trackingReport, 'main' => $main, ]); + + return null; } /** @psalm-return 'schema'|'data'|'schema_and_data' */ diff --git a/src/Controllers/Table/ZoomSearchController.php b/src/Controllers/Table/ZoomSearchController.php index 01e60fbbb5..ecf87d6502 100644 --- a/src/Controllers/Table/ZoomSearchController.php +++ b/src/Controllers/Table/ZoomSearchController.php @@ -11,6 +11,7 @@ use PhpMyAdmin\Core; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -79,13 +80,13 @@ class ZoomSearchController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['goto'] ??= null; $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -99,12 +100,12 @@ class ZoomSearchController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); @@ -113,12 +114,12 @@ class ZoomSearchController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } $this->loadTableInfo(); @@ -144,7 +145,7 @@ class ZoomSearchController extends AbstractController if (isset($_POST['get_data_row']) && $_POST['get_data_row'] == true) { $this->getDataRowAction(); - return; + return null; } /** @@ -154,7 +155,7 @@ class ZoomSearchController extends AbstractController if ($request->hasBodyParam('change_tbl_info')) { $this->changeTableInfoAction(); - return; + return null; } //Set default datalabel if not selected @@ -177,7 +178,7 @@ class ZoomSearchController extends AbstractController || $_POST['criteriaColumnNames'][1] === 'pma_null' || $_POST['criteriaColumnNames'][0] == $_POST['criteriaColumnNames'][1] ) { - return; + return null; } if (! isset($GLOBALS['goto'])) { @@ -185,6 +186,8 @@ class ZoomSearchController extends AbstractController } $this->zoomSubmitAction($dataLabel, $GLOBALS['goto']); + + return null; } /** diff --git a/src/Controllers/TableController.php b/src/Controllers/TableController.php index afad69eca4..4508e9b75c 100644 --- a/src/Controllers/TableController.php +++ b/src/Controllers/TableController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -17,15 +18,17 @@ final class TableController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $request->hasBodyParam('db')) { $this->response->setRequestStatus(false); $this->response->addJSON(['message' => Message::error()]); - return; + return null; } $this->response->addJSON(['tables' => $this->dbi->getTables($request->getParsedBodyParam('db'))]); + + return null; } } diff --git a/src/Controllers/ThemeSetController.php b/src/Controllers/ThemeSetController.php index 87eef4870b..3ad648eaee 100644 --- a/src/Controllers/ThemeSetController.php +++ b/src/Controllers/ThemeSetController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Config; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -25,19 +26,19 @@ final class ThemeSetController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $theme = $request->getParsedBodyParam('set_theme'); if (! Config::getInstance()->settings['ThemeManager'] || ! is_string($theme) || $theme === '') { if ($request->isAjax()) { $this->response->addJSON('themeColorMode', ''); - return; + return null; } $this->response->redirect('index.php?route=/' . Url::getCommonRaw([], '&')); - return; + return null; } $this->themeManager->setActiveTheme($theme); @@ -57,9 +58,11 @@ final class ThemeSetController extends AbstractController if ($request->isAjax()) { $this->response->addJSON('themeColorMode', $this->themeManager->theme->getColorMode()); - return; + return null; } $this->response->redirect('index.php?route=/' . Url::getCommonRaw([], '&')); + + return null; } } diff --git a/src/Controllers/ThemesController.php b/src/Controllers/ThemesController.php index 30a56eea51..6ef2b5abaf 100644 --- a/src/Controllers/ThemesController.php +++ b/src/Controllers/ThemesController.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -16,16 +17,18 @@ class ThemesController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $themes = $this->themeManager->getThemesArray(); $themesList = $this->template->render('home/themes', ['themes' => $themes]); if ($request->isAjax()) { $this->response->addJSON('themes', $themesList); - return; + return null; } $this->response->addHTML($themesList); + + return null; } } diff --git a/src/Controllers/Transformation/OverviewController.php b/src/Controllers/Transformation/OverviewController.php index 5fe5e942d5..2d55db7c75 100644 --- a/src/Controllers/Transformation/OverviewController.php +++ b/src/Controllers/Transformation/OverviewController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Transformation; use PhpMyAdmin\Controllers\AbstractController; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -25,7 +26,7 @@ class OverviewController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $header = $this->response->getHeader(); $header->disableMenuAndConsole(); @@ -49,5 +50,7 @@ class OverviewController extends AbstractController } $this->render('transformation_overview', ['mime_types' => $mimeTypes, 'transformations' => $transformations]); + + return null; } } diff --git a/src/Controllers/Transformation/WrapperController.php b/src/Controllers/Transformation/WrapperController.php index bdc03999d6..1cc333fcae 100644 --- a/src/Controllers/Transformation/WrapperController.php +++ b/src/Controllers/Transformation/WrapperController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Core; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\InvalidIdentifier; @@ -47,7 +48,7 @@ class WrapperController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $this->response->getHeader()->setIsTransformationWrapper(true); @@ -55,15 +56,15 @@ class WrapperController extends AbstractController $db = DatabaseName::from($request->getParam('db')); $table = TableName::from($request->getParam('table')); } catch (InvalidIdentifier) { - return; + return null; } if (! $this->dbi->selectDb($db)) { - return; + return null; } if (! $this->dbTableExists->hasTable($db, $table)) { - return; + return null; } $query = $this->getQuery($table, $request->getParam('where_clause'), $request->getParam('where_clause_sign')); @@ -72,12 +73,12 @@ class WrapperController extends AbstractController /* l10n: In case a SQL query did not pass a security check */ $this->response->addHTML(Message::error(__('There is an issue with your request.'))->getDisplay()); - return; + return null; } $row = $this->dbi->query($query)->fetchAssoc(); if ($row === []) { - return; + return null; } $transformKey = $request->getParam('transform_key'); @@ -85,7 +86,7 @@ class WrapperController extends AbstractController ! is_string($transformKey) || $transformKey === '' || ! isset($row[$transformKey]) || $row[$transformKey] === '' ) { - return; + return null; } $mediaTypeMap = []; @@ -135,17 +136,17 @@ class WrapperController extends AbstractController if (str_contains(strtolower($contentMediaType), 'html')) { echo htmlspecialchars($row[$transformKey]); - return; + return null; } echo $row[$transformKey]; - return; + return null; } $srcImage = ImageWrapper::fromString($row[$transformKey]); if ($srcImage === null) { - return; + return null; } $newHeight = $this->formatSize($request->getParam('newHeight')); @@ -172,7 +173,7 @@ class WrapperController extends AbstractController $destImage = ImageWrapper::create($destWidth, $destHeight); if ($destImage === null) { - return; + return null; } $destImage->copyResampled($srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight); @@ -182,6 +183,8 @@ class WrapperController extends AbstractController } else { $destImage->png(); } + + return null; } private function formatSize(mixed $size): int diff --git a/src/Controllers/Triggers/IndexController.php b/src/Controllers/Triggers/IndexController.php index ea11f85a9d..cbcec9a108 100644 --- a/src/Controllers/Triggers/IndexController.php +++ b/src/Controllers/Triggers/IndexController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\Identifiers\TableName; @@ -44,7 +45,7 @@ final class IndexController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['errors'] ??= null; $GLOBALS['urlParams'] ??= null; @@ -59,7 +60,7 @@ final class IndexController extends AbstractController */ if (Current::$table !== '' && in_array(Current::$table, $this->dbi->getTables(Current::$database), true)) { if (! $this->checkParameters(['db', 'table'])) { - return; + return null; } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -70,20 +71,20 @@ final class IndexController extends AbstractController if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $tableName = TableName::tryFrom($request->getParam('table')); if ($tableName === null || ! $this->dbTableExists->hasTable($databaseName, $tableName)) { $this->redirect('/', ['reload' => true, 'message' => __('No table selected.')]); - return; + return null; } } else { Current::$table = ''; if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -96,7 +97,7 @@ final class IndexController extends AbstractController if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } } } elseif (Current::$database !== '') { @@ -162,7 +163,7 @@ final class IndexController extends AbstractController $this->response->addJSON('tableType', 'triggers'); - return; + return null; } } @@ -216,12 +217,12 @@ final class IndexController extends AbstractController $this->response->addJSON('message', $editor); $this->response->addJSON('title', $title); - return; + return null; } $this->response->addHTML("\n\n

" . $title . "

\n\n" . $editor); - return; + return null; } $message = __('Error in processing request:') . ' '; @@ -235,7 +236,7 @@ final class IndexController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return; + return null; } $this->response->addHTML($message->getDisplay()); @@ -254,13 +255,13 @@ final class IndexController extends AbstractController $this->response->addJSON('title', $title); $this->response->addJSON('message', htmlspecialchars(trim($exportData))); - return; + return null; } if ($exportData !== null) { $this->render('triggers/export', ['data' => $exportData, 'item_name' => $triggerName->getName()]); - return; + return null; } $message = Message::error(sprintf( @@ -272,7 +273,7 @@ final class IndexController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return; + return null; } } @@ -288,6 +289,8 @@ final class IndexController extends AbstractController 'is_ajax' => $isAjax, 'error_message' => $message?->getDisplay() ?? '', ]); + + return null; } /** diff --git a/src/Controllers/UserPasswordController.php b/src/Controllers/UserPasswordController.php index 43fd2a782a..216e1299ec 100644 --- a/src/Controllers/UserPasswordController.php +++ b/src/Controllers/UserPasswordController.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Config; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\ResponseRenderer; @@ -29,7 +30,7 @@ class UserPasswordController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $GLOBALS['hostname'] ??= null; $GLOBALS['username'] ??= null; @@ -51,7 +52,7 @@ class UserPasswordController extends AbstractController __('You don\'t have sufficient privileges to be here right now!'), )->getDisplay()); - return; + return null; } $noPass = $request->getParsedBodyParam('nopass'); @@ -81,21 +82,21 @@ class UserPasswordController extends AbstractController $sqlQuery = Generator::getMessage($GLOBALS['change_password_message']['msg'], $sqlQuery, 'success'); $this->response->addJSON('message', $sqlQuery); - return; + return null; } $this->response->addHTML('

' . __('Change password') . '

' . "\n\n"); $this->response->addHTML(Generator::getMessage($message, $sqlQuery, 'success')); $this->render('user_password'); - return; + return null; } if ($request->isAjax()) { $this->response->addJSON('message', $GLOBALS['change_password_message']['msg']); $this->response->setRequestStatus(false); - return; + return null; } } @@ -114,5 +115,7 @@ class UserPasswordController extends AbstractController $GLOBALS['hostname'], $request->getRoute(), )); + + return null; } } diff --git a/src/Controllers/VersionCheckController.php b/src/Controllers/VersionCheckController.php index 41e3b5473c..12232fad5f 100644 --- a/src/Controllers/VersionCheckController.php +++ b/src/Controllers/VersionCheckController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers; use PhpMyAdmin\Core; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; @@ -27,7 +28,7 @@ class VersionCheckController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { $_GET['ajax_request'] = 'true'; @@ -44,7 +45,7 @@ class VersionCheckController extends AbstractController if ($versionDetails === null) { echo json_encode([]); - return; + return null; } $latestCompatible = $this->versionInformation->getLatestCompatibleVersion($versionDetails); @@ -56,5 +57,7 @@ class VersionCheckController extends AbstractController } echo json_encode(['version' => $version, 'date' => $date]); + + return null; } } diff --git a/src/Controllers/View/CreateController.php b/src/Controllers/View/CreateController.php index 843320b895..6c9b541edf 100644 --- a/src/Controllers/View/CreateController.php +++ b/src/Controllers/View/CreateController.php @@ -12,6 +12,7 @@ use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\DbTableExists; use PhpMyAdmin\Html\Generator; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Identifiers\DatabaseName; use PhpMyAdmin\LanguageManager; @@ -55,10 +56,10 @@ class CreateController extends AbstractController parent::__construct($response, $template); } - public function __invoke(ServerRequest $request): void + public function __invoke(ServerRequest $request): Response|null { if (! $this->checkParameters(['db'])) { - return; + return null; } $GLOBALS['urlParams'] ??= null; @@ -76,12 +77,12 @@ class CreateController extends AbstractController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return; + return null; } $this->redirect('/', ['reload' => true, 'message' => __('No databases selected.')]); - return; + return null; } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/structure'); @@ -96,7 +97,7 @@ class CreateController extends AbstractController $this->response->addJSON('message', $GLOBALS['message']); $this->response->setRequestStatus(false); - return; + return null; } $createview = $request->hasBodyParam('createview'); @@ -110,7 +111,7 @@ class CreateController extends AbstractController if (! $ajaxdialog) { $GLOBALS['message'] = Message::rawError($this->dbi->getError()); - return; + return null; } $this->response->addJSON( @@ -122,12 +123,12 @@ class CreateController extends AbstractController ); $this->response->setRequestStatus(false); - return; + return null; } $this->setSuccessResponse($view, $ajaxdialog, $request); - return; + return null; } $GLOBALS['sql_query'] = $request->getParsedBodyParam('sql_query', ''); @@ -200,6 +201,8 @@ class CreateController extends AbstractController 'view_with_options' => self::VIEW_WITH_OPTIONS, 'view_security_options' => self::VIEW_SECURITY_OPTIONS, ]); + + return null; } /** @param mixed[] $view */ diff --git a/src/Routing/Routing.php b/src/Routing/Routing.php index ab36408634..e2abca08b2 100644 --- a/src/Routing/Routing.php +++ b/src/Routing/Routing.php @@ -15,6 +15,7 @@ use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Console; use PhpMyAdmin\Controllers\HomeController; +use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Controllers\Setup\MainController; use PhpMyAdmin\Controllers\Setup\ShowConfigController; use PhpMyAdmin\Controllers\Setup\ValidateController; @@ -31,6 +32,7 @@ use Psr\Container\ContainerInterface; use function __; use function array_pop; +use function assert; use function explode; use function file_exists; use function file_put_contents; @@ -166,11 +168,11 @@ class Routing return $responseFactory->createResponse(StatusCodeInterface::STATUS_BAD_REQUEST); } - /** @psalm-var class-string $controllerName */ + /** @psalm-var class-string $controllerName */ $controllerName = $routeInfo[1]; - /** @psalm-var callable(ServerRequest): (Response|null) $controller */ $controller = $container->get($controllerName); + assert($controller instanceof InvocableController); return $controller($request->withAttribute('routeVars', $routeInfo[2])); } diff --git a/tests/unit/Controllers/AbstractControllerTest.php b/tests/unit/Controllers/AbstractControllerTest.php index 77e4700d97..0c90435e81 100644 --- a/tests/unit/Controllers/AbstractControllerTest.php +++ b/tests/unit/Controllers/AbstractControllerTest.php @@ -8,6 +8,8 @@ use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\Controllers\AbstractController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Html\MySQLDocumentation; +use PhpMyAdmin\Http\Response; +use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Template; use PhpMyAdmin\Tests\AbstractTestCase; @@ -31,6 +33,11 @@ class AbstractControllerTest extends AbstractTestCase $response = new ResponseRenderer(); $template = new Template(); $controller = new class ($response, $template) extends AbstractController { + public function __invoke(ServerRequest $request): Response|null + { + return null; + } + /** @psalm-param non-empty-list $params */ public function testCheckParameters(array $params): bool { @@ -59,6 +66,11 @@ class AbstractControllerTest extends AbstractTestCase $response = new ResponseRenderer(); $controller = new class ($response, new Template()) extends AbstractController { + public function __invoke(ServerRequest $request): Response|null + { + return null; + } + /** @psalm-param non-empty-list $params */ public function testCheckParameters(array $params): bool { @@ -81,6 +93,11 @@ class AbstractControllerTest extends AbstractTestCase $response->setAjax(true); $controller = new class ($response, new Template()) extends AbstractController { + public function __invoke(ServerRequest $request): Response|null + { + return null; + } + /** @psalm-param StatusCodeInterface::STATUS_* $statusCode */ public function testSendErrorResponse(string $message, int $statusCode = 400): void { @@ -102,6 +119,11 @@ class AbstractControllerTest extends AbstractTestCase $response->setAjax(false); $controller = new class ($response, new Template()) extends AbstractController { + public function __invoke(ServerRequest $request): Response|null + { + return null; + } + /** @psalm-param StatusCodeInterface::STATUS_* $statusCode */ public function testSendErrorResponse(string $message, int $statusCode = 400): void { diff --git a/tests/unit/Controllers/JavaScriptMessagesControllerTest.php b/tests/unit/Controllers/JavaScriptMessagesControllerTest.php index 0c226fcd39..84d3dc4017 100644 --- a/tests/unit/Controllers/JavaScriptMessagesControllerTest.php +++ b/tests/unit/Controllers/JavaScriptMessagesControllerTest.php @@ -7,6 +7,7 @@ namespace PhpMyAdmin\Tests\Controllers; use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\Controllers\JavaScriptMessagesController; use PhpMyAdmin\Http\Factory\ResponseFactory; +use PhpMyAdmin\Http\ServerRequest; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; @@ -19,7 +20,8 @@ class JavaScriptMessagesControllerTest extends TestCase { public function testIndex(): void { - $response = (new JavaScriptMessagesController(ResponseFactory::create()))(); + $controller = new JavaScriptMessagesController(ResponseFactory::create()); + $response = $controller(self::createStub(ServerRequest::class)); $actual = (string) $response->getBody(); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode());