From a56b425a2a5c3cc16d170d3c3f503bd899949326 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Wed, 21 Sep 2022 00:06:14 -0300 Subject: Extract /console/bookmark/add action from ImportController MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaurĂ­cio Meneghini Fauth --- .../Controllers/Console/Bookmark/AddController.php | 58 ++++++++++++++++++++++ .../Controllers/Import/ImportController.php | 27 ---------- libraries/routes.php | 7 ++- libraries/services_controllers.php | 4 ++ 4 files changed, 67 insertions(+), 29 deletions(-) create mode 100644 libraries/classes/Controllers/Console/Bookmark/AddController.php (limited to 'libraries') diff --git a/libraries/classes/Controllers/Console/Bookmark/AddController.php b/libraries/classes/Controllers/Console/Bookmark/AddController.php new file mode 100644 index 0000000000..42b7ee6c09 --- /dev/null +++ b/libraries/classes/Controllers/Console/Bookmark/AddController.php @@ -0,0 +1,58 @@ +dbi = $dbi; + } + + public function __invoke(ServerRequest $request): void + { + $db = $request->getParsedBodyParam('db'); + $label = $request->getParsedBodyParam('label'); + $bookmarkQuery = $request->getParsedBodyParam('bookmark_query'); + $shared = $request->getParsedBodyParam('shared'); + + if (! is_string($label) || ! is_string($db) || ! is_string($bookmarkQuery) || ! is_string($shared)) { + $this->response->addJSON('message', __('Incomplete params')); + + return; + } + + $bookmarkFields = [ + 'bkm_database' => $db, + 'bkm_user' => $GLOBALS['cfg']['Server']['user'], + 'bkm_sql_query' => $bookmarkQuery, + 'bkm_label' => $label, + ]; + $bookmark = Bookmark::createBookmark($this->dbi, $bookmarkFields, $shared === 'true'); + if ($bookmark === false || ! $bookmark->save()) { + $this->response->addJSON('message', __('Failed')); + + return; + } + + $this->response->addJSON('message', __('Succeeded')); + $this->response->addJSON('data', $bookmarkFields); + $this->response->addJSON('isShared', $shared === 'true'); + } +} diff --git a/libraries/classes/Controllers/Import/ImportController.php b/libraries/classes/Controllers/Import/ImportController.php index f4b1deaf03..a317f15e55 100644 --- a/libraries/classes/Controllers/Import/ImportController.php +++ b/libraries/classes/Controllers/Import/ImportController.php @@ -118,33 +118,6 @@ final class ImportController extends AbstractController $GLOBALS['local_import_file'] = $_POST['local_import_file'] ?? null; $GLOBALS['show_as_php'] = $_POST['show_as_php'] ?? null; - // If it's a console bookmark add request - if (isset($_POST['console_bookmark_add'])) { - if (! isset($_POST['label'], $_POST['db'], $_POST['bookmark_query'], $_POST['shared'])) { - $this->response->addJSON('message', __('Incomplete params')); - - return; - } - - $bookmarkFields = [ - 'bkm_database' => $_POST['db'], - 'bkm_user' => $GLOBALS['cfg']['Server']['user'], - 'bkm_sql_query' => $_POST['bookmark_query'], - 'bkm_label' => $_POST['label'], - ]; - $isShared = ($_POST['shared'] === 'true'); - $bookmark = Bookmark::createBookmark($this->dbi, $bookmarkFields, $isShared); - if ($bookmark !== false && $bookmark->save()) { - $this->response->addJSON('message', __('Succeeded')); - $this->response->addJSON('data', $bookmarkFields); - $this->response->addJSON('isShared', $isShared); - } else { - $this->response->addJSON('message', __('Failed')); - } - - return; - } - // reset import messages for ajax request $_SESSION['Import_message']['message'] = null; $_SESSION['Import_message']['go_back_url'] = null; diff --git a/libraries/routes.php b/libraries/routes.php index 05d18944d4..9eadbe66bd 100644 --- a/libraries/routes.php +++ b/libraries/routes.php @@ -9,7 +9,7 @@ use PhpMyAdmin\Controllers\CheckRelationsController; use PhpMyAdmin\Controllers\CollationConnectionController; use PhpMyAdmin\Controllers\ColumnController; use PhpMyAdmin\Controllers\Config; -use PhpMyAdmin\Controllers\Console\Bookmark\RefreshController; +use PhpMyAdmin\Controllers\Console\Bookmark; use PhpMyAdmin\Controllers\Database; use PhpMyAdmin\Controllers\DatabaseController; use PhpMyAdmin\Controllers\ErrorReportController; @@ -54,7 +54,10 @@ return static function (RouteCollector $routes): void { $routes->post('/get', Config\GetConfigController::class); $routes->post('/set', Config\SetConfigController::class); }); - $routes->get('/console/bookmark/refresh', RefreshController::class); + $routes->addGroup('/console/bookmark', static function (RouteCollector $routes): void { + $routes->post('/add', Bookmark\AddController::class); + $routes->get('/refresh', Bookmark\RefreshController::class); + }); $routes->addGroup('/database', static function (RouteCollector $routes): void { $routes->addGroup('/central-columns', static function (RouteCollector $routes): void { $routes->addRoute(['GET', 'POST'], '', Database\CentralColumnsController::class); diff --git a/libraries/services_controllers.php b/libraries/services_controllers.php index ffbb1f6772..75ea182533 100644 --- a/libraries/services_controllers.php +++ b/libraries/services_controllers.php @@ -96,6 +96,10 @@ return [ '$config' => '@config', ], ], + Console\Bookmark\AddController::class => [ + 'class' => Console\Bookmark\AddController::class, + 'arguments' => ['$response' => '@response', '$template' => '@template', '$dbi' => '@dbi'], + ], Console\Bookmark\RefreshController::class => [ 'class' => Console\Bookmark\RefreshController::class, 'arguments' => ['$response' => '@response', '$template' => '@template'], -- cgit v1.2.3