From 1eb0e001d8cc12ea74b17e9eef18b0aac2f7571d Mon Sep 17 00:00:00 2001 From: Evgeny Skorlov Date: Thu, 22 Dec 2022 13:28:13 +1100 Subject: [PATCH] replace superglobas with serverrequest in database/designercontroller MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Evgeny Skorlov Signed-off-by: MaurĂ­cio Meneghini Fauth --- .../Database/DesignerController.php | 103 ++++++----- phpstan-baseline.neon | 175 ++++++++++++++++++ psalm-baseline.xml | 117 +++++------- 3 files changed, 275 insertions(+), 120 deletions(-) diff --git a/libraries/classes/Controllers/Database/DesignerController.php b/libraries/classes/Controllers/Database/DesignerController.php index 1f91d39171..74ff71170c 100644 --- a/libraries/classes/Controllers/Database/DesignerController.php +++ b/libraries/classes/Controllers/Database/DesignerController.php @@ -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, diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index e180a3e661..f1896bab42 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -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 diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 57690f1a71..04b1c41fc6 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1043,15 +1043,45 @@ - - $_POST['selected_page'] - $_POST['selected_page'] - - + + $db + $db + $db + $db + $db + $db + $db + $db $html + $page $position['dbName'] $position['tableName'] + $request->getParsedBodyParam('DB1') + $request->getParsedBodyParam('DB2') + $request->getParsedBodyParam('F1') + $request->getParsedBodyParam('F1') + $request->getParsedBodyParam('F2') + $request->getParsedBodyParam('F2') + $request->getParsedBodyParam('T1') + $request->getParsedBodyParam('T1') + $request->getParsedBodyParam('T2') + $request->getParsedBodyParam('T2') + $request->getParsedBodyParam('field') + $request->getParsedBodyParam('index') + $request->getParsedBodyParam('on_delete') + $request->getParsedBodyParam('on_update') + $request->getParsedBodyParam('selected_page') + $request->getParsedBodyParam('selected_page') + $request->getParsedBodyParam('selected_value') + $request->getParsedBodyParam('selected_value') + $request->getParsedBodyParam('selected_value') + $request->getParsedBodyParam('value') + $request->getQueryParam('db') + $request->getQueryParam('db') + $request->getQueryParam('db') $success + $table + $table $position['dbName'] @@ -1059,83 +1089,22 @@ $position['tableName'] $position['tableName'] - + $GLOBALS['errorUrl'] + $db + $dialog + $operation + $page $position + $table $position['dbName'] $position['tableName'] - - $_GET['db'] - $_GET['db'] - $_GET['db'] - $_POST['DB1'] - $_POST['DB2'] - $_POST['F1'] - $_POST['F1'] - $_POST['F2'] - $_POST['F2'] - $_POST['T1'] - $_POST['T1'] - $_POST['T2'] - $_POST['T2'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['field'] - $_POST['index'] - $_POST['on_delete'] - $_POST['on_update'] - $_POST['selected_value'] - $_POST['selected_value'] - $_POST['selected_value'] - $_POST['table'] - $_POST['table'] - $_POST['value'] + $page - - - $_GET['db'] - $_GET['db'] - $_GET['db'] - $_POST['DB1'] - $_POST['DB2'] - $_POST['F1'] - $_POST['F1'] - $_POST['F2'] - $_POST['F2'] - $_POST['T1'] - $_POST['T1'] - $_POST['T2'] - $_POST['T2'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['db'] - $_POST['field'] - $_POST['index'] - $_POST['on_delete'] - $_POST['on_update'] - $_POST['selected_value'] - $_POST['selected_value'] - $_POST['table'] - $_POST['value'] - - - $_GET['page'] - +