diff --git a/app/services_controllers.php b/app/services_controllers.php index 8c71363dc7..874ac5a3b3 100644 --- a/app/services_controllers.php +++ b/app/services_controllers.php @@ -1165,10 +1165,7 @@ return [ ], Table\Structure\AddKeyController::class => [ 'class' => Table\Structure\AddKeyController::class, - 'arguments' => [ - '$sqlController' => '@' . Sql\SqlController::class, - '$structureController' => '@' . Table\StructureController::class, - ], + 'arguments' => ['@response', '@' . Table\StructureController::class, '@table_indexes'], ], Table\Structure\BrowseController::class => [ 'class' => Table\Structure\BrowseController::class, diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 5804116cfc..661ea4338a 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -4880,11 +4880,6 @@ parameters: count: 1 path: src/Controllers/Table/SqlController.php - - - message: "#^Parameter \\#3 \\$selectedColumns of static method PhpMyAdmin\\\\Query\\\\Generator\\:\\:getAddIndexSql\\(\\) expects array\\, array given\\.$#" - count: 1 - path: src/Controllers/Table/Structure/AbstractIndexController.php - - message: "#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\\.$#" count: 1 diff --git a/psalm-baseline.xml b/psalm-baseline.xml index eda88f983f..e780af5f1b 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -808,7 +808,7 @@ - + @@ -816,17 +816,17 @@ - + - + - + @@ -835,12 +835,12 @@ - + - + @@ -972,7 +972,7 @@ - + @@ -1006,7 +1006,7 @@ - + @@ -1059,9 +1059,6 @@ - - - @@ -1103,7 +1100,7 @@ - + @@ -1116,7 +1113,7 @@ - + @@ -1215,7 +1212,7 @@ - + @@ -1291,9 +1288,6 @@ - - - @@ -1446,7 +1440,7 @@ - + @@ -1565,9 +1559,6 @@ - - - @@ -1596,7 +1587,7 @@ - + @@ -1866,7 +1857,7 @@ - + @@ -1874,7 +1865,7 @@ - + @@ -1882,7 +1873,7 @@ - + @@ -1890,7 +1881,7 @@ - + @@ -1980,11 +1971,14 @@ + + + - + getParsedBodyParam('import_type')]]> @@ -2029,12 +2023,12 @@ - + - + @@ -2053,17 +2047,17 @@ - + - + - + @@ -2071,32 +2065,32 @@ - + - + - + - + - + - + @@ -2113,12 +2107,12 @@ - + - + @@ -2133,12 +2127,12 @@ - + - + @@ -2150,7 +2144,7 @@ - + @@ -2162,7 +2156,7 @@ - + @@ -2173,7 +2167,7 @@ - + @@ -2188,7 +2182,7 @@ - + @@ -2267,7 +2261,7 @@ - + @@ -2496,7 +2490,7 @@ - + @@ -2504,7 +2498,7 @@ - + @@ -2515,7 +2509,7 @@ - + @@ -2535,7 +2529,7 @@ - + @@ -2588,12 +2582,12 @@ - + - + @@ -2648,17 +2642,17 @@ - + - + - + @@ -2690,7 +2684,7 @@ - + @@ -2723,7 +2717,7 @@ - + @@ -2739,7 +2733,7 @@ - + @@ -2765,7 +2759,7 @@ - + @@ -2780,7 +2774,7 @@ - + @@ -2795,7 +2789,7 @@ - + @@ -2806,12 +2800,12 @@ - + - + @@ -2821,12 +2815,12 @@ - + - + @@ -2855,7 +2849,7 @@ - + @@ -2900,7 +2894,7 @@ data->status['Uptime']]]> - + @@ -2933,7 +2927,7 @@ data->variables['thread_cache_size']]]> - + @@ -2990,7 +2984,7 @@ - + @@ -3037,7 +3031,7 @@ - + @@ -3066,7 +3060,7 @@ - + @@ -3113,9 +3107,6 @@ - - - @@ -3158,7 +3149,7 @@ - + @@ -3201,9 +3192,6 @@ - - - @@ -3221,7 +3209,7 @@ - + @@ -3253,7 +3241,7 @@ limit->rowCount]]> - + @@ -3291,7 +3279,7 @@ - + @@ -3305,7 +3293,7 @@ - + @@ -3335,7 +3323,7 @@ - + @@ -3343,7 +3331,7 @@ - + @@ -3365,7 +3353,7 @@ - + isError()]]> @@ -3398,9 +3386,6 @@ list]]> - - - @@ -3416,7 +3401,7 @@ - + @@ -3458,7 +3443,7 @@ - + @@ -3505,7 +3490,7 @@ - + @@ -3526,7 +3511,7 @@ - + @@ -3562,7 +3547,7 @@ - + config->get('DisableMultiTableMaintenance')]]> @@ -3570,7 +3555,7 @@ - + config->get('DisableMultiTableMaintenance')]]> @@ -3578,7 +3563,7 @@ - + config->get('DisableMultiTableMaintenance')]]> @@ -3586,7 +3571,7 @@ - + config->get('DisableMultiTableMaintenance')]]> @@ -3594,7 +3579,7 @@ - + config->get('DisableMultiTableMaintenance')]]> @@ -3605,7 +3590,7 @@ - + @@ -3613,7 +3598,7 @@ - + @@ -3622,7 +3607,7 @@ - + @@ -3630,12 +3615,12 @@ - + - + @@ -3643,12 +3628,12 @@ - + - + @@ -3656,12 +3641,12 @@ - + - + @@ -3805,7 +3790,7 @@ - + @@ -3834,7 +3819,7 @@ - + settings['MaxRows']]]> @@ -3861,19 +3846,6 @@ - - - - - - - - - - - - - @@ -4060,7 +4032,7 @@ - + @@ -4069,12 +4041,12 @@ - + - + @@ -4114,9 +4086,6 @@ - - - @@ -4187,7 +4156,7 @@ - + settings['maxRowPlotLimit']]]> @@ -4214,7 +4183,7 @@ - + @@ -4224,7 +4193,7 @@ - + @@ -4269,7 +4238,7 @@ - + diff --git a/resources/templates/table/structure/display_structure.twig b/resources/templates/table/structure/display_structure.twig index 7a95412f7a..bb0da45fb6 100644 --- a/resources/templates/table/structure/display_structure.twig +++ b/resources/templates/table/structure/display_structure.twig @@ -136,11 +136,9 @@ {% if type == 'text' or type == 'blob' or tbl_storage_engine == 'ARCHIVE' or (primary and primary.hasColumn(field_name)) %} {{ get_icon('bd_primary', t('Primary')) }} {% else %} - {{ get_icon('b_primary', t('Primary')) }} @@ -151,11 +149,9 @@ {% if type == 'text' or type == 'blob' or tbl_storage_engine == 'ARCHIVE' %} {{ get_icon('bd_unique', t('Unique')) }} {% else %} - {{ get_icon('b_unique', t('Unique')) }} @@ -166,11 +162,9 @@ {% if type == 'text' or type == 'blob' or tbl_storage_engine == 'ARCHIVE' %} {{ get_icon('bd_index', t('Index')) }} {% else %} - {{ get_icon('b_index', t('Index')) }} @@ -191,11 +185,9 @@ {% if type == 'text' or type == 'blob' or tbl_storage_engine == 'ARCHIVE' or (type not in spatial_types and (tbl_storage_engine == 'MYISAM' or mysql_int_version >= 50705)) %} {{ get_icon('bd_spatial', t('Spatial')) }} {% else %} - {{ get_icon('b_spatial', t('Spatial')) }} @@ -210,11 +202,9 @@ or tbl_storage_engine == 'MARIA' or (tbl_storage_engine == 'INNODB' and mysql_int_version >= 50604) ) and ('text' in type or 'char' in type) %} - {{ get_icon('b_ftext', t('Fulltext')) }} diff --git a/src/Application.php b/src/Application.php index 736cc1a158..2edcb75491 100644 --- a/src/Application.php +++ b/src/Application.php @@ -136,7 +136,7 @@ class Application $runner->run(); } - public function handle(ServerRequest $request): Response|null + public function handle(ServerRequest $request): Response { return Routing::callControllerForRoute( $request, diff --git a/src/Controllers/BrowseForeignersController.php b/src/Controllers/BrowseForeignersController.php index 19b978797c..0450b99145 100644 --- a/src/Controllers/BrowseForeignersController.php +++ b/src/Controllers/BrowseForeignersController.php @@ -22,7 +22,7 @@ final class BrowseForeignersController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string|null $database */ $database = $request->getParsedBodyParam('db'); @@ -40,7 +40,7 @@ final class BrowseForeignersController implements InvocableController $foreignFilter = $request->getParsedBodyParam('foreign_filter', ''); if (! isset($database, $table, $field)) { - return null; + return $this->response->response(); } $this->response->setMinimalFooter(); @@ -68,6 +68,6 @@ final class BrowseForeignersController implements InvocableController $data, )); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/CheckRelationsController.php b/src/Controllers/CheckRelationsController.php index 030d5f9c15..594d852f51 100644 --- a/src/Controllers/CheckRelationsController.php +++ b/src/Controllers/CheckRelationsController.php @@ -23,7 +23,7 @@ final class CheckRelationsController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $cfgStorageDbName = $this->relation->getConfigurationStorageDbName(); @@ -57,6 +57,6 @@ final class CheckRelationsController implements InvocableController 'are_config_storage_tables_defined' => $this->relation->arePmadbTablesDefined(), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/CollationConnectionController.php b/src/Controllers/CollationConnectionController.php index ab6dcdcc22..1b8fdc1eba 100644 --- a/src/Controllers/CollationConnectionController.php +++ b/src/Controllers/CollationConnectionController.php @@ -16,7 +16,7 @@ final class CollationConnectionController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $this->config->setUserValue( null, @@ -27,6 +27,6 @@ final class CollationConnectionController implements InvocableController $this->response->redirect('index.php?route=/' . Url::getCommonRaw([], '&')); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/ColumnController.php b/src/Controllers/ColumnController.php index 0482cfc384..cf349d25ab 100644 --- a/src/Controllers/ColumnController.php +++ b/src/Controllers/ColumnController.php @@ -16,7 +16,7 @@ final class ColumnController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string|null $db */ $db = $request->getParsedBodyParam('db'); @@ -27,11 +27,11 @@ final class ColumnController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON(['message' => Message::error()]); - return null; + return $this->response->response(); } $this->response->addJSON(['columns' => $this->dbi->getColumnNames($db, $table)]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Console/Bookmark/AddController.php b/src/Controllers/Console/Bookmark/AddController.php index 94ca587f8a..54d1eaf964 100644 --- a/src/Controllers/Console/Bookmark/AddController.php +++ b/src/Controllers/Console/Bookmark/AddController.php @@ -22,7 +22,7 @@ final class AddController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $db = $request->getParsedBodyParam('db'); $label = $request->getParsedBodyParam('label'); @@ -32,7 +32,7 @@ final class AddController implements InvocableController if (! is_string($label) || ! is_string($db) || ! is_string($bookmarkQuery) || ! is_string($shared)) { $this->response->addJSON('message', __('Incomplete params')); - return null; + return $this->response->response(); } $bookmark = $this->bookmarkRepository->createBookmark( @@ -45,7 +45,7 @@ final class AddController implements InvocableController if ($bookmark === false || ! $bookmark->save()) { $this->response->addJSON('message', __('Failed')); - return null; + return $this->response->response(); } $bookmarkFields = [ @@ -59,6 +59,6 @@ final class AddController implements InvocableController $this->response->addJSON('data', $bookmarkFields); $this->response->addJSON('isShared', $shared === 'true'); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Console/Bookmark/RefreshController.php b/src/Controllers/Console/Bookmark/RefreshController.php index cb6125f010..35829ca5cd 100644 --- a/src/Controllers/Console/Bookmark/RefreshController.php +++ b/src/Controllers/Console/Bookmark/RefreshController.php @@ -16,10 +16,10 @@ final class RefreshController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $this->response->addJSON('console_message_bookmark', $this->console->getBookmarkContent()); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/CentralColumns/PopulateColumnsController.php b/src/Controllers/Database/CentralColumns/PopulateColumnsController.php index f78420fb0a..7353b0080a 100644 --- a/src/Controllers/Database/CentralColumns/PopulateColumnsController.php +++ b/src/Controllers/Database/CentralColumns/PopulateColumnsController.php @@ -19,7 +19,7 @@ final class PopulateColumnsController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $columns = $this->centralColumns->getColumnsNotInCentralList( Current::$database, @@ -27,6 +27,6 @@ final class PopulateColumnsController implements InvocableController ); $this->response->render('database/central_columns/populate_columns', ['columns' => $columns]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/CentralColumnsController.php b/src/Controllers/Database/CentralColumnsController.php index 1cebe88fbe..294de2dbb7 100644 --- a/src/Controllers/Database/CentralColumnsController.php +++ b/src/Controllers/Database/CentralColumnsController.php @@ -32,7 +32,7 @@ final class CentralColumnsController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['message'] ??= null; $db = DatabaseName::from($request->getParam('db')); @@ -52,7 +52,7 @@ final class CentralColumnsController implements InvocableController $db, )); - return null; + return $this->response->response(); } if ($request->hasBodyParam('add_new_column')) { @@ -76,7 +76,7 @@ final class CentralColumnsController implements InvocableController $request->getParsedBodyParam('cur_table', ''), )); - return null; + return $this->response->response(); } if ($request->hasBodyParam('add_column')) { @@ -100,7 +100,7 @@ final class CentralColumnsController implements InvocableController 'db' => $request->getParsedBodyParam('db'), ]); - return null; + return $this->response->response(); } if ($request->hasBodyParam('multi_edit_central_column_save')) { @@ -150,12 +150,12 @@ final class CentralColumnsController implements InvocableController sprintf(__('Showing rows %1$s - %2$s.'), $pos + 1, $pos + $numberOfColumns), ); if (! isset($tmpMsg) || $tmpMsg === true) { - return null; + return $this->response->response(); } $GLOBALS['message'] = $tmpMsg; - return null; + return $this->response->response(); } 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 f862132544..18a8e6524a 100644 --- a/src/Controllers/Database/DataDictionaryController.php +++ b/src/Controllers/Database/DataDictionaryController.php @@ -28,10 +28,10 @@ final class DataDictionaryController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $this->response->checkParameters(['db'], true)) { - return null; + return $this->response->response(); } $relationParameters = $this->relation->getRelationParameters(); @@ -110,6 +110,6 @@ final class DataDictionaryController implements InvocableController 'tables' => $tables, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/DesignerController.php b/src/Controllers/Database/DesignerController.php index fb24de3915..18e0a8f700 100644 --- a/src/Controllers/Database/DesignerController.php +++ b/src/Controllers/Database/DesignerController.php @@ -37,7 +37,7 @@ final class DesignerController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['message'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -83,7 +83,7 @@ final class DesignerController implements InvocableController $this->response->addHTML($html); } - return null; + return $this->response->response(); } if ($request->hasBodyParam('operation')) { @@ -105,7 +105,7 @@ final class DesignerController implements InvocableController ); $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } else { $page = $this->designerCommon->createNewPage($request->getParsedBodyParam('selected_value'), $db); $this->response->addJSON('id', $page); @@ -150,11 +150,11 @@ final class DesignerController implements InvocableController $this->response->setRequestStatus($success); } - return null; + return $this->response->response(); } if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -169,12 +169,12 @@ final class DesignerController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $scriptDisplayField = $this->designerCommon->getTablesInfo(); @@ -257,6 +257,6 @@ final class DesignerController implements InvocableController $this->response->addHTML('
'); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/EventsController.php b/src/Controllers/Database/EventsController.php index a4548c228a..a24c97b5ae 100644 --- a/src/Controllers/Database/EventsController.php +++ b/src/Controllers/Database/EventsController.php @@ -38,7 +38,7 @@ final class EventsController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errors'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -47,7 +47,7 @@ final class EventsController implements InvocableController if (! $request->isAjax()) { if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -60,7 +60,7 @@ final class EventsController implements InvocableController if ($databaseName === null || ! $this->dbTableExists->selectDatabase($databaseName)) { $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } } elseif (Current::$database !== '') { $this->dbi->selectDb(Current::$database); @@ -111,7 +111,7 @@ final class EventsController implements InvocableController $this->response->addJSON('tableType', 'events'); - return null; + return $this->response->response(); } } @@ -184,12 +184,12 @@ final class EventsController implements InvocableController $this->response->addJSON('message', $editor); $this->response->addJSON('title', $title); - return null; + return $this->response->response(); } $this->response->addHTML("\n\n

" . $title . "

\n\n" . $editor); - return null; + return $this->response->response(); } $message = __('Error in processing request:') . ' '; @@ -203,7 +203,7 @@ final class EventsController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return null; + return $this->response->response(); } $this->response->addHTML($message->getDisplay()); @@ -226,7 +226,7 @@ final class EventsController implements InvocableController $this->response->addJSON('message', $exportData); $this->response->addJSON('title', $title); - return null; + return $this->response->response(); } $output = '
'; @@ -248,7 +248,7 @@ final class EventsController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return null; + return $this->response->response(); } $this->response->addHTML($message->getDisplay()); @@ -266,6 +266,6 @@ final class EventsController implements InvocableController 'is_ajax' => $request->isAjax() && empty($_REQUEST['ajax_page_request']), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/ExportController.php b/src/Controllers/Database/ExportController.php index 1335e0fc3e..e5e72f3de2 100644 --- a/src/Controllers/Database/ExportController.php +++ b/src/Controllers/Database/ExportController.php @@ -36,7 +36,7 @@ final class ExportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['table_select'] ??= null; @@ -50,7 +50,7 @@ final class ExportController implements InvocableController $this->response->addScriptFiles(['export.js']); if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -65,12 +65,12 @@ final class ExportController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/database/export'); @@ -84,7 +84,7 @@ final class ExportController implements InvocableController Message::error(__('No tables found in database.'))->getDisplay(), ); - return null; + return $this->response->response(); } $selectedTable = $request->getParsedBodyParam('selected_tbl'); @@ -150,7 +150,7 @@ final class ExportController implements InvocableController __('Could not load export plugins, please check your installation!'), )->getDisplay()); - return null; + return $this->response->response(); } $options = $this->exportOptions->getOptions( @@ -170,6 +170,6 @@ final class ExportController implements InvocableController 'tables' => $tablesForMultiValues, ])); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/ImportController.php b/src/Controllers/Database/ImportController.php index 3402e43720..4cfbfdfe1a 100644 --- a/src/Controllers/Database/ImportController.php +++ b/src/Controllers/Database/ImportController.php @@ -38,7 +38,7 @@ final class ImportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['SESSION_KEY'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -50,7 +50,7 @@ final class ImportController implements InvocableController $this->response->addScriptFiles(['import.js']); if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $config = Config::getInstance(); @@ -63,12 +63,12 @@ final class ImportController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } [$GLOBALS['SESSION_KEY'], $uploadId] = Ajax::uploadProgressSetup(); @@ -81,7 +81,7 @@ final class ImportController implements InvocableController 'Could not load import plugins, please check your installation!', ))->getDisplay()); - return null; + return $this->response->response(); } $offset = null; @@ -138,6 +138,6 @@ final class ImportController implements InvocableController 'local_files' => Import::getLocalFiles($importList), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/MultiTableQuery/QueryController.php b/src/Controllers/Database/MultiTableQuery/QueryController.php index 3e6f8dc3c1..866453b57f 100644 --- a/src/Controllers/Database/MultiTableQuery/QueryController.php +++ b/src/Controllers/Database/MultiTableQuery/QueryController.php @@ -16,13 +16,13 @@ final class QueryController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $this->response->addHTML(MultiTableQuery::displayResults( $request->getParsedBodyParam('sql_query'), $request->getParam('db'), )); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/MultiTableQuery/TablesController.php b/src/Controllers/Database/MultiTableQuery/TablesController.php index d9ebe22988..09dd98196e 100644 --- a/src/Controllers/Database/MultiTableQuery/TablesController.php +++ b/src/Controllers/Database/MultiTableQuery/TablesController.php @@ -20,7 +20,7 @@ final class TablesController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string[] $tables */ $tables = $request->getQueryParam('tables', []); @@ -37,6 +37,6 @@ final class TablesController implements InvocableController ); $this->response->addJSON(['foreignKeyConstrains' => $constrains]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/MultiTableQueryController.php b/src/Controllers/Database/MultiTableQueryController.php index 82b19e1423..6c74f5bdeb 100644 --- a/src/Controllers/Database/MultiTableQueryController.php +++ b/src/Controllers/Database/MultiTableQueryController.php @@ -25,7 +25,7 @@ final class MultiTableQueryController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $this->response->addScriptFiles(['database/multi_table_query.js', 'database/query_generator.js']); @@ -33,6 +33,6 @@ final class MultiTableQueryController implements InvocableController $this->response->addHTML($queryInstance->getFormHtml()); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/PrivilegesController.php b/src/Controllers/Database/PrivilegesController.php index 9c71371a78..ece3498af8 100644 --- a/src/Controllers/Database/PrivilegesController.php +++ b/src/Controllers/Database/PrivilegesController.php @@ -35,7 +35,7 @@ final class PrivilegesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { try { $db = DatabaseName::from($request->getParam('db')); @@ -45,7 +45,7 @@ final class PrivilegesController implements InvocableController } catch (InvalidDatabaseName $exception) { $this->response->addHTML(Message::error($exception->getMessage())->getDisplay()); - return null; + return $this->response->response(); } $this->response->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); @@ -63,7 +63,7 @@ final class PrivilegesController implements InvocableController ->getDisplay(), ); - return null; + return $this->response->response(); } if (! $isGrantUser && ! $isCreateUser) { @@ -90,6 +90,6 @@ final class PrivilegesController implements InvocableController ]); $this->response->render('export_modal', []); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/RoutinesController.php b/src/Controllers/Database/RoutinesController.php index d2dbf65638..3d460450fa 100644 --- a/src/Controllers/Database/RoutinesController.php +++ b/src/Controllers/Database/RoutinesController.php @@ -47,7 +47,7 @@ final class RoutinesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errors'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -66,7 +66,7 @@ final class RoutinesController implements InvocableController */ if (Current::$table !== '' && in_array(Current::$table, $this->dbi->getTables(Current::$database), true)) { if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -80,20 +80,20 @@ final class RoutinesController implements InvocableController ['reload' => true, 'message' => __('No databases selected.')], ); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); if ($tableName === null || ! $this->dbTableExists->hasTable($databaseName, $tableName)) { $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } } else { Current::$table = ''; if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -109,7 +109,7 @@ final class RoutinesController implements InvocableController ['reload' => true, 'message' => __('No databases selected.')], ); - return null; + return $this->response->response(); } } } elseif (Current::$database !== '') { @@ -130,7 +130,7 @@ final class RoutinesController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $output); - return null; + return $this->response->response(); } $routines = Routines::getDetails( @@ -154,7 +154,7 @@ final class RoutinesController implements InvocableController $this->response->addJSON('message', $output); $this->response->addJSON('tableType', 'routines'); - return null; + return $this->response->response(); } } @@ -282,12 +282,12 @@ final class RoutinesController implements InvocableController ); $this->response->addJSON('type', $routine['item_type']); - return null; + return $this->response->response(); } $this->response->addHTML("\n\n

" . $title . "

\n\n" . $editor); - return null; + return $this->response->response(); } $message = __('Error in processing request:') . ' '; @@ -307,7 +307,7 @@ final class RoutinesController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return null; + return $this->response->response(); } $this->response->addHTML($message->getDisplay()); @@ -331,12 +331,12 @@ final class RoutinesController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return null; + return $this->response->response(); } $this->response->addHTML($message->getDisplay()); - return null; + return $this->response->response(); } [$output, $message] = $this->routines->handleExecuteRoutine($routine); @@ -347,14 +347,14 @@ final class RoutinesController implements InvocableController $this->response->addJSON('message', $message->getDisplay() . $output); $this->response->addJSON('dialog', false); - return null; + return $this->response->response(); } $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 null; + return $this->response->response(); } } elseif (! empty($_GET['execute_dialog']) && ! empty($_GET['item_name'])) { /** @@ -378,13 +378,13 @@ final class RoutinesController implements InvocableController $this->response->addJSON('title', $title); $this->response->addJSON('dialog', true); - return null; + return $this->response->response(); } $this->response->addHTML("\n\n

" . __('Execute routine') . "

\n\n"); $this->response->addHTML($form); - return null; + return $this->response->response(); } if ($request->isAjax()) { @@ -399,7 +399,7 @@ final class RoutinesController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return null; + return $this->response->response(); } } @@ -439,7 +439,7 @@ final class RoutinesController implements InvocableController $this->response->addJSON('message', $exportData); $this->response->addJSON('title', $title); - return null; + return $this->response->response(); } $output = '
'; @@ -464,7 +464,7 @@ final class RoutinesController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return null; + return $this->response->response(); } $this->response->addHTML($message->getDisplay()); @@ -494,6 +494,6 @@ final class RoutinesController implements InvocableController 'has_privilege' => Util::currentUserHasPrivilege('CREATE ROUTINE', Current::$database, Current::$table), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/SearchController.php b/src/Controllers/Database/SearchController.php index ac2f4ab799..a8d0b70eee 100644 --- a/src/Controllers/Database/SearchController.php +++ b/src/Controllers/Database/SearchController.php @@ -32,7 +32,7 @@ final class SearchController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; $GLOBALS['urlParams'] ??= null; @@ -40,7 +40,7 @@ final class SearchController implements InvocableController $this->response->addScriptFiles(['database/search.js', 'sql.js', 'makegrid.js']); if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $config = Config::getInstance(); @@ -53,12 +53,12 @@ final class SearchController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } if (! $config->settings['UseDbSearch']) { @@ -70,7 +70,7 @@ final class SearchController implements InvocableController if ($request->isAjax()) { $this->response->addJSON('message', Message::error($errorMessage)->getDisplay()); - return null; + return $this->response->response(); } $this->response->render('error/simple', [ @@ -78,7 +78,7 @@ final class SearchController implements InvocableController 'back_url' => $GLOBALS['errorUrl'], ]); - return null; + return $this->response->response(); } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/database/search'); @@ -93,12 +93,12 @@ final class SearchController implements InvocableController // 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 null; + return $this->response->response(); } // Display the search form $this->response->addHTML($databaseSearch->getMainHtml()); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/SqlAutoCompleteController.php b/src/Controllers/Database/SqlAutoCompleteController.php index f828a07b84..d2f94de788 100644 --- a/src/Controllers/Database/SqlAutoCompleteController.php +++ b/src/Controllers/Database/SqlAutoCompleteController.php @@ -26,7 +26,7 @@ final class SqlAutoCompleteController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $sqlAutocomplete = []; if ($this->config->settings['EnableAutocompleteForTablesAndColumns']) { @@ -38,7 +38,7 @@ final class SqlAutoCompleteController implements InvocableController $this->response->addJSON(['tables' => $sqlAutocomplete]); - return null; + return $this->response->response(); } /** @return string[][][] */ diff --git a/src/Controllers/Database/SqlController.php b/src/Controllers/Database/SqlController.php index 80c417d84a..5c3808f0db 100644 --- a/src/Controllers/Database/SqlController.php +++ b/src/Controllers/Database/SqlController.php @@ -34,7 +34,7 @@ class SqlController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['goto'] ??= null; $GLOBALS['back'] ??= null; @@ -47,7 +47,7 @@ class SqlController implements InvocableController $this->response->addHTML($this->pageSettings->getHTML()); if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -62,12 +62,12 @@ class SqlController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } /** @@ -86,6 +86,6 @@ class SqlController implements InvocableController htmlspecialchars($delimiter), )); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/SqlFormatController.php b/src/Controllers/Database/SqlFormatController.php index 482171eca3..0d985b3939 100644 --- a/src/Controllers/Database/SqlFormatController.php +++ b/src/Controllers/Database/SqlFormatController.php @@ -19,12 +19,12 @@ final class SqlFormatController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string $query */ $query = $request->getParsedBodyParam('sql', ''); $this->response->addJSON(['sql' => Formatter::format($query)]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/Structure/AddPrefixController.php b/src/Controllers/Database/Structure/AddPrefixController.php index 8f4dae0b9e..c23649a38e 100644 --- a/src/Controllers/Database/Structure/AddPrefixController.php +++ b/src/Controllers/Database/Structure/AddPrefixController.php @@ -23,7 +23,7 @@ final class AddPrefixController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -32,7 +32,7 @@ final class AddPrefixController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } $params = ['db' => Current::$database]; diff --git a/src/Controllers/Database/Structure/AddPrefixTableController.php b/src/Controllers/Database/Structure/AddPrefixTableController.php index 7bd114f7c7..a6673277f9 100644 --- a/src/Controllers/Database/Structure/AddPrefixTableController.php +++ b/src/Controllers/Database/Structure/AddPrefixTableController.php @@ -21,7 +21,7 @@ final class AddPrefixTableController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected', []); @@ -40,8 +40,6 @@ final class AddPrefixTableController implements InvocableController $GLOBALS['message'] = Message::success(); - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } } diff --git a/src/Controllers/Database/Structure/CentralColumns/AddController.php b/src/Controllers/Database/Structure/CentralColumns/AddController.php index efc58fa207..7c6938ff6f 100644 --- a/src/Controllers/Database/Structure/CentralColumns/AddController.php +++ b/src/Controllers/Database/Structure/CentralColumns/AddController.php @@ -27,7 +27,7 @@ final class AddController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['message'] ??= null; @@ -37,7 +37,7 @@ final class AddController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } Assert::allString($selected); @@ -49,8 +49,6 @@ final class AddController implements InvocableController unset($_POST['submit_mult']); - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } } diff --git a/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php b/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php index b838aaef94..e22f61d5b5 100644 --- a/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php +++ b/src/Controllers/Database/Structure/CentralColumns/MakeConsistentController.php @@ -27,7 +27,7 @@ final class MakeConsistentController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['message'] ??= null; @@ -37,7 +37,7 @@ final class MakeConsistentController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } Assert::allString($selected); @@ -49,8 +49,6 @@ final class MakeConsistentController implements InvocableController unset($_POST['submit_mult']); - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } } diff --git a/src/Controllers/Database/Structure/CentralColumns/RemoveController.php b/src/Controllers/Database/Structure/CentralColumns/RemoveController.php index 7e485cbd28..e09bf61b33 100644 --- a/src/Controllers/Database/Structure/CentralColumns/RemoveController.php +++ b/src/Controllers/Database/Structure/CentralColumns/RemoveController.php @@ -26,7 +26,7 @@ final class RemoveController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['message'] ??= null; @@ -36,7 +36,7 @@ final class RemoveController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } Assert::allString($selected); @@ -48,8 +48,6 @@ final class RemoveController implements InvocableController unset($_POST['submit_mult']); - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } } diff --git a/src/Controllers/Database/Structure/ChangePrefixFormController.php b/src/Controllers/Database/Structure/ChangePrefixFormController.php index 0672c5c7c4..60648ced3e 100644 --- a/src/Controllers/Database/Structure/ChangePrefixFormController.php +++ b/src/Controllers/Database/Structure/ChangePrefixFormController.php @@ -23,7 +23,7 @@ final class ChangePrefixFormController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -32,7 +32,7 @@ final class ChangePrefixFormController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } $route = '/database/structure/replace-prefix'; diff --git a/src/Controllers/Database/Structure/CopyFormController.php b/src/Controllers/Database/Structure/CopyFormController.php index f3faf6f7f9..a345e7fb9c 100644 --- a/src/Controllers/Database/Structure/CopyFormController.php +++ b/src/Controllers/Database/Structure/CopyFormController.php @@ -24,7 +24,7 @@ final class CopyFormController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -33,7 +33,7 @@ final class CopyFormController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } $urlParams = ['db' => Current::$database]; diff --git a/src/Controllers/Database/Structure/CopyTableController.php b/src/Controllers/Database/Structure/CopyTableController.php index 7641a63131..f44b85658f 100644 --- a/src/Controllers/Database/Structure/CopyTableController.php +++ b/src/Controllers/Database/Structure/CopyTableController.php @@ -26,7 +26,7 @@ final class CopyTableController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected', []); @@ -61,8 +61,6 @@ final class CopyTableController implements InvocableController $GLOBALS['message'] = Message::success(); - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } } diff --git a/src/Controllers/Database/Structure/CopyTableWithPrefixController.php b/src/Controllers/Database/Structure/CopyTableWithPrefixController.php index 9bcf40f06b..661b5a102d 100644 --- a/src/Controllers/Database/Structure/CopyTableWithPrefixController.php +++ b/src/Controllers/Database/Structure/CopyTableWithPrefixController.php @@ -25,7 +25,7 @@ final class CopyTableWithPrefixController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected', []); @@ -50,8 +50,6 @@ final class CopyTableWithPrefixController implements InvocableController $GLOBALS['message'] = Message::success(); - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } } diff --git a/src/Controllers/Database/Structure/DropFormController.php b/src/Controllers/Database/Structure/DropFormController.php index 256afcf84b..b22dccf671 100644 --- a/src/Controllers/Database/Structure/DropFormController.php +++ b/src/Controllers/Database/Structure/DropFormController.php @@ -22,7 +22,7 @@ final class DropFormController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -31,7 +31,7 @@ final class DropFormController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } $fullQueryViews = ''; @@ -66,6 +66,6 @@ final class DropFormController implements InvocableController 'is_foreign_key_check' => ForeignKey::isCheckEnabled(), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/Structure/DropTableController.php b/src/Controllers/Database/Structure/DropTableController.php index da04e3a839..5496fe7242 100644 --- a/src/Controllers/Database/Structure/DropTableController.php +++ b/src/Controllers/Database/Structure/DropTableController.php @@ -26,7 +26,7 @@ final class DropTableController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['reload'] = $_POST['reload'] ?? $GLOBALS['reload'] ?? null; $multBtn = $_POST['mult_btn'] ?? ''; @@ -38,9 +38,7 @@ final class DropTableController implements InvocableController unset($_POST['mult_btn']); - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } $defaultFkCheckValue = ForeignKey::handleDisableCheckInit(); @@ -101,8 +99,6 @@ final class DropTableController implements InvocableController unset($_POST['mult_btn']); - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } } diff --git a/src/Controllers/Database/Structure/EmptyFormController.php b/src/Controllers/Database/Structure/EmptyFormController.php index e9af3a2c93..c5deb6c867 100644 --- a/src/Controllers/Database/Structure/EmptyFormController.php +++ b/src/Controllers/Database/Structure/EmptyFormController.php @@ -21,7 +21,7 @@ final class EmptyFormController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -30,7 +30,7 @@ final class EmptyFormController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } $fullQuery = ''; @@ -48,6 +48,6 @@ final class EmptyFormController implements InvocableController 'is_foreign_key_check' => ForeignKey::isCheckEnabled(), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/Structure/EmptyTableController.php b/src/Controllers/Database/Structure/EmptyTableController.php index a4c82c747b..eca402ea13 100644 --- a/src/Controllers/Database/Structure/EmptyTableController.php +++ b/src/Controllers/Database/Structure/EmptyTableController.php @@ -39,7 +39,7 @@ final class EmptyTableController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $multBtn = $_POST['mult_btn'] ?? ''; /** @var string[] $selected */ @@ -49,7 +49,7 @@ final class EmptyTableController implements InvocableController $this->flashMessenger->addMessage('success', __('No change')); $this->response->redirectToRoute('/database/structure', ['db' => Current::$database]); - return null; + return $this->response->response(); } $defaultFkCheckValue = ForeignKey::handleDisableCheckInit(); @@ -90,8 +90,6 @@ final class EmptyTableController implements InvocableController unset($_POST['mult_btn']); - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } } diff --git a/src/Controllers/Database/Structure/FavoriteTableController.php b/src/Controllers/Database/Structure/FavoriteTableController.php index 0f4e484cc9..ad19c7dc88 100644 --- a/src/Controllers/Database/Structure/FavoriteTableController.php +++ b/src/Controllers/Database/Structure/FavoriteTableController.php @@ -39,12 +39,12 @@ final class FavoriteTableController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; if (Current::$database === '') { - return null; + return $this->response->response(); } $config = Config::getInstance(); @@ -52,7 +52,7 @@ final class FavoriteTableController implements InvocableController $GLOBALS['errorUrl'] .= Url::getCommon(['db' => Current::$database], '&'); if (! $request->isAjax()) { - return null; + return $this->response->response(); } $favoriteInstance = RecentFavoriteTables::getInstance(TableType::Favorite); @@ -74,7 +74,7 @@ final class FavoriteTableController implements InvocableController )); } - return null; + return $this->response->response(); } $databaseName = DatabaseName::tryFrom($request->getParam('db')); @@ -82,7 +82,7 @@ final class FavoriteTableController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $changes = true; @@ -120,7 +120,7 @@ final class FavoriteTableController implements InvocableController ]); $this->response->addJSON($json); - return null; + return $this->response->response(); } // Check if current table is already in favorite list. @@ -143,7 +143,7 @@ final class FavoriteTableController implements InvocableController $this->response->addJSON($json); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Database/Structure/RealRowCountController.php b/src/Controllers/Database/Structure/RealRowCountController.php index 56002eeef3..cf6e7d2466 100644 --- a/src/Controllers/Database/Structure/RealRowCountController.php +++ b/src/Controllers/Database/Structure/RealRowCountController.php @@ -31,7 +31,7 @@ final class RealRowCountController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -41,7 +41,7 @@ final class RealRowCountController implements InvocableController ]; if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -51,7 +51,7 @@ final class RealRowCountController implements InvocableController $GLOBALS['errorUrl'] .= Url::getCommon(['db' => Current::$database], '&'); if (! $request->isAjax()) { - return null; + return $this->response->response(); } $databaseName = DatabaseName::tryFrom($request->getParam('db')); @@ -59,7 +59,7 @@ final class RealRowCountController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } // If there is a request to update all table's row count. @@ -73,7 +73,7 @@ final class RealRowCountController implements InvocableController $this->response->addJSON(['real_row_count' => $realRowCount]); - return null; + return $this->response->response(); } // Array to store the results. @@ -88,6 +88,6 @@ final class RealRowCountController implements InvocableController $this->response->addJSON(['real_row_count_all' => $realRowCountAll]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Database/Structure/ShowCreateController.php b/src/Controllers/Database/Structure/ShowCreateController.php index 881b1ae6ae..9847a1756d 100644 --- a/src/Controllers/Database/Structure/ShowCreateController.php +++ b/src/Controllers/Database/Structure/ShowCreateController.php @@ -24,7 +24,7 @@ final class ShowCreateController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string[] $selected */ $selected = $request->getParsedBodyParam('selected_tbl', []); @@ -33,7 +33,7 @@ final class ShowCreateController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } $tables = $this->getShowCreateTables($selected); @@ -42,7 +42,7 @@ final class ShowCreateController implements InvocableController $this->response->addJSON('message', $showCreate); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Database/StructureController.php b/src/Controllers/Database/StructureController.php index c67bbea4b7..999e7414a5 100644 --- a/src/Controllers/Database/StructureController.php +++ b/src/Controllers/Database/StructureController.php @@ -121,14 +121,14 @@ final class StructureController implements InvocableController $this->dbIsSystemSchema = true; } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; $parameters = ['sort' => $_REQUEST['sort'] ?? null, 'sort_order' => $_REQUEST['sort_order'] ?? null]; if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $config = Config::getInstance(); @@ -141,12 +141,12 @@ final class StructureController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $this->response->addScriptFiles(['database/structure.js', 'table/change.js']); @@ -208,7 +208,7 @@ final class StructureController implements InvocableController 'create_table_html' => $createTable, ]); - return null; + return $this->response->response(); } /** @param mixed[] $replicaInfo */ diff --git a/src/Controllers/Database/TrackingController.php b/src/Controllers/Database/TrackingController.php index a926516123..e3bbdaecc6 100644 --- a/src/Controllers/Database/TrackingController.php +++ b/src/Controllers/Database/TrackingController.php @@ -38,7 +38,7 @@ final class TrackingController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -46,7 +46,7 @@ final class TrackingController implements InvocableController $this->response->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'database/tracking.js']); if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $config = Config::getInstance(); @@ -59,12 +59,12 @@ final class TrackingController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/tracking'); @@ -114,7 +114,7 @@ final class TrackingController implements InvocableController 'default_statements' => $config->selectedServer['tracking_default_statements'], ]); - return null; + return $this->response->response(); } } else { $this->response->addHTML(Message::notice( @@ -134,7 +134,7 @@ final class TrackingController implements InvocableController $this->response->render('database/create_table', ['db' => Current::$database]); } - return null; + return $this->response->response(); } $this->response->addHTML($this->tracking->getHtmlForDbTrackingTables( @@ -145,7 +145,7 @@ final class TrackingController implements InvocableController // If available print out database log if ($trackedData->ddlog === []) { - return null; + return $this->response->response(); } $log = ''; @@ -156,6 +156,6 @@ final class TrackingController implements InvocableController $this->response->addHTML(Generator::getMessage(__('Database Log'), $log)); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/DatabaseController.php b/src/Controllers/DatabaseController.php index b8d6489983..263b6fc07d 100644 --- a/src/Controllers/DatabaseController.php +++ b/src/Controllers/DatabaseController.php @@ -15,10 +15,10 @@ final class DatabaseController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $this->response->addJSON(['databases' => $this->dbi->getDatabaseList()]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/ErrorReportController.php b/src/Controllers/ErrorReportController.php index ab80cae58c..d6e71bc018 100644 --- a/src/Controllers/ErrorReportController.php +++ b/src/Controllers/ErrorReportController.php @@ -39,7 +39,7 @@ final class ErrorReportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string $exceptionType */ $exceptionType = $request->getParsedBodyParam('exception_type', ''); @@ -49,7 +49,7 @@ final class ErrorReportController implements InvocableController $alwaysSend = $request->getParsedBodyParam('always_send'); if (! in_array($exceptionType, ['js', 'php'], true)) { - return null; + return $this->response->response(); } $config = Config::getInstance(); @@ -146,6 +146,6 @@ final class ErrorReportController implements InvocableController $this->errorHandler->savePreviousErrors(); } - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Export/CheckTimeOutController.php b/src/Controllers/Export/CheckTimeOutController.php index b79625a93e..e97a5b913c 100644 --- a/src/Controllers/Export/CheckTimeOutController.php +++ b/src/Controllers/Export/CheckTimeOutController.php @@ -15,21 +15,21 @@ final class CheckTimeOutController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { - return null; + return $this->response->response(); } if (isset($_SESSION['pma_export_error'])) { unset($_SESSION['pma_export_error']); $this->response->addJSON('message', 'timeout'); - return null; + return $this->response->response(); } $this->response->addJSON('message', 'success'); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Export/ExportController.php b/src/Controllers/Export/ExportController.php index 6e3988c1a9..23d5f7153c 100644 --- a/src/Controllers/Export/ExportController.php +++ b/src/Controllers/Export/ExportController.php @@ -47,7 +47,7 @@ final class ExportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['export_type'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -100,7 +100,7 @@ final class ExportController implements InvocableController $GLOBALS['what'] = Core::securePath($whatParam); if (! $this->response->checkParameters(['what', 'export_type'])) { - return null; + return $this->response->response(); } // export class instance, not array of properties, as before @@ -114,7 +114,7 @@ final class ExportController implements InvocableController $this->response->setRequestStatus(false); $this->response->addHTML(Message::error(__('Bad type!'))->getDisplay()); - return null; + return $this->response->response(); } if ($request->hasBodyParam('sql_backquotes') && $exportPlugin instanceof ExportSql) { @@ -189,7 +189,7 @@ final class ExportController implements InvocableController $this->response->setRequestStatus(false); $this->response->addHTML(Message::error(__('Bad parameters!'))->getDisplay()); - return null; + return $this->response->response(); } // Merge SQL Query aliases with Export aliases from @@ -276,7 +276,7 @@ final class ExportController implements InvocableController $location = $this->export->getPageLocationAndSaveMessage($GLOBALS['export_type'], $message); $this->response->redirect($location); - return null; + return $this->response->response(); } } elseif ($GLOBALS['asfile']) { /** @@ -299,9 +299,8 @@ final class ExportController implements InvocableController ); /** @var DatabaseExportController $controller */ $controller = ContainerBuilder::getContainer()->get(DatabaseExportController::class); - $controller($request); - return null; + return $controller($request); } } @@ -487,7 +486,7 @@ final class ExportController implements InvocableController $location = $this->export->getPageLocationAndSaveMessage($GLOBALS['export_type'], $GLOBALS['message']); $this->response->redirect($location); - return null; + return $this->response->response(); } /** @@ -500,7 +499,7 @@ final class ExportController implements InvocableController Current::$table, ); - return null; + return $this->response->response(); } // Convert the charset if required. @@ -539,7 +538,7 @@ final class ExportController implements InvocableController $location = $this->export->getPageLocationAndSaveMessage($GLOBALS['export_type'], $message); $this->response->redirect($location); - return null; + return $this->response->response(); } return $this->responseFactory->createResponse()->write($this->export->dumpBuffer); diff --git a/src/Controllers/Export/TablesController.php b/src/Controllers/Export/TablesController.php index 5af846ff2c..f8f856f42d 100644 --- a/src/Controllers/Export/TablesController.php +++ b/src/Controllers/Export/TablesController.php @@ -20,17 +20,15 @@ final class TablesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->hasBodyParam('selected_tbl')) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } - ($this->exportController)($request); - - return null; + return ($this->exportController)($request); } } diff --git a/src/Controllers/Export/Template/CreateController.php b/src/Controllers/Export/Template/CreateController.php index 35fad9bc85..191bf1ed41 100644 --- a/src/Controllers/Export/Template/CreateController.php +++ b/src/Controllers/Export/Template/CreateController.php @@ -26,7 +26,7 @@ final class CreateController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string $exportType */ $exportType = $request->getParsedBodyParam('exportType', ''); @@ -39,7 +39,7 @@ final class CreateController implements InvocableController $exportTemplatesFeature = $this->relation->getRelationParameters()->exportTemplatesFeature; if ($exportTemplatesFeature === null) { - return null; + return $this->response->response(); } $template = ExportTemplate::fromArray([ @@ -58,7 +58,7 @@ final class CreateController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $result); - return null; + return $this->response->response(); } $templates = $this->model->getAll( @@ -77,6 +77,6 @@ final class CreateController implements InvocableController ]), ); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Export/Template/DeleteController.php b/src/Controllers/Export/Template/DeleteController.php index 7426102fc8..a18f513d5a 100644 --- a/src/Controllers/Export/Template/DeleteController.php +++ b/src/Controllers/Export/Template/DeleteController.php @@ -21,13 +21,13 @@ final class DeleteController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $templateId = (int) $request->getParsedBodyParam('templateId'); $exportTemplatesFeature = $this->relation->getRelationParameters()->exportTemplatesFeature; if ($exportTemplatesFeature === null) { - return null; + return $this->response->response(); } $result = $this->model->delete( @@ -41,11 +41,11 @@ final class DeleteController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $result); - return null; + return $this->response->response(); } $this->response->setRequestStatus(true); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Export/Template/LoadController.php b/src/Controllers/Export/Template/LoadController.php index 7d494df24f..b681f6b4da 100644 --- a/src/Controllers/Export/Template/LoadController.php +++ b/src/Controllers/Export/Template/LoadController.php @@ -22,13 +22,13 @@ final class LoadController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $templateId = (int) $request->getParsedBodyParam('templateId'); $exportTemplatesFeature = $this->relation->getRelationParameters()->exportTemplatesFeature; if ($exportTemplatesFeature === null) { - return null; + return $this->response->response(); } $template = $this->model->load( @@ -42,12 +42,12 @@ final class LoadController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $template); - return null; + return $this->response->response(); } $this->response->setRequestStatus(true); $this->response->addJSON('data', $template->getData()); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Export/Template/UpdateController.php b/src/Controllers/Export/Template/UpdateController.php index 1296ac94b6..135cd8cd57 100644 --- a/src/Controllers/Export/Template/UpdateController.php +++ b/src/Controllers/Export/Template/UpdateController.php @@ -22,7 +22,7 @@ final class UpdateController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $templateId = (int) $request->getParsedBodyParam('templateId'); /** @var string $templateData */ @@ -30,7 +30,7 @@ final class UpdateController implements InvocableController $exportTemplatesFeature = $this->relation->getRelationParameters()->exportTemplatesFeature; if ($exportTemplatesFeature === null) { - return null; + return $this->response->response(); } $template = ExportTemplate::fromArray([ @@ -48,11 +48,11 @@ final class UpdateController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $result); - return null; + return $this->response->response(); } $this->response->setRequestStatus(true); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/GisDataEditorController.php b/src/Controllers/GisDataEditorController.php index 67f7f7f81c..bd70ff8679 100644 --- a/src/Controllers/GisDataEditorController.php +++ b/src/Controllers/GisDataEditorController.php @@ -40,7 +40,7 @@ final class GisDataEditorController implements InvocableController 'GEOMETRYCOLLECTION', ]; - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { /** @var string|null $field */ $field = $request->getParsedBodyParam('field'); @@ -54,7 +54,7 @@ final class GisDataEditorController implements InvocableController $inputName = $request->getParsedBodyParam('input_name'); if (! isset($field)) { - return null; + return $this->response->response(); } // Get data if any posted @@ -66,7 +66,7 @@ final class GisDataEditorController implements InvocableController // Generate parameters from value passed. $gisObj = GisFactory::fromType($geomType); if ($gisObj === null) { - return null; + return $this->response->response(); } if (isset($value)) { @@ -91,7 +91,7 @@ final class GisDataEditorController implements InvocableController if ($request->hasBodyParam('generate')) { $this->response->addJSON(['result' => $result, 'visualization' => $svg, 'openLayers' => $openLayers]); - return null; + return $this->response->response(); } $templateOutput = $this->template->render('gis_data_editor_form', [ @@ -111,7 +111,7 @@ final class GisDataEditorController implements InvocableController $this->response->addJSON(['gis_editor' => $templateOutput]); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/GitInfoController.php b/src/Controllers/GitInfoController.php index eb3ff83807..698e6d5f9b 100644 --- a/src/Controllers/GitInfoController.php +++ b/src/Controllers/GitInfoController.php @@ -19,16 +19,16 @@ final class GitInfoController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { - return null; + return $this->response->response(); } $git = new Git($this->config->get('ShowGitRevision') ?? true); if (! $git->isGitRevision()) { - return null; + return $this->response->response(); } $commit = $git->checkGitRevision(); @@ -36,7 +36,7 @@ final class GitInfoController implements InvocableController if (! $git->hasGitInformation() || $commit === null) { $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } $commit['author']['date'] = Util::localisedDate(strtotime($commit['author']['date'])); @@ -44,6 +44,6 @@ final class GitInfoController implements InvocableController $this->response->render('home/git_info', $commit); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/HomeController.php b/src/Controllers/HomeController.php index 5fb9abdc35..b2805fa8a9 100644 --- a/src/Controllers/HomeController.php +++ b/src/Controllers/HomeController.php @@ -59,7 +59,7 @@ final class HomeController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if ($this->shouldRedirectToDatabaseOrTablePage($request)) { return $this->redirectToDatabaseOrTablePage($request); @@ -70,7 +70,7 @@ final class HomeController implements InvocableController $GLOBALS['errorUrl'] ??= null; if ($request->isAjax() && ! empty($_REQUEST['access_time'])) { - return null; + return $this->response->response(); } $this->response->addScriptFiles(['home.js']); @@ -250,7 +250,7 @@ final class HomeController implements InvocableController 'errors' => $this->errors, ]); - return null; + return $this->response->response(); } private function checkRequirements(): void diff --git a/src/Controllers/Import/ImportController.php b/src/Controllers/Import/ImportController.php index 70efd2659b..2e64d3cda3 100644 --- a/src/Controllers/Import/ImportController.php +++ b/src/Controllers/Import/ImportController.php @@ -59,7 +59,7 @@ final class ImportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['goto'] ??= null; $GLOBALS['display_query'] ??= null; @@ -176,7 +176,7 @@ final class ImportController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $GLOBALS['message']); - return null; // the footer is displayed automatically + return $this->response->response(); } // Add console message id to response output @@ -191,7 +191,7 @@ final class ImportController implements InvocableController $this->response->setRequestStatus(false); $this->response->addHTML(Message::error(__('Incorrect format parameter'))->getDisplay()); - return null; + return $this->response->response(); } if (Current::$table !== '' && Current::$database !== '') { @@ -304,7 +304,7 @@ final class ImportController implements InvocableController $this->response->addJSON('sql_query', $GLOBALS['import_text']); $this->response->addJSON('action_bookmark', $actionBookmark); - return null; + return $this->response->response(); } ImportSettings::$runQuery = false; @@ -325,7 +325,7 @@ final class ImportController implements InvocableController $this->response->addJSON('action_bookmark', $actionBookmark); $this->response->addJSON('id_bookmark', $idBookmark); - return null; + return $this->response->response(); } ImportSettings::$runQuery = false; @@ -408,7 +408,7 @@ final class ImportController implements InvocableController $this->response->addJSON('message', $errorMessage->getDisplay()); $this->response->addHTML($errorMessage->getDisplay()); - return null; + return $this->response->response(); } $importHandle->setDecompressContent(true); @@ -425,7 +425,7 @@ final class ImportController implements InvocableController $this->response->addJSON('message', $errorMessage->getDisplay()); $this->response->addHTML($errorMessage->getDisplay()); - return null; + return $this->response->response(); } } elseif (! $GLOBALS['error'] && empty($GLOBALS['import_text'])) { $GLOBALS['message'] = Message::error( @@ -442,7 +442,7 @@ final class ImportController implements InvocableController $this->response->addJSON('message', $GLOBALS['message']->getDisplay()); $this->response->addHTML($GLOBALS['message']->getDisplay()); - return null; + return $this->response->response(); } // Convert the file's charset if necessary @@ -635,7 +635,7 @@ final class ImportController implements InvocableController $_SESSION['Import_message']['go_back_url'], ); - return null; + return $this->response->response(); } if (Current::$table != $tableFromSql && $tableFromSql !== '') { @@ -677,7 +677,7 @@ final class ImportController implements InvocableController $this->response->addJSON('ajax_reload', $GLOBALS['ajax_reload']); $this->response->addHTML($htmlOutput); - return null; + return $this->response->response(); } if ($request->hasBodyParam('rollback_query')) { @@ -716,6 +716,6 @@ final class ImportController implements InvocableController include ROOT_PATH . $GLOBALS['goto']; } - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Import/SimulateDmlController.php b/src/Controllers/Import/SimulateDmlController.php index 0d26308e34..ae12f22162 100644 --- a/src/Controllers/Import/SimulateDmlController.php +++ b/src/Controllers/Import/SimulateDmlController.php @@ -25,7 +25,7 @@ final class SimulateDmlController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $error = ''; $errorMsg = __('Only single-table UPDATE and DELETE queries can be simulated.'); @@ -77,11 +77,11 @@ final class SimulateDmlController implements InvocableController $this->response->addJSON('message', $message); $this->response->addJSON('sql_data', false); - return null; + return $this->response->response(); } $this->response->addJSON('sql_data', $sqlData); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Import/StatusController.php b/src/Controllers/Import/StatusController.php index af9ee11bb2..fb493c4a46 100644 --- a/src/Controllers/Import/StatusController.php +++ b/src/Controllers/Import/StatusController.php @@ -10,6 +10,7 @@ use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Import\Ajax; use PhpMyAdmin\Message; +use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; use function __; @@ -30,7 +31,7 @@ class StatusController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['SESSION_KEY'] ??= null; @@ -78,6 +79,6 @@ class StatusController implements InvocableController Ajax::status($request->getQueryParam('id')); } - return null; + return ResponseRenderer::getInstance()->response(); } } diff --git a/src/Controllers/InvocableController.php b/src/Controllers/InvocableController.php index e61bb81fe4..fb7a6d1286 100644 --- a/src/Controllers/InvocableController.php +++ b/src/Controllers/InvocableController.php @@ -9,5 +9,5 @@ use PhpMyAdmin\Http\ServerRequest; interface InvocableController { - public function __invoke(ServerRequest $request): Response|null; + public function __invoke(ServerRequest $request): Response; } diff --git a/src/Controllers/LintController.php b/src/Controllers/LintController.php index 5db9fe6d20..2c056456bc 100644 --- a/src/Controllers/LintController.php +++ b/src/Controllers/LintController.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Linter; +use PhpMyAdmin\ResponseRenderer; use function is_array; use function is_string; @@ -29,10 +30,10 @@ final class LintController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { - return null; + return ResponseRenderer::getInstance()->response(); } /** diff --git a/src/Controllers/LogoutController.php b/src/Controllers/LogoutController.php index 4a91810922..f6315bfd14 100644 --- a/src/Controllers/LogoutController.php +++ b/src/Controllers/LogoutController.php @@ -15,17 +15,18 @@ final class LogoutController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { + $responseRenderer = ResponseRenderer::getInstance(); if (! $request->isPost() || $GLOBALS['token_mismatch']) { - ResponseRenderer::getInstance()->redirect('./index.php?route=/'); + $responseRenderer->redirect('./index.php?route=/'); - return null; + return $responseRenderer->response(); } $authPlugin = $this->authPluginFactory->create(); $authPlugin->logOut(); - return null; + return $responseRenderer->response(); } } diff --git a/src/Controllers/Navigation/UpdateNavWidthConfigController.php b/src/Controllers/Navigation/UpdateNavWidthConfigController.php index 63fd7b3787..10bfa82da7 100644 --- a/src/Controllers/Navigation/UpdateNavWidthConfigController.php +++ b/src/Controllers/Navigation/UpdateNavWidthConfigController.php @@ -20,24 +20,24 @@ final class UpdateNavWidthConfigController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $value = $request->getParsedBodyParam('value'); if (! is_numeric($value) || $value < 0) { $this->response->setRequestStatus(false); $this->response->addJSON(['message' => Message::error(__('Unexpected parameter value.'))]); - return null; + return $this->response->response(); } $result = $this->config->setUserValue(null, 'NavigationWidth', (int) $value); if ($result === true) { - return null; + return $this->response->response(); } $this->response->setRequestStatus(false); $this->response->addJSON(['message' => $result]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/NavigationController.php b/src/Controllers/NavigationController.php index 07c4ff7a87..06e9ee293e 100644 --- a/src/Controllers/NavigationController.php +++ b/src/Controllers/NavigationController.php @@ -30,7 +30,7 @@ final class NavigationController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { $this->response->addHTML( @@ -39,7 +39,7 @@ final class NavigationController implements InvocableController )->getDisplay(), ); - return null; + return $this->response->response(); } if ($request->hasBodyParam('getNaviSettings')) { @@ -47,7 +47,7 @@ final class NavigationController implements InvocableController $this->response->addHTML($this->pageSettings->getErrorHTML()); $this->response->addJSON('message', $this->pageSettings->getHTML()); - return null; + return $this->response->response(); } if ($request->hasBodyParam('reload')) { @@ -65,7 +65,7 @@ final class NavigationController implements InvocableController $this->navigation->hideNavigationItem($itemName, $itemType, $dbName); } - return null; + return $this->response->response(); } if ($request->hasBodyParam('unhideNavItem')) { @@ -73,7 +73,7 @@ final class NavigationController implements InvocableController $this->navigation->unhideNavigationItem($itemName, $itemType, $dbName); } - return null; + return $this->response->response(); } if ($request->hasBodyParam('showUnhideDialog')) { @@ -84,12 +84,12 @@ final class NavigationController implements InvocableController ); } - return null; + return $this->response->response(); } } $this->response->addJSON('message', $this->navigation->getDisplay()); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/AddNewPrimaryController.php b/src/Controllers/Normalization/AddNewPrimaryController.php index bd7c184f71..989e36cab2 100644 --- a/src/Controllers/Normalization/AddNewPrimaryController.php +++ b/src/Controllers/Normalization/AddNewPrimaryController.php @@ -24,7 +24,7 @@ final class AddNewPrimaryController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -46,6 +46,6 @@ final class AddNewPrimaryController implements InvocableController $html .= Url::getHiddenInputs($dbName, $tableName); $this->response->addHTML($html); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/CreateNewColumnController.php b/src/Controllers/Normalization/CreateNewColumnController.php index 521a5e1354..f51ecdef04 100644 --- a/src/Controllers/Normalization/CreateNewColumnController.php +++ b/src/Controllers/Normalization/CreateNewColumnController.php @@ -24,7 +24,7 @@ final class CreateNewColumnController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -38,6 +38,6 @@ final class CreateNewColumnController implements InvocableController $html .= Url::getHiddenInputs(Current::$database, Current::$table); $this->response->addHTML($html); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php b/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php index 70b36c3af8..0a41a7fe0f 100644 --- a/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/FirstStepController.php @@ -21,7 +21,7 @@ final class FirstStepController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $this->response->addScriptFiles(['normalization.js', 'vendor/jquery/jquery.uitablefilter.js']); @@ -34,6 +34,6 @@ final class FirstStepController implements InvocableController $html = $this->normalization->getHtmlFor1NFStep1(Current::$database, Current::$table, $normalForm); $this->response->addHTML($html); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php b/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php index 327f05e27b..f4c7291694 100644 --- a/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/FourthStepController.php @@ -19,11 +19,11 @@ final class FourthStepController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $res = $this->normalization->getHtmlContentsFor1NFStep4(Current::$database, Current::$table); $this->response->addJSON($res); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php b/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php index 5122e3f66a..8798e76abc 100644 --- a/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/SecondStepController.php @@ -19,11 +19,11 @@ final class SecondStepController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $res = $this->normalization->getHtmlContentsFor1NFStep2(Current::$database, Current::$table); $this->response->addJSON($res); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php b/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php index b9be0dfaf9..8b4e5c3674 100644 --- a/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php +++ b/src/Controllers/Normalization/FirstNormalForm/ThirdStepController.php @@ -19,11 +19,11 @@ final class ThirdStepController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $res = $this->normalization->getHtmlContentsFor1NFStep3(Current::$database, Current::$table); $this->response->addJSON($res); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/GetColumnsController.php b/src/Controllers/Normalization/GetColumnsController.php index f1e63709e5..56e53975bc 100644 --- a/src/Controllers/Normalization/GetColumnsController.php +++ b/src/Controllers/Normalization/GetColumnsController.php @@ -22,7 +22,7 @@ final class GetColumnsController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $html = '' . ''; @@ -34,6 +34,6 @@ final class GetColumnsController implements InvocableController ); $this->response->addHTML($html); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/MainController.php b/src/Controllers/Normalization/MainController.php index 8b48de5813..dc7a4df196 100644 --- a/src/Controllers/Normalization/MainController.php +++ b/src/Controllers/Normalization/MainController.php @@ -19,7 +19,7 @@ final class MainController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $this->response->addScriptFiles(['normalization.js', 'vendor/jquery/jquery.uitablefilter.js']); $this->response->render('table/normalization/normalization', [ @@ -27,6 +27,6 @@ final class MainController implements InvocableController 'table' => Current::$table, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/MoveRepeatingGroup.php b/src/Controllers/Normalization/MoveRepeatingGroup.php index fc2064e8ae..845ed2501b 100644 --- a/src/Controllers/Normalization/MoveRepeatingGroup.php +++ b/src/Controllers/Normalization/MoveRepeatingGroup.php @@ -19,7 +19,7 @@ final class MoveRepeatingGroup implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $repeatingColumns = $request->getParsedBodyParam('repeatingColumns'); $newTable = $request->getParsedBodyParam('newTable'); @@ -35,6 +35,6 @@ final class MoveRepeatingGroup implements InvocableController ); $this->response->addJSON($res); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/PartialDependenciesController.php b/src/Controllers/Normalization/PartialDependenciesController.php index 45e4003230..4f2e37cd0d 100644 --- a/src/Controllers/Normalization/PartialDependenciesController.php +++ b/src/Controllers/Normalization/PartialDependenciesController.php @@ -19,11 +19,11 @@ final class PartialDependenciesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $html = $this->normalization->findPartialDependencies(Current::$table, Current::$database); $this->response->addHTML($html); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php b/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php index e67241925f..06a0352b7d 100644 --- a/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php +++ b/src/Controllers/Normalization/SecondNormalForm/CreateNewTablesController.php @@ -21,7 +21,7 @@ final class CreateNewTablesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $partialDependencies = json_decode($request->getParsedBodyParam('pd'), true); $tablesName = json_decode($request->getParsedBodyParam('newTablesName')); @@ -33,6 +33,6 @@ final class CreateNewTablesController implements InvocableController ); $this->response->addJSON($res); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php b/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php index a761c98eea..51af1ffea1 100644 --- a/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php +++ b/src/Controllers/Normalization/SecondNormalForm/FirstStepController.php @@ -19,11 +19,11 @@ final class FirstStepController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $res = $this->normalization->getHtmlFor2NFstep1(Current::$database, Current::$table); $this->response->addJSON($res); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php b/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php index de8c306a03..7e18b6e67b 100644 --- a/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php +++ b/src/Controllers/Normalization/SecondNormalForm/NewTablesController.php @@ -21,12 +21,12 @@ final class NewTablesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $partialDependencies = json_decode($request->getParsedBodyParam('pd'), true); $html = $this->normalization->getHtmlForNewTables2NF($partialDependencies, Current::$table); $this->response->addHTML($html); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php b/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php index 5f5fd6ecbe..2b2fe75f15 100644 --- a/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php +++ b/src/Controllers/Normalization/ThirdNormalForm/CreateNewTablesController.php @@ -21,12 +21,12 @@ final class CreateNewTablesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $newtables = json_decode($request->getParsedBodyParam('newTables'), true); $res = $this->normalization->createNewTablesFor3NF($newtables, Current::$database); $this->response->addJSON($res); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php b/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php index 5168d900b7..4fdd36b28e 100644 --- a/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php +++ b/src/Controllers/Normalization/ThirdNormalForm/FirstStepController.php @@ -19,12 +19,12 @@ final class FirstStepController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $tables = $request->getParsedBodyParam('tables'); $res = $this->normalization->getHtmlFor3NFstep1(Current::$database, $tables); $this->response->addJSON($res); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php b/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php index d6eaad6c0a..956ef0667e 100644 --- a/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php +++ b/src/Controllers/Normalization/ThirdNormalForm/NewTablesController.php @@ -21,13 +21,13 @@ final class NewTablesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $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; + return $this->response->response(); } } diff --git a/src/Controllers/Operations/Database/CollationController.php b/src/Controllers/Operations/Database/CollationController.php index 6212288fac..d5a8d56b70 100644 --- a/src/Controllers/Operations/Database/CollationController.php +++ b/src/Controllers/Operations/Database/CollationController.php @@ -30,12 +30,12 @@ final class CollationController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; if (! $request->isAjax()) { - return null; + return $this->response->response(); } $dbCollation = $request->getParsedBodyParam('db_collation') ?? ''; @@ -43,11 +43,11 @@ final class CollationController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No collation provided.'))); - return null; + return $this->response->response(); } if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -61,7 +61,7 @@ final class CollationController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $sqlQuery = 'ALTER DATABASE ' . Util::backquote(Current::$database) @@ -102,6 +102,6 @@ final class CollationController implements InvocableController $this->response->setRequestStatus($message->isSuccess()); $this->response->addJSON('message', $message); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Operations/DatabaseController.php b/src/Controllers/Operations/DatabaseController.php index f3c4a3c42f..a4a39e7569 100644 --- a/src/Controllers/Operations/DatabaseController.php +++ b/src/Controllers/Operations/DatabaseController.php @@ -46,7 +46,7 @@ final class DatabaseController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['message'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -211,7 +211,7 @@ final class DatabaseController implements InvocableController ); $this->response->addJSON('db', Current::$database); - return null; + return $this->response->response(); } } @@ -226,7 +226,7 @@ final class DatabaseController implements InvocableController } if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $config = Config::getInstance(); @@ -239,12 +239,12 @@ final class DatabaseController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/database/operations'); @@ -258,7 +258,7 @@ final class DatabaseController implements InvocableController $dbCollation = $this->dbi->getDbCollation(Current::$database); if (Utilities::isSystemSchema(Current::$database)) { - return null; + return $this->response->response(); } $databaseComment = ''; @@ -307,6 +307,6 @@ final class DatabaseController implements InvocableController 'collations' => $collations, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Operations/TableController.php b/src/Controllers/Operations/TableController.php index 2e16a5be9e..83d39377f9 100644 --- a/src/Controllers/Operations/TableController.php +++ b/src/Controllers/Operations/TableController.php @@ -52,7 +52,7 @@ final class TableController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['auto_increment'] ??= null; @@ -70,7 +70,7 @@ final class TableController implements InvocableController $this->response->addScriptFiles(['table/operations.js']); if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $isSystemSchema = Utilities::isSystemSchema(Current::$database); @@ -85,12 +85,12 @@ final class TableController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -99,12 +99,12 @@ final class TableController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $GLOBALS['urlParams']['goto'] = $GLOBALS['urlParams']['back'] = Url::getFromRoute('/table/operations'); @@ -154,7 +154,7 @@ final class TableController implements InvocableController $message = $this->operations->moveOrCopyTable($userPrivileges, Current::$database, Current::$table); if (! $request->isAjax()) { - return null; + return $this->response->response(); } $this->response->addJSON('message', $message); @@ -168,12 +168,12 @@ final class TableController implements InvocableController $this->response->addJSON('db', Current::$database); - return null; + return $this->response->response(); } $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } $newMessage = ''; @@ -277,7 +277,7 @@ final class TableController implements InvocableController Message::error(__('No collation provided.')), ); - return null; + return $this->response->response(); } } } @@ -361,7 +361,7 @@ final class TableController implements InvocableController ); } - return null; + return $this->response->response(); } } else { $newMessage = $result @@ -383,7 +383,7 @@ final class TableController implements InvocableController ); } - return null; + return $this->response->response(); } } @@ -521,6 +521,6 @@ final class TableController implements InvocableController 'foreigners' => $foreigners, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Operations/ViewController.php b/src/Controllers/Operations/ViewController.php index 3a68fb05d9..ae4171e9d3 100644 --- a/src/Controllers/Operations/ViewController.php +++ b/src/Controllers/Operations/ViewController.php @@ -37,7 +37,7 @@ final class ViewController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $tableObject = $this->dbi->getTable(Current::$database, Current::$table); @@ -46,7 +46,7 @@ final class ViewController implements InvocableController $this->response->addScriptFiles(['table/operations.js']); if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -62,12 +62,12 @@ final class ViewController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -76,12 +76,12 @@ final class ViewController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $GLOBALS['urlParams']['goto'] = $GLOBALS['urlParams']['back'] = Url::getFromRoute('/view/operations'); @@ -140,6 +140,6 @@ final class ViewController implements InvocableController 'url_params' => $GLOBALS['urlParams'], ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Preferences/ExportController.php b/src/Controllers/Preferences/ExportController.php index 3225c85022..90315a64ed 100644 --- a/src/Controllers/Preferences/ExportController.php +++ b/src/Controllers/Preferences/ExportController.php @@ -33,7 +33,7 @@ final class ExportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['error'] ??= null; $GLOBALS['tabHash'] ??= null; @@ -49,7 +49,7 @@ final class ExportController implements InvocableController $formDisplay->fixErrors(); $this->response->redirectToRoute('/preferences/export', []); - return null; + return $this->response->response(); } $GLOBALS['error'] = null; @@ -67,7 +67,7 @@ final class ExportController implements InvocableController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/export', null, $GLOBALS['hash']); - return null; + return $this->response->response(); } $GLOBALS['error'] = $result; @@ -100,6 +100,6 @@ final class ExportController implements InvocableController define('PMA_DISABLE_NAVI_SETTINGS', true); } - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Preferences/FeaturesController.php b/src/Controllers/Preferences/FeaturesController.php index 354224386b..5ee56c7737 100644 --- a/src/Controllers/Preferences/FeaturesController.php +++ b/src/Controllers/Preferences/FeaturesController.php @@ -33,7 +33,7 @@ final class FeaturesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['error'] ??= null; $GLOBALS['tabHash'] ??= null; @@ -49,7 +49,7 @@ final class FeaturesController implements InvocableController $formDisplay->fixErrors(); $this->response->redirectToRoute('/preferences/features', []); - return null; + return $this->response->response(); } $GLOBALS['error'] = null; @@ -67,7 +67,7 @@ final class FeaturesController implements InvocableController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/features', null, $GLOBALS['hash']); - return null; + return $this->response->response(); } $GLOBALS['error'] = $result; @@ -100,6 +100,6 @@ final class FeaturesController implements InvocableController define('PMA_DISABLE_NAVI_SETTINGS', true); } - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Preferences/ImportController.php b/src/Controllers/Preferences/ImportController.php index 3da6a9ac11..50b93d4639 100644 --- a/src/Controllers/Preferences/ImportController.php +++ b/src/Controllers/Preferences/ImportController.php @@ -33,7 +33,7 @@ final class ImportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['error'] ??= null; $GLOBALS['tabHash'] ??= null; @@ -49,7 +49,7 @@ final class ImportController implements InvocableController $formDisplay->fixErrors(); $this->response->redirectToRoute('/preferences/import', []); - return null; + return $this->response->response(); } $GLOBALS['error'] = null; @@ -67,7 +67,7 @@ final class ImportController implements InvocableController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/import', null, $GLOBALS['hash']); - return null; + return $this->response->response(); } $GLOBALS['error'] = $result; @@ -100,6 +100,6 @@ final class ImportController implements InvocableController define('PMA_DISABLE_NAVI_SETTINGS', true); } - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Preferences/MainPanelController.php b/src/Controllers/Preferences/MainPanelController.php index 6c0ef35ec9..477ce56386 100644 --- a/src/Controllers/Preferences/MainPanelController.php +++ b/src/Controllers/Preferences/MainPanelController.php @@ -33,7 +33,7 @@ final class MainPanelController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['error'] ??= null; $GLOBALS['tabHash'] ??= null; @@ -49,7 +49,7 @@ final class MainPanelController implements InvocableController $formDisplay->fixErrors(); $this->response->redirectToRoute('/preferences/main-panel', []); - return null; + return $this->response->response(); } $GLOBALS['error'] = null; @@ -67,7 +67,7 @@ final class MainPanelController implements InvocableController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/main-panel', null, $GLOBALS['hash']); - return null; + return $this->response->response(); } $GLOBALS['error'] = $result; @@ -100,6 +100,6 @@ final class MainPanelController implements InvocableController define('PMA_DISABLE_NAVI_SETTINGS', true); } - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Preferences/ManageController.php b/src/Controllers/Preferences/ManageController.php index 692fff87dc..529619460a 100644 --- a/src/Controllers/Preferences/ManageController.php +++ b/src/Controllers/Preferences/ManageController.php @@ -56,7 +56,7 @@ final class ManageController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['error'] ??= null; $GLOBALS['lang'] ??= null; @@ -100,7 +100,7 @@ final class ManageController implements InvocableController $this->response->addJSON('prefs', json_encode($settings['config_data'])); $this->response->addJSON('mtime', $settings['mtime']); - return null; + return $this->response->response(); } if ($request->hasBodyParam('submit_import')) { @@ -180,7 +180,7 @@ final class ManageController implements InvocableController 'return_url' => $returnUrl, ]); - return null; + return $this->response->response(); } // check for ThemeDefault @@ -222,7 +222,7 @@ final class ManageController implements InvocableController $this->config->loadUserPreferences($this->themeManager); $this->userPreferences->redirect($returnUrl ?? '', $redirectParams); - return null; + return $this->response->response(); } $GLOBALS['error'] = $result; @@ -233,12 +233,12 @@ final class ManageController implements InvocableController $this->config->removeCookie('pma_lang'); $this->userPreferences->redirect('index.php?route=/preferences/manage'); - return null; + return $this->response->response(); } $GLOBALS['error'] = $result; - return null; + return $this->response->response(); } $relationParameters = $this->relation->getRelationParameters(); @@ -270,6 +270,6 @@ final class ManageController implements InvocableController define('PMA_DISABLE_NAVI_SETTINGS', true); } - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Preferences/NavigationController.php b/src/Controllers/Preferences/NavigationController.php index 38796c923f..2d9c9c1826 100644 --- a/src/Controllers/Preferences/NavigationController.php +++ b/src/Controllers/Preferences/NavigationController.php @@ -33,7 +33,7 @@ final class NavigationController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['error'] ??= null; $GLOBALS['tabHash'] ??= null; @@ -49,7 +49,7 @@ final class NavigationController implements InvocableController $formDisplay->fixErrors(); $this->response->redirectToRoute('/preferences/navigation', []); - return null; + return $this->response->response(); } $GLOBALS['error'] = null; @@ -67,7 +67,7 @@ final class NavigationController implements InvocableController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/navigation', null, $GLOBALS['hash']); - return null; + return $this->response->response(); } $GLOBALS['error'] = $result; @@ -97,11 +97,11 @@ final class NavigationController implements InvocableController if ($request->isAjax()) { $this->response->addJSON('disableNaviSettings', true); - return null; + return $this->response->response(); } define('PMA_DISABLE_NAVI_SETTINGS', true); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Preferences/SqlController.php b/src/Controllers/Preferences/SqlController.php index 853c0081ed..cfebf64524 100644 --- a/src/Controllers/Preferences/SqlController.php +++ b/src/Controllers/Preferences/SqlController.php @@ -33,7 +33,7 @@ final class SqlController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['error'] ??= null; $GLOBALS['tabHash'] ??= null; @@ -49,7 +49,7 @@ final class SqlController implements InvocableController $formDisplay->fixErrors(); $this->response->redirectToRoute('/preferences/sql', []); - return null; + return $this->response->response(); } $GLOBALS['error'] = null; @@ -67,7 +67,7 @@ final class SqlController implements InvocableController $GLOBALS['hash'] = ltrim($GLOBALS['tabHash'], '#'); $this->userPreferences->redirect('index.php?route=/preferences/sql', null, $GLOBALS['hash']); - return null; + return $this->response->response(); } $GLOBALS['error'] = $result; @@ -100,6 +100,6 @@ final class SqlController implements InvocableController define('PMA_DISABLE_NAVI_SETTINGS', true); } - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Preferences/TwoFactorController.php b/src/Controllers/Preferences/TwoFactorController.php index 57868c2a53..6d9b085708 100644 --- a/src/Controllers/Preferences/TwoFactorController.php +++ b/src/Controllers/Preferences/TwoFactorController.php @@ -23,7 +23,7 @@ final class TwoFactorController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $relationParameters = $this->relation->getRelationParameters(); @@ -39,7 +39,7 @@ final class TwoFactorController implements InvocableController if (! $twoFactor->check($request, true)) { $this->response->render('preferences/two_factor/confirm', ['form' => $twoFactor->render($request)]); - return null; + return $this->response->response(); } $twoFactor->configure($request, ''); @@ -53,7 +53,7 @@ final class TwoFactorController implements InvocableController 'configure' => $request->getParsedBodyParam('2fa_configure'), ]); - return null; + return $this->response->response(); } $this->response->addHTML( @@ -78,6 +78,6 @@ final class TwoFactorController implements InvocableController define('PMA_DISABLE_NAVI_SETTINGS', true); } - return null; + return $this->response->response(); } } diff --git a/src/Controllers/SchemaExportController.php b/src/Controllers/SchemaExportController.php index ac23784550..a235855416 100644 --- a/src/Controllers/SchemaExportController.php +++ b/src/Controllers/SchemaExportController.php @@ -31,7 +31,7 @@ final class SchemaExportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $db = DatabaseName::tryFrom($request->getParsedBodyParam('db')); /** @var mixed $exportType */ @@ -43,7 +43,7 @@ final class SchemaExportController implements InvocableController $this->response->setRequestStatus(false); $this->response->addHTML(Message::error($errorMessage)->getDisplay()); - return null; + return $this->response->response(); } /** @@ -55,7 +55,7 @@ final class SchemaExportController implements InvocableController $this->response->setRequestStatus(false); $this->response->addHTML(Message::error($exception->getMessage())->getDisplay()); - return null; + return $this->response->response(); } $response = $this->responseFactory->createResponse(); diff --git a/src/Controllers/Server/BinlogController.php b/src/Controllers/Server/BinlogController.php index bca545975f..394c6bd959 100644 --- a/src/Controllers/Server/BinlogController.php +++ b/src/Controllers/Server/BinlogController.php @@ -34,7 +34,7 @@ final class BinlogController implements InvocableController $this->binaryLogs = $this->dbi->fetchResult('SHOW MASTER LOGS', 'Log_name'); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $log = $request->getParsedBodyParam('log'); $position = (int) $request->getParsedBodyParam('pos', 0); @@ -98,7 +98,7 @@ final class BinlogController implements InvocableController 'is_full_query' => $isFullQuery, ]); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Server/CollationsController.php b/src/Controllers/Server/CollationsController.php index e2681ce693..701cbc77ca 100644 --- a/src/Controllers/Server/CollationsController.php +++ b/src/Controllers/Server/CollationsController.php @@ -41,7 +41,7 @@ final class CollationsController implements InvocableController $this->collations = $collations ?? Charsets::getCollations($this->dbi, $config->selectedServer['DisableIS']); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -69,6 +69,6 @@ final class CollationsController implements InvocableController $this->response->render('server/collations/index', ['charsets' => $charsets]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Databases/CreateController.php b/src/Controllers/Server/Databases/CreateController.php index 779b58e4ba..b1fd2dbf6e 100644 --- a/src/Controllers/Server/Databases/CreateController.php +++ b/src/Controllers/Server/Databases/CreateController.php @@ -31,7 +31,7 @@ final class CreateController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $newDb = $request->getParsedBodyParam('new_db'); $dbCollation = $request->getParsedBodyParam('db_collation'); @@ -39,7 +39,7 @@ final class CreateController implements InvocableController if (! is_string($newDb) || $newDb === '' || ! $request->isAjax()) { $this->response->addJSON(['message' => Message::error()]); - return null; + return $this->response->response(); } if ($this->dbi->getLowerCaseNames() === 1) { @@ -96,6 +96,6 @@ final class CreateController implements InvocableController $this->response->addJSON($json); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Databases/DestroyController.php b/src/Controllers/Server/Databases/DestroyController.php index a1d72ef55d..00c24f1b24 100644 --- a/src/Controllers/Server/Databases/DestroyController.php +++ b/src/Controllers/Server/Databases/DestroyController.php @@ -33,7 +33,7 @@ final class DestroyController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['selected'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -51,7 +51,7 @@ final class DestroyController implements InvocableController $this->response->setRequestStatus($message->isSuccess()); $this->response->addJSON($json); - return null; + return $this->response->response(); } if ( @@ -63,7 +63,7 @@ final class DestroyController implements InvocableController $this->response->setRequestStatus($message->isSuccess()); $this->response->addJSON($json); - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Url::getFromRoute('/server/databases'); @@ -93,6 +93,6 @@ final class DestroyController implements InvocableController $this->response->setRequestStatus($message->isSuccess()); $this->response->addJSON($json); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/DatabasesController.php b/src/Controllers/Server/DatabasesController.php index 74a23e1bb1..7596d16969 100644 --- a/src/Controllers/Server/DatabasesController.php +++ b/src/Controllers/Server/DatabasesController.php @@ -66,7 +66,7 @@ final class DatabasesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -166,7 +166,7 @@ final class DatabasesController implements InvocableController 'text_dir' => LanguageManager::$textDir, ]); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Server/EnginesController.php b/src/Controllers/Server/EnginesController.php index 22a3fb4ffb..d2269fbb2a 100644 --- a/src/Controllers/Server/EnginesController.php +++ b/src/Controllers/Server/EnginesController.php @@ -21,7 +21,7 @@ final class EnginesController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -31,6 +31,6 @@ final class EnginesController implements InvocableController $this->response->render('server/engines/index', ['engines' => StorageEngine::getStorageEngines()]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/ExportController.php b/src/Controllers/Server/ExportController.php index ccd577879d..94085f00a8 100644 --- a/src/Controllers/Server/ExportController.php +++ b/src/Controllers/Server/ExportController.php @@ -29,7 +29,7 @@ final class ExportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['unlim_num_rows'] ??= null; $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -70,7 +70,7 @@ final class ExportController implements InvocableController __('Could not load export plugins, please check your installation!'), )->getDisplay()); - return null; + return $this->response->response(); } $options = $this->export->getOptions( @@ -89,6 +89,6 @@ final class ExportController implements InvocableController 'databases' => $databases, ])); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/ImportController.php b/src/Controllers/Server/ImportController.php index a221bf5a71..bce75f0614 100644 --- a/src/Controllers/Server/ImportController.php +++ b/src/Controllers/Server/ImportController.php @@ -35,7 +35,7 @@ final class ImportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['SESSION_KEY'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -61,7 +61,7 @@ final class ImportController implements InvocableController 'Could not load import plugins, please check your installation!', ))->getDisplay()); - return null; + return $this->response->response(); } $offset = null; @@ -119,6 +119,6 @@ final class ImportController implements InvocableController 'local_files' => Import::getLocalFiles($importList), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/PluginsController.php b/src/Controllers/Server/PluginsController.php index da79b628f6..d1e877237a 100644 --- a/src/Controllers/Server/PluginsController.php +++ b/src/Controllers/Server/PluginsController.php @@ -29,7 +29,7 @@ final class PluginsController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -58,6 +58,6 @@ final class PluginsController implements InvocableController $this->response->render('server/plugins/index', ['plugins' => $plugins, 'clean_types' => $cleanTypes]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Privileges/AccountLockController.php b/src/Controllers/Server/Privileges/AccountLockController.php index 5ddcc6bf04..ed0310cfff 100644 --- a/src/Controllers/Server/Privileges/AccountLockController.php +++ b/src/Controllers/Server/Privileges/AccountLockController.php @@ -23,10 +23,10 @@ final class AccountLockController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { - return null; + return $this->response->response(); } /** @var string $userName */ @@ -41,7 +41,7 @@ final class AccountLockController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON(['message' => Message::error($exception->getMessage())]); - return null; + return $this->response->response(); } $message = Message::success(__('The account %s@%s has been successfully locked.')); @@ -49,6 +49,6 @@ final class AccountLockController implements InvocableController $message->addParam($hostName); $this->response->addJSON(['message' => $message]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Privileges/AccountUnlockController.php b/src/Controllers/Server/Privileges/AccountUnlockController.php index 5b68f9a268..d237343ed8 100644 --- a/src/Controllers/Server/Privileges/AccountUnlockController.php +++ b/src/Controllers/Server/Privileges/AccountUnlockController.php @@ -23,10 +23,10 @@ final class AccountUnlockController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { - return null; + return $this->response->response(); } /** @var string $userName */ @@ -41,7 +41,7 @@ final class AccountUnlockController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON(['message' => Message::error($exception->getMessage())]); - return null; + return $this->response->response(); } $message = Message::success(__('The account %s@%s has been successfully unlocked.')); @@ -49,6 +49,6 @@ final class AccountUnlockController implements InvocableController $message->addParam($hostName); $this->response->addJSON(['message' => $message]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/PrivilegesController.php b/src/Controllers/Server/PrivilegesController.php index fa3fd4b107..75e674c646 100644 --- a/src/Controllers/Server/PrivilegesController.php +++ b/src/Controllers/Server/PrivilegesController.php @@ -42,7 +42,7 @@ final class PrivilegesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; $GLOBALS['message'] ??= null; @@ -106,7 +106,7 @@ final class PrivilegesController implements InvocableController ->getDisplay(), ); - return null; + return $this->response->response(); } if (! $isGrantUser && ! $isCreateUser) { @@ -135,7 +135,7 @@ final class PrivilegesController implements InvocableController ); $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } /** @@ -300,7 +300,7 @@ final class PrivilegesController implements InvocableController $this->response->addJSON('message', $GLOBALS['message']); $this->response->addJSON($extraData); - return null; + return $this->response->response(); } } @@ -331,7 +331,7 @@ final class PrivilegesController implements InvocableController $this->response->addJSON('message', $export); $this->response->addJSON('title', $title); - return null; + return $this->response->response(); } $this->response->addHTML('

' . $title . '

' . $export); @@ -395,12 +395,12 @@ final class PrivilegesController implements InvocableController } if ($relationParameters->configurableMenusFeature === null) { - return null; + return $this->response->response(); } $this->response->addHTML('
'); - return null; + return $this->response->response(); } 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 782a18bc2f..90ea9a6a9c 100644 --- a/src/Controllers/Server/ReplicationController.php +++ b/src/Controllers/Server/ReplicationController.php @@ -30,7 +30,7 @@ final class ReplicationController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -133,6 +133,6 @@ final class ReplicationController implements InvocableController 'change_primary_html' => $changePrimaryHtml ?? '', ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/ShowEngineController.php b/src/Controllers/Server/ShowEngineController.php index b3a12eabad..ab3600c0f3 100644 --- a/src/Controllers/Server/ShowEngineController.php +++ b/src/Controllers/Server/ShowEngineController.php @@ -27,7 +27,7 @@ final class ShowEngineController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $this->setEngineAndPageProperties($request->getAttribute('routeVars')); @@ -54,7 +54,7 @@ final class ShowEngineController implements InvocableController $this->response->render('server/engines/show', ['engine' => $engine, 'page' => $this->page]); - return null; + return $this->response->response(); } private function setEngineAndPageProperties(mixed $routeVars): void diff --git a/src/Controllers/Server/SqlController.php b/src/Controllers/Server/SqlController.php index b63af0d444..c26eab0ab0 100644 --- a/src/Controllers/Server/SqlController.php +++ b/src/Controllers/Server/SqlController.php @@ -26,7 +26,7 @@ final class SqlController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -43,6 +43,6 @@ final class SqlController implements InvocableController $this->response->addHTML($this->sqlQueryForm->getHtml('', '')); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/AdvisorController.php b/src/Controllers/Server/Status/AdvisorController.php index 7970bdbece..7ec96ca735 100644 --- a/src/Controllers/Server/Status/AdvisorController.php +++ b/src/Controllers/Server/Status/AdvisorController.php @@ -26,7 +26,7 @@ final class AdvisorController extends AbstractController implements InvocableCon parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $data = []; if ($this->data->dataLoaded) { @@ -35,6 +35,6 @@ final class AdvisorController extends AbstractController implements InvocableCon $this->response->render('server/status/advisor/index', ['data' => $data]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/Monitor/ChartingDataController.php b/src/Controllers/Server/Status/Monitor/ChartingDataController.php index 42ce3d7107..ae83342f7a 100644 --- a/src/Controllers/Server/Status/Monitor/ChartingDataController.php +++ b/src/Controllers/Server/Status/Monitor/ChartingDataController.php @@ -27,7 +27,7 @@ final class ChartingDataController extends AbstractController implements Invocab parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -39,11 +39,11 @@ final class ChartingDataController extends AbstractController implements Invocab } if (! $request->isAjax()) { - return null; + return $this->response->response(); } $this->response->addJSON(['message' => $this->monitor->getJsonForChartingData($requiredData)]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/Monitor/GeneralLogController.php b/src/Controllers/Server/Status/Monitor/GeneralLogController.php index 9d294c4030..aeb0d3ecfc 100644 --- a/src/Controllers/Server/Status/Monitor/GeneralLogController.php +++ b/src/Controllers/Server/Status/Monitor/GeneralLogController.php @@ -27,7 +27,7 @@ final class GeneralLogController extends AbstractController implements Invocable parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -38,7 +38,7 @@ final class GeneralLogController extends AbstractController implements Invocable } if (! $request->isAjax()) { - return null; + return $this->response->response(); } $data = $this->monitor->getJsonForLogDataTypeGeneral( @@ -50,11 +50,11 @@ final class GeneralLogController extends AbstractController implements Invocable if ($data === null) { $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } $this->response->addJSON(['message' => $data]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/Monitor/LogVarsController.php b/src/Controllers/Server/Status/Monitor/LogVarsController.php index 06dfbbd612..797888b621 100644 --- a/src/Controllers/Server/Status/Monitor/LogVarsController.php +++ b/src/Controllers/Server/Status/Monitor/LogVarsController.php @@ -27,7 +27,7 @@ final class LogVarsController extends AbstractController implements InvocableCon parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -38,7 +38,7 @@ final class LogVarsController extends AbstractController implements InvocableCon } if (! $request->isAjax()) { - return null; + return $this->response->response(); } $this->response->addJSON([ @@ -48,6 +48,6 @@ final class LogVarsController extends AbstractController implements InvocableCon ), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php b/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php index 0b2fac9494..343c95827d 100644 --- a/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php +++ b/src/Controllers/Server/Status/Monitor/QueryAnalyzerController.php @@ -27,7 +27,7 @@ final class QueryAnalyzerController extends AbstractController implements Invoca parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -38,7 +38,7 @@ final class QueryAnalyzerController extends AbstractController implements Invoca } if (! $request->isAjax()) { - return null; + return $this->response->response(); } $this->response->addJSON([ @@ -48,6 +48,6 @@ final class QueryAnalyzerController extends AbstractController implements Invoca ), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/Monitor/SlowLogController.php b/src/Controllers/Server/Status/Monitor/SlowLogController.php index 703330ea62..f9b250894e 100644 --- a/src/Controllers/Server/Status/Monitor/SlowLogController.php +++ b/src/Controllers/Server/Status/Monitor/SlowLogController.php @@ -27,7 +27,7 @@ final class SlowLogController extends AbstractController implements InvocableCon parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -38,7 +38,7 @@ final class SlowLogController extends AbstractController implements InvocableCon } if (! $request->isAjax()) { - return null; + return $this->response->response(); } $data = $this->monitor->getJsonForLogDataTypeSlow( @@ -48,11 +48,11 @@ final class SlowLogController extends AbstractController implements InvocableCon if ($data === null) { $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } $this->response->addJSON(['message' => $data]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/MonitorController.php b/src/Controllers/Server/Status/MonitorController.php index dc06d0fbce..d81f04e339 100644 --- a/src/Controllers/Server/Status/MonitorController.php +++ b/src/Controllers/Server/Status/MonitorController.php @@ -28,7 +28,7 @@ final class MonitorController extends AbstractController implements InvocableCon parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -73,6 +73,6 @@ final class MonitorController extends AbstractController implements InvocableCon 'form' => $form, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/Processes/KillController.php b/src/Controllers/Server/Status/Processes/KillController.php index 490d85b91b..dc43440a70 100644 --- a/src/Controllers/Server/Status/Processes/KillController.php +++ b/src/Controllers/Server/Status/Processes/KillController.php @@ -29,10 +29,10 @@ final class KillController extends AbstractController implements InvocableContro parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { - return null; + return $this->response->response(); } $processId = $this->getProcessId($request->getAttribute('routeVars')); @@ -56,7 +56,7 @@ final class KillController extends AbstractController implements InvocableContro $this->response->addJSON(['message' => $message]); - return null; + return $this->response->response(); } 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 27401f9b66..57b8506911 100644 --- a/src/Controllers/Server/Status/Processes/RefreshController.php +++ b/src/Controllers/Server/Status/Processes/RefreshController.php @@ -24,10 +24,10 @@ final class RefreshController extends AbstractController implements InvocableCon parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { - return null; + return $this->response->response(); } $this->response->render('server/status/processes/list', $this->processes->getList( @@ -37,6 +37,6 @@ final class RefreshController extends AbstractController implements InvocableCon (string) $request->getParsedBodyParam('sort_order', ''), )); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/ProcessesController.php b/src/Controllers/Server/Status/ProcessesController.php index 03824f3993..dbb653517c 100644 --- a/src/Controllers/Server/Status/ProcessesController.php +++ b/src/Controllers/Server/Status/ProcessesController.php @@ -26,7 +26,7 @@ final class ProcessesController extends AbstractController implements InvocableC parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -62,6 +62,6 @@ final class ProcessesController extends AbstractController implements InvocableC 'server_process_list' => $listHtml, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/QueriesController.php b/src/Controllers/Server/Status/QueriesController.php index 83b3947322..da45322baa 100644 --- a/src/Controllers/Server/Status/QueriesController.php +++ b/src/Controllers/Server/Status/QueriesController.php @@ -38,7 +38,7 @@ final class QueriesController extends AbstractController implements InvocableCon parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -102,6 +102,6 @@ final class QueriesController extends AbstractController implements InvocableCon 'chart_data' => $chartData, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/Status/StatusController.php b/src/Controllers/Server/Status/StatusController.php index ce604b3aff..54d3cc5048 100644 --- a/src/Controllers/Server/Status/StatusController.php +++ b/src/Controllers/Server/Status/StatusController.php @@ -33,7 +33,7 @@ final class StatusController extends AbstractController implements InvocableCont parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -92,7 +92,7 @@ final class StatusController extends AbstractController implements InvocableCont 'replication' => $replication, ]); - return null; + return $this->response->response(); } private function getStartTime(): int diff --git a/src/Controllers/Server/Status/VariablesController.php b/src/Controllers/Server/Status/VariablesController.php index 70801391d3..a8149e23bc 100644 --- a/src/Controllers/Server/Status/VariablesController.php +++ b/src/Controllers/Server/Status/VariablesController.php @@ -33,7 +33,7 @@ final class VariablesController extends AbstractController implements InvocableC parent::__construct($response, $template, $data); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -130,7 +130,7 @@ final class VariablesController extends AbstractController implements InvocableC 'variables' => $variables ?? [], ]); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Server/UserGroupsController.php b/src/Controllers/Server/UserGroupsController.php index fc4776c174..8f34a3d5cd 100644 --- a/src/Controllers/Server/UserGroupsController.php +++ b/src/Controllers/Server/UserGroupsController.php @@ -28,11 +28,11 @@ final class UserGroupsController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $configurableMenusFeature = $this->relation->getRelationParameters()->configurableMenusFeature; if ($configurableMenusFeature === null) { - return null; + return $this->response->response(); } $this->response->addScriptFiles(['server/user_groups.js']); @@ -45,7 +45,7 @@ final class UserGroupsController implements InvocableController Message::error(__('No Privileges'))->getDisplay(), ); - return null; + return $this->response->response(); } $this->response->addHTML('
'); @@ -98,6 +98,6 @@ final class UserGroupsController implements InvocableController $this->response->addHTML('
'); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Server/UserGroupsFormController.php b/src/Controllers/Server/UserGroupsFormController.php index 5d661f3911..be8fab23d6 100644 --- a/src/Controllers/Server/UserGroupsFormController.php +++ b/src/Controllers/Server/UserGroupsFormController.php @@ -29,10 +29,10 @@ final class UserGroupsFormController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { - return null; + return $this->response->response(); } /** @var string $username */ @@ -43,7 +43,7 @@ final class UserGroupsFormController implements InvocableController $this->response->setStatusCode(StatusCodeInterface::STATUS_BAD_REQUEST); $this->response->addJSON('message', __('Missing parameter:') . ' username'); - return null; + return $this->response->response(); } $configurableMenusFeature = $this->relation->getRelationParameters()->configurableMenusFeature; @@ -52,14 +52,14 @@ final class UserGroupsFormController implements InvocableController $this->response->setStatusCode(StatusCodeInterface::STATUS_BAD_REQUEST); $this->response->addJSON('message', __('User groups management is not enabled.')); - return null; + return $this->response->response(); } $form = $this->getHtmlToChooseUserGroup($username, $configurableMenusFeature); $this->response->addJSON('message', $form); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Server/Variables/GetVariableController.php b/src/Controllers/Server/Variables/GetVariableController.php index ff29d70573..6d02c04360 100644 --- a/src/Controllers/Server/Variables/GetVariableController.php +++ b/src/Controllers/Server/Variables/GetVariableController.php @@ -22,10 +22,10 @@ final class GetVariableController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { - return null; + return $this->response->response(); } $name = $this->getName($request->getAttribute('routeVars')); @@ -50,7 +50,7 @@ final class GetVariableController implements InvocableController $this->response->addJSON($json); - return null; + return $this->response->response(); } private function getName(mixed $routeVars): string diff --git a/src/Controllers/Server/Variables/SetVariableController.php b/src/Controllers/Server/Variables/SetVariableController.php index 03558cc92e..1355e44959 100644 --- a/src/Controllers/Server/Variables/SetVariableController.php +++ b/src/Controllers/Server/Variables/SetVariableController.php @@ -35,10 +35,10 @@ final class SetVariableController implements InvocableController /** * Handle the AJAX request for setting value for a single variable */ - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->isAjax()) { - return null; + return $this->response->response(); } $value = (string) $request->getParsedBodyParam('varValue'); @@ -83,7 +83,7 @@ final class SetVariableController implements InvocableController $this->response->addJSON($json); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Server/VariablesController.php b/src/Controllers/Server/VariablesController.php index 3289b4f43b..4144196b82 100644 --- a/src/Controllers/Server/VariablesController.php +++ b/src/Controllers/Server/VariablesController.php @@ -34,7 +34,7 @@ final class VariablesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] = Url::getFromRoute('/'); @@ -93,7 +93,7 @@ final class VariablesController implements InvocableController 'is_mariadb' => $this->dbi->isMariaDB(), ]); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Sql/ColumnPreferencesController.php b/src/Controllers/Sql/ColumnPreferencesController.php index c34dc0c76a..9bacc0733e 100644 --- a/src/Controllers/Sql/ColumnPreferencesController.php +++ b/src/Controllers/Sql/ColumnPreferencesController.php @@ -24,7 +24,7 @@ final class ColumnPreferencesController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $tableObject = $this->dbi->getTable(Current::$database, Current::$table); $status = false; @@ -50,11 +50,11 @@ final class ColumnPreferencesController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $status->getString()); - return null; + return $this->response->response(); } $this->response->setRequestStatus($status); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php b/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php index 819f242bb5..a398188e9a 100644 --- a/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php +++ b/src/Controllers/Sql/DefaultForeignKeyCheckValueController.php @@ -16,10 +16,10 @@ final class DefaultForeignKeyCheckValueController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $this->response->addJSON('default_fk_check_value', ForeignKey::isCheckEnabled()); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Sql/EnumValuesController.php b/src/Controllers/Sql/EnumValuesController.php index b86cb58bb6..0a1678d15d 100644 --- a/src/Controllers/Sql/EnumValuesController.php +++ b/src/Controllers/Sql/EnumValuesController.php @@ -26,7 +26,7 @@ final class EnumValuesController implements InvocableController /** * Get possible values for enum fields during grid edit. */ - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $column = $request->getParsedBodyParam('column'); $currValue = $request->getParsedBodyParam('curr_value'); @@ -36,7 +36,7 @@ final class EnumValuesController implements InvocableController $this->response->addJSON('message', __('Error in processing request')); $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } $dropdown = $this->template->render('sql/enum_column_dropdown', [ @@ -46,6 +46,6 @@ final class EnumValuesController implements InvocableController $this->response->addJSON('dropdown', $dropdown); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Sql/RelationalValuesController.php b/src/Controllers/Sql/RelationalValuesController.php index 73a0744216..61408a7753 100644 --- a/src/Controllers/Sql/RelationalValuesController.php +++ b/src/Controllers/Sql/RelationalValuesController.php @@ -22,7 +22,7 @@ final class RelationalValuesController implements InvocableController * * During grid edit, if we have a relational field, show the dropdown for it. */ - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $column = $request->getParsedBodyParam('column'); $relationKeyOrDisplayColumn = $request->getParsedBodyParam('relation_key_or_display_column'); @@ -41,6 +41,6 @@ final class RelationalValuesController implements InvocableController ); $this->response->addJSON('dropdown', $dropdown); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Sql/SetValuesController.php b/src/Controllers/Sql/SetValuesController.php index 81005416f3..ac1b01f557 100644 --- a/src/Controllers/Sql/SetValuesController.php +++ b/src/Controllers/Sql/SetValuesController.php @@ -27,7 +27,7 @@ final class SetValuesController implements InvocableController /** * Get possible values for SET fields during grid edit. */ - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $column = $request->getParsedBodyParam('column'); $currentValue = $request->getParsedBodyParam('curr_value'); @@ -39,7 +39,7 @@ final class SetValuesController implements InvocableController $this->response->addJSON('message', __('Error in processing request')); $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } // If the $currentValue was truncated, we should fetch the correct full values from the table. @@ -59,6 +59,6 @@ final class SetValuesController implements InvocableController $this->response->addJSON('select', $select); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Sql/SqlController.php b/src/Controllers/Sql/SqlController.php index 46fc361c41..08f44584a2 100644 --- a/src/Controllers/Sql/SqlController.php +++ b/src/Controllers/Sql/SqlController.php @@ -37,7 +37,7 @@ class SqlController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['display_query'] ??= null; $GLOBALS['ajax_reload'] ??= null; @@ -126,7 +126,7 @@ class SqlController implements InvocableController // set $goto to what will be displayed if query returns 0 rows $GLOBALS['goto'] = ''; } elseif (! $this->response->checkParameters(['sql_query'])) { - return null; + return $this->response->response(); } /** @@ -171,7 +171,7 @@ class SqlController implements InvocableController if ($storeBkm && $bkmFields !== null) { $this->addBookmark($GLOBALS['goto'], $bkmFields, (bool) $bkmAllUsers); - return null; + return $this->response->response(); } /** @@ -201,7 +201,7 @@ class SqlController implements InvocableController $GLOBALS['complete_query'] ?? null, )); - return null; + return $this->response->response(); } /** @param array $bkmFields */ diff --git a/src/Controllers/Table/AddFieldController.php b/src/Controllers/Table/AddFieldController.php index 67bf9a2032..a4c36d3edb 100644 --- a/src/Controllers/Table/AddFieldController.php +++ b/src/Controllers/Table/AddFieldController.php @@ -47,7 +47,7 @@ final class AddFieldController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; $GLOBALS['message'] ??= null; @@ -58,7 +58,7 @@ final class AddFieldController implements InvocableController $this->response->addScriptFiles(['table/structure.js']); if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -93,7 +93,7 @@ final class AddFieldController implements InvocableController if (isset($_POST['preview_sql'])) { Core::previewSQL($GLOBALS['sql_query']); - return null; + return $this->response->response(); } $result = $createAddField->tryColumnCreationQuery( @@ -107,7 +107,7 @@ final class AddFieldController implements InvocableController $this->response->addHTML($errorMessageHtml ?? ''); $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } // Update comment table for mime types [MIME] @@ -150,7 +150,7 @@ final class AddFieldController implements InvocableController ]), ); - return null; + return $this->response->response(); } $urlParams = ['db' => Current::$database, 'table' => Current::$table]; @@ -163,12 +163,12 @@ final class AddFieldController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -177,24 +177,24 @@ final class AddFieldController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $this->response->addScriptFiles(['vendor/jquery/jquery.uitablefilter.js']); if (! $this->response->checkParameters(['server', 'db', 'table'])) { - return null; + return $this->response->response(); } $templateData = $this->columnsDefinition->displayForm($userPrivileges, '/table/add-field', $numFields); $this->response->render('columns_definitions/column_definitions_form', $templateData); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/ChangeController.php b/src/Controllers/Table/ChangeController.php index f532475884..8cd62efc4a 100644 --- a/src/Controllers/Table/ChangeController.php +++ b/src/Controllers/Table/ChangeController.php @@ -49,7 +49,7 @@ class ChangeController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['disp_message'] ??= null; $GLOBALS['urlParams'] ??= null; @@ -68,12 +68,12 @@ class ChangeController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -82,12 +82,12 @@ class ChangeController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $this->setInsertRowsParam($request->getParsedBodyParam('insert_rows')); @@ -291,7 +291,7 @@ class ChangeController implements InvocableController $this->response->addHTML($htmlOutput); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/ChangeRowsController.php b/src/Controllers/Table/ChangeRowsController.php index dbf33e7ec5..cfe917f468 100644 --- a/src/Controllers/Table/ChangeRowsController.php +++ b/src/Controllers/Table/ChangeRowsController.php @@ -21,7 +21,7 @@ final class ChangeRowsController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['where_clause'] ??= null; @@ -34,7 +34,7 @@ final class ChangeRowsController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No row selected.')); - return null; + return $this->response->response(); } // As we got the rows to be edited from the @@ -46,8 +46,6 @@ final class ChangeRowsController implements InvocableController $GLOBALS['where_clause'] = array_values($rowsToDelete); } - ($this->changeController)($request); - - return null; + return ($this->changeController)($request); } } diff --git a/src/Controllers/Table/ChartController.php b/src/Controllers/Table/ChartController.php index 16c944e51f..1114f3970b 100644 --- a/src/Controllers/Table/ChartController.php +++ b/src/Controllers/Table/ChartController.php @@ -41,7 +41,7 @@ final class ChartController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -50,12 +50,12 @@ final class ChartController implements InvocableController Current::$table !== '' && Current::$database !== '' && ! $this->response->checkParameters(['db', 'table']) ) { - return null; + return $this->response->response(); } $this->ajax($request); - return null; + return $this->response->response(); } // Throw error if no sql query is set @@ -65,7 +65,7 @@ final class ChartController implements InvocableController Message::error(__('No SQL query was set to fetch data.'))->getDisplay(), ); - return null; + return $this->response->response(); } $this->response->addScriptFiles([ @@ -91,7 +91,7 @@ final class ChartController implements InvocableController */ if (Current::$table !== '') { if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $urlParams = ['db' => Current::$database, 'table' => Current::$table]; @@ -104,12 +104,12 @@ final class ChartController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -118,12 +118,12 @@ final class ChartController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $urlParams['goto'] = Util::getScriptNameForOption($config->settings['DefaultTabTable'], 'table'); @@ -134,7 +134,7 @@ final class ChartController implements InvocableController $urlParams['back'] = Url::getFromRoute('/sql'); if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Util::getScriptNameForOption($config->settings['DefaultTabDatabase'], 'database'); @@ -146,12 +146,12 @@ final class ChartController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } } else { $urlParams['goto'] = Util::getScriptNameForOption($config->settings['DefaultTabServer'], 'server'); @@ -191,7 +191,7 @@ final class ChartController implements InvocableController __('No numeric columns present in the table to plot.'), ); - return null; + return $this->response->response(); } $urlParams['db'] = Current::$database; @@ -210,7 +210,7 @@ final class ChartController implements InvocableController 'start_and_number_of_rows_fieldset' => $startAndNumberOfRowsFieldset, ]); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/CreateController.php b/src/Controllers/Table/CreateController.php index d464a058e9..9d1e534d57 100644 --- a/src/Controllers/Table/CreateController.php +++ b/src/Controllers/Table/CreateController.php @@ -42,10 +42,10 @@ final class CreateController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -103,7 +103,7 @@ final class CreateController implements InvocableController if (isset($_POST['preview_sql'])) { Core::previewSQL($GLOBALS['sql_query']); - return null; + return $this->response->response(); } // Executes the query @@ -137,7 +137,7 @@ final class CreateController implements InvocableController $this->response->addJSON('message', $this->dbi->getError()); } - return null; + return $this->response->response(); } // Do not display the table in the header since it hasn't been created yet @@ -146,14 +146,14 @@ final class CreateController implements InvocableController $this->response->addScriptFiles(['vendor/jquery/jquery.uitablefilter.js']); if (! $this->response->checkParameters(['server', 'db'])) { - return null; + return $this->response->response(); } $templateData = $this->columnsDefinition->displayForm($userPrivileges, '/table/create', $numFields); $this->response->render('columns_definitions/column_definitions_form', $templateData); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/DeleteConfirmController.php b/src/Controllers/Table/DeleteConfirmController.php index d0b33d73aa..a1735e53e7 100644 --- a/src/Controllers/Table/DeleteConfirmController.php +++ b/src/Controllers/Table/DeleteConfirmController.php @@ -29,7 +29,7 @@ final class DeleteConfirmController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -40,11 +40,11 @@ final class DeleteConfirmController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No row selected.')); - return null; + return $this->response->response(); } if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -60,12 +60,12 @@ final class DeleteConfirmController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -74,12 +74,12 @@ final class DeleteConfirmController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $this->response->render('table/delete/confirm', [ @@ -90,6 +90,6 @@ final class DeleteConfirmController implements InvocableController 'is_foreign_key_check' => ForeignKey::isCheckEnabled(), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/DeleteRowsController.php b/src/Controllers/Table/DeleteRowsController.php index 01fec781f5..ac9d75c0f1 100644 --- a/src/Controllers/Table/DeleteRowsController.php +++ b/src/Controllers/Table/DeleteRowsController.php @@ -32,7 +32,7 @@ final class DeleteRowsController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['goto'] ??= null; $GLOBALS['disp_message'] ??= null; @@ -97,6 +97,6 @@ final class DeleteRowsController implements InvocableController null, )); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/DropColumnConfirmationController.php b/src/Controllers/Table/DropColumnConfirmationController.php index d32ca7eaa2..5b1e8fb80e 100644 --- a/src/Controllers/Table/DropColumnConfirmationController.php +++ b/src/Controllers/Table/DropColumnConfirmationController.php @@ -27,7 +27,7 @@ final class DropColumnConfirmationController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $fields = $request->getParsedBodyParam('selected_fld'); try { @@ -37,11 +37,11 @@ final class DropColumnConfirmationController implements InvocableController } catch (InvalidIdentifier $exception) { $this->sendErrorResponse($exception->getMessage()); - return null; + return $this->response->response(); } catch (InvalidArgumentException) { $this->sendErrorResponse(__('No column selected.')); - return null; + return $this->response->response(); } if (! $this->dbTableExists->selectDatabase($db)) { @@ -49,12 +49,12 @@ final class DropColumnConfirmationController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } if (! $this->dbTableExists->hasTable($db, $table)) { @@ -62,12 +62,12 @@ final class DropColumnConfirmationController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $this->response->render('table/structure/drop_confirm', [ @@ -76,7 +76,7 @@ final class DropColumnConfirmationController implements InvocableController 'fields' => $fields, ]); - return null; + return $this->response->response(); } private function sendErrorResponse(string $message): void diff --git a/src/Controllers/Table/DropColumnController.php b/src/Controllers/Table/DropColumnController.php index 2c6803daa8..bf80934f75 100644 --- a/src/Controllers/Table/DropColumnController.php +++ b/src/Controllers/Table/DropColumnController.php @@ -29,7 +29,7 @@ final class DropColumnController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $selected = $_POST['selected'] ?? []; @@ -37,7 +37,7 @@ final class DropColumnController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return null; + return $this->response->response(); } $selectedCount = count($selected); @@ -75,6 +75,6 @@ final class DropColumnController implements InvocableController $this->flashMessenger->addMessage($message->isError() ? 'danger' : 'success', $message->getMessage()); $this->response->redirectToRoute('/table/structure', ['db' => Current::$database, 'table' => Current::$table]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/ExportController.php b/src/Controllers/Table/ExportController.php index 806214febc..68dadad239 100644 --- a/src/Controllers/Table/ExportController.php +++ b/src/Controllers/Table/ExportController.php @@ -34,7 +34,7 @@ class ExportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -48,7 +48,7 @@ class ExportController implements InvocableController $this->response->addScriptFiles(['export.js']); if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -103,7 +103,7 @@ class ExportController implements InvocableController __('Could not load export plugins, please check your installation!'), )->getDisplay()); - return null; + return $this->response->response(); } $exportType = 'table'; @@ -128,6 +128,6 @@ class ExportController implements InvocableController 'page_settings_html' => $pageSettingsHtml, ])); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/ExportRowsController.php b/src/Controllers/Table/ExportRowsController.php index f3b4764c25..6f3f7b6d77 100644 --- a/src/Controllers/Table/ExportRowsController.php +++ b/src/Controllers/Table/ExportRowsController.php @@ -21,7 +21,7 @@ final class ExportRowsController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['single_table'] ??= null; $GLOBALS['where_clause'] ??= null; @@ -30,7 +30,7 @@ final class ExportRowsController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No row selected.')); - return null; + return $this->response->response(); } // Needed to allow SQL export @@ -45,8 +45,6 @@ final class ExportRowsController implements InvocableController $GLOBALS['where_clause'] = array_values($_POST['rows_to_delete']); } - ($this->exportController)($request); - - return null; + return ($this->exportController)($request); } } diff --git a/src/Controllers/Table/FindReplaceController.php b/src/Controllers/Table/FindReplaceController.php index 659e1b5d28..c266433aaf 100644 --- a/src/Controllers/Table/FindReplaceController.php +++ b/src/Controllers/Table/FindReplaceController.php @@ -52,12 +52,12 @@ final class FindReplaceController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -73,12 +73,12 @@ final class FindReplaceController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -87,12 +87,12 @@ final class FindReplaceController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $this->loadTableInfo(); @@ -107,7 +107,7 @@ final class FindReplaceController implements InvocableController $preview = $this->getReplacePreview($columnIndex, $find, $replaceWith, $useRegex, $connectionCharSet); $this->response->addJSON('preview', $preview); - return null; + return $this->response->response(); } $this->response->addScriptFiles(['table/find_replace.js']); @@ -127,7 +127,7 @@ final class FindReplaceController implements InvocableController // Displays the find and replace form $this->displaySelectionFormAction(); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/GetFieldController.php b/src/Controllers/Table/GetFieldController.php index e49b9a08a2..6231a5d7df 100644 --- a/src/Controllers/Table/GetFieldController.php +++ b/src/Controllers/Table/GetFieldController.php @@ -35,10 +35,10 @@ final class GetFieldController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } /* Select database */ @@ -65,7 +65,7 @@ final class GetFieldController implements InvocableController /* 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 null; + return $this->response->response(); } $transformKey = (string) $request->getQueryParam('transform_key', ''); @@ -82,7 +82,7 @@ final class GetFieldController implements InvocableController $sql, ); - return null; + return $this->response->response(); } $result ??= ''; diff --git a/src/Controllers/Table/GisVisualizationController.php b/src/Controllers/Table/GisVisualizationController.php index 281187fffb..a1df1307c9 100644 --- a/src/Controllers/Table/GisVisualizationController.php +++ b/src/Controllers/Table/GisVisualizationController.php @@ -44,10 +44,10 @@ final class GisVisualizationController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -62,12 +62,12 @@ final class GisVisualizationController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } // SQL query for retrieving GIS data @@ -80,7 +80,7 @@ final class GisVisualizationController implements InvocableController Message::error(__('No SQL query was set to fetch data.'))->getDisplay(), ); - return null; + return $this->response->response(); } $meta = $this->getColumnMeta($sqlQuery); @@ -102,7 +102,7 @@ final class GisVisualizationController implements InvocableController Message::error(__('No spatial column found for this SQL query.'))->getDisplay(), ); - return null; + return $this->response->response(); } // Get settings if any posted @@ -169,7 +169,7 @@ final class GisVisualizationController implements InvocableController $this->response->addHTML($html); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/ImportController.php b/src/Controllers/Table/ImportController.php index c2aea7eabf..20a2da8a20 100644 --- a/src/Controllers/Table/ImportController.php +++ b/src/Controllers/Table/ImportController.php @@ -39,7 +39,7 @@ final class ImportController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['SESSION_KEY'] ??= null; @@ -52,7 +52,7 @@ final class ImportController implements InvocableController $this->response->addScriptFiles(['import.js']); if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -66,12 +66,12 @@ final class ImportController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -80,12 +80,12 @@ final class ImportController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/import'); @@ -101,7 +101,7 @@ final class ImportController implements InvocableController 'Could not load import plugins, please check your installation!', ))->getDisplay()); - return null; + return $this->response->response(); } $offset = null; @@ -163,6 +163,6 @@ final class ImportController implements InvocableController 'local_files' => Import::getLocalFiles($importList), ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/IndexRenameController.php b/src/Controllers/Table/IndexRenameController.php index 3823d4d337..b515b6034c 100644 --- a/src/Controllers/Table/IndexRenameController.php +++ b/src/Controllers/Table/IndexRenameController.php @@ -36,13 +36,13 @@ final class IndexRenameController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -58,12 +58,12 @@ final class IndexRenameController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -72,12 +72,12 @@ final class IndexRenameController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $oldIndexName = $request->getParsedBodyParam('old_index'); @@ -93,7 +93,7 @@ final class IndexRenameController implements InvocableController $this->response->render('table/index_rename_form', ['index' => $index, 'form_params' => $formParams]); - return null; + return $this->response->response(); } // coming already from form @@ -115,7 +115,7 @@ final class IndexRenameController implements InvocableController $this->template->render('preview_sql', ['query_data' => $sqlQuery]), ); - return null; + return $this->response->response(); } $logicError = $this->indexes->getError(); @@ -123,7 +123,7 @@ final class IndexRenameController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $logicError); - return null; + return $this->response->response(); } $this->dbi->query($sqlQuery); @@ -147,6 +147,6 @@ final class IndexRenameController implements InvocableController ]), ); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/IndexesController.php b/src/Controllers/Table/IndexesController.php index 2102cbba54..ef6925ccc8 100644 --- a/src/Controllers/Table/IndexesController.php +++ b/src/Controllers/Table/IndexesController.php @@ -45,14 +45,14 @@ final class IndexesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! isset($_POST['create_edit_table'])) { if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -68,12 +68,12 @@ final class IndexesController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -82,12 +82,12 @@ final class IndexesController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } } @@ -124,7 +124,7 @@ final class IndexesController implements InvocableController $this->template->render('preview_sql', ['query_data' => $sqlQuery]), ); - return null; + return $this->response->response(); } $logicError = $this->indexes->getError(); @@ -132,7 +132,7 @@ final class IndexesController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $logicError); - return null; + return $this->response->response(); } $this->dbi->query($sqlQuery); @@ -159,19 +159,18 @@ final class IndexesController implements InvocableController ]), ); - return null; + return $this->response->response(); } /** @var StructureController $controller */ $controller = ContainerBuilder::getContainer()->get(StructureController::class); - $controller($request); - return null; + return $controller($request); } $this->displayForm($index); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/Maintenance/AnalyzeController.php b/src/Controllers/Table/Maintenance/AnalyzeController.php index 79b039277c..4f2fafe272 100644 --- a/src/Controllers/Table/Maintenance/AnalyzeController.php +++ b/src/Controllers/Table/Maintenance/AnalyzeController.php @@ -31,7 +31,7 @@ final class AnalyzeController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $selectedTablesParam = $request->getParsedBodyParam('selected_tbl'); @@ -43,7 +43,7 @@ final class AnalyzeController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } try { @@ -57,14 +57,14 @@ final class AnalyzeController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message->getDisplay()); - return null; + return $this->response->response(); } if ($this->config->get('DisableMultiTableMaintenance') && count($selectedTables) > 1) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('Maintenance operations on multiple tables are disabled.')); - return null; + return $this->response->response(); } [$rows, $query] = $this->model->getAnalyzeTableRows($database, $selectedTables); @@ -77,6 +77,6 @@ final class AnalyzeController implements InvocableController $this->response->render('table/maintenance/analyze', ['message' => $message, 'rows' => $rows]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Maintenance/CheckController.php b/src/Controllers/Table/Maintenance/CheckController.php index 755290fe2b..bb44ba64d3 100644 --- a/src/Controllers/Table/Maintenance/CheckController.php +++ b/src/Controllers/Table/Maintenance/CheckController.php @@ -31,7 +31,7 @@ final class CheckController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $selectedTablesParam = $request->getParsedBodyParam('selected_tbl'); @@ -43,7 +43,7 @@ final class CheckController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } try { @@ -57,14 +57,14 @@ final class CheckController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message->getDisplay()); - return null; + return $this->response->response(); } if ($this->config->get('DisableMultiTableMaintenance') && count($selectedTables) > 1) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('Maintenance operations on multiple tables are disabled.')); - return null; + return $this->response->response(); } [$rows, $query] = $this->model->getCheckTableRows($database, $selectedTables); @@ -83,6 +83,6 @@ final class CheckController implements InvocableController 'indexes_problems' => $indexesProblems, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Maintenance/ChecksumController.php b/src/Controllers/Table/Maintenance/ChecksumController.php index 54f116dc9a..567d6fb974 100644 --- a/src/Controllers/Table/Maintenance/ChecksumController.php +++ b/src/Controllers/Table/Maintenance/ChecksumController.php @@ -31,7 +31,7 @@ final class ChecksumController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $selectedTablesParam = $request->getParsedBodyParam('selected_tbl'); @@ -43,7 +43,7 @@ final class ChecksumController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } try { @@ -57,14 +57,14 @@ final class ChecksumController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message->getDisplay()); - return null; + return $this->response->response(); } if ($this->config->get('DisableMultiTableMaintenance') && count($selectedTables) > 1) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('Maintenance operations on multiple tables are disabled.')); - return null; + return $this->response->response(); } [$rows, $query, $warnings] = $this->model->getChecksumTableRows($database, $selectedTables); @@ -81,6 +81,6 @@ final class ChecksumController implements InvocableController 'warnings' => $warnings, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Maintenance/OptimizeController.php b/src/Controllers/Table/Maintenance/OptimizeController.php index ab03154c73..70841311a4 100644 --- a/src/Controllers/Table/Maintenance/OptimizeController.php +++ b/src/Controllers/Table/Maintenance/OptimizeController.php @@ -31,7 +31,7 @@ final class OptimizeController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $selectedTablesParam = $request->getParsedBodyParam('selected_tbl'); @@ -43,7 +43,7 @@ final class OptimizeController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } try { @@ -57,14 +57,14 @@ final class OptimizeController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message->getDisplay()); - return null; + return $this->response->response(); } if ($this->config->get('DisableMultiTableMaintenance') && count($selectedTables) > 1) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('Maintenance operations on multiple tables are disabled.')); - return null; + return $this->response->response(); } [$rows, $query] = $this->model->getOptimizeTableRows($database, $selectedTables); @@ -77,6 +77,6 @@ final class OptimizeController implements InvocableController $this->response->render('table/maintenance/optimize', ['message' => $message, 'rows' => $rows]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Maintenance/RepairController.php b/src/Controllers/Table/Maintenance/RepairController.php index 5f7256ee4b..98a3fcfffc 100644 --- a/src/Controllers/Table/Maintenance/RepairController.php +++ b/src/Controllers/Table/Maintenance/RepairController.php @@ -31,7 +31,7 @@ final class RepairController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $selectedTablesParam = $request->getParsedBodyParam('selected_tbl'); @@ -43,7 +43,7 @@ final class RepairController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No table selected.')); - return null; + return $this->response->response(); } try { @@ -57,14 +57,14 @@ final class RepairController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message->getDisplay()); - return null; + return $this->response->response(); } if ($this->config->get('DisableMultiTableMaintenance') && count($selectedTables) > 1) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('Maintenance operations on multiple tables are disabled.')); - return null; + return $this->response->response(); } [$rows, $query] = $this->model->getRepairTableRows($database, $selectedTables); @@ -77,6 +77,6 @@ final class RepairController implements InvocableController $this->response->render('table/maintenance/repair', ['message' => $message, 'rows' => $rows]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Partition/AnalyzeController.php b/src/Controllers/Table/Partition/AnalyzeController.php index 5b4f8a46ef..0fc87aef68 100644 --- a/src/Controllers/Table/Partition/AnalyzeController.php +++ b/src/Controllers/Table/Partition/AnalyzeController.php @@ -26,7 +26,7 @@ final class AnalyzeController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -38,7 +38,7 @@ final class AnalyzeController implements InvocableController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return null; + return $this->response->response(); } [$rows, $query] = $this->model->analyze($database, $table, $partitionName); @@ -55,6 +55,6 @@ final class AnalyzeController implements InvocableController 'rows' => $rows, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Partition/CheckController.php b/src/Controllers/Table/Partition/CheckController.php index 66cc2a94e1..c2a4ac203b 100644 --- a/src/Controllers/Table/Partition/CheckController.php +++ b/src/Controllers/Table/Partition/CheckController.php @@ -26,7 +26,7 @@ final class CheckController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -38,7 +38,7 @@ final class CheckController implements InvocableController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return null; + return $this->response->response(); } [$rows, $query] = $this->model->check($database, $table, $partitionName); @@ -55,6 +55,6 @@ final class CheckController implements InvocableController 'rows' => $rows, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Partition/DropController.php b/src/Controllers/Table/Partition/DropController.php index 57463118b1..266da8e936 100644 --- a/src/Controllers/Table/Partition/DropController.php +++ b/src/Controllers/Table/Partition/DropController.php @@ -26,7 +26,7 @@ final class DropController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -38,7 +38,7 @@ final class DropController implements InvocableController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return null; + return $this->response->response(); } [$result, $query] = $this->model->drop($database, $table, $partitionName); @@ -59,6 +59,6 @@ final class DropController implements InvocableController $this->response->render('table/partition/drop', ['partition_name' => $partitionName, 'message' => $message]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Partition/OptimizeController.php b/src/Controllers/Table/Partition/OptimizeController.php index 13bc8aad5e..2151745f9e 100644 --- a/src/Controllers/Table/Partition/OptimizeController.php +++ b/src/Controllers/Table/Partition/OptimizeController.php @@ -26,7 +26,7 @@ final class OptimizeController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -38,7 +38,7 @@ final class OptimizeController implements InvocableController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return null; + return $this->response->response(); } [$rows, $query] = $this->model->optimize($database, $table, $partitionName); @@ -55,6 +55,6 @@ final class OptimizeController implements InvocableController 'rows' => $rows, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Partition/RebuildController.php b/src/Controllers/Table/Partition/RebuildController.php index 6475cdcccc..81e95758d7 100644 --- a/src/Controllers/Table/Partition/RebuildController.php +++ b/src/Controllers/Table/Partition/RebuildController.php @@ -26,7 +26,7 @@ final class RebuildController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -38,7 +38,7 @@ final class RebuildController implements InvocableController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return null; + return $this->response->response(); } [$result, $query] = $this->model->rebuild($database, $table, $partitionName); @@ -59,6 +59,6 @@ final class RebuildController implements InvocableController $this->response->render('table/partition/rebuild', ['partition_name' => $partitionName, 'message' => $message]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Partition/RepairController.php b/src/Controllers/Table/Partition/RepairController.php index d07e013db9..a1a33827eb 100644 --- a/src/Controllers/Table/Partition/RepairController.php +++ b/src/Controllers/Table/Partition/RepairController.php @@ -26,7 +26,7 @@ final class RepairController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -38,7 +38,7 @@ final class RepairController implements InvocableController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return null; + return $this->response->response(); } [$rows, $query] = $this->model->repair($database, $table, $partitionName); @@ -55,6 +55,6 @@ final class RepairController implements InvocableController 'rows' => $rows, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Partition/TruncateController.php b/src/Controllers/Table/Partition/TruncateController.php index 381562d1e8..7f524bf77c 100644 --- a/src/Controllers/Table/Partition/TruncateController.php +++ b/src/Controllers/Table/Partition/TruncateController.php @@ -26,7 +26,7 @@ final class TruncateController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $partitionName = $request->getParsedBodyParam('partition_name'); @@ -38,7 +38,7 @@ final class TruncateController implements InvocableController $message = Message::error($exception->getMessage()); $this->response->addHTML($message->getDisplay()); - return null; + return $this->response->response(); } [$result, $query] = $this->model->truncate($database, $table, $partitionName); @@ -62,6 +62,6 @@ final class TruncateController implements InvocableController 'message' => $message, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/PrivilegesController.php b/src/Controllers/Table/PrivilegesController.php index 284ef936be..5327663aff 100644 --- a/src/Controllers/Table/PrivilegesController.php +++ b/src/Controllers/Table/PrivilegesController.php @@ -36,7 +36,7 @@ final class PrivilegesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { try { $db = DatabaseName::from($request->getParam('db')); @@ -48,7 +48,7 @@ final class PrivilegesController implements InvocableController } catch (InvalidIdentifier $exception) { $this->response->addHTML(Message::error($exception->getMessage())->getDisplay()); - return null; + return $this->response->response(); } $this->response->addScriptFiles(['server/privileges.js', 'vendor/zxcvbn-ts.js']); @@ -66,7 +66,7 @@ final class PrivilegesController implements InvocableController ->getDisplay(), ); - return null; + return $this->response->response(); } if (! $isGrantUser && ! $isCreateUser) { @@ -94,6 +94,6 @@ final class PrivilegesController implements InvocableController ]); $this->response->render('export_modal', []); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/RecentFavoriteController.php b/src/Controllers/Table/RecentFavoriteController.php index 4ba3451fc4..b3a7e93eec 100644 --- a/src/Controllers/Table/RecentFavoriteController.php +++ b/src/Controllers/Table/RecentFavoriteController.php @@ -26,7 +26,7 @@ final class RecentFavoriteController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { try { $db = DatabaseName::from($request->getParam('db')); @@ -34,7 +34,7 @@ final class RecentFavoriteController implements InvocableController } catch (InvalidIdentifier) { $this->response->redirectToRoute('/', ['message' => __('Invalid database or table name.')]); - return null; + return $this->response->response(); } $favoriteTable = new RecentFavoriteTable($db, $table); @@ -43,6 +43,6 @@ final class RecentFavoriteController implements InvocableController $this->response->redirectToRoute('/sql', ['db' => $db->getName(), 'table' => $table->getName()]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/RelationController.php b/src/Controllers/Table/RelationController.php index eadfe73923..c41b708797 100644 --- a/src/Controllers/Table/RelationController.php +++ b/src/Controllers/Table/RelationController.php @@ -51,7 +51,7 @@ final class RelationController implements InvocableController /** * Index */ - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $options = [ 'CASCADE' => 'CASCADE', @@ -85,7 +85,7 @@ final class RelationController implements InvocableController $this->getDropdownValueForDatabase($storageEngine); } - return null; + return $this->response->response(); } $this->response->addScriptFiles(['table/relation.js']); @@ -131,7 +131,7 @@ final class RelationController implements InvocableController if (isset($_POST['preview_sql'])) { Core::previewSQL($previewSqlData); - return null; + return $this->response->response(); } if ($displayQuery !== '' && ! $seenError) { @@ -311,7 +311,7 @@ final class RelationController implements InvocableController 'foreign_key_row' => $foreignKeyRow, ]); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/ReplaceController.php b/src/Controllers/Table/ReplaceController.php index f899e44058..ebfff1ba34 100644 --- a/src/Controllers/Table/ReplaceController.php +++ b/src/Controllers/Table/ReplaceController.php @@ -54,12 +54,12 @@ final class ReplaceController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['message'] ??= null; if (! $this->response->checkParameters(['db', 'table', 'goto'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] ??= null; @@ -286,16 +286,14 @@ final class ReplaceController implements InvocableController $gotoInclude = '/table/change'; } - $this->moveBackToCallingScript($gotoInclude, $request); - - return null; + return $this->moveBackToCallingScript($gotoInclude, $request); } // If there is a request for SQL previewing. if ($request->hasBodyParam('preview_sql')) { Core::previewSQL($GLOBALS['query']); - return null; + return $this->response->response(); } $returnToSqlQuery = ''; @@ -354,7 +352,7 @@ final class ReplaceController implements InvocableController */ $this->doTransformations($mimeMap, $request); - return null; + return $this->response->response(); } if (! empty($returnToSqlQuery)) { @@ -375,9 +373,7 @@ final class ReplaceController implements InvocableController unset($_POST['where_clause']); } - $this->moveBackToCallingScript($gotoInclude, $request); - - return null; + return $this->moveBackToCallingScript($gotoInclude, $request); } /** @param string[][] $mimeMap */ @@ -465,27 +461,21 @@ final class ReplaceController implements InvocableController $this->response->addJSON($extraData); } - private function moveBackToCallingScript(string $gotoInclude, ServerRequest $request): void + private function moveBackToCallingScript(string $gotoInclude, ServerRequest $request): Response { if ($gotoInclude === '/sql') { - ($this->sqlController)($request); - - return; + return ($this->sqlController)($request); } if ($gotoInclude === '/database/sql') { - ($this->databaseSqlController)($request); - - return; + return ($this->databaseSqlController)($request); } if ($gotoInclude === '/table/sql') { - ($this->tableSqlController)($request); - - return; + return ($this->tableSqlController)($request); } - ($this->changeController)($request); + return ($this->changeController)($request); } /** diff --git a/src/Controllers/Table/SearchController.php b/src/Controllers/Table/SearchController.php index a5e1f4778e..9b07201892 100644 --- a/src/Controllers/Table/SearchController.php +++ b/src/Controllers/Table/SearchController.php @@ -153,10 +153,10 @@ final class SearchController implements InvocableController /** * Index action */ - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -172,12 +172,12 @@ final class SearchController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -186,12 +186,12 @@ final class SearchController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $this->loadTableInfo(); @@ -208,7 +208,7 @@ final class SearchController implements InvocableController if (isset($_POST['range_search'])) { $this->rangeSearchAction(); - return null; + return $this->response->response(); } /** @@ -220,7 +220,7 @@ final class SearchController implements InvocableController $this->doSelectionAction(); } - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/SqlController.php b/src/Controllers/Table/SqlController.php index 70e4e691bb..688b553a07 100644 --- a/src/Controllers/Table/SqlController.php +++ b/src/Controllers/Table/SqlController.php @@ -35,7 +35,7 @@ class SqlController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; $GLOBALS['goto'] ??= null; @@ -48,7 +48,7 @@ class SqlController implements InvocableController $this->response->addHTML($this->pageSettings->getHTML()); if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $urlParams = ['db' => Current::$database, 'table' => Current::$table]; @@ -64,12 +64,12 @@ class SqlController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -78,12 +78,12 @@ class SqlController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } /** @@ -102,6 +102,6 @@ class SqlController implements InvocableController htmlspecialchars($delimiter), )); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Structure/AbstractIndexController.php b/src/Controllers/Table/Structure/AbstractIndexController.php index 203460914c..f9e7397be2 100644 --- a/src/Controllers/Table/Structure/AbstractIndexController.php +++ b/src/Controllers/Table/Structure/AbstractIndexController.php @@ -6,10 +6,12 @@ namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; +use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Query\Generator; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Table\Indexes; +use Webmozart\Assert\Assert; use function __; use function is_array; @@ -23,23 +25,31 @@ abstract class AbstractIndexController ) { } - public function handleIndexCreation(ServerRequest $request, string $indexType): void + /** @psalm-param 'FULLTEXT'|'INDEX'|'PRIMARY'|'SPATIAL'|'UNIQUE' $indexType */ + public function handleIndexCreation(ServerRequest $request, string $indexType): Response { - $GLOBALS['message'] ??= null; - $selected = $request->getParsedBodyParam('selected_fld', []); - if (! is_array($selected) || $selected === []) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return; + return $this->response->response(); } - $GLOBALS['sql_query'] = Generator::getAddIndexSql($indexType, Current::$table, $selected); + Assert::allString($selected); - $GLOBALS['message'] = $this->indexes->executeAddIndexSql(Current::$database, $GLOBALS['sql_query']); + if ($indexType === 'PRIMARY') { + $hasPrimaryKey = $this->indexes->hasPrimaryKey(Current::$table); + $statement = Generator::getAddPrimaryKeyStatement(Current::$table, $selected[0], $hasPrimaryKey); + } else { + $statement = Generator::getAddIndexSql($indexType, Current::$table, $selected); + } - ($this->structureController)($request); + $message = $this->indexes->executeAddIndexSql(Current::$database, $statement); + + $GLOBALS['sql_query'] = $statement; + $GLOBALS['message'] = $message; + + return ($this->structureController)($request); } } diff --git a/src/Controllers/Table/Structure/AddIndexController.php b/src/Controllers/Table/Structure/AddIndexController.php index 134431579b..378a67dc79 100644 --- a/src/Controllers/Table/Structure/AddIndexController.php +++ b/src/Controllers/Table/Structure/AddIndexController.php @@ -10,10 +10,8 @@ use PhpMyAdmin\Http\ServerRequest; final class AddIndexController extends AbstractIndexController implements InvocableController { - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { - $this->handleIndexCreation($request, 'INDEX'); - - return null; + return $this->handleIndexCreation($request, 'INDEX'); } } diff --git a/src/Controllers/Table/Structure/AddKeyController.php b/src/Controllers/Table/Structure/AddKeyController.php index 734b85f1d4..a022b19d34 100644 --- a/src/Controllers/Table/Structure/AddKeyController.php +++ b/src/Controllers/Table/Structure/AddKeyController.php @@ -5,27 +5,32 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; use PhpMyAdmin\Controllers\InvocableController; -use PhpMyAdmin\Controllers\Sql\SqlController; -use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Http\Response; use PhpMyAdmin\Http\ServerRequest; -final class AddKeyController implements InvocableController +use function __; +use function in_array; + +final class AddKeyController extends AbstractIndexController implements InvocableController { - public function __construct( - private readonly SqlController $sqlController, - private readonly StructureController $structureController, - ) { - } - - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { - ($this->sqlController)($request); - $GLOBALS['reload'] = true; - ($this->structureController)($request); + $keyType = $this->getKeyType($request->getParsedBodyParam('key_type')); + if ($keyType === '') { + $this->response->setRequestStatus(false); + $this->response->addJSON('message', __('Invalid request parameter.')); - return null; + return $this->response->response(); + } + + return $this->handleIndexCreation($request, $keyType); + } + + /** @psalm-return 'FULLTEXT'|'INDEX'|'PRIMARY'|'SPATIAL'|'UNIQUE'|'' */ + private function getKeyType(mixed $keyType): string + { + return in_array($keyType, ['FULLTEXT', 'INDEX', 'PRIMARY', 'SPATIAL', 'UNIQUE'], true) ? $keyType : ''; } } diff --git a/src/Controllers/Table/Structure/BrowseController.php b/src/Controllers/Table/Structure/BrowseController.php index 6ae2fc08d6..2f3f1a33cc 100644 --- a/src/Controllers/Table/Structure/BrowseController.php +++ b/src/Controllers/Table/Structure/BrowseController.php @@ -23,18 +23,18 @@ final class BrowseController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (empty($_POST['selected_fld'])) { $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return null; + return $this->response->response(); } $this->displayTableBrowseForSelectedColumns($GLOBALS['goto']); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/Structure/CentralColumnsAddController.php b/src/Controllers/Table/Structure/CentralColumnsAddController.php index 6c75c43ba9..369edb1f7f 100644 --- a/src/Controllers/Table/Structure/CentralColumnsAddController.php +++ b/src/Controllers/Table/Structure/CentralColumnsAddController.php @@ -26,7 +26,7 @@ final class CentralColumnsAddController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['message'] ??= null; @@ -36,7 +36,7 @@ final class CentralColumnsAddController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return null; + return $this->response->response(); } Assert::allString($selected); @@ -56,8 +56,6 @@ final class CentralColumnsAddController implements InvocableController $GLOBALS['message'] = Message::success(); } - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } } diff --git a/src/Controllers/Table/Structure/CentralColumnsRemoveController.php b/src/Controllers/Table/Structure/CentralColumnsRemoveController.php index e35fc9d9ea..ac7fb999b6 100644 --- a/src/Controllers/Table/Structure/CentralColumnsRemoveController.php +++ b/src/Controllers/Table/Structure/CentralColumnsRemoveController.php @@ -26,7 +26,7 @@ final class CentralColumnsRemoveController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['message'] ??= null; @@ -36,7 +36,7 @@ final class CentralColumnsRemoveController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return null; + return $this->response->response(); } Assert::allString($selected); @@ -51,8 +51,6 @@ final class CentralColumnsRemoveController implements InvocableController $GLOBALS['message'] = Message::success(); } - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } } diff --git a/src/Controllers/Table/Structure/ChangeController.php b/src/Controllers/Table/Structure/ChangeController.php index 13b383577e..7592cf31d5 100644 --- a/src/Controllers/Table/Structure/ChangeController.php +++ b/src/Controllers/Table/Structure/ChangeController.php @@ -32,16 +32,16 @@ final class ChangeController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $this->response->checkParameters(['server', 'db', 'table'])) { - return null; + return $this->response->response(); } if ($request->getParam('change_column') !== null) { $this->displayHtmlForColumnChange([$request->getParam('field')]); - return null; + return $this->response->response(); } $selected = $request->getParsedBodyParam('selected_fld', []); @@ -50,12 +50,12 @@ final class ChangeController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return null; + return $this->response->response(); } $this->displayHtmlForColumnChange($selected); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/Structure/FulltextController.php b/src/Controllers/Table/Structure/FulltextController.php index 5502ec8ce1..05104c1aaa 100644 --- a/src/Controllers/Table/Structure/FulltextController.php +++ b/src/Controllers/Table/Structure/FulltextController.php @@ -10,10 +10,8 @@ use PhpMyAdmin\Http\ServerRequest; final class FulltextController extends AbstractIndexController implements InvocableController { - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { - $this->handleIndexCreation($request, 'FULLTEXT'); - - return null; + return $this->handleIndexCreation($request, 'FULLTEXT'); } } diff --git a/src/Controllers/Table/Structure/MoveColumnsController.php b/src/Controllers/Table/Structure/MoveColumnsController.php index 7e2a5440c7..6ba3879cbb 100644 --- a/src/Controllers/Table/Structure/MoveColumnsController.php +++ b/src/Controllers/Table/Structure/MoveColumnsController.php @@ -37,14 +37,14 @@ final class MoveColumnsController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $moveColumns = $request->getParsedBodyParam('move_columns'); $previewSql = $request->getParsedBodyParam('preview_sql') === '1'; if (! is_array($moveColumns) || ! array_is_list($moveColumns) || ! $this->response->isAjax()) { $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } $this->dbi->selectDb(Current::$database); @@ -55,7 +55,7 @@ final class MoveColumnsController implements InvocableController if ($sqlQuery === null) { $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } if ($previewSql) { @@ -64,7 +64,7 @@ final class MoveColumnsController implements InvocableController $this->template->render('preview_sql', ['query_data' => $sqlQuery]), ); - return null; + return $this->response->response(); } $this->dbi->tryQuery($sqlQuery); @@ -73,7 +73,7 @@ final class MoveColumnsController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error($tmpError)); - return null; + return $this->response->response(); } $message = Message::success( @@ -82,7 +82,7 @@ final class MoveColumnsController implements InvocableController $this->response->addJSON('message', $message); $this->response->addJSON('columns', $moveColumns); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/Structure/PartitioningController.php b/src/Controllers/Table/Structure/PartitioningController.php index 40c23d6ecf..24dc952fb8 100644 --- a/src/Controllers/Table/Structure/PartitioningController.php +++ b/src/Controllers/Table/Structure/PartitioningController.php @@ -41,14 +41,13 @@ final class PartitioningController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (isset($_POST['save_partitioning'])) { $this->dbi->selectDb(Current::$database); $this->updatePartitioning(); - ($this->structureController)($request); - return null; + return ($this->structureController)($request); } $this->pageSettings->init('TableStructure'); @@ -75,7 +74,7 @@ final class PartitioningController implements InvocableController 'storage_engines' => $storageEngines, ]); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/Structure/PrimaryController.php b/src/Controllers/Table/Structure/PrimaryController.php index 6aeeaaa286..c74f1ad7d8 100644 --- a/src/Controllers/Table/Structure/PrimaryController.php +++ b/src/Controllers/Table/Structure/PrimaryController.php @@ -33,7 +33,7 @@ final class PrimaryController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['message'] ??= null; $GLOBALS['urlParams'] ??= null; @@ -46,7 +46,7 @@ final class PrimaryController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', __('No column selected.')); - return null; + return $this->response->response(); } $this->dbi->selectDb(Current::$database); @@ -57,7 +57,7 @@ final class PrimaryController implements InvocableController if ($hasPrimary && $deletionConfirmed === null) { if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -73,12 +73,12 @@ final class PrimaryController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -87,12 +87,12 @@ final class PrimaryController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $this->response->render('table/structure/primary', [ @@ -101,7 +101,7 @@ final class PrimaryController implements InvocableController 'selected' => $selected, ]); - return null; + return $this->response->response(); } if ($deletionConfirmed === __('Yes') || ! $hasPrimary) { @@ -131,9 +131,7 @@ final class PrimaryController implements InvocableController $GLOBALS['message'] = Message::success(); } - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } private function hasPrimaryKey(): bool diff --git a/src/Controllers/Table/Structure/ReservedWordCheckController.php b/src/Controllers/Table/Structure/ReservedWordCheckController.php index 015b3c0b91..2f8a043cf0 100644 --- a/src/Controllers/Table/Structure/ReservedWordCheckController.php +++ b/src/Controllers/Table/Structure/ReservedWordCheckController.php @@ -24,12 +24,12 @@ final class ReservedWordCheckController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (Config::getInstance()->settings['ReservedWordDisableWarning'] !== false) { $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } $columnsNames = $request->getParsedBodyParam('field_name'); @@ -62,6 +62,6 @@ final class ReservedWordCheckController implements InvocableController ), ); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Table/Structure/SaveController.php b/src/Controllers/Table/Structure/SaveController.php index 86b4bbddd7..bed0009723 100644 --- a/src/Controllers/Table/Structure/SaveController.php +++ b/src/Controllers/Table/Structure/SaveController.php @@ -50,7 +50,7 @@ final class SaveController implements InvocableController $this->tableObj = $this->dbi->getTable(Current::$database, Current::$table); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $userPrivileges = $this->userPrivilegesFactory->getPrivileges(); @@ -60,9 +60,7 @@ final class SaveController implements InvocableController unset($_POST['selected']); } - ($this->structureController)($request); - - return null; + return ($this->structureController)($request); } /** diff --git a/src/Controllers/Table/Structure/SpatialController.php b/src/Controllers/Table/Structure/SpatialController.php index 78f0168dfb..da60983445 100644 --- a/src/Controllers/Table/Structure/SpatialController.php +++ b/src/Controllers/Table/Structure/SpatialController.php @@ -10,10 +10,8 @@ use PhpMyAdmin\Http\ServerRequest; final class SpatialController extends AbstractIndexController implements InvocableController { - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { - $this->handleIndexCreation($request, 'SPATIAL'); - - return null; + return $this->handleIndexCreation($request, 'SPATIAL'); } } diff --git a/src/Controllers/Table/Structure/UniqueController.php b/src/Controllers/Table/Structure/UniqueController.php index 76c9834e1b..05250970c6 100644 --- a/src/Controllers/Table/Structure/UniqueController.php +++ b/src/Controllers/Table/Structure/UniqueController.php @@ -10,10 +10,8 @@ use PhpMyAdmin\Http\ServerRequest; final class UniqueController extends AbstractIndexController implements InvocableController { - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { - $this->handleIndexCreation($request, 'UNIQUE'); - - return null; + return $this->handleIndexCreation($request, 'UNIQUE'); } } diff --git a/src/Controllers/Table/StructureController.php b/src/Controllers/Table/StructureController.php index 3541f217c5..ef092770fa 100644 --- a/src/Controllers/Table/StructureController.php +++ b/src/Controllers/Table/StructureController.php @@ -62,7 +62,7 @@ class StructureController implements InvocableController $this->tableObj = $this->dbi->getTable(Current::$database, Current::$table); } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errorUrl'] ??= null; @@ -77,7 +77,7 @@ class StructureController implements InvocableController $relationParameters = $this->relation->getRelationParameters(); if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $isSystemSchema = Utilities::isSystemSchema(Current::$database); @@ -94,12 +94,12 @@ class StructureController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -108,12 +108,12 @@ class StructureController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $primary = Index::getPrimary($this->dbi, Current::$table, Current::$database); @@ -132,7 +132,7 @@ class StructureController implements InvocableController $request->getRoute(), )); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/Table/TrackingController.php b/src/Controllers/Table/TrackingController.php index ad9c02e111..33bd0a65aa 100644 --- a/src/Controllers/Table/TrackingController.php +++ b/src/Controllers/Table/TrackingController.php @@ -47,7 +47,7 @@ final class TrackingController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; @@ -55,7 +55,7 @@ final class TrackingController implements InvocableController $this->response->addScriptFiles(['vendor/jquery/jquery.tablesorter.js', 'table/tracking.js']); if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -71,12 +71,12 @@ final class TrackingController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $activeMessage = ''; @@ -270,7 +270,7 @@ final class TrackingController implements InvocableController 'main' => $main, ]); - return null; + return $this->response->response(); } private function validateDateTimeParam(mixed $param): DateTimeImmutable diff --git a/src/Controllers/Table/ZoomSearchController.php b/src/Controllers/Table/ZoomSearchController.php index 1e5936a550..feae249eb4 100644 --- a/src/Controllers/Table/ZoomSearchController.php +++ b/src/Controllers/Table/ZoomSearchController.php @@ -78,13 +78,13 @@ final class ZoomSearchController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['goto'] ??= null; $GLOBALS['urlParams'] ??= null; $GLOBALS['errorUrl'] ??= null; if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -98,12 +98,12 @@ final class ZoomSearchController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); @@ -112,12 +112,12 @@ final class ZoomSearchController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No table selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } $this->loadTableInfo(); @@ -143,7 +143,7 @@ final class ZoomSearchController implements InvocableController if (isset($_POST['get_data_row']) && $_POST['get_data_row'] == true) { $this->getDataRowAction(); - return null; + return $this->response->response(); } /** @@ -153,7 +153,7 @@ final class ZoomSearchController implements InvocableController if ($request->hasBodyParam('change_tbl_info')) { $this->changeTableInfoAction(); - return null; + return $this->response->response(); } //Set default datalabel if not selected @@ -176,7 +176,7 @@ final class ZoomSearchController implements InvocableController || $_POST['criteriaColumnNames'][1] === 'pma_null' || $_POST['criteriaColumnNames'][0] == $_POST['criteriaColumnNames'][1] ) { - return null; + return $this->response->response(); } if (! isset($GLOBALS['goto'])) { @@ -185,7 +185,7 @@ final class ZoomSearchController implements InvocableController $this->zoomSubmitAction($dataLabel, $GLOBALS['goto']); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/TableController.php b/src/Controllers/TableController.php index 474cb62089..47c63f5e8b 100644 --- a/src/Controllers/TableController.php +++ b/src/Controllers/TableController.php @@ -16,17 +16,17 @@ final class TableController implements InvocableController { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $request->hasBodyParam('db')) { $this->response->setRequestStatus(false); $this->response->addJSON(['message' => Message::error()]); - return null; + return $this->response->response(); } $this->response->addJSON(['tables' => $this->dbi->getTables($request->getParsedBodyParam('db'))]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/ThemeSetController.php b/src/Controllers/ThemeSetController.php index 906d97a4c7..72cfc8b886 100644 --- a/src/Controllers/ThemeSetController.php +++ b/src/Controllers/ThemeSetController.php @@ -23,19 +23,19 @@ final class ThemeSetController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $theme = $request->getParsedBodyParam('set_theme'); if (! Config::getInstance()->settings['ThemeManager'] || ! is_string($theme) || $theme === '') { if ($request->isAjax()) { $this->response->addJSON('themeColorMode', ''); - return null; + return $this->response->response(); } $this->response->redirect('index.php?route=/' . Url::getCommonRaw([], '&')); - return null; + return $this->response->response(); } $this->themeManager->setActiveTheme($theme); @@ -55,11 +55,11 @@ final class ThemeSetController implements InvocableController if ($request->isAjax()) { $this->response->addJSON('themeColorMode', $this->themeManager->theme->getColorMode()); - return null; + return $this->response->response(); } $this->response->redirect('index.php?route=/' . Url::getCommonRaw([], '&')); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/ThemesController.php b/src/Controllers/ThemesController.php index 64cf628ea1..2adbf5dc91 100644 --- a/src/Controllers/ThemesController.php +++ b/src/Controllers/ThemesController.php @@ -19,18 +19,18 @@ final class ThemesController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $themes = $this->themeManager->getThemesArray(); $themesList = $this->template->render('home/themes', ['themes' => $themes]); if ($request->isAjax()) { $this->response->addJSON('themes', $themesList); - return null; + return $this->response->response(); } $this->response->addHTML($themesList); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Transformation/OverviewController.php b/src/Controllers/Transformation/OverviewController.php index 96abfb2eba..7a090c075a 100644 --- a/src/Controllers/Transformation/OverviewController.php +++ b/src/Controllers/Transformation/OverviewController.php @@ -23,7 +23,7 @@ final class OverviewController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $header = $this->response->getHeader(); $header->disableMenuAndConsole(); @@ -51,6 +51,6 @@ final class OverviewController implements InvocableController 'transformations' => $transformations, ]); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/Transformation/WrapperController.php b/src/Controllers/Transformation/WrapperController.php index c728110936..4f9e682e32 100644 --- a/src/Controllers/Transformation/WrapperController.php +++ b/src/Controllers/Transformation/WrapperController.php @@ -49,7 +49,7 @@ final class WrapperController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $this->response->getHeader()->setIsTransformationWrapper(true); @@ -57,15 +57,15 @@ final class WrapperController implements InvocableController $db = DatabaseName::from($request->getParam('db')); $table = TableName::from($request->getParam('table')); } catch (InvalidIdentifier) { - return null; + return $this->response->response(); } if (! $this->dbi->selectDb($db)) { - return null; + return $this->response->response(); } if (! $this->dbTableExists->hasTable($db, $table)) { - return null; + return $this->response->response(); } $query = $this->getQuery($table, $request->getParam('where_clause'), $request->getParam('where_clause_sign')); @@ -74,12 +74,12 @@ final class WrapperController implements InvocableController /* 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 null; + return $this->response->response(); } $row = $this->dbi->query($query)->fetchAssoc(); if ($row === []) { - return null; + return $this->response->response(); } $transformKey = $request->getParam('transform_key'); @@ -87,7 +87,7 @@ final class WrapperController implements InvocableController ! is_string($transformKey) || $transformKey === '' || ! isset($row[$transformKey]) || $row[$transformKey] === '' ) { - return null; + return $this->response->response(); } $mediaTypeMap = []; diff --git a/src/Controllers/Triggers/IndexController.php b/src/Controllers/Triggers/IndexController.php index 6430237661..9deb6642ef 100644 --- a/src/Controllers/Triggers/IndexController.php +++ b/src/Controllers/Triggers/IndexController.php @@ -44,7 +44,7 @@ final class IndexController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['errors'] ??= null; $GLOBALS['urlParams'] ??= null; @@ -59,7 +59,7 @@ final class IndexController implements InvocableController */ if (Current::$table !== '' && in_array(Current::$table, $this->dbi->getTables(Current::$database), true)) { if (! $this->response->checkParameters(['db', 'table'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] = ['db' => Current::$database, 'table' => Current::$table]; @@ -73,20 +73,20 @@ final class IndexController implements InvocableController ['reload' => true, 'message' => __('No databases selected.')], ); - return null; + return $this->response->response(); } $tableName = TableName::tryFrom($request->getParam('table')); if ($tableName === null || ! $this->dbTableExists->hasTable($databaseName, $tableName)) { $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No table selected.')]); - return null; + return $this->response->response(); } } else { Current::$table = ''; if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['errorUrl'] = Util::getScriptNameForOption( @@ -102,7 +102,7 @@ final class IndexController implements InvocableController ['reload' => true, 'message' => __('No databases selected.')], ); - return null; + return $this->response->response(); } } } elseif (Current::$database !== '') { @@ -168,7 +168,7 @@ final class IndexController implements InvocableController $this->response->addJSON('tableType', 'triggers'); - return null; + return $this->response->response(); } } @@ -222,12 +222,12 @@ final class IndexController implements InvocableController $this->response->addJSON('message', $editor); $this->response->addJSON('title', $title); - return null; + return $this->response->response(); } $this->response->addHTML("\n\n

" . $title . "

\n\n" . $editor); - return null; + return $this->response->response(); } $message = __('Error in processing request:') . ' '; @@ -241,7 +241,7 @@ final class IndexController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return null; + return $this->response->response(); } $this->response->addHTML($message->getDisplay()); @@ -260,7 +260,7 @@ final class IndexController implements InvocableController $this->response->addJSON('title', $title); $this->response->addJSON('message', htmlspecialchars(trim($exportData))); - return null; + return $this->response->response(); } if ($exportData !== null) { @@ -269,7 +269,7 @@ final class IndexController implements InvocableController 'item_name' => $triggerName->getName(), ]); - return null; + return $this->response->response(); } $message = Message::error(sprintf( @@ -281,7 +281,7 @@ final class IndexController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', $message); - return null; + return $this->response->response(); } } @@ -298,7 +298,7 @@ final class IndexController implements InvocableController 'error_message' => $message?->getDisplay() ?? '', ]); - return null; + return $this->response->response(); } /** diff --git a/src/Controllers/UserPasswordController.php b/src/Controllers/UserPasswordController.php index 5a4d736252..d33d2e84b1 100644 --- a/src/Controllers/UserPasswordController.php +++ b/src/Controllers/UserPasswordController.php @@ -28,7 +28,7 @@ final class UserPasswordController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { $GLOBALS['hostname'] ??= null; $GLOBALS['username'] ??= null; @@ -50,7 +50,7 @@ final class UserPasswordController implements InvocableController __('You don\'t have sufficient privileges to be here right now!'), )->getDisplay()); - return null; + return $this->response->response(); } $noPass = $request->getParsedBodyParam('nopass'); @@ -84,21 +84,21 @@ final class UserPasswordController implements InvocableController ); $this->response->addJSON('message', $sqlQuery); - return null; + return $this->response->response(); } $this->response->addHTML('

' . __('Change password') . '

' . "\n\n"); $this->response->addHTML(Generator::getMessage($message, $sqlQuery, MessageType::Success)); $this->response->render('user_password', []); - return null; + return $this->response->response(); } if ($request->isAjax()) { $this->response->addJSON('message', $GLOBALS['change_password_message']['msg']); $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } } @@ -118,6 +118,6 @@ final class UserPasswordController implements InvocableController $request->getRoute(), )); - return null; + return $this->response->response(); } } diff --git a/src/Controllers/View/CreateController.php b/src/Controllers/View/CreateController.php index 5195c9b1c7..ccbc8779cf 100644 --- a/src/Controllers/View/CreateController.php +++ b/src/Controllers/View/CreateController.php @@ -53,10 +53,10 @@ final class CreateController implements InvocableController ) { } - public function __invoke(ServerRequest $request): Response|null + public function __invoke(ServerRequest $request): Response { if (! $this->response->checkParameters(['db'])) { - return null; + return $this->response->response(); } $GLOBALS['urlParams'] ??= null; @@ -74,12 +74,12 @@ final class CreateController implements InvocableController $this->response->setRequestStatus(false); $this->response->addJSON('message', Message::error(__('No databases selected.'))); - return null; + return $this->response->response(); } $this->response->redirectToRoute('/', ['reload' => true, 'message' => __('No databases selected.')]); - return null; + return $this->response->response(); } $GLOBALS['urlParams']['goto'] = Url::getFromRoute('/table/structure'); @@ -94,7 +94,7 @@ final class CreateController implements InvocableController $this->response->addJSON('message', $GLOBALS['message']); $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } $createview = $request->hasBodyParam('createview'); @@ -108,7 +108,7 @@ final class CreateController implements InvocableController if (! $ajaxdialog) { $GLOBALS['message'] = Message::rawError($this->dbi->getError()); - return null; + return $this->response->response(); } $this->response->addJSON( @@ -120,12 +120,10 @@ final class CreateController implements InvocableController ); $this->response->setRequestStatus(false); - return null; + return $this->response->response(); } - $this->setSuccessResponse($view, $ajaxdialog, $request); - - return null; + return $this->setSuccessResponse($view, $ajaxdialog, $request); } $GLOBALS['sql_query'] = $request->getParsedBodyParam('sql_query', ''); @@ -199,11 +197,11 @@ final class CreateController implements InvocableController 'view_security_options' => self::VIEW_SECURITY_OPTIONS, ]); - return null; + return $this->response->response(); } /** @param mixed[] $view */ - private function setSuccessResponse(array $view, bool $ajaxdialog, ServerRequest $request): void + private function setSuccessResponse(array $view, bool $ajaxdialog, ServerRequest $request): Response { // If different column names defined for VIEW $viewColumns = []; @@ -234,17 +232,20 @@ final class CreateController implements InvocableController $GLOBALS['message'] = Message::success(); /** @var StructureController $controller */ $controller = ContainerBuilder::getContainer()->get(StructureController::class); - $controller($request); - } else { - $this->response->addJSON( - 'message', - Generator::getMessage( - Message::success(), - $GLOBALS['sql_query'], - ), - ); - $this->response->setRequestStatus(true); + + return $controller($request); } + + $this->response->addJSON( + 'message', + Generator::getMessage( + Message::success(), + $GLOBALS['sql_query'], + ), + ); + $this->response->setRequestStatus(true); + + return $this->response->response(); } /** diff --git a/src/Http/Handler/ApplicationHandler.php b/src/Http/Handler/ApplicationHandler.php index f24199aa15..98e82ce190 100644 --- a/src/Http/Handler/ApplicationHandler.php +++ b/src/Http/Handler/ApplicationHandler.php @@ -24,14 +24,9 @@ final class ApplicationHandler implements RequestHandlerInterface { assert($request instanceof ServerRequest); try { - $response = $this->application->handle($request); - if ($response === null) { - throw new ExitException(); - } + return $this->application->handle($request); } catch (ExitException) { - $response = ResponseRenderer::getInstance()->response(); + return ResponseRenderer::getInstance()->response(); } - - return $response; } } diff --git a/src/Http/Middleware/MinimumCommonRedirection.php b/src/Http/Middleware/MinimumCommonRedirection.php index 68aef62eb0..ebdc5ac966 100644 --- a/src/Http/Middleware/MinimumCommonRedirection.php +++ b/src/Http/Middleware/MinimumCommonRedirection.php @@ -38,20 +38,15 @@ final class MinimumCommonRedirection implements MiddlewareInterface assert($request instanceof ServerRequest); try { - $response = Routing::callControllerForRoute( + return Routing::callControllerForRoute( $request, Routing::getDispatcher(), $container, $this->responseFactory, ); - if ($response === null) { - throw new ExitException(); - } } catch (ExitException) { - $response = ResponseRenderer::getInstance()->response(); + return ResponseRenderer::getInstance()->response(); } - - return $response; } private function isMinimumCommon(mixed $route): bool diff --git a/src/Query/Generator.php b/src/Query/Generator.php index c899892f25..5a423b8e70 100644 --- a/src/Query/Generator.php +++ b/src/Query/Generator.php @@ -447,7 +447,10 @@ class Generator return $sqlQuery . implode(', ', $partitionNames) . ';'; } - /** @param string[] $selectedColumns */ + /** + * @param string[] $selectedColumns + * @psalm-param 'FULLTEXT'|'INDEX'|'SPATIAL'|'UNIQUE' $indexType + */ public static function getAddIndexSql(string $indexType, string $table, array $selectedColumns): string { $columnsSql = implode(', ', array_map(Util::backquote(...), $selectedColumns)); @@ -455,6 +458,19 @@ class Generator return 'ALTER TABLE ' . Util::backquote($table) . ' ADD ' . $indexType . '(' . $columnsSql . ');'; } + public static function getAddPrimaryKeyStatement(string $table, string $column, bool $hasDropPrimaryKey): string + { + if ($hasDropPrimaryKey) { + return sprintf( + 'ALTER TABLE %s DROP PRIMARY KEY, ADD PRIMARY KEY(%s);', + Util::backquote($table), + Util::backquote($column), + ); + } + + return sprintf('ALTER TABLE %s ADD PRIMARY KEY(%s);', Util::backquote($table), Util::backquote($column)); + } + /** * Builds the SQL insert query * diff --git a/src/Routing/Routing.php b/src/Routing/Routing.php index fa072bcc44..620edbc9b0 100644 --- a/src/Routing/Routing.php +++ b/src/Routing/Routing.php @@ -142,7 +142,7 @@ class Routing Dispatcher $dispatcher, ContainerInterface $container, ResponseFactory $responseFactory, - ): Response|null { + ): Response { $route = $request->getRoute(); $routeInfo = $dispatcher->dispatch($request->getMethod(), rawurldecode($route)); @@ -211,7 +211,7 @@ class Routing } $controller = $container->get($controllerName); - assert($controller instanceof $controllerName); + assert($controller instanceof InvocableController); return $controller($request); } diff --git a/src/Table/Indexes.php b/src/Table/Indexes.php index e4489b6dee..e9ad68c37e 100644 --- a/src/Table/Indexes.php +++ b/src/Table/Indexes.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Table; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Identifiers\DatabaseName; +use PhpMyAdmin\Identifiers\TableName; use PhpMyAdmin\Index; use PhpMyAdmin\Message; use PhpMyAdmin\Query\Compatibility; @@ -187,4 +188,16 @@ final class Indexes return Message::success(); } + + public function hasPrimaryKey(string|TableName $table): bool + { + $result = $this->dbi->query('SHOW KEYS FROM ' . Util::backquote($table)); + foreach ($result as $row) { + if ($row['Key_name'] === 'PRIMARY') { + return true; + } + } + + return false; + } } diff --git a/tests/unit/Controllers/CollationConnectionControllerTest.php b/tests/unit/Controllers/CollationConnectionControllerTest.php index ea2154be69..22aec45170 100644 --- a/tests/unit/Controllers/CollationConnectionControllerTest.php +++ b/tests/unit/Controllers/CollationConnectionControllerTest.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\Tests\Controllers; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\CollationConnectionController; +use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Tests\AbstractTestCase; @@ -23,6 +24,7 @@ class CollationConnectionControllerTest extends AbstractTestCase $response = self::createMock(ResponseRenderer::class); $response->expects(self::once())->method('redirect') ->with('index.php?route=/' . Url::getCommonRaw([], '&')); + $response->expects(self::once())->method('response')->willReturn(ResponseFactory::create()->createResponse()); $config = self::createMock(Config::class); $config->expects(self::once())->method('setUserValue') diff --git a/tests/unit/Controllers/Database/Structure/AddPrefixControllerTest.php b/tests/unit/Controllers/Database/Structure/AddPrefixControllerTest.php index 14fee1a563..b96435b2f7 100644 --- a/tests/unit/Controllers/Database/Structure/AddPrefixControllerTest.php +++ b/tests/unit/Controllers/Database/Structure/AddPrefixControllerTest.php @@ -34,7 +34,6 @@ final class AddPrefixControllerTest extends AbstractTestCase ['url_params' => ['db' => 'test_db', 'selected' => ['test_table']]], ); - self::assertNotNull($response); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame(['text/html; charset=utf-8'], $response->getHeader('Content-Type')); self::assertSame($expected, (string) $response->getBody()); diff --git a/tests/unit/Controllers/Database/Structure/ChangePrefixFormControllerTest.php b/tests/unit/Controllers/Database/Structure/ChangePrefixFormControllerTest.php index fbc540a871..eb7d3b50ed 100644 --- a/tests/unit/Controllers/Database/Structure/ChangePrefixFormControllerTest.php +++ b/tests/unit/Controllers/Database/Structure/ChangePrefixFormControllerTest.php @@ -34,7 +34,6 @@ final class ChangePrefixFormControllerTest extends AbstractTestCase 'url_params' => ['db' => 'test_db', 'selected' => ['test_table']], ]); - self::assertNotNull($response); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame(['text/html; charset=utf-8'], $response->getHeader('Content-Type')); self::assertSame($expected, (string) $response->getBody()); diff --git a/tests/unit/Controllers/Database/Structure/CopyFormControllerTest.php b/tests/unit/Controllers/Database/Structure/CopyFormControllerTest.php index 5280d109d8..708ba62ec5 100644 --- a/tests/unit/Controllers/Database/Structure/CopyFormControllerTest.php +++ b/tests/unit/Controllers/Database/Structure/CopyFormControllerTest.php @@ -46,7 +46,6 @@ final class CopyFormControllerTest extends AbstractTestCase ], ]); - self::assertNotNull($response); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame(['text/html; charset=utf-8'], $response->getHeader('Content-Type')); self::assertSame($expected, (string) $response->getBody()); diff --git a/tests/unit/Controllers/Export/ExportControllerTest.php b/tests/unit/Controllers/Export/ExportControllerTest.php index 2fb879592f..b23f53ccfc 100644 --- a/tests/unit/Controllers/Export/ExportControllerTest.php +++ b/tests/unit/Controllers/Export/ExportControllerTest.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers\Export; +use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\Config; use PhpMyAdmin\Container\ContainerBuilder; use PhpMyAdmin\Controllers\Export\ExportController; @@ -194,7 +195,7 @@ final class ExportControllerTest extends AbstractTestCase $response = $exportController($request); $output = $this->getActualOutputForAssertion(); - self::assertNull($response); + self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertStringNotContainsString('Missing parameter: what', $output); self::assertStringNotContainsString('Missing parameter: export_type', $output); self::assertStringContainsString(htmlspecialchars($expectedOutput, ENT_COMPAT), $output); @@ -347,7 +348,6 @@ final class ExportControllerTest extends AbstractTestCase $output = $this->getActualOutputForAssertion(); - self::assertNotNull($response); self::assertSame('', (string) $response->getBody()); self::assertStringStartsWith('-- phpMyAdmin SQL Dump', $output); self::assertStringEndsWith($expected, $output); @@ -512,7 +512,6 @@ final class ExportControllerTest extends AbstractTestCase $exportController = new ExportController(new ResponseRenderer(), $export, ResponseFactory::create()); $response = $exportController($request); - self::assertNotNull($response); $output = (string) $response->getBody(); $tmpFile = tempnam('./', 'exportFileTest'); diff --git a/tests/unit/Controllers/HomeControllerTest.php b/tests/unit/Controllers/HomeControllerTest.php index aa1da1ed8b..5bb41d26be 100644 --- a/tests/unit/Controllers/HomeControllerTest.php +++ b/tests/unit/Controllers/HomeControllerTest.php @@ -30,7 +30,7 @@ final class HomeControllerTest extends AbstractTestCase ResponseFactory::create(), ); $response = $controller($request); - self::assertNotNull($response); + self::assertSame(StatusCodeInterface::STATUS_FOUND, $response->getStatusCode()); self::assertSame('./index.php?route=/database/structure&db=test_db', $response->getHeaderLine('Location')); self::assertSame('', (string) $response->getBody()); @@ -48,7 +48,7 @@ final class HomeControllerTest extends AbstractTestCase ResponseFactory::create(), ); $response = $controller($request); - self::assertNotNull($response); + self::assertSame(StatusCodeInterface::STATUS_FOUND, $response->getStatusCode()); self::assertSame('./index.php?route=/sql&db=test_db&table=test_table', $response->getHeaderLine('Location')); self::assertSame('', (string) $response->getBody()); diff --git a/tests/unit/Controllers/LintControllerTest.php b/tests/unit/Controllers/LintControllerTest.php index 5440ccb18c..fbad739e60 100644 --- a/tests/unit/Controllers/LintControllerTest.php +++ b/tests/unit/Controllers/LintControllerTest.php @@ -32,7 +32,6 @@ final class LintControllerTest extends AbstractTestCase $response = $this->getLintController()($request); - self::assertNotNull($response); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame(['application/json; charset=UTF-8'], $response->getHeader('Content-Type')); $output = (string) $response->getBody(); @@ -51,7 +50,6 @@ final class LintControllerTest extends AbstractTestCase $response = $this->getLintController()($request); - self::assertNotNull($response); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame(['application/json; charset=UTF-8'], $response->getHeader('Content-Type')); $output = (string) $response->getBody(); @@ -106,7 +104,6 @@ final class LintControllerTest extends AbstractTestCase $response = $this->getLintController()($request); - self::assertNotNull($response); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame(['application/json; charset=UTF-8'], $response->getHeader('Content-Type')); $output = (string) $response->getBody(); diff --git a/tests/unit/Controllers/LogoutControllerTest.php b/tests/unit/Controllers/LogoutControllerTest.php index 4fd1fb2c19..43af144e09 100644 --- a/tests/unit/Controllers/LogoutControllerTest.php +++ b/tests/unit/Controllers/LogoutControllerTest.php @@ -8,14 +8,20 @@ use PhpMyAdmin\Controllers\LogoutController; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Plugins\AuthenticationPlugin; use PhpMyAdmin\Plugins\AuthenticationPluginFactory; +use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Tests\AbstractTestCase; +use PhpMyAdmin\Tests\Stubs\ResponseRenderer as ResponseRendererStub; use PHPUnit\Framework\Attributes\CoversClass; +use ReflectionProperty; #[CoversClass(LogoutController::class)] class LogoutControllerTest extends AbstractTestCase { public function testValidLogout(): void { + $responseStub = new ResponseRendererStub(); + (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, $responseStub); + $GLOBALS['token_mismatch'] = false; $request = self::createStub(ServerRequest::class); @@ -30,5 +36,7 @@ class LogoutControllerTest extends AbstractTestCase (new LogoutController($factory))($request); unset($GLOBALS['token_mismatch']); + + (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null); } } diff --git a/tests/unit/Controllers/SchemaExportControllerTest.php b/tests/unit/Controllers/SchemaExportControllerTest.php index 3b8b6633aa..de9304106f 100644 --- a/tests/unit/Controllers/SchemaExportControllerTest.php +++ b/tests/unit/Controllers/SchemaExportControllerTest.php @@ -38,7 +38,6 @@ final class SchemaExportControllerTest extends AbstractTestCase $controller = new SchemaExportController($export, new ResponseRenderer(), ResponseFactory::create()); $response = $controller($request); - self::assertNotNull($response); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame('file data', (string) $response->getBody()); diff --git a/tests/unit/Controllers/Table/ChangeRowsControllerTest.php b/tests/unit/Controllers/Table/ChangeRowsControllerTest.php index f981a22b07..2f6155017f 100644 --- a/tests/unit/Controllers/Table/ChangeRowsControllerTest.php +++ b/tests/unit/Controllers/Table/ChangeRowsControllerTest.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\Table\ChangeController; use PhpMyAdmin\Controllers\Table\ChangeRowsController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\Factory\ServerRequestFactory; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -32,7 +33,8 @@ class ChangeRowsControllerTest extends AbstractTestCase ->withParsedBody(['rows_to_delete' => 'row']); $mock = self::createMock(ChangeController::class); - $mock->expects(self::once())->method('__invoke')->with($request); + $mock->expects(self::once())->method('__invoke')->with($request) + ->willReturn(ResponseFactory::create()->createResponse()); (new ChangeRowsController(new ResponseRenderer(), $mock))($request); @@ -46,7 +48,8 @@ class ChangeRowsControllerTest extends AbstractTestCase ->withParsedBody(['goto' => 'goto']); $mock = self::createMock(ChangeController::class); - $mock->expects(self::never())->method('__invoke')->with($request); + $mock->expects(self::never())->method('__invoke')->with($request) + ->willReturn(ResponseFactory::create()->createResponse()); $response = new ResponseRenderer(); (new ChangeRowsController($response, $mock))($request); @@ -63,7 +66,8 @@ class ChangeRowsControllerTest extends AbstractTestCase ->withParsedBody(['goto' => 'goto', 'rows_to_delete' => ['key1' => 'row1', 'key2' => 'row2']]); $mock = self::createMock(ChangeController::class); - $mock->expects(self::once())->method('__invoke')->with($request); + $mock->expects(self::once())->method('__invoke')->with($request) + ->willReturn(ResponseFactory::create()->createResponse()); (new ChangeRowsController(new ResponseRenderer(), $mock))($request); diff --git a/tests/unit/Controllers/Table/ExportRowsControllerTest.php b/tests/unit/Controllers/Table/ExportRowsControllerTest.php index 8e270cb946..0ef519fdf2 100644 --- a/tests/unit/Controllers/Table/ExportRowsControllerTest.php +++ b/tests/unit/Controllers/Table/ExportRowsControllerTest.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\Table\ExportController; use PhpMyAdmin\Controllers\Table\ExportRowsController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -32,7 +33,8 @@ class ExportRowsControllerTest extends AbstractTestCase $_POST['rows_to_delete'] = 'row'; $controller = $this->createMock(ExportController::class); - $controller->expects(self::once())->method('__invoke'); + $controller->expects(self::once())->method('__invoke') + ->willReturn(ResponseFactory::create()->createResponse()); (new ExportRowsController( new ResponseRenderer(), @@ -69,7 +71,8 @@ class ExportRowsControllerTest extends AbstractTestCase $_POST['rows_to_delete'] = ['key1' => 'row1', 'key2' => 'row2']; $controller = $this->createMock(ExportController::class); - $controller->expects(self::once())->method('__invoke'); + $controller->expects(self::once())->method('__invoke') + ->willReturn(ResponseFactory::create()->createResponse()); (new ExportRowsController( new ResponseRenderer(), diff --git a/tests/unit/Controllers/Table/GetFieldControllerTest.php b/tests/unit/Controllers/Table/GetFieldControllerTest.php index 62bdb74373..cdac604968 100644 --- a/tests/unit/Controllers/Table/GetFieldControllerTest.php +++ b/tests/unit/Controllers/Table/GetFieldControllerTest.php @@ -55,7 +55,6 @@ class GetFieldControllerTest extends AbstractTestCase $response = (new GetFieldController(new ResponseRenderer(), $dbi, ResponseFactory::create()))($request); - self::assertNotNull($response); self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame('46494c45', (string) $response->getBody()); } diff --git a/tests/unit/Controllers/Table/GisVisualizationControllerTest.php b/tests/unit/Controllers/Table/GisVisualizationControllerTest.php index 5835cbd61a..3cff300f8c 100644 --- a/tests/unit/Controllers/Table/GisVisualizationControllerTest.php +++ b/tests/unit/Controllers/Table/GisVisualizationControllerTest.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers\Table; +use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\Controllers\Table\GisVisualizationController; use PhpMyAdmin\Core; use PhpMyAdmin\Current; @@ -122,7 +123,7 @@ class GisVisualizationControllerTest extends AbstractTestCase ); $response = $controller($request); - self::assertNull($response); + self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); self::assertSame($expected, $responseRenderer->getHTMLResult()); } } diff --git a/tests/unit/Controllers/Table/Structure/SaveControllerTest.php b/tests/unit/Controllers/Table/Structure/SaveControllerTest.php index b025fdedef..94c711c3f6 100644 --- a/tests/unit/Controllers/Table/Structure/SaveControllerTest.php +++ b/tests/unit/Controllers/Table/Structure/SaveControllerTest.php @@ -9,6 +9,7 @@ use PhpMyAdmin\Controllers\Table\Structure\SaveController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Tests\AbstractTestCase; use PhpMyAdmin\Tests\Stubs\ResponseRenderer; @@ -89,7 +90,8 @@ class SaveControllerTest extends AbstractTestCase $request = self::createStub(ServerRequest::class); $mock = self::createMock(StructureController::class); - $mock->expects(self::once())->method('__invoke')->with($request); + $mock->expects(self::once())->method('__invoke')->with($request) + ->willReturn(ResponseFactory::create()->createResponse()); (new SaveController( new ResponseRenderer(), diff --git a/tests/unit/Controllers/Table/Structure/SpatialControllerTest.php b/tests/unit/Controllers/Table/Structure/SpatialControllerTest.php index 0a23a594de..f80ebce218 100644 --- a/tests/unit/Controllers/Table/Structure/SpatialControllerTest.php +++ b/tests/unit/Controllers/Table/Structure/SpatialControllerTest.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\Table\Structure\SpatialController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Table\Indexes; @@ -33,7 +34,8 @@ class SpatialControllerTest extends AbstractTestCase $request = self::createStub(ServerRequest::class); $request->method('getParsedBodyParam')->willReturnMap([['selected_fld', [], ['test_field']]]); $controllerStub = self::createMock(StructureController::class); - $controllerStub->expects(self::once())->method('__invoke')->with($request); + $controllerStub->expects(self::once())->method('__invoke')->with($request) + ->willReturn(ResponseFactory::create()->createResponse()); $indexes = new Indexes(DatabaseInterface::getInstance()); $controller = new SpatialController(new ResponseRenderer(), $controllerStub, $indexes); @@ -61,7 +63,8 @@ class SpatialControllerTest extends AbstractTestCase $request = self::createStub(ServerRequest::class); $request->method('getParsedBodyParam')->willReturnMap([['selected_fld', [], ['test_field1', 'test_field2']]]); $controllerStub = self::createMock(StructureController::class); - $controllerStub->expects(self::once())->method('__invoke')->with($request); + $controllerStub->expects(self::once())->method('__invoke')->with($request) + ->willReturn(ResponseFactory::create()->createResponse()); $indexes = new Indexes(DatabaseInterface::getInstance()); $controller = new SpatialController(new ResponseRenderer(), $controllerStub, $indexes); @@ -117,7 +120,8 @@ class SpatialControllerTest extends AbstractTestCase $request = self::createStub(ServerRequest::class); $request->method('getParsedBodyParam')->willReturnMap([['selected_fld', [], ['test_field']]]); $controllerStub = self::createMock(StructureController::class); - $controllerStub->expects(self::once())->method('__invoke')->with($request); + $controllerStub->expects(self::once())->method('__invoke')->with($request) + ->willReturn(ResponseFactory::create()->createResponse()); $indexes = new Indexes(DatabaseInterface::getInstance()); $controller = new SpatialController(new ResponseRenderer(), $controllerStub, $indexes); diff --git a/tests/unit/Controllers/Table/Structure/UniqueControllerTest.php b/tests/unit/Controllers/Table/Structure/UniqueControllerTest.php index 90dc2e24b5..927fd6e97b 100644 --- a/tests/unit/Controllers/Table/Structure/UniqueControllerTest.php +++ b/tests/unit/Controllers/Table/Structure/UniqueControllerTest.php @@ -8,6 +8,7 @@ use PhpMyAdmin\Controllers\Table\Structure\UniqueController; use PhpMyAdmin\Controllers\Table\StructureController; use PhpMyAdmin\Current; use PhpMyAdmin\DatabaseInterface; +use PhpMyAdmin\Http\Factory\ResponseFactory; use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Message; use PhpMyAdmin\Table\Indexes; @@ -33,7 +34,8 @@ class UniqueControllerTest extends AbstractTestCase $request = self::createStub(ServerRequest::class); $request->method('getParsedBodyParam')->willReturnMap([['selected_fld', [], ['test_field']]]); $controllerStub = self::createMock(StructureController::class); - $controllerStub->expects(self::once())->method('__invoke')->with($request); + $controllerStub->expects(self::once())->method('__invoke')->with($request) + ->willReturn(ResponseFactory::create()->createResponse()); $indexes = new Indexes(DatabaseInterface::getInstance()); $controller = new UniqueController(new ResponseRenderer(), $controllerStub, $indexes); @@ -61,7 +63,8 @@ class UniqueControllerTest extends AbstractTestCase $request = self::createStub(ServerRequest::class); $request->method('getParsedBodyParam')->willReturnMap([['selected_fld', [], ['test_field1', 'test_field2']]]); $controllerStub = self::createMock(StructureController::class); - $controllerStub->expects(self::once())->method('__invoke')->with($request); + $controllerStub->expects(self::once())->method('__invoke')->with($request) + ->willReturn(ResponseFactory::create()->createResponse()); $indexes = new Indexes(DatabaseInterface::getInstance()); $controller = new UniqueController(new ResponseRenderer(), $controllerStub, $indexes); @@ -117,7 +120,8 @@ class UniqueControllerTest extends AbstractTestCase $request = self::createStub(ServerRequest::class); $request->method('getParsedBodyParam')->willReturnMap([['selected_fld', [], ['test_field']]]); $controllerStub = self::createMock(StructureController::class); - $controllerStub->expects(self::once())->method('__invoke')->with($request); + $controllerStub->expects(self::once())->method('__invoke')->with($request) + ->willReturn(ResponseFactory::create()->createResponse()); $indexes = new Indexes(DatabaseInterface::getInstance()); $controller = new UniqueController(new ResponseRenderer(), $controllerStub, $indexes); diff --git a/tests/unit/Controllers/Table/TrackingControllerTest.php b/tests/unit/Controllers/Table/TrackingControllerTest.php index 2231edf179..01f130c797 100644 --- a/tests/unit/Controllers/Table/TrackingControllerTest.php +++ b/tests/unit/Controllers/Table/TrackingControllerTest.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Controllers\Table; +use Fig\Http\Message\StatusCodeInterface; use PhpMyAdmin\Bookmarks\BookmarkRepository; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; @@ -71,7 +72,7 @@ class TrackingControllerTest extends AbstractTestCase ResponseFactory::create(), ))($request); - self::assertNull($response); + self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); $main = $template->render('table/tracking/main', [ 'url_params' => [ diff --git a/tests/unit/Http/Handler/ApplicationHandlerTest.php b/tests/unit/Http/Handler/ApplicationHandlerTest.php index 698f7fe293..22295b00ba 100644 --- a/tests/unit/Http/Handler/ApplicationHandlerTest.php +++ b/tests/unit/Http/Handler/ApplicationHandlerTest.php @@ -49,20 +49,4 @@ final class ApplicationHandlerTest extends TestCase self::assertSame($response, $responseStub); $reflectionProperty->setValue(null, null); } - - public function testHandleReturnsNull(): void - { - $responseStub = new Response(self::createStub(ResponseInterface::class)); - $responseRendererMock = self::createMock(ResponseRenderer::class); - $responseRendererMock->expects(self::once())->method('response')->willReturn($responseStub); - $reflectionProperty = new ReflectionProperty(ResponseRenderer::class, 'instance'); - $reflectionProperty->setValue(null, $responseRendererMock); - $request = self::createStub(ServerRequest::class); - $appMock = self::createMock(Application::class); - $appMock->expects(self::once())->method('handle')->with($request)->willReturn(null); - $handler = new ApplicationHandler($appMock); - $response = $handler->handle($request); - self::assertSame($response, $responseStub); - $reflectionProperty->setValue(null, null); - } }