Merge branch 'ru-asdx-refactor-17769-p9'

Closes https://github.com/phpmyadmin/phpmyadmin/pull/17987

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
Maurício Meneghini Fauth 2023-01-27 11:51:27 -03:00
commit 419d79f4d0
No known key found for this signature in database
GPG Key ID: 6A16FD38AFC89CC8
3 changed files with 275 additions and 120 deletions

View File

@ -42,24 +42,31 @@ class DesignerController extends AbstractController
$GLOBALS['message'] = $GLOBALS['message'] ?? null;
$GLOBALS['errorUrl'] = $GLOBALS['errorUrl'] ?? null;
if (isset($_POST['dialog'])) {
if ($_POST['dialog'] === 'edit') {
$html = $this->databaseDesigner->getHtmlForEditOrDeletePages($_POST['db'], 'editPage');
} elseif ($_POST['dialog'] === 'delete') {
$html = $this->databaseDesigner->getHtmlForEditOrDeletePages($_POST['db'], 'deletePage');
} elseif ($_POST['dialog'] === 'save_as') {
$html = $this->databaseDesigner->getHtmlForPageSaveAs($_POST['db']);
} elseif ($_POST['dialog'] === 'export') {
$html = $this->databaseDesigner->getHtmlForSchemaExport($_POST['db'], $_POST['selected_page']);
} elseif ($_POST['dialog'] === 'add_table') {
$db = $request->getParsedBodyParam('db');
$table = $request->getParsedBodyParam('table');
if ($request->hasBodyParam('dialog')) {
$dialog = $request->getParsedBodyParam('dialog');
if ($dialog === 'edit') {
$html = $this->databaseDesigner->getHtmlForEditOrDeletePages($db, 'editPage');
} elseif ($dialog === 'delete') {
$html = $this->databaseDesigner->getHtmlForEditOrDeletePages($db, 'deletePage');
} elseif ($dialog === 'save_as') {
$html = $this->databaseDesigner->getHtmlForPageSaveAs($db);
} elseif ($dialog === 'export') {
$html = $this->databaseDesigner->getHtmlForSchemaExport(
$db,
$request->getParsedBodyParam('selected_page')
);
} elseif ($dialog === 'add_table') {
// Pass the db and table to the getTablesInfo so we only have the table we asked for
$scriptDisplayField = $this->designerCommon->getTablesInfo($_POST['db'], $_POST['table']);
$scriptDisplayField = $this->designerCommon->getTablesInfo($db, $table);
$tableColumn = $this->designerCommon->getColumnsInfo($scriptDisplayField);
$tablesAllKeys = $this->designerCommon->getAllKeys($scriptDisplayField);
$tablesPkOrUniqueKeys = $this->designerCommon->getPkOrUniqueKeys($scriptDisplayField);
$html = $this->databaseDesigner->getDatabaseTables(
$_POST['db'],
$db,
$scriptDisplayField,
[],
-1,
@ -76,64 +83,68 @@ class DesignerController extends AbstractController
return;
}
if (isset($_POST['operation'])) {
if ($_POST['operation'] === 'deletePage') {
$success = $this->designerCommon->deletePage($_POST['selected_page']);
if ($request->hasBodyParam('operation')) {
$operation = $request->getParsedBodyParam('operation');
if ($operation === 'deletePage') {
$success = $this->designerCommon->deletePage($request->getParsedBodyParam('selected_page'));
$this->response->setRequestStatus($success);
} elseif ($_POST['operation'] === 'savePage') {
if ($_POST['save_page'] === 'same') {
$page = $_POST['selected_page'];
} elseif ($this->designerCommon->getPageExists($_POST['selected_value'])) {
} elseif ($operation === 'savePage') {
if ($request->getParsedBodyParam('save_page') === 'same') {
$page = $request->getParsedBodyParam('selected_page');
} elseif ($this->designerCommon->getPageExists($request->getParsedBodyParam('selected_value'))) {
$this->response->addJSON(
'message',
sprintf(
/* l10n: The user tries to save a page with an existing name in Designer */
__('There already exists a page named "%s" please rename it to something else.'),
htmlspecialchars($_POST['selected_value'])
htmlspecialchars($request->getParsedBodyParam('selected_value'))
)
);
$this->response->setRequestStatus(false);
return;
} else {
$page = $this->designerCommon->createNewPage($_POST['selected_value'], $_POST['db']);
$page = $this->designerCommon->createNewPage($request->getParsedBodyParam('selected_value'), $db);
$this->response->addJSON('id', $page);
}
$success = $this->designerCommon->saveTablePositions($page);
$this->response->setRequestStatus($success);
} elseif ($_POST['operation'] === 'setDisplayField') {
} elseif ($operation === 'setDisplayField') {
[
$success,
$GLOBALS['message'],
] = $this->designerCommon->saveDisplayField($_POST['db'], $_POST['table'], $_POST['field']);
] = $this->designerCommon->saveDisplayField($db, $table, $request->getParsedBodyParam('field'));
$this->response->setRequestStatus($success);
$this->response->addJSON('message', $GLOBALS['message']);
} elseif ($_POST['operation'] === 'addNewRelation') {
} elseif ($operation === 'addNewRelation') {
[$success, $GLOBALS['message']] = $this->designerCommon->addNewRelation(
$_POST['db'],
$_POST['T1'],
$_POST['F1'],
$_POST['T2'],
$_POST['F2'],
$_POST['on_delete'],
$_POST['on_update'],
$_POST['DB1'],
$_POST['DB2']
$db,
$request->getParsedBodyParam('T1'),
$request->getParsedBodyParam('F1'),
$request->getParsedBodyParam('T2'),
$request->getParsedBodyParam('F2'),
$request->getParsedBodyParam('on_delete'),
$request->getParsedBodyParam('on_update'),
$request->getParsedBodyParam('DB1'),
$request->getParsedBodyParam('DB2')
);
$this->response->setRequestStatus($success);
$this->response->addJSON('message', $GLOBALS['message']);
} elseif ($_POST['operation'] === 'removeRelation') {
} elseif ($operation === 'removeRelation') {
[$success, $GLOBALS['message']] = $this->designerCommon->removeRelation(
$_POST['T1'],
$_POST['F1'],
$_POST['T2'],
$_POST['F2']
$request->getParsedBodyParam('T1'),
$request->getParsedBodyParam('F1'),
$request->getParsedBodyParam('T2'),
$request->getParsedBodyParam('F2')
);
$this->response->setRequestStatus($success);
$this->response->addJSON('message', $GLOBALS['message']);
} elseif ($_POST['operation'] === 'save_setting_value') {
$success = $this->designerCommon->saveSetting($_POST['index'], $_POST['value']);
} elseif ($operation === 'save_setting_value') {
$success = $this->designerCommon->saveSetting(
$request->getParsedBodyParam('index'),
$request->getParsedBodyParam('value')
);
$this->response->setRequestStatus($success);
}
@ -151,14 +162,14 @@ class DesignerController extends AbstractController
$scriptDisplayField = $this->designerCommon->getTablesInfo();
$visualBuilderMode = isset($_GET['query']);
$visualBuilderMode = $request->hasQueryParam('query');
if ($visualBuilderMode) {
$displayPage = $this->designerCommon->getDefaultPage($_GET['db']);
} elseif (! empty($_GET['page'])) {
$displayPage = (int) $_GET['page'];
$displayPage = $this->designerCommon->getDefaultPage($request->getQueryParam('db'));
} elseif ($request->hasQueryParam('page')) {
$displayPage = (int) $request->getQueryParam('page');
} else {
$displayPage = $this->designerCommon->getLoadingPage($_GET['db']);
$displayPage = $this->designerCommon->getLoadingPage($request->getQueryParam('db'));
}
$selectedPage = null;
@ -210,7 +221,7 @@ class DesignerController extends AbstractController
$this->response->addHTML(
$this->databaseDesigner->getHtmlForMain(
$GLOBALS['db'],
$_GET['db'],
$request->getQueryParam('db'),
$scriptDisplayField,
$scriptTables,
$scriptContr,

View File

@ -1025,6 +1025,181 @@ parameters:
count: 1
path: libraries/classes/Controllers/Database/DataDictionaryController.php
-
message: "#^Cannot cast mixed to int\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$T1 of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:removeRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\:\\:getDatabaseTables\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\:\\:getHtmlForEditOrDeletePages\\(\\) expects string, mixed given\\.$#"
count: 2
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\:\\:getHtmlForPageSaveAs\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\:\\:getHtmlForSchemaExport\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:addNewRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:getDefaultPage\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:getLoadingPage\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:getTablesInfo\\(\\) expects string\\|null, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:saveDisplayField\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$index of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:saveSetting\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$pageName of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:createNewPage\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$pg of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:deletePage\\(\\) expects int, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$pg of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:getPageExists\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$pg of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:saveTablePositions\\(\\) expects int, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$string of function htmlspecialchars expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#2 \\$F1 of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:removeRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#2 \\$T1 of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:addNewRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#2 \\$db of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:createNewPage\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#2 \\$getDb of method PhpMyAdmin\\\\Database\\\\Designer\\:\\:getHtmlForMain\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#2 \\$page of method PhpMyAdmin\\\\Database\\\\Designer\\:\\:getHtmlForSchemaExport\\(\\) expects int, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#2 \\$table of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:getTablesInfo\\(\\) expects string\\|null, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#2 \\$table of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:saveDisplayField\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#2 \\$value of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:saveSetting\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#3 \\$F1 of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:addNewRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#3 \\$T2 of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:removeRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#3 \\$field of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:saveDisplayField\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#4 \\$F2 of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:removeRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#4 \\$T2 of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:addNewRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#5 \\$F2 of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:addNewRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#6 \\$on_delete of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:addNewRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#7 \\$on_update of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:addNewRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#8 \\$DB1 of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:addNewRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#9 \\$DB2 of method PhpMyAdmin\\\\Database\\\\Designer\\\\Common\\:\\:addNewRelation\\(\\) expects string, mixed given\\.$#"
count: 1
path: libraries/classes/Controllers/Database/DesignerController.php
-
message: "#^Parameter \\#1 \\$sqlQuery of static method PhpMyAdmin\\\\Database\\\\MultiTableQuery\\:\\:displayResults\\(\\) expects string, mixed given\\.$#"
count: 1

View File

@ -1043,15 +1043,45 @@
</MixedOperand>
</file>
<file src="libraries/classes/Controllers/Database/DesignerController.php">
<InvalidScalarArgument occurrences="2">
<code>$_POST['selected_page']</code>
<code>$_POST['selected_page']</code>
</InvalidScalarArgument>
<MixedArgument occurrences="4">
<MixedArgument occurrences="38">
<code>$db</code>
<code>$db</code>
<code>$db</code>
<code>$db</code>
<code>$db</code>
<code>$db</code>
<code>$db</code>
<code>$db</code>
<code>$html</code>
<code>$page</code>
<code>$position['dbName']</code>
<code>$position['tableName']</code>
<code>$request-&gt;getParsedBodyParam('DB1')</code>
<code>$request-&gt;getParsedBodyParam('DB2')</code>
<code>$request-&gt;getParsedBodyParam('F1')</code>
<code>$request-&gt;getParsedBodyParam('F1')</code>
<code>$request-&gt;getParsedBodyParam('F2')</code>
<code>$request-&gt;getParsedBodyParam('F2')</code>
<code>$request-&gt;getParsedBodyParam('T1')</code>
<code>$request-&gt;getParsedBodyParam('T1')</code>
<code>$request-&gt;getParsedBodyParam('T2')</code>
<code>$request-&gt;getParsedBodyParam('T2')</code>
<code>$request-&gt;getParsedBodyParam('field')</code>
<code>$request-&gt;getParsedBodyParam('index')</code>
<code>$request-&gt;getParsedBodyParam('on_delete')</code>
<code>$request-&gt;getParsedBodyParam('on_update')</code>
<code>$request-&gt;getParsedBodyParam('selected_page')</code>
<code>$request-&gt;getParsedBodyParam('selected_page')</code>
<code>$request-&gt;getParsedBodyParam('selected_value')</code>
<code>$request-&gt;getParsedBodyParam('selected_value')</code>
<code>$request-&gt;getParsedBodyParam('selected_value')</code>
<code>$request-&gt;getParsedBodyParam('value')</code>
<code>$request-&gt;getQueryParam('db')</code>
<code>$request-&gt;getQueryParam('db')</code>
<code>$request-&gt;getQueryParam('db')</code>
<code>$success</code>
<code>$table</code>
<code>$table</code>
</MixedArgument>
<MixedArrayAccess occurrences="4">
<code>$position['dbName']</code>
@ -1059,83 +1089,22 @@
<code>$position['tableName']</code>
<code>$position['tableName']</code>
</MixedArrayAccess>
<MixedAssignment occurrences="2">
<MixedAssignment occurrences="7">
<code>$GLOBALS['errorUrl']</code>
<code>$db</code>
<code>$dialog</code>
<code>$operation</code>
<code>$page</code>
<code>$position</code>
<code>$table</code>
</MixedAssignment>
<MixedOperand occurrences="2">
<code>$position['dbName']</code>
<code>$position['tableName']</code>
</MixedOperand>
<PossiblyInvalidArgument occurrences="33">
<code>$_GET['db']</code>
<code>$_GET['db']</code>
<code>$_GET['db']</code>
<code>$_POST['DB1']</code>
<code>$_POST['DB2']</code>
<code>$_POST['F1']</code>
<code>$_POST['F1']</code>
<code>$_POST['F2']</code>
<code>$_POST['F2']</code>
<code>$_POST['T1']</code>
<code>$_POST['T1']</code>
<code>$_POST['T2']</code>
<code>$_POST['T2']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['field']</code>
<code>$_POST['index']</code>
<code>$_POST['on_delete']</code>
<code>$_POST['on_update']</code>
<code>$_POST['selected_value']</code>
<code>$_POST['selected_value']</code>
<code>$_POST['selected_value']</code>
<code>$_POST['table']</code>
<code>$_POST['table']</code>
<code>$_POST['value']</code>
<PossiblyNullArgument occurrences="1">
<code>$page</code>
</PossiblyInvalidArgument>
<PossiblyInvalidCast occurrences="29">
<code>$_GET['db']</code>
<code>$_GET['db']</code>
<code>$_GET['db']</code>
<code>$_POST['DB1']</code>
<code>$_POST['DB2']</code>
<code>$_POST['F1']</code>
<code>$_POST['F1']</code>
<code>$_POST['F2']</code>
<code>$_POST['F2']</code>
<code>$_POST['T1']</code>
<code>$_POST['T1']</code>
<code>$_POST['T2']</code>
<code>$_POST['T2']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['db']</code>
<code>$_POST['field']</code>
<code>$_POST['index']</code>
<code>$_POST['on_delete']</code>
<code>$_POST['on_update']</code>
<code>$_POST['selected_value']</code>
<code>$_POST['selected_value']</code>
<code>$_POST['table']</code>
<code>$_POST['value']</code>
</PossiblyInvalidCast>
<RiskyCast occurrences="1">
<code>$_GET['page']</code>
</RiskyCast>
</PossiblyNullArgument>
</file>
<file src="libraries/classes/Controllers/Database/EventsController.php">
<MixedAssignment occurrences="2">