Skip to content

Commit 40e44c0

Browse files
Merge pull request #17894 from MauricioFauth/dblist-global-removal
Remove the `dblist` global variable
2 parents c08b4a7 + d0d9055 commit 40e44c0

25 files changed

Lines changed: 133 additions & 266 deletions

libraries/classes/Controllers/Database/Structure/CopyFormController.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ final class CopyFormController extends AbstractController
1313
{
1414
public function __invoke(ServerRequest $request): void
1515
{
16-
$GLOBALS['dblist'] = $GLOBALS['dblist'] ?? null;
17-
1816
$selected = $_POST['selected_tbl'] ?? [];
1917

2018
if (empty($selected)) {
@@ -29,7 +27,7 @@ public function __invoke(ServerRequest $request): void
2927
$urlParams['selected'][] = $selectedValue;
3028
}
3129

32-
$databasesList = $GLOBALS['dblist']->databases;
30+
$databasesList = $GLOBALS['dbi']->getDatabaseList();
3331
foreach ($databasesList as $key => $databaseName) {
3432
if ($databaseName == $GLOBALS['db']) {
3533
$databasesList->offsetUnset($key);

libraries/classes/Controllers/DatabaseController.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ final class DatabaseController extends AbstractController
1010
{
1111
public function __invoke(ServerRequest $request): void
1212
{
13-
$GLOBALS['dblist'] = $GLOBALS['dblist'] ?? null;
14-
$this->response->addJSON(['databases' => $GLOBALS['dblist']->databases]);
13+
$this->response->addJSON(['databases' => $GLOBALS['dbi']->getDatabaseList()]);
1514
}
1615
}

libraries/classes/Controllers/Server/Databases/DestroyController.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public function __invoke(ServerRequest $request): void
4848
{
4949
$GLOBALS['selected'] = $GLOBALS['selected'] ?? null;
5050
$GLOBALS['errorUrl'] = $GLOBALS['errorUrl'] ?? null;
51-
$GLOBALS['dblist'] = $GLOBALS['dblist'] ?? null;
5251
$GLOBALS['reload'] = $GLOBALS['reload'] ?? null;
5352

5453
$selected_dbs = $_POST['selected_dbs'] ?? null;
@@ -90,7 +89,7 @@ public function __invoke(ServerRequest $request): void
9089
$this->transformations->clear($database);
9190
}
9291

93-
$GLOBALS['dblist']->databases->build();
92+
$this->dbi->getDatabaseList()->build();
9493

9594
$message = Message::success(
9695
_ngettext(

libraries/classes/Controllers/Server/DatabasesController.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ public function __construct(
7878
public function __invoke(ServerRequest $request): void
7979
{
8080
$GLOBALS['server'] = $GLOBALS['server'] ?? null;
81-
$GLOBALS['dblist'] = $GLOBALS['dblist'] ?? null;
8281
$GLOBALS['is_create_db_priv'] = $GLOBALS['is_create_db_priv'] ?? null;
8382
$GLOBALS['db_to_create'] = $GLOBALS['db_to_create'] ?? null;
8483
$GLOBALS['text_dir'] = $GLOBALS['text_dir'] ?? null;
@@ -121,7 +120,7 @@ public function __invoke(ServerRequest $request): void
121120
$this->position,
122121
true
123122
);
124-
$this->databaseCount = count($GLOBALS['dblist']->databases);
123+
$this->databaseCount = count($this->dbi->getDatabaseList());
125124
}
126125

127126
$urlParams = [

libraries/classes/Controllers/Table/OperationsController.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -489,8 +489,9 @@ public function __invoke(ServerRequest $request): void
489489
$possibleRowFormats = $this->operations->getPossibleRowFormat();
490490

491491
$databaseList = [];
492-
if (count($GLOBALS['dblist']->databases) <= $GLOBALS['cfg']['MaxDbList']) {
493-
$databaseList = $GLOBALS['dblist']->databases->getList();
492+
$listDatabase = $this->dbi->getDatabaseList();
493+
if (count($listDatabase) <= $GLOBALS['cfg']['MaxDbList']) {
494+
$databaseList = $listDatabase->getList();
494495
}
495496

496497
$hasForeignKeys = ! empty($this->relation->getForeigners($GLOBALS['db'], $GLOBALS['table'], '', 'foreign'));

libraries/classes/Controllers/Table/RelationController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ public function __invoke(ServerRequest $request): void
179179
'db' => $GLOBALS['db'],
180180
'table' => $GLOBALS['table'],
181181
'url_params' => $GLOBALS['urlParams'],
182-
'databases' => $GLOBALS['dblist']->databases,
182+
'databases' => $this->dbi->getDatabaseList(),
183183
'foreign_db' => $foreignDb,
184184
'foreign_table' => $foreignTable,
185185
'unique_columns' => $uniqueColumns,
@@ -198,7 +198,7 @@ public function __invoke(ServerRequest $request): void
198198
'db' => $GLOBALS['db'],
199199
'table' => $GLOBALS['table'],
200200
'url_params' => $GLOBALS['urlParams'],
201-
'databases' => $GLOBALS['dblist']->databases,
201+
'databases' => $this->dbi->getDatabaseList(),
202202
'foreign_db' => false,
203203
'foreign_table' => false,
204204
'unique_columns' => [],
@@ -220,7 +220,7 @@ public function __invoke(ServerRequest $request): void
220220
'column_hash_array' => $column_hash_array,
221221
'save_row' => array_values($columns),
222222
'url_params' => $GLOBALS['urlParams'],
223-
'databases' => $GLOBALS['dblist']->databases,
223+
'databases' => $this->dbi->getDatabaseList(),
224224
'dbi' => $this->dbi,
225225
'default_sliders_state' => $GLOBALS['cfg']['InitialSlidersState'],
226226
'route' => $request->getRoute(),

libraries/classes/Database/DatabaseList.php

Lines changed: 0 additions & 48 deletions
This file was deleted.

libraries/classes/DatabaseInterface.php

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
use PhpMyAdmin\Config\Settings\Server;
1111
use PhpMyAdmin\ConfigStorage\Relation;
12-
use PhpMyAdmin\Database\DatabaseList;
1312
use PhpMyAdmin\Dbal\DatabaseName;
1413
use PhpMyAdmin\Dbal\DbalInterface;
1514
use PhpMyAdmin\Dbal\DbiExtension;
@@ -141,6 +140,9 @@ class DatabaseInterface implements DbalInterface
141140
/** @var float */
142141
public $lastQueryExecutionTime = 0;
143142

143+
/** @var ListDatabase|null */
144+
private $databaseList = null;
145+
144146
/**
145147
* @param DbiExtension $ext Object to be used for database queries
146148
*/
@@ -701,14 +703,14 @@ public function getDatabasesFull(
701703
// f.e. to apply hide_db and only_db
702704
$drops = array_diff(
703705
array_keys($databases),
704-
(array) $GLOBALS['dblist']->databases
706+
(array) $this->getDatabaseList()
705707
);
706708
foreach ($drops as $drop) {
707709
unset($databases[$drop]);
708710
}
709711
} else {
710712
$databases = [];
711-
foreach ($GLOBALS['dblist']->databases as $databaseName) {
713+
foreach ($this->getDatabaseList() as $databaseName) {
712714
// Compatibility with INFORMATION_SCHEMA output
713715
$databases[$databaseName]['SCHEMA_NAME'] = $databaseName;
714716

@@ -843,7 +845,7 @@ public function getColumnsFull(
843845

844846
$columns = [];
845847
if ($database === null) {
846-
foreach ($GLOBALS['dblist']->databases as $database) {
848+
foreach ($this->getDatabaseList() as $database) {
847849
$columns[$database] = $this->getColumnsFull($database, null, null, $link);
848850
}
849851

@@ -1145,10 +1147,7 @@ public function postConnect(): void
11451147
/* Loads closest context to this version. */
11461148
Context::loadClosest(($this->isMariaDb ? 'MariaDb' : 'MySql') . $this->versionInt);
11471149

1148-
/**
1149-
* the DatabaseList class as a stub for the ListDatabase class
1150-
*/
1151-
$GLOBALS['dblist'] = new DatabaseList();
1150+
$this->databaseList = null;
11521151
}
11531152

11541153
/**
@@ -1190,14 +1189,11 @@ public function setCollation(string $collation): void
11901189
public function postConnectControl(Relation $relation): void
11911190
{
11921191
// If Zero configuration mode enabled, check PMA tables in current db.
1193-
if ($GLOBALS['cfg']['ZeroConf'] != true) {
1192+
if (! $GLOBALS['cfg']['ZeroConf']) {
11941193
return;
11951194
}
11961195

1197-
/**
1198-
* the DatabaseList class as a stub for the ListDatabase class
1199-
*/
1200-
$GLOBALS['dblist'] = new DatabaseList();
1196+
$this->databaseList = null;
12011197

12021198
$relation->initRelationParamsCache();
12031199
}
@@ -2108,4 +2104,13 @@ public function prepare(string $query, $link = self::CONNECT_USER)
21082104
{
21092105
return $this->extension->prepare($this->links[$link], $query);
21102106
}
2107+
2108+
public function getDatabaseList(): ListDatabase
2109+
{
2110+
if ($this->databaseList === null) {
2111+
$this->databaseList = new ListDatabase();
2112+
}
2113+
2114+
return $this->databaseList;
2115+
}
21112116
}

libraries/classes/Export.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ public function exportServer(
594594
}
595595

596596
// Walk over databases
597-
foreach ($GLOBALS['dblist']->databases as $currentDb) {
597+
foreach ($this->dbi->getDatabaseList() as $currentDb) {
598598
if (! isset($tmpSelect) || ! mb_strpos(' ' . $tmpSelect, '|' . $currentDb . '|')) {
599599
continue;
600600
}

libraries/classes/Export/Options.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public function getDatabasesForSelectOptions($tmpSelect = '')
6767
}
6868

6969
$databases = [];
70-
foreach ($GLOBALS['dblist']->databases as $currentDb) {
70+
foreach ($GLOBALS['dbi']->getDatabaseList() as $currentDb) {
7171
if (Utilities::isSystemSchema($currentDb, true)) {
7272
continue;
7373
}

0 commit comments

Comments
 (0)