From 28d53fe50bb5e87affd14d7b2bb241e9cf23ca66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Tue, 2 Aug 2022 21:38:55 -0300 Subject: Extract normalization's create new column action MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: MaurĂ­cio Meneghini Fauth --- js/src/normalization.js | 3 +- .../Normalization/CreateNewColumnController.php | 35 +++++++++++++++++ .../Controllers/Normalization/MainController.php | 13 ------- libraries/routes.php | 1 + libraries/services_controllers.php | 8 ++++ .../CreateNewColumnControllerTest.php | 45 ++++++++++++++++++++++ 6 files changed, 90 insertions(+), 15 deletions(-) create mode 100644 libraries/classes/Controllers/Normalization/CreateNewColumnController.php create mode 100644 test/classes/Controllers/Normalization/CreateNewColumnControllerTest.php diff --git a/js/src/normalization.js b/js/src/normalization.js index a64ac02acd..fd48a502a1 100644 --- a/js/src/normalization.js +++ b/js/src/normalization.js @@ -510,13 +510,12 @@ window.AJAX.registerOnload('normalization.js', function () { } var numField = $('#numField').val(); $.post( - 'index.php?route=/normalization', + 'index.php?route=/normalization/create-new-column', { 'ajax_request': true, 'db': window.CommonParams.get('db'), 'table': window.CommonParams.get('table'), 'server': window.CommonParams.get('server'), - 'splitColumn': true, 'numFields': numField }, function (data) { diff --git a/libraries/classes/Controllers/Normalization/CreateNewColumnController.php b/libraries/classes/Controllers/Normalization/CreateNewColumnController.php new file mode 100644 index 0000000000..ae03dc1d00 --- /dev/null +++ b/libraries/classes/Controllers/Normalization/CreateNewColumnController.php @@ -0,0 +1,35 @@ +normalization = $normalization; + } + + public function __invoke(ServerRequest $request): void + { + $num_fields = min(4096, intval($_POST['numFields'])); + $html = $this->normalization->getHtmlForCreateNewColumn($num_fields, $GLOBALS['db'], $GLOBALS['table']); + $html .= Url::getHiddenInputs($GLOBALS['db'], $GLOBALS['table']); + $this->response->addHTML($html); + } +} diff --git a/libraries/classes/Controllers/Normalization/MainController.php b/libraries/classes/Controllers/Normalization/MainController.php index cfc59e0759..571dde45d2 100644 --- a/libraries/classes/Controllers/Normalization/MainController.php +++ b/libraries/classes/Controllers/Normalization/MainController.php @@ -9,10 +9,6 @@ use PhpMyAdmin\Http\ServerRequest; use PhpMyAdmin\Normalization; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Template; -use PhpMyAdmin\Url; - -use function intval; -use function min; /** * Normalization process (temporarily specific to 1NF). @@ -30,15 +26,6 @@ class MainController extends AbstractController public function __invoke(ServerRequest $request): void { - if (isset($_POST['splitColumn'])) { - $num_fields = min(4096, intval($_POST['numFields'])); - $html = $this->normalization->getHtmlForCreateNewColumn($num_fields, $GLOBALS['db'], $GLOBALS['table']); - $html .= Url::getHiddenInputs($GLOBALS['db'], $GLOBALS['table']); - echo $html; - - return; - } - if (isset($_POST['findPdl'])) { $html = $this->normalization->findPartialDependencies($GLOBALS['table'], $GLOBALS['db']); echo $html; diff --git a/libraries/routes.php b/libraries/routes.php index e8d730e776..a71f637d20 100644 --- a/libraries/routes.php +++ b/libraries/routes.php @@ -143,6 +143,7 @@ return static function (RouteCollector $routes): void { $routes->post('/3nf/step1', Normalization\ThirdNormalForm\FirstStepController::class); $routes->post('/add-new-primary', Normalization\AddNewPrimaryController::class); $routes->post('/get-columns', Normalization\GetColumnsController::class); + $routes->post('/create-new-column', Normalization\CreateNewColumnController::class); $routes->post('/move-repeating-group', Normalization\MoveRepeatingGroup::class); }); $routes->get('/phpinfo', PhpInfoController::class); diff --git a/libraries/services_controllers.php b/libraries/services_controllers.php index 79f6ee8d9f..ddc00d922f 100644 --- a/libraries/services_controllers.php +++ b/libraries/services_controllers.php @@ -672,6 +672,14 @@ return [ '$normalization' => '@normalization', ], ], + Normalization\CreateNewColumnController::class => [ + 'class' => Normalization\CreateNewColumnController::class, + 'arguments' => [ + '$response' => '@response', + '$template' => '@template', + '$normalization' => '@normalization', + ], + ], Normalization\GetColumnsController::class => [ 'class' => Normalization\GetColumnsController::class, 'arguments' => [ diff --git a/test/classes/Controllers/Normalization/CreateNewColumnControllerTest.php b/test/classes/Controllers/Normalization/CreateNewColumnControllerTest.php new file mode 100644 index 0000000000..2a18d763bb --- /dev/null +++ b/test/classes/Controllers/Normalization/CreateNewColumnControllerTest.php @@ -0,0 +1,45 @@ +createDbiDummy(); + + $dbi = $this->createDatabaseInterface($dbiDummy); + $GLOBALS['dbi'] = $dbi; + $response = new ResponseRenderer(); + $template = new Template(); + + $controller = new CreateNewColumnController( + $response, + $template, + new Normalization($dbi, new Relation($dbi), new Transformations(), $template) + ); + $controller($this->createStub(ServerRequest::class)); + + $this->assertStringContainsString('getHTMLResult()); + } +} -- cgit v1.2.3