diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 2c8dd278a2..45627f2554 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1645,6 +1645,11 @@ parameters: count: 1 path: src/Controllers/Database/DesignerController.php + - + message: "#^Parameter \\#1 \\$db of static method PhpMyAdmin\\\\Url\\:\\:getHiddenInputs\\(\\) expects array\\|string, mixed given\\.$#" + count: 1 + path: src/Controllers/Database/DesignerController.php + - message: "#^Parameter \\#1 \\$index of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:saveSetting\\(\\) expects string, mixed given\\.$#" count: 1 @@ -1705,11 +1710,6 @@ parameters: count: 1 path: src/Controllers/Database/DesignerController.php - - - message: "#^Parameter \\#2 \\$getDb of method PhpMyAdmin\\\\Database\\\\Designer\\:\\:getHtmlForMain\\(\\) expects string, mixed given\\.$#" - count: 1 - path: src/Controllers/Database/DesignerController.php - - message: "#^Parameter \\#2 \\$table of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:getTablesInfo\\(\\) expects string\\|null, mixed given\\.$#" count: 2 diff --git a/src/Controllers/Database/DesignerController.php b/src/Controllers/Database/DesignerController.php index 854e1ddf61..639420304e 100644 --- a/src/Controllers/Database/DesignerController.php +++ b/src/Controllers/Database/DesignerController.php @@ -21,6 +21,7 @@ use PhpMyAdmin\Util; use function __; use function htmlspecialchars; use function in_array; +use function json_encode; use function sprintf; class DesignerController extends AbstractController @@ -39,6 +40,7 @@ class DesignerController extends AbstractController { $GLOBALS['message'] ??= null; $GLOBALS['errorUrl'] ??= null; + $GLOBALS['text_dir'] ??= null; $db = $request->getParsedBodyParam('db'); $table = $request->getParsedBodyParam('table'); @@ -63,8 +65,6 @@ class DesignerController extends AbstractController $tableColumn = $this->designerCommon->getColumnsInfo($scriptDisplayField); $tablesAllKeys = $this->designerCommon->getAllKeys($scriptDisplayField); - $GLOBALS['text_dir'] ??= null; - $columnsType = $this->databaseDesigner->getColumnTypes($tableColumn, $tablesAllKeys); $html = $this->template->render('database/designer/database_tables', [ @@ -226,24 +226,36 @@ class DesignerController extends AbstractController $this->addScriptFiles(['designer/init.js']); + $columnsType = $this->databaseDesigner->getColumnTypes($tableColumn, $tablesAllKeys); + + $designerConfig = $this->databaseDesigner->getDesignerConfig( + Current::$database, + $scriptDisplayField, + $scriptTables, + $scriptContr, + $displayPage, + ); + + $mainHtml = $this->template->render('database/designer/main', [ + 'db' => Current::$database, + 'text_dir' => $GLOBALS['text_dir'], + 'hidden_input_fields' => Url::getHiddenInputs($request->getQueryParam('db')), + 'designer_config' => json_encode($designerConfig), + 'display_page' => $displayPage, + 'has_query' => $visualBuilderMode, + 'visual_builder' => $visualBuilderMode, + 'selected_page' => $selectedPage, + 'params_array' => $classesSideMenu, + 'tab_pos' => $tablePositions, + 'tab_column' => $tableColumn, + 'tables_all_keys' => $tablesAllKeys, + 'designerTables' => $scriptDisplayField, + 'columns_type' => $columnsType, + ]); + // Embed some data into HTML, later it will be read // by designer/init.js and converted to JS variables. - $this->response->addHTML( - $this->databaseDesigner->getHtmlForMain( - Current::$database, - $request->getQueryParam('db'), - $scriptDisplayField, - $scriptTables, - $scriptContr, - $displayPage, - $visualBuilderMode, - $selectedPage, - $classesSideMenu, - $tablePositions, - $tableColumn, - $tablesAllKeys, - ), - ); + $this->response->addHTML($mainHtml); $this->response->addHTML('
'); } diff --git a/src/Database/Designer.php b/src/Database/Designer.php index a1362e4bfc..a5d2bd19ff 100644 --- a/src/Database/Designer.php +++ b/src/Database/Designer.php @@ -12,7 +12,6 @@ use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Message; use PhpMyAdmin\Plugins; use PhpMyAdmin\Template; -use PhpMyAdmin\Url; use PhpMyAdmin\Util; use stdClass; @@ -20,7 +19,6 @@ use function __; use function intval; use function is_array; use function json_decode; -use function json_encode; use function str_contains; /** @@ -210,62 +208,6 @@ class Designer return $classesArray; } - /** - * Returns HTML for Designer page - * - * @param string $db database in use - * @param string $getDb database in url - * @param DesignerTable[] $designerTables The designer tables - * @param mixed[] $scriptTables array on foreign key support for each table - * @param mixed[] $scriptContr initialization data array - * @param int $displayPage page number of the selected page - * @param bool $visualBuilderMode whether this is visual query builder - * @param string|null $selectedPage name of the selected page - * @param mixed[] $paramsArray array with class name for various buttons on side menu - * @param mixed[] $tablePositions table positions - * @param list