Inline controller method

Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
This commit is contained in:
Kamil Tekiela 2023-12-19 00:03:43 +01:00
parent 5f222ec29d
commit 2709d1c6f8
3 changed files with 36 additions and 82 deletions

View File

@ -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

View File

@ -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('<div id="PMA_disable_floating_menubar"></div>');
}

View File

@ -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<ColumnInfo>[] $tableColumnsInfo table column info
* @param array<string, bool> $tablesAllKeys all indices
*
* @return string html
*/
public function getHtmlForMain(
string $db,
string $getDb,
array $designerTables,
array $scriptTables,
array $scriptContr,
int $displayPage,
bool $visualBuilderMode,
string|null $selectedPage,
array $paramsArray,
array $tablePositions,
array $tableColumnsInfo,
array $tablesAllKeys,
): string {
$GLOBALS['text_dir'] ??= null;
$columnsType = $this->getColumnTypes($tableColumnsInfo, $tablesAllKeys);
$designerConfig = $this->getDesignerConfig($db, $designerTables, $scriptTables, $scriptContr, $displayPage);
return $this->template->render('database/designer/main', [
'db' => $db,
'text_dir' => $GLOBALS['text_dir'],
'hidden_input_fields' => Url::getHiddenInputs($getDb),
'designer_config' => json_encode($designerConfig),
'display_page' => $displayPage,
'has_query' => $visualBuilderMode,
'visual_builder' => $visualBuilderMode,
'selected_page' => $selectedPage,
'params_array' => $paramsArray,
'tab_pos' => $tablePositions,
'tab_column' => $tableColumnsInfo,
'tables_all_keys' => $tablesAllKeys,
'designerTables' => $designerTables,
'columns_type' => $columnsType,
]);
}
/**
* @param list<ColumnInfo>[] $tableColumnsInfo table column info
* @param array<string, bool> $tablesAllKeys unique or primary indices
@ -313,7 +255,7 @@ class Designer
* @param mixed[] $scriptTables array on foreign key support for each table
* @param mixed[] $scriptContr initialization data array
*/
private function getDesignerConfig(
public function getDesignerConfig(
string $db,
array $designerTables,
array $scriptTables,