Skip to content

Commit 1fc7f7f

Browse files
Merge pull request #18626 from MauricioFauth/config-global
Replace config global with Config singleton
2 parents d5e2ddb + 9e9611d commit 1fc7f7f

77 files changed

Lines changed: 340 additions & 836 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

libraries/classes/Application.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,6 @@ public static function init(): self
7979

8080
public function run(bool $isSetupPage = false): void
8181
{
82-
$GLOBALS['config'] = $this->config;
83-
8482
$requestHandler = new QueueRequestHandler(new ApplicationHandler($this));
8583
$requestHandler->add(new ErrorHandling($this->errorHandler));
8684
$requestHandler->add(new OutputBuffering());

libraries/classes/Command/CacheWarmupCommand.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,11 @@ private function warmUpTwigCache(
117117
string $environment,
118118
bool $writeReplacements,
119119
): int {
120-
$GLOBALS['config'] ??= null;
121-
122120
$output->writeln('Warming up the twig cache', OutputInterface::VERBOSITY_VERBOSE);
123-
$GLOBALS['config'] = new Config();
124-
$GLOBALS['config']->loadAndCheck(CONFIG_FILE);
121+
$config = Config::getInstance();
122+
$config->loadAndCheck(CONFIG_FILE);
125123
$GLOBALS['cfg']['environment'] = $environment;
126-
$GLOBALS['config']->set('environment', $GLOBALS['cfg']['environment']);
124+
$config->set('environment', $GLOBALS['cfg']['environment']);
127125
$GLOBALS['dbi'] = new DatabaseInterface(new DbiDummy());
128126
$tmpDir = ROOT_PATH . 'twig-templates';
129127
$twig = Template::getTwigEnvironment($tmpDir);

libraries/classes/Config.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@
7272
*/
7373
class Config
7474
{
75+
public static self|null $instance = null;
76+
7577
/** @var mixed[] default configuration settings */
7678
public array $default;
7779

@@ -107,6 +109,15 @@ public function __construct()
107109
$this->baseSettings = $config;
108110
}
109111

112+
public static function getInstance(): self
113+
{
114+
if (self::$instance === null) {
115+
self::$instance = new self();
116+
}
117+
118+
return self::$instance;
119+
}
120+
110121
/**
111122
* @param string|null $source source to read config from
112123
*

libraries/classes/Config/FormDisplay.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
namespace PhpMyAdmin\Config;
1616

17+
use PhpMyAdmin\Config;
1718
use PhpMyAdmin\Config\Forms\User\UserFormList;
1819
use PhpMyAdmin\Html\MySQLDocumentation;
1920
use PhpMyAdmin\Sanitize;
@@ -99,7 +100,7 @@ class FormDisplay
99100

100101
public function __construct(private ConfigFile $configFile)
101102
{
102-
$this->formDisplayTemplate = new FormDisplayTemplate($GLOBALS['config']);
103+
$this->formDisplayTemplate = new FormDisplayTemplate(Config::getInstance());
103104
$this->isSetupScript = Sanitize::isSetup();
104105
// initialize validators
105106
Validator::getValidators($this->configFile);
@@ -542,7 +543,7 @@ public function save(array $forms, bool $allowPartialSave = true): bool
542543
$result = true;
543544
$values = [];
544545
$toSave = [];
545-
$isSetupScript = $GLOBALS['config']->get('is_setup');
546+
$isSetupScript = Config::getInstance()->get('is_setup');
546547
if ($isSetupScript) {
547548
$this->loadUserprefsInfo();
548549
}
@@ -744,7 +745,7 @@ private function loadUserprefsInfo(): void
744745

745746
$this->userprefsKeys = array_flip(UserFormList::getFields());
746747
// read real config for user preferences display
747-
$userPrefsDisallow = $GLOBALS['config']->get('is_setup')
748+
$userPrefsDisallow = Config::getInstance()->get('is_setup')
748749
? $this->configFile->get('UserprefsDisallow', [])
749750
: $GLOBALS['cfg']['UserprefsDisallow'];
750751
$this->userprefsDisallow = array_flip($userPrefsDisallow ?? []);
@@ -805,7 +806,7 @@ private function setComments(string $systemPath, array &$opts): void
805806
$opts['comment_warning'] = true;
806807
}
807808

808-
if ($GLOBALS['config']->get('is_setup')) {
809+
if (Config::getInstance()->get('is_setup')) {
809810
return;
810811
}
811812

libraries/classes/Config/PageSettings.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
namespace PhpMyAdmin\Config;
99

10+
use PhpMyAdmin\Config;
1011
use PhpMyAdmin\Config\Forms\Page\PageFormList;
1112
use PhpMyAdmin\Message;
1213
use PhpMyAdmin\ResponseRenderer;
@@ -64,7 +65,7 @@ public function init(string $formGroupName, string|null $elemId = null): void
6465

6566
$this->groupName = $formGroupName;
6667

67-
$cf = new ConfigFile($GLOBALS['config']->baseSettings);
68+
$cf = new ConfigFile(Config::getInstance()->baseSettings);
6869
$this->userPreferences->pageInit($cf);
6970

7071
$formDisplay = new $formClass($cf);

libraries/classes/Config/Validator.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
namespace PhpMyAdmin\Config;
99

10+
use PhpMyAdmin\Config;
1011
use PhpMyAdmin\Core;
1112
use PhpMyAdmin\Sanitize;
1213
use PhpMyAdmin\Util;
@@ -71,7 +72,8 @@ public static function getValidators(ConfigFile $cf): array
7172
}
7273

7374
$validators = $cf->getDbEntry('_validators', []);
74-
if ($GLOBALS['config']->get('is_setup')) {
75+
$config = Config::getInstance();
76+
if ($config->get('is_setup')) {
7577
return $validators;
7678
}
7779

@@ -94,7 +96,7 @@ public static function getValidators(ConfigFile $cf): array
9496

9597
$uv[$i] = Core::arrayRead(
9698
mb_substr($uv[$i], 6),
97-
$GLOBALS['config']->baseSettings,
99+
$config->baseSettings,
98100
);
99101
}
100102
}

libraries/classes/Controllers/Database/ImportController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace PhpMyAdmin\Controllers\Database;
66

77
use PhpMyAdmin\Charsets;
8+
use PhpMyAdmin\Config;
89
use PhpMyAdmin\Config\PageSettings;
910
use PhpMyAdmin\Controllers\AbstractController;
1011
use PhpMyAdmin\DatabaseInterface;
@@ -101,7 +102,8 @@ public function __invoke(ServerRequest $request): void
101102
$options = Plugins::getOptions('Import', $importList);
102103
$skipQueriesDefault = Plugins::getDefault('Import', 'skip_queries');
103104
$isAllowInterruptChecked = Plugins::checkboxCheck('Import', 'allow_interrupt');
104-
$maxUploadSize = (int) $GLOBALS['config']->get('max_upload_size');
105+
$config = Config::getInstance();
106+
$maxUploadSize = (int) $config->get('max_upload_size');
105107

106108
$this->render('database/import/index', [
107109
'page_settings_error_html' => $pageSettingsErrorHtml,
@@ -118,7 +120,7 @@ public function __invoke(ServerRequest $request): void
118120
'skip_queries_default' => $skipQueriesDefault,
119121
'is_allow_interrupt_checked' => $isAllowInterruptChecked,
120122
'local_import_file' => $localImportFile,
121-
'is_upload' => $GLOBALS['config']->get('enable_upload'),
123+
'is_upload' => $config->get('enable_upload'),
122124
'upload_dir' => $GLOBALS['cfg']['UploadDir'] ?? null,
123125
'timeout_passed_global' => $GLOBALS['timeout_passed'] ?? null,
124126
'compressions' => $compressions,

libraries/classes/Controllers/Preferences/ManageController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ public function __invoke(ServerRequest $request): void
260260

261261
$this->render('preferences/manage/main', [
262262
'error' => $GLOBALS['error'],
263-
'max_upload_size' => $GLOBALS['config']->get('max_upload_size'),
263+
'max_upload_size' => Config::getInstance()->get('max_upload_size'),
264264
'exists_setup_and_not_exists_config' => @file_exists(ROOT_PATH . 'setup/index.php')
265265
&& ! @file_exists(CONFIG_FILE),
266266
]);

libraries/classes/Controllers/Server/ImportController.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace PhpMyAdmin\Controllers\Server;
66

77
use PhpMyAdmin\Charsets;
8+
use PhpMyAdmin\Config;
89
use PhpMyAdmin\Config\PageSettings;
910
use PhpMyAdmin\Controllers\AbstractController;
1011
use PhpMyAdmin\DatabaseInterface;
@@ -84,7 +85,8 @@ public function __invoke(ServerRequest $request): void
8485
$options = Plugins::getOptions('Import', $importList);
8586
$skipQueriesDefault = Plugins::getDefault('Import', 'skip_queries');
8687
$isAllowInterruptChecked = Plugins::checkboxCheck('Import', 'allow_interrupt');
87-
$maxUploadSize = (int) $GLOBALS['config']->get('max_upload_size');
88+
$config = Config::getInstance();
89+
$maxUploadSize = (int) $config->get('max_upload_size');
8890

8991
$this->render('server/import/index', [
9092
'page_settings_error_html' => $pageSettingsErrorHtml,
@@ -101,7 +103,7 @@ public function __invoke(ServerRequest $request): void
101103
'skip_queries_default' => $skipQueriesDefault,
102104
'is_allow_interrupt_checked' => $isAllowInterruptChecked,
103105
'local_import_file' => $localImportFile,
104-
'is_upload' => $GLOBALS['config']->get('enable_upload'),
106+
'is_upload' => $config->get('enable_upload'),
105107
'upload_dir' => $GLOBALS['cfg']['UploadDir'] ?? null,
106108
'timeout_passed_global' => $GLOBALS['timeout_passed'] ?? null,
107109
'compressions' => $compressions,

libraries/classes/Controllers/Setup/HomeController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace PhpMyAdmin\Controllers\Setup;
66

7+
use PhpMyAdmin\Config;
78
use PhpMyAdmin\Config\ServerConfigChecks;
89
use PhpMyAdmin\LanguageManager;
910
use PhpMyAdmin\Setup\Index;
@@ -94,7 +95,7 @@ public function __invoke(array $params): string
9495
'has_check_page_refresh' => $hasCheckPageRefresh,
9596
'eol' => isset($_SESSION['eol']) && is_scalar($_SESSION['eol'])
9697
? $_SESSION['eol']
97-
: ($GLOBALS['config']->get('PMA_IS_WINDOWS') ? 'win' : 'unix'),
98+
: (Config::getInstance()->get('PMA_IS_WINDOWS') ? 'win' : 'unix'),
9899
]);
99100
}
100101
}

0 commit comments

Comments
 (0)