From 15915a45e094eeeab923eb73f4e55dfec1af99aa Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Mon, 31 Oct 2022 22:30:26 +0000 Subject: [PATCH] Send DBI to SqlQueryForm using DI Signed-off-by: Kamil Tekiela --- libraries/classes/SqlQueryForm.php | 12 ++++-- libraries/services.php | 2 +- .../Controllers/Table/SqlControllerTest.php | 4 +- .../Table/TrackingControllerTest.php | 2 +- test/classes/SqlQueryFormTest.php | 43 +++++++++---------- test/classes/TrackingTest.php | 2 +- 6 files changed, 34 insertions(+), 31 deletions(-) diff --git a/libraries/classes/SqlQueryForm.php b/libraries/classes/SqlQueryForm.php index f3bb312ca5..b4055a99aa 100644 --- a/libraries/classes/SqlQueryForm.php +++ b/libraries/classes/SqlQueryForm.php @@ -31,12 +31,16 @@ class SqlQueryForm /** @var Template */ private $template; + /** @var DatabaseInterface */ + private $dbi; + /** * @param Template $template Template object */ - public function __construct(Template $template) + public function __construct(Template $template, DatabaseInterface $dbi) { $this->template = $template; + $this->dbi = $dbi; } /** @@ -90,14 +94,14 @@ class SqlQueryForm [$legend, $query, $columns_list] = $this->init($query); } - $relation = new Relation($GLOBALS['dbi']); + $relation = new Relation($this->dbi); $bookmarkFeature = $relation->getRelationParameters()->bookmarkFeature; $bookmarks = []; if ($display_tab === 'full' && $bookmarkFeature !== null) { $bookmark_list = Bookmark::getList( $bookmarkFeature, - $GLOBALS['dbi'], + $this->dbi, $GLOBALS['cfg']['Server']['user'], $db ); @@ -173,7 +177,7 @@ class SqlQueryForm // Get the list and number of fields // we do a try_query here, because we could be in the query window, // trying to synchronize and the table has not yet been created - $columns_list = $GLOBALS['dbi']->getColumns($db, $GLOBALS['table'], true); + $columns_list = $this->dbi->getColumns($db, $GLOBALS['table'], true); $scriptName = Util::getScriptNameForOption($GLOBALS['cfg']['DefaultTabTable'], 'table'); $tmp_tbl_link = ''; diff --git a/libraries/services.php b/libraries/services.php index 08bb600332..04fa284cb4 100644 --- a/libraries/services.php +++ b/libraries/services.php @@ -197,7 +197,7 @@ return [ ], 'sql_query_form' => [ 'class' => PhpMyAdmin\SqlQueryForm::class, - 'arguments' => ['$template' => '@template'], + 'arguments' => ['$template' => '@template', '$dbi' => '@dbi'], ], 'status_data' => [ 'class' => PhpMyAdmin\Server\Status\Data::class, diff --git a/test/classes/Controllers/Table/SqlControllerTest.php b/test/classes/Controllers/Table/SqlControllerTest.php index d94d34a2ab..009462e4b7 100644 --- a/test/classes/Controllers/Table/SqlControllerTest.php +++ b/test/classes/Controllers/Table/SqlControllerTest.php @@ -81,7 +81,9 @@ class SqlControllerTest extends AbstractTestCase ]); $response = new ResponseRenderer(); - (new SqlController($response, $template, new SqlQueryForm($template)))($this->createStub(ServerRequest::class)); + ( + new SqlController($response, $template, new SqlQueryForm($template, $this->dbi)) + )($this->createStub(ServerRequest::class)); $this->assertSame($expected, $response->getHTMLResult()); } } diff --git a/test/classes/Controllers/Table/TrackingControllerTest.php b/test/classes/Controllers/Table/TrackingControllerTest.php index 712566ba97..b0618afc8d 100644 --- a/test/classes/Controllers/Table/TrackingControllerTest.php +++ b/test/classes/Controllers/Table/TrackingControllerTest.php @@ -51,7 +51,7 @@ class TrackingControllerTest extends AbstractTestCase (new TrackingController( $response, $template, - new Tracking(new SqlQueryForm($template), $template, new Relation($this->dbi), $this->dbi) + new Tracking(new SqlQueryForm($template, $this->dbi), $template, new Relation($this->dbi), $this->dbi) ))($this->createStub(ServerRequest::class)); $main = $template->render('table/tracking/main', [ diff --git a/test/classes/SqlQueryFormTest.php b/test/classes/SqlQueryFormTest.php index ff74ff5be9..438f28c497 100644 --- a/test/classes/SqlQueryFormTest.php +++ b/test/classes/SqlQueryFormTest.php @@ -39,9 +39,28 @@ class SqlQueryFormTest extends AbstractTestCase parent::setUp(); parent::setLanguage(); $this->dummyDbi = $this->createDbiDummy(); + $this->dummyDbi = $this->createDbiDummy(); + $this->dummyDbi->addResult( + 'SHOW FULL COLUMNS FROM `PMA_db`.`PMA_table`', + [ + [ + 'field1', + 'Comment1', + ], + ], + [ + 'Field', + 'Comment', + ] + ); + + $this->dummyDbi->addResult( + 'SHOW INDEXES FROM `PMA_db`.`PMA_table`', + [] + ); $this->dbi = $this->createDatabaseInterface($this->dummyDbi); $GLOBALS['dbi'] = $this->dbi; - $this->sqlQueryForm = new SqlQueryForm(new Template()); + $this->sqlQueryForm = new SqlQueryForm(new Template(), $this->dbi); //$GLOBALS $GLOBALS['PMA_PHP_SELF'] = Core::getenv('PHP_SELF'); @@ -77,28 +96,6 @@ class SqlQueryFormTest extends AbstractTestCase $GLOBALS['cfg']['Server']['user'] = 'user'; $GLOBALS['cfg']['Server']['pmadb'] = 'pmadb'; $GLOBALS['cfg']['Server']['bookmarktable'] = 'bookmarktable'; - - $this->dummyDbi = $this->createDbiDummy(); - $this->dbi = $this->createDatabaseInterface($this->dummyDbi); - $GLOBALS['dbi'] = $this->dbi; - $this->dummyDbi->addResult( - 'SHOW FULL COLUMNS FROM `PMA_db`.`PMA_table`', - [ - [ - 'field1', - 'Comment1', - ], - ], - [ - 'Field', - 'Comment', - ] - ); - - $this->dummyDbi->addResult( - 'SHOW INDEXES FROM `PMA_db`.`PMA_table`', - [] - ); } /** diff --git a/test/classes/TrackingTest.php b/test/classes/TrackingTest.php index 8e99787866..9e4e2ff21f 100644 --- a/test/classes/TrackingTest.php +++ b/test/classes/TrackingTest.php @@ -51,7 +51,7 @@ class TrackingTest extends AbstractTestCase $template = new Template(); $this->tracking = new Tracking( - new SqlQueryForm($template), + new SqlQueryForm($template, $GLOBALS['dbi']), $template, new Relation($GLOBALS['dbi']), $GLOBALS['dbi']