From f5c970639cb78c87362483ef1454515b5442cd74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Tue, 11 Feb 2020 21:15:09 -0300 Subject: [PATCH 1/6] Move response handling from routes to controllers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maurício Meneghini Fauth --- .../classes/Controllers/AjaxController.php | 48 ++-- .../BrowseForeignersController.php | 10 +- .../Controllers/CheckRelationsController.php | 4 +- .../Database/DataDictionaryController.php | 6 +- .../Database/MultiTableQueryController.php | 11 +- .../Database/SqlAutoCompleteController.php | 7 +- .../Database/SqlFormatController.php | 6 +- .../Database/StructureController.php | 38 +-- .../Controllers/GisDataEditorController.php | 20 +- .../classes/Controllers/HomeController.php | 33 +-- .../Controllers/Server/BinlogController.php | 6 +- .../Server/CollationsController.php | 11 +- .../Server/DatabasesController.php | 23 +- .../Controllers/Server/EnginesController.php | 15 +- .../Controllers/Server/PluginsController.php | 10 +- .../Server/ReplicationController.php | 6 +- .../Controllers/Server/SqlController.php | 7 +- .../Server/Status/AdvisorController.php | 6 +- .../Server/Status/MonitorController.php | 126 ++++---- .../Server/Status/ProcessesController.php | 23 +- .../Server/Status/QueriesController.php | 9 +- .../Server/Status/StatusController.php | 6 +- .../Server/Status/VariablesController.php | 8 +- .../Server/VariablesController.php | 22 +- .../classes/Controllers/ThemesController.php | 6 +- .../TransformationOverviewController.php | 9 +- libraries/routes.php | 268 +++++++++--------- .../Database/StructureControllerTest.php | 6 +- .../Server/BinlogControllerTest.php | 9 +- .../Server/CollationsControllerTest.php | 9 +- .../Server/DatabasesControllerTest.php | 57 ++-- .../Server/EnginesControllerTest.php | 16 +- .../Server/PluginsControllerTest.php | 9 +- .../Server/Status/AdvisorControllerTest.php | 9 +- .../Server/Status/MonitorControllerTest.php | 29 +- .../Server/Status/ProcessesControllerTest.php | 23 +- .../Server/Status/QueriesControllerTest.php | 9 +- .../Server/Status/StatusControllerTest.php | 9 +- .../Server/Status/VariablesControllerTest.php | 9 +- .../Server/VariablesControllerTest.php | 8 +- .../TransformationOverviewControllerTest.php | 9 +- 41 files changed, 472 insertions(+), 483 deletions(-) diff --git a/libraries/classes/Controllers/AjaxController.php b/libraries/classes/Controllers/AjaxController.php index 63478ad93a..222d05cc9a 100644 --- a/libraries/classes/Controllers/AjaxController.php +++ b/libraries/classes/Controllers/AjaxController.php @@ -33,66 +33,57 @@ class AjaxController extends AbstractController $this->config = $config; } - /** - * @return array JSON - */ - public function databases(): array + public function databases(): void { global $dblist; - return ['databases' => $dblist->databases]; + $this->response->addJSON(['databases' => $dblist->databases]); } /** * @param array $params Request parameters - * - * @return array JSON */ - public function tables(array $params): array + public function tables(array $params): void { - return ['tables' => $this->dbi->getTables($params['database'])]; + $this->response->addJSON(['tables' => $this->dbi->getTables($params['database'])]); } /** * @param array $params Request parameters - * - * @return array JSON */ - public function columns(array $params): array + public function columns(array $params): void { - return [ + $this->response->addJSON([ 'columns' => $this->dbi->getColumnNames( $params['database'], $params['table'] ), - ]; + ]); } /** * @param array $params Request parameters - * - * @return array JSON */ - public function getConfig(array $params): array + public function getConfig(array $params): void { if (! isset($params['key'])) { $this->response->setRequestStatus(false); - return ['message' => Message::error()]; + $this->response->addJSON(['message' => Message::error()]); + return; } - return ['value' => $this->config->get($params['key'])]; + $this->response->addJSON(['value' => $this->config->get($params['key'])]); } /** * @param array $params Request parameters - * - * @return array */ - public function setConfig(array $params): array + public function setConfig(array $params): void { if (! isset($params['key'], $params['value'])) { $this->response->setRequestStatus(false); - return ['message' => Message::error()]; + $this->response->addJSON(['message' => Message::error()]); + return; } $result = $this->config->setUserValue( @@ -100,11 +91,12 @@ class AjaxController extends AbstractController $params['key'], json_decode($params['value']) ); - $json = []; - if ($result !== true) { - $this->response->setRequestStatus(false); - $json['message'] = $result; + + if ($result === true) { + return; } - return $json; + + $this->response->setRequestStatus(false); + $this->response->addJSON(['message' => $result]); } } diff --git a/libraries/classes/Controllers/BrowseForeignersController.php b/libraries/classes/Controllers/BrowseForeignersController.php index 8445923552..62f9b3197c 100644 --- a/libraries/classes/Controllers/BrowseForeignersController.php +++ b/libraries/classes/Controllers/BrowseForeignersController.php @@ -39,13 +39,11 @@ class BrowseForeignersController extends AbstractController /** * @param array $params Request parameters - * - * @return string HTML */ - public function index(array $params): string + public function index(array $params): void { if (! isset($params['db'], $params['table'], $params['field'])) { - return ''; + return; } $this->response->getFooter()->setMinimal(); @@ -69,13 +67,13 @@ class BrowseForeignersController extends AbstractController true ); - return $this->browseForeigners->getHtmlForRelationalFieldSelection( + $this->response->addHTML($this->browseForeigners->getHtmlForRelationalFieldSelection( $params['db'], $params['table'], $params['field'], $foreignData, $params['fieldkey'] ?? '', $params['data'] ?? '' - ); + )); } } diff --git a/libraries/classes/Controllers/CheckRelationsController.php b/libraries/classes/Controllers/CheckRelationsController.php index 85d1b2ed4e..6454daf983 100644 --- a/libraries/classes/Controllers/CheckRelationsController.php +++ b/libraries/classes/Controllers/CheckRelationsController.php @@ -31,7 +31,7 @@ class CheckRelationsController extends AbstractController /** * @param array $params Request parameters */ - public function index(array $params): string + public function index(array $params): void { global $db; @@ -51,6 +51,6 @@ class CheckRelationsController extends AbstractController $this->relation->fixPmaTables($cfgRelation['db']); } - return $this->relation->getRelationsParamDiagnostic($cfgRelation); + $this->response->addHTML($this->relation->getRelationsParamDiagnostic($cfgRelation)); } } diff --git a/libraries/classes/Controllers/Database/DataDictionaryController.php b/libraries/classes/Controllers/Database/DataDictionaryController.php index da9dbea9aa..4f9a07225f 100644 --- a/libraries/classes/Controllers/Database/DataDictionaryController.php +++ b/libraries/classes/Controllers/Database/DataDictionaryController.php @@ -42,7 +42,7 @@ class DataDictionaryController extends AbstractController /** * @param array $params Request parameters */ - public function index(array $params): string + public function index(array $params): void { $this->db = $params['database']; @@ -141,10 +141,10 @@ class DataDictionaryController extends AbstractController ]; } - return $this->template->render('database/data_dictionary/index', [ + $this->response->addHTML($this->template->render('database/data_dictionary/index', [ 'database' => $this->db, 'comment' => $comment, 'tables' => $tables, - ]); + ])); } } diff --git a/libraries/classes/Controllers/Database/MultiTableQueryController.php b/libraries/classes/Controllers/Database/MultiTableQueryController.php index c3062b73b7..8558349b8d 100644 --- a/libraries/classes/Controllers/Database/MultiTableQueryController.php +++ b/libraries/classes/Controllers/Database/MultiTableQueryController.php @@ -13,7 +13,7 @@ use PhpMyAdmin\Database\MultiTableQuery; */ class MultiTableQueryController extends AbstractController { - public function index(): string + public function index(): void { $header = $this->response->getHeader(); $scripts = $header->getScripts(); @@ -23,7 +23,7 @@ class MultiTableQueryController extends AbstractController $queryInstance = new MultiTableQuery($this->dbi, $this->template, $this->db); - return $queryInstance->getFormHtml(); + $this->response->addHTML($queryInstance->getFormHtml()); } /** @@ -42,16 +42,13 @@ class MultiTableQueryController extends AbstractController /** * @param array $params Request parameters - * - * @return array JSON */ - public function table(array $params): array + public function table(array $params): void { $constrains = $this->dbi->getForeignKeyConstrains( $params['db'], $params['tables'] ); - - return ['foreignKeyConstrains' => $constrains]; + $this->response->addJSON(['foreignKeyConstrains' => $constrains]); } } diff --git a/libraries/classes/Controllers/Database/SqlAutoCompleteController.php b/libraries/classes/Controllers/Database/SqlAutoCompleteController.php index 5cbb40e8a3..fbf4aa8823 100644 --- a/libraries/classes/Controllers/Database/SqlAutoCompleteController.php +++ b/libraries/classes/Controllers/Database/SqlAutoCompleteController.php @@ -10,10 +10,7 @@ use function json_encode; */ class SqlAutoCompleteController extends AbstractController { - /** - * @return array JSON - */ - public function index(): array + public function index(): void { global $cfg, $db, $sql_autocomplete; @@ -31,6 +28,6 @@ class SqlAutoCompleteController extends AbstractController } } } - return ['tables' => json_encode($sql_autocomplete)]; + $this->response->addJSON(['tables' => json_encode($sql_autocomplete)]); } } diff --git a/libraries/classes/Controllers/Database/SqlFormatController.php b/libraries/classes/Controllers/Database/SqlFormatController.php index 570ae42e7f..3f729de21a 100644 --- a/libraries/classes/Controllers/Database/SqlFormatController.php +++ b/libraries/classes/Controllers/Database/SqlFormatController.php @@ -13,12 +13,10 @@ class SqlFormatController extends AbstractController { /** * @param array $params Request parameters - * - * @return array */ - public function index(array $params): array + public function index(array $params): void { $query = strlen((string) $params['sql']) > 0 ? $params['sql'] : ''; - return ['sql' => Formatter::format($query)]; + $this->response->addJSON(['sql' => Formatter::format($query)]); } } diff --git a/libraries/classes/Controllers/Database/StructureController.php b/libraries/classes/Controllers/Database/StructureController.php index 0aa6b3361d..a32371771c 100644 --- a/libraries/classes/Controllers/Database/StructureController.php +++ b/libraries/classes/Controllers/Database/StructureController.php @@ -111,10 +111,8 @@ class StructureController extends AbstractController * Index action * * @param array $parameters Request parameters - * - * @return string HTML */ - public function index(array $parameters): string + public function index(array $parameters): void { global $cfg; @@ -179,31 +177,29 @@ class StructureController extends AbstractController $createTable = CreateTable::getHtml($this->db); } - return $this->template->render('database/structure/index', [ + $this->response->addHTML($this->template->render('database/structure/index', [ 'database' => $this->db, 'has_tables' => $this->numTables > 0, 'list_navigator_html' => $listNavigator ?? '', 'table_list_html' => $tableList ?? '', 'is_system_schema' => ! empty($this->dbIsSystemSchema), 'create_table_html' => $createTable, - ]); + ])); } /** * Add or remove favorite tables * * @param array $parameters Request parameters - * - * @return array */ - public function addRemoveFavoriteTablesAction(array $parameters): ?array + public function addRemoveFavoriteTablesAction(array $parameters): void { global $cfg; Common::database(); if (! $this->response->isAjax()) { - return []; + return; } $favoriteInstance = RecentFavoriteTable::getInstance('favorite'); @@ -219,9 +215,13 @@ class StructureController extends AbstractController if (isset($parameters['sync_favorite_tables'])) { $cfgRelation = $this->relation->getRelationsParam(); if ($cfgRelation['favoritework']) { - return $this->synchronizeFavoriteTables($favoriteInstance, $user, $favoriteTables); + $this->response->addJSON($this->synchronizeFavoriteTables( + $favoriteInstance, + $user, + $favoriteTables + )); } - return []; + return; } $changes = true; $titles = Util::buildActionTitles(); @@ -255,7 +255,8 @@ class StructureController extends AbstractController $json['message'] = $this->template->render('components/error_message', [ 'msg' => __('Favorite List is full!'), ]); - return $json; + $this->response->addJSON($json); + return; } // Check if current table is already in favorite list. $favoriteParams = [ @@ -276,22 +277,20 @@ class StructureController extends AbstractController 'titles' => $titles, ]); - return $json; + $this->response->addJSON($json); } /** * Handles request for real row count on database level view page. * * @param array $parameters Request parameters - * - * @return array JSON */ - public function handleRealRowCountRequestAction(array $parameters): array + public function handleRealRowCountRequestAction(array $parameters): void { Common::database(); if (! $this->response->isAjax()) { - return []; + return; } // If there is a request to update all table's row count. @@ -303,7 +302,8 @@ class StructureController extends AbstractController // Format the number. $realRowCount = Util::formatNumber($realRowCount, 0); - return ['real_row_count' => $realRowCount]; + $this->response->addJSON(['real_row_count' => $realRowCount]); + return; } // Array to store the results. @@ -319,7 +319,7 @@ class StructureController extends AbstractController ]; } - return ['real_row_count_all' => json_encode($realRowCountAll)]; + $this->response->addJSON(['real_row_count_all' => json_encode($realRowCountAll)]); } /** diff --git a/libraries/classes/Controllers/GisDataEditorController.php b/libraries/classes/Controllers/GisDataEditorController.php index 0fd7dfa518..c480d88273 100644 --- a/libraries/classes/Controllers/GisDataEditorController.php +++ b/libraries/classes/Controllers/GisDataEditorController.php @@ -23,16 +23,13 @@ use function trim; */ class GisDataEditorController extends AbstractController { - /** - * @return array - */ - public function index(): array + public function index(): void { global $gis_data, $gis_types, $start, $geom_type, $gis_obj, $srid, $wkt, $wkt_with_zero; global $result, $visualizationSettings, $data, $visualization, $open_layers, $geom_count; if (! isset($_POST['field'])) { - return []; + return; } // Get data if any posted @@ -109,12 +106,12 @@ class GisDataEditorController extends AbstractController // If the call is to update the WKT and visualization make an AJAX response if (isset($_POST['generate']) && $_POST['generate'] == true) { - $extra_data = [ - 'result' => $result, + $this->response->addJSON([ + 'result' => $result, 'visualization' => $visualization, - 'openLayers' => $open_layers, - ]; - return $extra_data; + 'openLayers' => $open_layers, + ]); + return; } $geom_count = 1; @@ -141,6 +138,7 @@ class GisDataEditorController extends AbstractController 'gis_data' => $gis_data, 'result' => $result, ]); - return ['gis_editor' => $templateOutput]; + + $this->response->addJSON(['gis_editor' => $templateOutput]); } } diff --git a/libraries/classes/Controllers/HomeController.php b/libraries/classes/Controllers/HomeController.php index 6161153ffe..a8da7da7a2 100644 --- a/libraries/classes/Controllers/HomeController.php +++ b/libraries/classes/Controllers/HomeController.php @@ -62,15 +62,13 @@ class HomeController extends AbstractController /** * @param array $params Request parameters - * - * @return string HTML */ - public function index(array $params): string + public function index(array $params): void { global $cfg, $server, $collation_connection, $message, $show_query, $db, $table; if ($this->response->isAjax() && ! empty($params['access_time'])) { - return ''; + return; } $db = ''; @@ -266,7 +264,7 @@ class HomeController extends AbstractController $this->checkRequirements(); - return $this->template->render('home/index', [ + $this->response->addHTML($this->template->render('home/index', [ 'message' => $displayMessage ?? '', 'partial_logout' => $partialLogout ?? '', 'is_git_revision' => $this->config->isGitRevision(), @@ -287,7 +285,7 @@ class HomeController extends AbstractController 'is_version_checked' => $cfg['VersionCheck'], 'phpmyadmin_version' => PMA_VERSION, 'config_storage_message' => $configStorageMessage ?? '', - ]); + ])); } /** @@ -321,35 +319,30 @@ class HomeController extends AbstractController $this->response->header('Location: index.php?route=/' . Url::getCommonRaw([], '&')); } - /** - * @return array JSON - */ - public function reloadRecentTablesList(): array + public function reloadRecentTablesList(): void { if (! $this->response->isAjax()) { - return []; + return; } - return [ + + $this->response->addJSON([ 'list' => RecentFavoriteTable::getInstance('recent')->getHtmlList(), - ]; + ]); } - /** - * @return string HTML - */ - public function gitRevision(): string + public function gitRevision(): void { global $PMA_Config; if (! $this->response->isAjax() || ! $PMA_Config->isGitRevision()) { - return ''; + return; } - return (new GitRevision( + $this->response->addHTML((new GitRevision( $this->response, $this->config, $this->template - ))->display(); + ))->display()); } private function checkRequirements(): void diff --git a/libraries/classes/Controllers/Server/BinlogController.php b/libraries/classes/Controllers/Server/BinlogController.php index a6fd99d186..3a767bde52 100644 --- a/libraries/classes/Controllers/Server/BinlogController.php +++ b/libraries/classes/Controllers/Server/BinlogController.php @@ -50,7 +50,7 @@ class BinlogController extends AbstractController * * @param array $params Request params */ - public function index(array $params): string + public function index(array $params): void { global $cfg, $pmaThemeImage; @@ -105,7 +105,7 @@ class BinlogController extends AbstractController $values[] = $value; } - return $this->template->render('server/binlog/index', [ + $this->response->addHTML($this->template->render('server/binlog/index', [ 'url_params' => $urlParams, 'binary_logs' => $this->binaryLogs, 'log' => $params['log'], @@ -119,7 +119,7 @@ class BinlogController extends AbstractController 'has_icons' => Util::showIcons('TableNavigationLinksMode'), 'is_full_query' => $isFullQuery, 'image_path' => $pmaThemeImage, - ]); + ])); } /** diff --git a/libraries/classes/Controllers/Server/CollationsController.php b/libraries/classes/Controllers/Server/CollationsController.php index 4df33bd0e9..7472e156d4 100644 --- a/libraries/classes/Controllers/Server/CollationsController.php +++ b/libraries/classes/Controllers/Server/CollationsController.php @@ -54,12 +54,7 @@ class CollationsController extends AbstractController ); } - /** - * Index action - * - * @return string HTML - */ - public function index(): string + public function index(): void { Common::server(); @@ -83,8 +78,8 @@ class CollationsController extends AbstractController ]; } - return $this->template->render('server/collations/index', [ + $this->response->addHTML($this->template->render('server/collations/index', [ 'charsets' => $charsets, - ]); + ])); } } diff --git a/libraries/classes/Controllers/Server/DatabasesController.php b/libraries/classes/Controllers/Server/DatabasesController.php index dc63d9fc04..90ada362ee 100644 --- a/libraries/classes/Controllers/Server/DatabasesController.php +++ b/libraries/classes/Controllers/Server/DatabasesController.php @@ -71,10 +71,8 @@ class DatabasesController extends AbstractController * Index action * * @param array $params Request parameters - * - * @return string HTML */ - public function index(array $params): string + public function index(array $params): void { global $cfg, $server, $dblist, $is_create_db_priv; global $replication_info, $db_to_create, $pmaThemeImage, $text_dir; @@ -141,7 +139,7 @@ class DatabasesController extends AbstractController $headerStatistics = $this->getStatisticsColumns(); - return $this->template->render('server/databases/index', [ + $this->response->addHTML($this->template->render('server/databases/index', [ 'is_create_database_shown' => $cfg['ShowCreateDb'], 'has_create_database_privileges' => $is_create_db_priv, 'has_statistics' => $this->hasStatistics, @@ -159,22 +157,21 @@ class DatabasesController extends AbstractController 'is_drop_allowed' => $this->dbi->isSuperuser() || $cfg['AllowUserDropDatabase'], 'pma_theme_image' => $pmaThemeImage, 'text_dir' => $text_dir, - ]); + ])); } /** * Handles creating a new database * * @param array $params Request parameters - * - * @return array JSON */ - public function create(array $params): array + public function create(array $params): void { global $cfg, $db; if (! isset($params['new_db']) || mb_strlen($params['new_db']) === 0 || ! $this->response->isAjax()) { - return ['message' => Message::error()]; + $this->response->addJSON(['message' => Message::error()]); + return; } // lower_case_table_names=1 `DB` becomes `db` @@ -238,17 +235,15 @@ class DatabasesController extends AbstractController ]; } - return $json; + $this->response->addJSON($json); } /** * Handles dropping multiple databases * * @param array $params Request parameters - * - * @return array JSON */ - public function destroy(array $params): array + public function destroy(array $params): void { global $submit_mult, $mult_btn, $selected, $err_url, $cfg; @@ -288,7 +283,7 @@ class DatabasesController extends AbstractController $this->response->setRequestStatus($message->isSuccess()); } - return $json; + $this->response->addJSON($json); } /** diff --git a/libraries/classes/Controllers/Server/EnginesController.php b/libraries/classes/Controllers/Server/EnginesController.php index 6569a31baa..2dcd9cc798 100644 --- a/libraries/classes/Controllers/Server/EnginesController.php +++ b/libraries/classes/Controllers/Server/EnginesController.php @@ -15,16 +15,13 @@ use PhpMyAdmin\StorageEngine; */ class EnginesController extends AbstractController { - /** - * Index action - */ - public function index(): string + public function index(): void { Common::server(); - return $this->template->render('server/engines/index', [ + $this->response->addHTML($this->template->render('server/engines/index', [ 'engines' => StorageEngine::getStorageEngines(), - ]); + ])); } /** @@ -32,7 +29,7 @@ class EnginesController extends AbstractController * * @param array $params Request params */ - public function show(array $params): string + public function show(array $params): void { Common::server(); @@ -53,9 +50,9 @@ class EnginesController extends AbstractController ]; } - return $this->template->render('server/engines/show', [ + $this->response->addHTML($this->template->render('server/engines/show', [ 'engine' => $engine, 'page' => $page, - ]); + ])); } } diff --git a/libraries/classes/Controllers/Server/PluginsController.php b/libraries/classes/Controllers/Server/PluginsController.php index e4fe407345..793df66419 100644 --- a/libraries/classes/Controllers/Server/PluginsController.php +++ b/libraries/classes/Controllers/Server/PluginsController.php @@ -38,10 +38,7 @@ class PluginsController extends AbstractController $this->plugins = $plugins; } - /** - * Index action - */ - public function index(): string + public function index(): void { Common::server(); @@ -65,9 +62,10 @@ class PluginsController extends AbstractController mb_strtolower($type) ); } - return $this->template->render('server/plugins/index', [ + + $this->response->addHTML($this->template->render('server/plugins/index', [ 'plugins' => $plugins, 'clean_types' => $cleanTypes, - ]); + ])); } } diff --git a/libraries/classes/Controllers/Server/ReplicationController.php b/libraries/classes/Controllers/Server/ReplicationController.php index a876ea976e..6efb343d2a 100644 --- a/libraries/classes/Controllers/Server/ReplicationController.php +++ b/libraries/classes/Controllers/Server/ReplicationController.php @@ -38,7 +38,7 @@ class ReplicationController extends AbstractController /** * @param array $params Request parameters */ - public function index(array $params): string + public function index(array $params): void { global $replication_info, $server_slave_replication, $url_params; @@ -79,7 +79,7 @@ class ReplicationController extends AbstractController } } - return $this->template->render('server/replication/index', [ + $this->response->addHTML($this->template->render('server/replication/index', [ 'url_params' => $url_params, 'is_super_user' => $this->dbi->isSuperuser(), 'error_messages' => $errorMessages, @@ -91,6 +91,6 @@ class ReplicationController extends AbstractController 'master_configuration_html' => $masterConfigurationHtml ?? '', 'slave_configuration_html' => $slaveConfigurationHtml ?? '', 'change_master_html' => $changeMasterHtml ?? '', - ]); + ])); } } diff --git a/libraries/classes/Controllers/Server/SqlController.php b/libraries/classes/Controllers/Server/SqlController.php index 85d21f92d8..e1c44c60af 100644 --- a/libraries/classes/Controllers/Server/SqlController.php +++ b/libraries/classes/Controllers/Server/SqlController.php @@ -34,10 +34,7 @@ class SqlController extends AbstractController $this->sqlQueryForm = $sqlQueryForm; } - /** - * @return string HTML - */ - public function index(): string + public function index(): void { $header = $this->response->getHeader(); $scripts = $header->getScripts(); @@ -49,6 +46,6 @@ class SqlController extends AbstractController Common::server(); - return $this->sqlQueryForm->getHtml(); + $this->response->addHTML($this->sqlQueryForm->getHtml()); } } diff --git a/libraries/classes/Controllers/Server/Status/AdvisorController.php b/libraries/classes/Controllers/Server/Status/AdvisorController.php index 944597b04c..9d8fd694d9 100644 --- a/libraries/classes/Controllers/Server/Status/AdvisorController.php +++ b/libraries/classes/Controllers/Server/Status/AdvisorController.php @@ -34,7 +34,7 @@ class AdvisorController extends AbstractController $this->advisor = $advisor; } - public function index(): string + public function index(): void { $scripts = $this->response->getHeader()->getScripts(); $scripts->addFile('server/status/advisor.js'); @@ -44,8 +44,8 @@ class AdvisorController extends AbstractController $data = json_encode($this->advisor->run()); } - return $this->template->render('server/status/advisor/index', [ + $this->response->addHTML($this->template->render('server/status/advisor/index', [ 'data' => $data, - ]); + ])); } } diff --git a/libraries/classes/Controllers/Server/Status/MonitorController.php b/libraries/classes/Controllers/Server/Status/MonitorController.php index 24a9a781a8..f0abf96efc 100644 --- a/libraries/classes/Controllers/Server/Status/MonitorController.php +++ b/libraries/classes/Controllers/Server/Status/MonitorController.php @@ -34,10 +34,7 @@ class MonitorController extends AbstractController $this->monitor = $monitor; } - /** - * @return string HTML - */ - public function index(): string + public function index(): void { Common::server(); @@ -71,121 +68,106 @@ class MonitorController extends AbstractController } } - return $this->template->render('server/status/monitor/index', [ + $this->response->addHTML($this->template->render('server/status/monitor/index', [ 'image_path' => $GLOBALS['pmaThemeImage'], 'javascript_variable_names' => $javascriptVariableNames, 'form' => $form, + ])); + } + + /** + * @param array $params Request parameters + */ + public function chartingData(array $params): void + { + Common::server(); + + if (! $this->response->isAjax()) { + return; + } + + $this->response->addJSON([ + 'message' => $this->monitor->getJsonForChartingData( + $params['requiredData'] ?? '' + ), ]); } /** * @param array $params Request parameters - * - * @return array JSON */ - public function chartingData(array $params): array + public function logDataTypeSlow(array $params): void { Common::server(); if (! $this->response->isAjax()) { - return []; + return; } - $json = []; - $json['message'] = $this->monitor->getJsonForChartingData( - $params['requiredData'] ?? '' - ); - - return $json; + $this->response->addJSON([ + 'message' => $this->monitor->getJsonForLogDataTypeSlow( + (int) $params['time_start'], + (int) $params['time_end'] + ), + ]); } /** * @param array $params Request parameters - * - * @return array JSON */ - public function logDataTypeSlow(array $params): array + public function logDataTypeGeneral(array $params): void { Common::server(); if (! $this->response->isAjax()) { - return []; + return; } - $json = []; - $json['message'] = $this->monitor->getJsonForLogDataTypeSlow( - (int) $params['time_start'], - (int) $params['time_end'] - ); - - return $json; + $this->response->addJSON([ + 'message' => $this->monitor->getJsonForLogDataTypeGeneral( + (int) $params['time_start'], + (int) $params['time_end'], + (bool) $params['limitTypes'], + (bool) $params['removeVariables'] + ), + ]); } /** * @param array $params Request parameters - * - * @return array JSON */ - public function logDataTypeGeneral(array $params): array + public function loggingVars(array $params): void { Common::server(); if (! $this->response->isAjax()) { - return []; + return; } - $json = []; - $json['message'] = $this->monitor->getJsonForLogDataTypeGeneral( - (int) $params['time_start'], - (int) $params['time_end'], - (bool) $params['limitTypes'], - (bool) $params['removeVariables'] - ); - - return $json; + $this->response->addJSON([ + 'message' => $this->monitor->getJsonForLoggingVars( + $params['varName'], + $params['varValue'] + ), + ]); } /** * @param array $params Request parameters - * - * @return array JSON */ - public function loggingVars(array $params): array + public function queryAnalyzer(array $params): void { Common::server(); if (! $this->response->isAjax()) { - return []; + return; } - $json = []; - $json['message'] = $this->monitor->getJsonForLoggingVars( - $params['varName'], - $params['varValue'] - ); - - return $json; - } - - /** - * @param array $params Request parameters - * - * @return array JSON - */ - public function queryAnalyzer(array $params): array - { - Common::server(); - - if (! $this->response->isAjax()) { - return []; - } - - $json = []; - $json['message'] = $this->monitor->getJsonForQueryAnalyzer( - $params['database'] ?? '', - $params['query'] ?? '' - ); - - return $json; + $this->response->addJSON([ + 'message' => $this->monitor->getJsonForQueryAnalyzer( + $params['database'] ?? '', + $params['query'] ?? '' + ), + ]); } } diff --git a/libraries/classes/Controllers/Server/Status/ProcessesController.php b/libraries/classes/Controllers/Server/Status/ProcessesController.php index 0d25df01a4..9397ec03cf 100644 --- a/libraries/classes/Controllers/Server/Status/ProcessesController.php +++ b/libraries/classes/Controllers/Server/Status/ProcessesController.php @@ -21,7 +21,7 @@ class ProcessesController extends AbstractController /** * @param array $params Request parameters */ - public function index(array $params): string + public function index(array $params): void { Common::server(); @@ -44,11 +44,11 @@ class ProcessesController extends AbstractController $serverProcessList = $this->getList($params); - return $this->template->render('server/status/processes/index', [ + $this->response->addHTML($this->template->render('server/status/processes/index', [ 'url_params' => $urlParams, 'is_checked' => $isChecked, 'server_process_list' => $serverProcessList, - ]); + ])); } /** @@ -56,24 +56,22 @@ class ProcessesController extends AbstractController * * @param array $params Request parameters */ - public function refresh(array $params): string + public function refresh(array $params): void { if (! $this->response->isAjax()) { - return ''; + return; } - return $this->getList($params); + $this->response->addHTML($this->getList($params)); } /** * @param array $params Request parameters - * - * @return array */ - public function kill(array $params): array + public function kill(array $params): void { if (! $this->response->isAjax()) { - return []; + return; } $kill = (int) $params['id']; @@ -95,10 +93,7 @@ class ProcessesController extends AbstractController } $message->addParam($kill); - $json = []; - $json['message'] = $message; - - return $json; + $this->response->addJSON(['message' => $message]); } /** diff --git a/libraries/classes/Controllers/Server/Status/QueriesController.php b/libraries/classes/Controllers/Server/Status/QueriesController.php index 0475f38bae..86c24c5d82 100644 --- a/libraries/classes/Controllers/Server/Status/QueriesController.php +++ b/libraries/classes/Controllers/Server/Status/QueriesController.php @@ -14,10 +14,7 @@ use function str_replace; class QueriesController extends AbstractController { - /** - * @return string HTML - */ - public function index(): string + public function index(): void { Common::server(); @@ -77,11 +74,11 @@ class QueriesController extends AbstractController } } - return $this->template->render('server/status/queries/index', [ + $this->response->addHTML($this->template->render('server/status/queries/index', [ 'is_data_loaded' => $this->data->dataLoaded, 'stats' => $stats ?? null, 'queries' => $queries ?? [], 'chart' => $chart ?? [], - ]); + ])); } } diff --git a/libraries/classes/Controllers/Server/Status/StatusController.php b/libraries/classes/Controllers/Server/Status/StatusController.php index 8495ad514b..262deda334 100644 --- a/libraries/classes/Controllers/Server/Status/StatusController.php +++ b/libraries/classes/Controllers/Server/Status/StatusController.php @@ -36,7 +36,7 @@ class StatusController extends AbstractController $this->replicationGui = $replicationGui; } - public function index(): string + public function index(): void { global $replication_info; @@ -69,7 +69,7 @@ class StatusController extends AbstractController } } - return $this->template->render('server/status/status/index', [ + $this->response->addHTML($this->template->render('server/status/status/index', [ 'is_data_loaded' => $this->data->dataLoaded, 'network_traffic' => $networkTraffic ?? null, 'uptime' => $uptime ?? null, @@ -79,7 +79,7 @@ class StatusController extends AbstractController 'is_master' => $replication_info['master']['status'], 'is_slave' => $replication_info['slave']['status'], 'replication' => $replication, - ]); + ])); } private function getStartTime(): int diff --git a/libraries/classes/Controllers/Server/Status/VariablesController.php b/libraries/classes/Controllers/Server/Status/VariablesController.php index 1d19eba9de..7a26af68a6 100644 --- a/libraries/classes/Controllers/Server/Status/VariablesController.php +++ b/libraries/classes/Controllers/Server/Status/VariablesController.php @@ -16,10 +16,8 @@ class VariablesController extends AbstractController { /** * @param array $params Request parameters - * - * @return string HTML */ - public function index(array $params): string + public function index(array $params): void { Common::server(); @@ -102,7 +100,7 @@ class VariablesController extends AbstractController } } - return $this->template->render('server/status/variables/index', [ + $this->response->addHTML($this->template->render('server/status/variables/index', [ 'is_data_loaded' => $this->data->dataLoaded, 'filter_text' => ! empty($params['filterText']) ? $params['filterText'] : '', 'is_only_alerts' => ! empty($params['filterAlert']), @@ -110,7 +108,7 @@ class VariablesController extends AbstractController 'categories' => $categories ?? [], 'links' => $links ?? [], 'variables' => $variables ?? [], - ]); + ])); } /** diff --git a/libraries/classes/Controllers/Server/VariablesController.php b/libraries/classes/Controllers/Server/VariablesController.php index c987e03530..16c4988479 100644 --- a/libraries/classes/Controllers/Server/VariablesController.php +++ b/libraries/classes/Controllers/Server/VariablesController.php @@ -34,7 +34,7 @@ class VariablesController extends AbstractController * * @param array $params Request parameters */ - public function index(array $params): string + public function index(array $params): void { Common::server(); @@ -89,25 +89,23 @@ class VariablesController extends AbstractController } } - return $this->template->render('server/variables/index', [ + $this->response->addHTML($this->template->render('server/variables/index', [ 'variables' => $variables, 'filter_value' => $filterValue, 'is_superuser' => $this->dbi->isSuperuser(), 'is_mariadb' => $this->dbi->isMariaDB(), - ]); + ])); } /** * Handle the AJAX request for a single variable value * * @param array $params Request parameters - * - * @return array */ - public function getValue(array $params): array + public function getValue(array $params): void { if (! $this->response->isAjax()) { - return []; + return; } // Send with correct charset @@ -135,20 +133,18 @@ class VariablesController extends AbstractController $json['message'] = $varValue[1]; } - return $json; + $this->response->addJSON($json); } /** * Handle the AJAX request for setting value for a single variable * * @param array $params Request parameters - * - * @return array */ - public function setValue(array $params): array + public function setValue(array $params): void { if (! $this->response->isAjax()) { - return []; + return; } $value = $params['varValue']; @@ -211,7 +207,7 @@ class VariablesController extends AbstractController $json['error'] = __('Setting variable failed'); } - return $json; + $this->response->addJSON($json); } /** diff --git a/libraries/classes/Controllers/ThemesController.php b/libraries/classes/Controllers/ThemesController.php index 8f98b12ae1..82b04bd42e 100644 --- a/libraries/classes/Controllers/ThemesController.php +++ b/libraries/classes/Controllers/ThemesController.php @@ -11,7 +11,7 @@ use function preg_replace; */ class ThemesController extends AbstractController { - public function index(): string + public function index(): void { $this->response->getFooter()->setMinimal(); $header = $this->response->getHeader(); @@ -19,13 +19,13 @@ class ThemesController extends AbstractController $header->setTitle('phpMyAdmin - ' . __('Theme')); $header->disableMenuAndConsole(); - return $this->template->render('themes', [ + $this->response->addHTML($this->template->render('themes', [ 'version' => preg_replace( '/([0-9]*)\.([0-9]*)\..*/', '\1_\2', PMA_VERSION ), 'previews' => ThemeManager::getInstance()->getPrintPreviews(), - ]); + ])); } } diff --git a/libraries/classes/Controllers/TransformationOverviewController.php b/libraries/classes/Controllers/TransformationOverviewController.php index c50660418b..a8dba9274e 100644 --- a/libraries/classes/Controllers/TransformationOverviewController.php +++ b/libraries/classes/Controllers/TransformationOverviewController.php @@ -33,10 +33,7 @@ class TransformationOverviewController extends AbstractController $this->transformations = $transformations; } - /** - * @return string HTML - */ - public function index(): string + public function index(): void { $header = $this->response->getHeader(); $header->disableMenuAndConsole(); @@ -67,9 +64,9 @@ class TransformationOverviewController extends AbstractController } } - return $this->template->render('transformation_overview', [ + $this->response->addHTML($this->template->render('transformation_overview', [ 'mime_types' => $mimeTypes, 'transformations' => $transformations, - ]); + ])); } } diff --git a/libraries/routes.php b/libraries/routes.php index 4c1acc8e77..a693d5286f 100644 --- a/libraries/routes.php +++ b/libraries/routes.php @@ -94,7 +94,6 @@ use PhpMyAdmin\Controllers\UserPasswordController; use PhpMyAdmin\Controllers\VersionCheckController; use PhpMyAdmin\Controllers\ViewCreateController; use PhpMyAdmin\Controllers\ViewOperationsController; -use PhpMyAdmin\Response; global $containerBuilder; @@ -102,15 +101,12 @@ if (! defined('PHPMYADMIN')) { exit; } -/** @var Response $response */ -$response = $containerBuilder->get(Response::class); - -return function (RouteCollector $routes) use ($containerBuilder, $response) { - $routes->addGroup('', function (RouteCollector $routes) use ($containerBuilder, $response) { +return function (RouteCollector $routes) use ($containerBuilder) { + $routes->addGroup('', function (RouteCollector $routes) use ($containerBuilder) { /** @var HomeController $controller */ $controller = $containerBuilder->get(HomeController::class); - $routes->addRoute(['GET', 'POST'], '[/]', function () use ($response, $controller) { - $response->addHTML($controller->index(['access_time' => $_REQUEST['access_time'] ?? null])); + $routes->addRoute(['GET', 'POST'], '[/]', function () use ($controller) { + $controller->index(['access_time' => $_REQUEST['access_time'] ?? null]); }); $routes->post('/set-theme', function () use ($controller) { $controller->setTheme(['set_theme' => $_POST['set_theme']]); @@ -118,41 +114,41 @@ return function (RouteCollector $routes) use ($containerBuilder, $response) { $routes->post('/collation-connection', function () use ($controller) { $controller->setCollationConnection(['collation_connection' => $_POST['collation_connection']]); }); - $routes->addRoute(['GET', 'POST'], '/recent-table', function () use ($response, $controller) { - $response->addJSON($controller->reloadRecentTablesList()); + $routes->addRoute(['GET', 'POST'], '/recent-table', function () use ($controller) { + $controller->reloadRecentTablesList(); }); - $routes->addRoute(['GET', 'POST'], '/git-revision', function () use ($response, $controller) { - $response->addHTML($controller->gitRevision()); + $routes->addRoute(['GET', 'POST'], '/git-revision', function () use ($controller) { + $controller->gitRevision(); }); }); - $routes->addGroup('/ajax', function (RouteCollector $routes) use ($containerBuilder, $response) { + $routes->addGroup('/ajax', function (RouteCollector $routes) use ($containerBuilder) { /** @var AjaxController $controller */ $controller = $containerBuilder->get(AjaxController::class); - $routes->post('/list-databases', function () use ($response, $controller) { - $response->addJSON($controller->databases()); + $routes->post('/list-databases', function () use ($controller) { + $controller->databases(); }); - $routes->post('/list-tables/{database}', function (array $vars) use ($response, $controller) { - $response->addJSON($controller->tables($vars)); + $routes->post('/list-tables/{database}', function (array $vars) use ($controller) { + $controller->tables($vars); }); - $routes->post('/list-columns/{database}/{table}', function (array $vars) use ($response, $controller) { - $response->addJSON($controller->columns($vars)); + $routes->post('/list-columns/{database}/{table}', function (array $vars) use ($controller) { + $controller->columns($vars); }); - $routes->post('/config-get', function () use ($response, $controller) { - $response->addJSON($controller->getConfig([ + $routes->post('/config-get', function () use ($controller) { + $controller->getConfig([ 'key' => $_POST['key'] ?? null, - ])); + ]); }); - $routes->post('/config-set', function () use ($response, $controller) { - $response->addJSON($controller->setConfig([ + $routes->post('/config-set', function () use ($controller) { + $controller->setConfig([ 'key' => $_POST['key'] ?? null, 'value' => $_POST['value'] ?? null, - ])); + ]); }); }); - $routes->addRoute(['GET', 'POST'], '/browse-foreigners', function () use ($containerBuilder, $response) { + $routes->addRoute(['GET', 'POST'], '/browse-foreigners', function () use ($containerBuilder) { /** @var BrowseForeignersController $controller */ $controller = $containerBuilder->get(BrowseForeignersController::class); - $response->addHTML($controller->index([ + $controller->index([ 'db' => $_POST['db'] ?? null, 'table' => $_POST['table'] ?? null, 'field' => $_POST['field'] ?? null, @@ -160,32 +156,32 @@ return function (RouteCollector $routes) use ($containerBuilder, $response) { 'data' => $_POST['data'] ?? null, 'foreign_showAll' => $_POST['foreign_showAll'] ?? null, 'foreign_filter' => $_POST['foreign_filter'] ?? null, - ])); + ]); }); $routes->get('/changelog', function () use ($containerBuilder) { /** @var ChangeLogController $controller */ $controller = $containerBuilder->get(ChangeLogController::class); $controller->index(); }); - $routes->addRoute(['GET', 'POST'], '/check-relations', function () use ($containerBuilder, $response) { + $routes->addRoute(['GET', 'POST'], '/check-relations', function () use ($containerBuilder) { /** @var CheckRelationsController $controller */ $controller = $containerBuilder->get(CheckRelationsController::class); - $response->addHTML($controller->index([ + $controller->index([ 'create_pmadb' => $_POST['create_pmadb'] ?? null, 'fixall_pmadb' => $_POST['fixall_pmadb'] ?? null, 'fix_pmadb' => $_POST['fix_pmadb'] ?? null, - ])); + ]); }); - $routes->addGroup('/database', function (RouteCollector $routes) use ($containerBuilder, $response) { + $routes->addGroup('/database', function (RouteCollector $routes) use ($containerBuilder) { $routes->addRoute(['GET', 'POST'], '/central-columns', function () use ($containerBuilder) { /** @var CentralColumnsController $controller */ $controller = $containerBuilder->get(CentralColumnsController::class); $controller->index(); }); - $routes->get('/data-dictionary/{database}', function (array $vars) use ($containerBuilder, $response) { + $routes->get('/data-dictionary/{database}', function (array $vars) use ($containerBuilder) { /** @var DataDictionaryController $controller */ $controller = $containerBuilder->get(DataDictionaryController::class); - $response->addHTML($controller->index($vars)); + $controller->index($vars); }); $routes->addRoute(['GET', 'POST'], '/designer', function () use ($containerBuilder) { /** @var DesignerController $controller */ @@ -207,17 +203,17 @@ return function (RouteCollector $routes) use ($containerBuilder, $response) { $controller = $containerBuilder->get(DatabaseImportController::class); $controller->index(); }); - $routes->addGroup('/multi_table_query', function (RouteCollector $routes) use ($containerBuilder, $response) { + $routes->addGroup('/multi_table_query', function (RouteCollector $routes) use ($containerBuilder) { /** @var MultiTableQueryController $controller */ $controller = $containerBuilder->get(MultiTableQueryController::class); - $routes->get('', function () use ($response, $controller) { - $response->addHTML($controller->index()); + $routes->get('', function () use ($controller) { + $controller->index(); }); - $routes->get('/tables', function () use ($response, $controller) { - $response->addJSON($controller->table([ + $routes->get('/tables', function () use ($controller) { + $controller->table([ 'tables' => $_GET['tables'], 'db' => $_GET['db'] ?? null, - ])); + ]); }); $routes->post('/query', function () use ($controller) { $controller->displayResults([ @@ -248,49 +244,49 @@ return function (RouteCollector $routes) use ($containerBuilder, $response) { $controller = $containerBuilder->get(SearchController::class); $controller->index(); }); - $routes->addGroup('/sql', function (RouteCollector $routes) use ($containerBuilder, $response) { + $routes->addGroup('/sql', function (RouteCollector $routes) use ($containerBuilder) { $routes->addRoute(['GET', 'POST'], '', function () use ($containerBuilder) { /** @var DatabaseSqlController $controller */ $controller = $containerBuilder->get(DatabaseSqlController::class); $controller->index(); }); - $routes->post('/autocomplete', function () use ($containerBuilder, $response) { + $routes->post('/autocomplete', function () use ($containerBuilder) { /** @var SqlAutoCompleteController $controller */ $controller = $containerBuilder->get(SqlAutoCompleteController::class); - $response->addJSON($controller->index()); + $controller->index(); }); - $routes->post('/format', function () use ($containerBuilder, $response) { + $routes->post('/format', function () use ($containerBuilder) { /** @var SqlFormatController $controller */ $controller = $containerBuilder->get(SqlFormatController::class); - $response->addJSON($controller->index(['sql' => $_POST['sql'] ?? null])); + $controller->index(['sql' => $_POST['sql'] ?? null]); }); }); - $routes->addGroup('/structure', function (RouteCollector $routes) use ($containerBuilder, $response) { + $routes->addGroup('/structure', function (RouteCollector $routes) use ($containerBuilder) { /** @var StructureController $controller */ $controller = $containerBuilder->get(StructureController::class); - $routes->addRoute(['GET', 'POST'], '', function () use ($response, $controller) { - $response->addHTML($controller->index([ + $routes->addRoute(['GET', 'POST'], '', function () use ($controller) { + $controller->index([ 'submit_mult' => $_POST['submit_mult'] ?? null, 'selected_tbl' => $_POST['selected_tbl'] ?? null, 'mult_btn' => $_POST['mult_btn'] ?? null, 'sort' => $_REQUEST['sort'] ?? null, 'sort_order' => $_REQUEST['sort_order'] ?? null, - ])); + ]); }); - $routes->addRoute(['GET', 'POST'], '/favorite-table', function () use ($response, $controller) { - $response->addJSON($controller->addRemoveFavoriteTablesAction([ + $routes->addRoute(['GET', 'POST'], '/favorite-table', function () use ($controller) { + $controller->addRemoveFavoriteTablesAction([ 'favorite_table' => $_REQUEST['favorite_table'] ?? null, 'favoriteTables' => $_REQUEST['favoriteTables'] ?? null, 'sync_favorite_tables' => $_REQUEST['sync_favorite_tables'] ?? null, 'add_favorite' => $_REQUEST['add_favorite'] ?? null, 'remove_favorite' => $_REQUEST['remove_favorite'] ?? null, - ])); + ]); }); - $routes->addRoute(['GET', 'POST'], '/real-row-count', function () use ($response, $controller) { - $response->addJSON($controller->handleRealRowCountRequestAction([ + $routes->addRoute(['GET', 'POST'], '/real-row-count', function () use ($controller) { + $controller->handleRealRowCountRequestAction([ 'real_row_count_all' => $_REQUEST['real_row_count_all'] ?? null, 'table' => $_REQUEST['table'] ?? null, - ])); + ]); }); }); $routes->addRoute(['GET', 'POST'], '/tracking', function () use ($containerBuilder) { @@ -314,10 +310,10 @@ return function (RouteCollector $routes) use ($containerBuilder, $response) { $controller = $containerBuilder->get(ExportController::class); $controller->index(); }); - $routes->addRoute(['GET', 'POST'], '/gis-data-editor', function () use ($containerBuilder, $response) { + $routes->addRoute(['GET', 'POST'], '/gis-data-editor', function () use ($containerBuilder) { /** @var GisDataEditorController $controller */ $controller = $containerBuilder->get(GisDataEditorController::class); - $response->addJSON($controller->index()); + $controller->index(); }); $routes->addRoute(['GET', 'POST'], '/import', function () use ($containerBuilder) { /** @var ImportController $controller */ @@ -409,53 +405,53 @@ return function (RouteCollector $routes) use ($containerBuilder, $response) { $controller = $containerBuilder->get(SchemaExportController::class); $controller->index(); }); - $routes->addGroup('/server', function (RouteCollector $routes) use ($containerBuilder, $response) { - $routes->addRoute(['GET', 'POST'], '/binlog', function () use ($containerBuilder, $response) { + $routes->addGroup('/server', function (RouteCollector $routes) use ($containerBuilder) { + $routes->addRoute(['GET', 'POST'], '/binlog', function () use ($containerBuilder) { /** @var BinlogController $controller */ $controller = $containerBuilder->get(BinlogController::class); - $response->addHTML($controller->index([ + $controller->index([ 'log' => $_POST['log'] ?? null, 'pos' => $_POST['pos'] ?? null, 'is_full_query' => $_POST['is_full_query'] ?? null, - ])); + ]); }); - $routes->get('/collations', function () use ($containerBuilder, $response) { + $routes->get('/collations', function () use ($containerBuilder) { /** @var CollationsController $controller */ $controller = $containerBuilder->get(CollationsController::class); - $response->addHTML($controller->index()); + $controller->index(); }); - $routes->addGroup('/databases', function (RouteCollector $routes) use ($containerBuilder, $response) { + $routes->addGroup('/databases', function (RouteCollector $routes) use ($containerBuilder) { /** @var DatabasesController $controller */ $controller = $containerBuilder->get(DatabasesController::class); - $routes->addRoute(['GET', 'POST'], '', function () use ($response, $controller) { - $response->addHTML($controller->index([ + $routes->addRoute(['GET', 'POST'], '', function () use ($controller) { + $controller->index([ 'statistics' => $_REQUEST['statistics'] ?? null, 'pos' => $_REQUEST['pos'] ?? null, 'sort_by' => $_REQUEST['sort_by'] ?? null, 'sort_order' => $_REQUEST['sort_order'] ?? null, - ])); + ]); }); - $routes->post('/create', function () use ($response, $controller) { - $response->addJSON($controller->create([ + $routes->post('/create', function () use ($controller) { + $controller->create([ 'new_db' => $_POST['new_db'] ?? null, 'db_collation' => $_POST['db_collation'] ?? null, - ])); + ]); }); - $routes->post('/destroy', function () use ($response, $controller) { - $response->addJSON($controller->destroy([ + $routes->post('/destroy', function () use ($controller) { + $controller->destroy([ 'drop_selected_dbs' => $_POST['drop_selected_dbs'] ?? null, 'selected_dbs' => $_POST['selected_dbs'] ?? null, - ])); + ]); }); }); - $routes->addGroup('/engines', function (RouteCollector $routes) use ($containerBuilder, $response) { + $routes->addGroup('/engines', function (RouteCollector $routes) use ($containerBuilder) { /** @var EnginesController $controller */ $controller = $containerBuilder->get(EnginesController::class); - $routes->get('', function () use ($response, $controller) { - $response->addHTML($controller->index()); + $routes->get('', function () use ($controller) { + $controller->index(); }); - $routes->get('/{engine}[/{page}]', function (array $vars) use ($response, $controller) { - $response->addHTML($controller->show($vars)); + $routes->get('/{engine}[/{page}]', function (array $vars) use ($controller) { + $controller->show($vars); }); }); $routes->addRoute(['GET', 'POST'], '/export', function () use ($containerBuilder) { @@ -468,120 +464,120 @@ return function (RouteCollector $routes) use ($containerBuilder, $response) { $controller = $containerBuilder->get(ServerImportController::class); $controller->index(); }); - $routes->get('/plugins', function () use ($containerBuilder, $response) { + $routes->get('/plugins', function () use ($containerBuilder) { /** @var PluginsController $controller */ $controller = $containerBuilder->get(PluginsController::class); - $response->addHTML($controller->index()); + $controller->index(); }); $routes->addRoute(['GET', 'POST'], '/privileges', function () use ($containerBuilder) { /** @var PrivilegesController $controller */ $controller = $containerBuilder->get(PrivilegesController::class); $controller->index(); }); - $routes->addRoute(['GET', 'POST'], '/replication', function () use ($containerBuilder, $response) { + $routes->addRoute(['GET', 'POST'], '/replication', function () use ($containerBuilder) { /** @var ReplicationController $controller */ $controller = $containerBuilder->get(ReplicationController::class); - $response->addHTML($controller->index([ + $controller->index([ 'url_params' => $_POST['url_params'] ?? null, 'mr_configure' => $_POST['mr_configure'] ?? null, 'sl_configure' => $_POST['sl_configure'] ?? null, 'repl_clear_scr' => $_POST['repl_clear_scr'] ?? null, - ])); + ]); }); - $routes->addRoute(['GET', 'POST'], '/sql', function () use ($containerBuilder, $response) { + $routes->addRoute(['GET', 'POST'], '/sql', function () use ($containerBuilder) { /** @var ServerSqlController $controller */ $controller = $containerBuilder->get(ServerSqlController::class); - $response->addHTML($controller->index()); + $controller->index(); }); - $routes->addGroup('/status', function (RouteCollector $routes) use ($containerBuilder, $response) { - $routes->get('', function () use ($containerBuilder, $response) { + $routes->addGroup('/status', function (RouteCollector $routes) use ($containerBuilder) { + $routes->get('', function () use ($containerBuilder) { /** @var StatusController $controller */ $controller = $containerBuilder->get(StatusController::class); - $response->addHTML($controller->index()); + $controller->index(); }); - $routes->get('/advisor', function () use ($containerBuilder, $response) { + $routes->get('/advisor', function () use ($containerBuilder) { /** @var AdvisorController $controller */ $controller = $containerBuilder->get(AdvisorController::class); - $response->addHTML($controller->index()); + $controller->index(); }); - $routes->addGroup('/monitor', function (RouteCollector $routes) use ($containerBuilder, $response) { + $routes->addGroup('/monitor', function (RouteCollector $routes) use ($containerBuilder) { /** @var MonitorController $controller */ $controller = $containerBuilder->get(MonitorController::class); - $routes->get('', function () use ($response, $controller) { - $response->addHTML($controller->index()); + $routes->get('', function () use ($controller) { + $controller->index(); }); - $routes->post('/chart', function () use ($response, $controller) { - $response->addJSON($controller->chartingData([ + $routes->post('/chart', function () use ($controller) { + $controller->chartingData([ 'requiredData' => $_POST['requiredData'] ?? null, - ])); + ]); }); - $routes->post('/slow-log', function () use ($response, $controller) { - $response->addJSON($controller->logDataTypeSlow([ + $routes->post('/slow-log', function () use ($controller) { + $controller->logDataTypeSlow([ 'time_start' => $_POST['time_start'] ?? null, 'time_end' => $_POST['time_end'] ?? null, - ])); + ]); }); - $routes->post('/general-log', function () use ($response, $controller) { - $response->addJSON($controller->logDataTypeGeneral([ + $routes->post('/general-log', function () use ($controller) { + $controller->logDataTypeGeneral([ 'time_start' => $_POST['time_start'] ?? null, 'time_end' => $_POST['time_end'] ?? null, 'limitTypes' => $_POST['limitTypes'] ?? null, 'removeVariables' => $_POST['removeVariables'] ?? null, - ])); + ]); }); - $routes->post('/log-vars', function () use ($response, $controller) { - $response->addJSON($controller->loggingVars([ + $routes->post('/log-vars', function () use ($controller) { + $controller->loggingVars([ 'varName' => $_POST['varName'] ?? null, 'varValue' => $_POST['varValue'] ?? null, - ])); + ]); }); - $routes->post('/query', function () use ($response, $controller) { - $response->addJSON($controller->queryAnalyzer([ + $routes->post('/query', function () use ($controller) { + $controller->queryAnalyzer([ 'database' => $_POST['database'] ?? null, 'query' => $_POST['query'] ?? null, - ])); + ]); }); }); - $routes->addGroup('/processes', function (RouteCollector $routes) use ($containerBuilder, $response) { + $routes->addGroup('/processes', function (RouteCollector $routes) use ($containerBuilder) { /** @var ProcessesController $controller */ $controller = $containerBuilder->get(ProcessesController::class); - $routes->addRoute(['GET', 'POST'], '', function () use ($response, $controller) { - $response->addHTML($controller->index([ + $routes->addRoute(['GET', 'POST'], '', function () use ($controller) { + $controller->index([ 'showExecuting' => $_POST['showExecuting'] ?? null, 'full' => $_POST['full'] ?? null, 'column_name' => $_POST['column_name'] ?? null, 'order_by_field' => $_POST['order_by_field'] ?? null, 'sort_order' => $_POST['sort_order'] ?? null, - ])); + ]); }); - $routes->post('/refresh', function () use ($response, $controller) { - $response->addHTML($controller->refresh([ + $routes->post('/refresh', function () use ($controller) { + $controller->refresh([ 'showExecuting' => $_POST['showExecuting'] ?? null, 'full' => $_POST['full'] ?? null, 'column_name' => $_POST['column_name'] ?? null, 'order_by_field' => $_POST['order_by_field'] ?? null, 'sort_order' => $_POST['sort_order'] ?? null, - ])); + ]); }); - $routes->post('/kill/{id:\d+}', function (array $vars) use ($response, $controller) { - $response->addJSON($controller->kill($vars)); + $routes->post('/kill/{id:\d+}', function (array $vars) use ($controller) { + $controller->kill($vars); }); }); - $routes->get('/queries', function () use ($containerBuilder, $response) { + $routes->get('/queries', function () use ($containerBuilder) { /** @var QueriesController $controller */ $controller = $containerBuilder->get(QueriesController::class); - $response->addHTML($controller->index()); + $controller->index(); }); - $routes->addRoute(['GET', 'POST'], '/variables', function () use ($containerBuilder, $response) { + $routes->addRoute(['GET', 'POST'], '/variables', function () use ($containerBuilder) { /** @var StatusVariables $controller */ $controller = $containerBuilder->get(StatusVariables::class); - $response->addHTML($controller->index([ + $controller->index([ 'flush' => $_POST['flush'] ?? null, 'filterAlert' => $_POST['filterAlert'] ?? null, 'filterText' => $_POST['filterText'] ?? null, 'filterCategory' => $_POST['filterCategory'] ?? null, 'dontFormat' => $_POST['dontFormat'] ?? null, - ])); + ]); }); }); $routes->addRoute(['GET', 'POST'], '/user-groups', function () use ($containerBuilder) { @@ -589,22 +585,22 @@ return function (RouteCollector $routes) use ($containerBuilder, $response) { $controller = $containerBuilder->get(UserGroupsController::class); $controller->index(); }); - $routes->addGroup('/variables', function (RouteCollector $routes) use ($containerBuilder, $response) { + $routes->addGroup('/variables', function (RouteCollector $routes) use ($containerBuilder) { /** @var VariablesController $controller */ $controller = $containerBuilder->get(VariablesController::class); - $routes->get('', function () use ($response, $controller) { - $response->addHTML($controller->index([ + $routes->get('', function () use ($controller) { + $controller->index([ 'filter' => $_GET['filter'] ?? null, - ])); + ]); }); - $routes->get('/get/{name}', function (array $vars) use ($response, $controller) { - $response->addJSON($controller->getValue($vars)); + $routes->get('/get/{name}', function (array $vars) use ($controller) { + $controller->getValue($vars); }); - $routes->post('/set/{name}', function (array $vars) use ($response, $controller) { - $response->addJSON($controller->setValue([ + $routes->post('/set/{name}', function (array $vars) use ($controller) { + $controller->setValue([ 'varName' => $vars['name'], 'varValue' => $_POST['varValue'] ?? null, - ])); + ]); }); }); }); @@ -737,16 +733,16 @@ return function (RouteCollector $routes) use ($containerBuilder, $response) { $controller->index(); }); }); - $routes->get('/themes', function () use ($containerBuilder, $response) { + $routes->get('/themes', function () use ($containerBuilder) { /** @var ThemesController $controller */ $controller = $containerBuilder->get(ThemesController::class); - $response->addHTML($controller->index()); + $controller->index(); }); - $routes->addGroup('/transformation', function (RouteCollector $routes) use ($containerBuilder, $response) { - $routes->addRoute(['GET', 'POST'], '/overview', function () use ($containerBuilder, $response) { + $routes->addGroup('/transformation', function (RouteCollector $routes) use ($containerBuilder) { + $routes->addRoute(['GET', 'POST'], '/overview', function () use ($containerBuilder) { /** @var TransformationOverviewController $controller */ $controller = $containerBuilder->get(TransformationOverviewController::class); - $response->addHTML($controller->index()); + $controller->index(); }); $routes->addRoute(['GET', 'POST'], '/wrapper', function () use ($containerBuilder) { /** @var TransformationWrapperController $controller */ diff --git a/test/classes/Controllers/Database/StructureControllerTest.php b/test/classes/Controllers/Database/StructureControllerTest.php index baca784bfc..3d52d5ad1e 100644 --- a/test/classes/Controllers/Database/StructureControllerTest.php +++ b/test/classes/Controllers/Database/StructureControllerTest.php @@ -487,9 +487,10 @@ class StructureControllerTest extends PmaTestCase $property = $class->getProperty('tables'); $property->setAccessible(true); - $json = $controller->handleRealRowCountRequestAction([ + $controller->handleRealRowCountRequestAction([ 'table' => 'table', ]); + $json = $this->response->getJSONResult(); $this->assertEquals( 6, $json['real_row_count'] @@ -497,10 +498,11 @@ class StructureControllerTest extends PmaTestCase // Fall into another branch $property->setValue($controller, [['TABLE_NAME' => 'table']]); - $json = $controller->handleRealRowCountRequestAction([ + $controller->handleRealRowCountRequestAction([ 'table' => 'table', 'real_row_count_all' => 'abc', ]); + $json = $this->response->getJSONResult(); $expectedResult = [[ 'table' => 'table', diff --git a/test/classes/Controllers/Server/BinlogControllerTest.php b/test/classes/Controllers/Server/BinlogControllerTest.php index e58a239996..1ebdaf1358 100644 --- a/test/classes/Controllers/Server/BinlogControllerTest.php +++ b/test/classes/Controllers/Server/BinlogControllerTest.php @@ -9,8 +9,8 @@ namespace PhpMyAdmin\Tests\Controllers\Server; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\Server\BinlogController; use PhpMyAdmin\DatabaseInterface; -use PhpMyAdmin\Response; use PhpMyAdmin\Template; +use PhpMyAdmin\Tests\Stubs\Response; use PhpMyAdmin\Url; use PhpMyAdmin\Util; use PHPUnit\Framework\TestCase; @@ -94,16 +94,19 @@ class BinlogControllerTest extends TestCase $dbi->expects($this->at(4))->method('fetchAssoc') ->will($this->returnValue(false)); + $response = new Response(); + $controller = new BinlogController( - Response::getInstance(), + $response, $dbi, new Template() ); - $actual = $controller->index([ + $controller->index([ 'log' => 'index1', 'pos' => '3', 'is_full_query' => null, ]); + $actual = $response->getHTMLResult(); $this->assertStringContainsString( 'Select binary log to view', diff --git a/test/classes/Controllers/Server/CollationsControllerTest.php b/test/classes/Controllers/Server/CollationsControllerTest.php index 659b5fde80..ece6ca89fd 100644 --- a/test/classes/Controllers/Server/CollationsControllerTest.php +++ b/test/classes/Controllers/Server/CollationsControllerTest.php @@ -8,8 +8,8 @@ namespace PhpMyAdmin\Tests\Controllers\Server; use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\Server\CollationsController; -use PhpMyAdmin\Response; use PhpMyAdmin\Template; +use PhpMyAdmin\Tests\Stubs\Response; use PHPUnit\Framework\TestCase; /** @@ -34,13 +34,16 @@ class CollationsControllerTest extends TestCase public function testIndexAction(): void { + $response = new Response(); + $controller = new CollationsController( - Response::getInstance(), + $response, $GLOBALS['dbi'], new Template() ); - $actual = $controller->index(); + $controller->index(); + $actual = $response->getHTMLResult(); $this->assertStringContainsString( '
', diff --git a/test/classes/Controllers/Server/DatabasesControllerTest.php b/test/classes/Controllers/Server/DatabasesControllerTest.php index 6618bb0ec4..c0de819588 100644 --- a/test/classes/Controllers/Server/DatabasesControllerTest.php +++ b/test/classes/Controllers/Server/DatabasesControllerTest.php @@ -10,8 +10,8 @@ use PhpMyAdmin\Config; use PhpMyAdmin\Controllers\Server\DatabasesController; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Message; -use PhpMyAdmin\Response; use PhpMyAdmin\Template; +use PhpMyAdmin\Tests\Stubs\Response; use PHPUnit\Framework\TestCase; use stdClass; use function sprintf; @@ -45,18 +45,21 @@ class DatabasesControllerTest extends TestCase 'employees', ]; + $response = new Response(); + $controller = new DatabasesController( - Response::getInstance(), + $response, $GLOBALS['dbi'], new Template() ); - $actual = $controller->index([ + $controller->index([ 'statistics' => null, 'pos' => null, 'sort_by' => null, 'sort_order' => null, ]); + $actual = $response->getHTMLResult(); $this->assertStringContainsString('data-filter-row="SAKILA"', $actual); $this->assertStringContainsString('sakila', $actual); @@ -74,15 +77,24 @@ class DatabasesControllerTest extends TestCase $this->assertStringContainsString(__('No privileges to create databases'), $actual); $this->assertStringNotContainsString(__('Indexes'), $actual); + $response = new Response(); + + $controller = new DatabasesController( + $response, + $GLOBALS['dbi'], + new Template() + ); + $cfg['ShowCreateDb'] = true; $is_create_db_priv = true; - $actual = $controller->index([ + $controller->index([ 'statistics' => '1', 'pos' => null, 'sort_by' => 'SCHEMA_TABLES', 'sort_order' => 'desc', ]); + $actual = $response->getHTMLResult(); $this->assertStringNotContainsString(__('Enable statistics'), $actual); $this->assertStringContainsString(__('Indexes'), $actual); @@ -108,7 +120,7 @@ class DatabasesControllerTest extends TestCase $dbi->method('getError') ->willReturn('CreateDatabaseError'); - $response = Response::getInstance(); + $response = new Response(); $response->setAjax(true); $controller = new DatabasesController( @@ -117,30 +129,39 @@ class DatabasesControllerTest extends TestCase new Template() ); - $actual = $controller->create([ + $controller->create([ 'new_db' => 'pma_test', 'db_collation' => null, ]); + $actual = $response->getJSONResult(); $this->assertArrayHasKey('message', $actual); - $this->assertInstanceOf(Message::class, $actual['message']); - $this->assertStringContainsString('