MediaWiki master
LocalSettingsLoader.php
Go to the documentation of this file.
1<?php
2
3namespace MediaWiki\Settings;
4
6
13
14 private SettingsBuilder $settingsBuilder;
15
16 private string $baseDir;
17
22 public function __construct( SettingsBuilder $settingsBuilder, string $baseDir ) {
23 $this->settingsBuilder = $settingsBuilder;
24 $this->baseDir = $baseDir;
25 }
26
38 public function loadLocalSettingsFile( string $file ) {
39 // If $file is not a PHP file, just load it as a data file.
40 if ( !str_ends_with( $file, '.php' ) ) {
41 $this->settingsBuilder->loadFile( $file );
42 return;
43 }
44
45 // Make config settings available in local scope.
46 $config = $this->settingsBuilder->getConfig();
47 foreach ( $this->settingsBuilder->getDefinedConfigKeys() as $key ) {
48 $var = "wg$key"; // NOTE: broken for extensions that use prefixes other than "wg"!
49 $$var = $config->get( $key ); // XXX: slow?! Can we get the entire array in one go?
50 }
51
52 // make available some non-config globals available
53 // phpcs:ignore MediaWiki.VariableAnalysis.UnusedGlobalVariables.UnusedGlobal$wgCommandLineMode, MediaWiki.Usage.DeprecatedGlobalVariables
54 global $wgCommandLineMode;
55
56 // make additional variables available
57 // phpcs:ignore MediaWiki.VariableAnalysis.MisleadingGlobalNames.Misleading$wgSettings
58 $wgSettings = $this->settingsBuilder;
59 $IP = $this->baseDir;
60
61 // pull in the actual settings file
62 $file = SettingsFileUtils::resolveRelativeLocation( $file, $this->baseDir );
63 $settings = require $file;
64
65 // Capture config variables.
66 $overrides = [];
67 foreach ( get_defined_vars() as $name => $value ) {
68 if ( str_starts_with( $name, 'wg' ) ) {
69 $key = substr( $name, 2 );
70 $overrides[$key] = $value;
71 }
72 }
73
74 $this->settingsBuilder->overrideConfigValues( $overrides );
75
76 // If the file returned a settings array, use it.
77 // This is especially useful for generated PHP files.
78 if ( is_array( $settings ) ) {
79 $this->settingsBuilder->loadArray( $settings );
80 }
81 }
82}
if(!defined( 'MEDIAWIKI')) if(ini_get('mbstring.func_overload')) if(!defined( 'MW_ENTRY_POINT')) global $IP
Environment checks.
Definition Setup.php:98
if(!interface_exists(LoggerInterface::class)) $wgCommandLineMode
Pre-config setup: Before loading LocalSettings.php.
Definition Setup.php:140
$wgSettings
Definition Setup.php:151
Utility for loading LocalSettings files.
__construct(SettingsBuilder $settingsBuilder, string $baseDir)
loadLocalSettingsFile(string $file)
Loads a settings file into the SettingsBuilder provided to the constructor.
Builder class for constructing a Config object from a set of sources during bootstrap.
A collection of static utility methods for use with settings files.