Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaurício Meneghini Fauth <mauricio@fauth.dev>2022-07-29 00:33:34 +0300
committerMaurício Meneghini Fauth <mauricio@fauth.dev>2022-07-29 00:33:34 +0300
commit398bdae484ae6fdb63b7ee04db788d31c358ff40 (patch)
tree8c1d956282f124fed70f51cc681a508e50f1973a /libraries
parent9c9ae5069e8bda601b8fe6eabd1f7b93b2810599 (diff)
Extract normalization 1NF step 1 action
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
Diffstat (limited to 'libraries')
-rw-r--r--libraries/classes/Controllers/Normalization/FirstNormalForm/FirstStepController.php38
-rw-r--r--libraries/classes/Controllers/NormalizationController.php13
-rw-r--r--libraries/routes.php6
-rw-r--r--libraries/services_controllers.php9
4 files changed, 52 insertions, 14 deletions
diff --git a/libraries/classes/Controllers/Normalization/FirstNormalForm/FirstStepController.php b/libraries/classes/Controllers/Normalization/FirstNormalForm/FirstStepController.php
new file mode 100644
index 0000000000..025760d602
--- /dev/null
+++ b/libraries/classes/Controllers/Normalization/FirstNormalForm/FirstStepController.php
@@ -0,0 +1,38 @@
+<?php
+
+declare(strict_types=1);
+
+namespace PhpMyAdmin\Controllers\Normalization\FirstNormalForm;
+
+use PhpMyAdmin\Controllers\AbstractController;
+use PhpMyAdmin\Http\ServerRequest;
+use PhpMyAdmin\Normalization;
+use PhpMyAdmin\ResponseRenderer;
+use PhpMyAdmin\Template;
+
+use function in_array;
+
+final class FirstStepController extends AbstractController
+{
+ /** @var Normalization */
+ private $normalization;
+
+ public function __construct(ResponseRenderer $response, Template $template, Normalization $normalization)
+ {
+ parent::__construct($response, $template);
+ $this->normalization = $normalization;
+ }
+
+ public function __invoke(ServerRequest $request): void
+ {
+ $this->addScriptFiles(['normalization.js', 'vendor/jquery/jquery.uitablefilter.js']);
+
+ $normalForm = '1nf';
+ if (isset($_POST['normalizeTo']) && in_array($_POST['normalizeTo'], ['1nf', '2nf', '3nf'])) {
+ $normalForm = $_POST['normalizeTo'];
+ }
+
+ $html = $this->normalization->getHtmlFor1NFStep1($GLOBALS['db'], $GLOBALS['table'], $normalForm);
+ $this->response->addHTML($html);
+ }
+}
diff --git a/libraries/classes/Controllers/NormalizationController.php b/libraries/classes/Controllers/NormalizationController.php
index 4f318806b4..859ff1610f 100644
--- a/libraries/classes/Controllers/NormalizationController.php
+++ b/libraries/classes/Controllers/NormalizationController.php
@@ -13,7 +13,6 @@ use PhpMyAdmin\Url;
use function __;
use function _pgettext;
-use function in_array;
use function intval;
use function json_decode;
use function json_encode;
@@ -104,11 +103,6 @@ class NormalizationController extends AbstractController
$this->addScriptFiles(['normalization.js', 'vendor/jquery/jquery.uitablefilter.js']);
- $normalForm = '1nf';
- if (isset($_POST['normalizeTo']) && in_array($_POST['normalizeTo'], ['1nf', '2nf', '3nf'])) {
- $normalForm = $_POST['normalizeTo'];
- }
-
if (isset($_POST['createNewTables2NF'])) {
$partialDependencies = json_decode($_POST['pd'], true);
$tablesName = json_decode($_POST['newTablesName']);
@@ -149,13 +143,6 @@ class NormalizationController extends AbstractController
return;
}
- if (isset($_POST['step1'])) {
- $html = $this->normalization->getHtmlFor1NFStep1($GLOBALS['db'], $GLOBALS['table'], $normalForm);
- $this->response->addHTML($html);
-
- return;
- }
-
if (isset($_POST['step2'])) {
$res = $this->normalization->getHtmlContentsFor1NFStep2($GLOBALS['db'], $GLOBALS['table']);
$this->response->addJSON($res);
diff --git a/libraries/routes.php b/libraries/routes.php
index 508c8deb63..27a509246f 100644
--- a/libraries/routes.php
+++ b/libraries/routes.php
@@ -21,6 +21,7 @@ use PhpMyAdmin\Controllers\LicenseController;
use PhpMyAdmin\Controllers\LintController;
use PhpMyAdmin\Controllers\LogoutController;
use PhpMyAdmin\Controllers\NavigationController;
+use PhpMyAdmin\Controllers\Normalization;
use PhpMyAdmin\Controllers\NormalizationController;
use PhpMyAdmin\Controllers\PhpInfoController;
use PhpMyAdmin\Controllers\Preferences;
@@ -129,7 +130,10 @@ return static function (RouteCollector $routes): void {
$routes->addRoute(['GET', 'POST'], '/lint', LintController::class);
$routes->addRoute(['GET', 'POST'], '/logout', LogoutController::class);
$routes->addRoute(['GET', 'POST'], '/navigation', NavigationController::class);
- $routes->addRoute(['GET', 'POST'], '/normalization', NormalizationController::class);
+ $routes->addGroup('/normalization', static function (RouteCollector $routes): void {
+ $routes->addRoute(['GET', 'POST'], '', NormalizationController::class);
+ $routes->post('/1nf/step1', Normalization\FirstNormalForm\FirstStepController::class);
+ });
$routes->get('/phpinfo', PhpInfoController::class);
$routes->addGroup('/preferences', static function (RouteCollector $routes): void {
$routes->addRoute(['GET', 'POST'], '/export', Preferences\ExportController::class);
diff --git a/libraries/services_controllers.php b/libraries/services_controllers.php
index d80d979aed..22aa34afb6 100644
--- a/libraries/services_controllers.php
+++ b/libraries/services_controllers.php
@@ -21,6 +21,7 @@ use PhpMyAdmin\Controllers\LicenseController;
use PhpMyAdmin\Controllers\LintController;
use PhpMyAdmin\Controllers\LogoutController;
use PhpMyAdmin\Controllers\NavigationController;
+use PhpMyAdmin\Controllers\Normalization;
use PhpMyAdmin\Controllers\NormalizationController;
use PhpMyAdmin\Controllers\PhpInfoController;
use PhpMyAdmin\Controllers\Preferences;
@@ -584,6 +585,14 @@ return [
'$relation' => '@relation',
],
],
+ Normalization\FirstNormalForm\FirstStepController::class => [
+ 'class' => Normalization\FirstNormalForm\FirstStepController::class,
+ 'arguments' => [
+ '$response' => '@response',
+ '$template' => '@template',
+ '$normalization' => '@normalization',
+ ],
+ ],
NormalizationController::class => [
'class' => NormalizationController::class,
'arguments' => [