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
18 public function __construct( SettingsBuilder $settingsBuilder, string $baseDir ) {
19 $this->settingsBuilder = $settingsBuilder;
20 $this->baseDir = $baseDir;
21 }
22
34 public function loadLocalSettingsFile( string $file ) {
35 // If $file is not a PHP file, just load it as a data file.
36 if ( !str_ends_with( $file, '.php' ) ) {
37 $this->settingsBuilder->loadFile( $file );
38 return;
39 }
40
41 // Make config settings available in local scope.
42 $config = $this->settingsBuilder->getConfig();
43 foreach ( $this->settingsBuilder->getDefinedConfigKeys() as $key ) {
44 $var = "wg$key"; // NOTE: broken for extensions that use prefixes other than "wg"!
45 $$var = $config->get( $key ); // XXX: slow?! Can we get the entire array in one go?
46 }
47
48 // make available some non-config globals available
49 // phpcs:ignore MediaWiki.VariableAnalysis.UnusedGlobalVariables.UnusedGlobal$wgCommandLineMode, MediaWiki.Usage.DeprecatedGlobalVariables
50 global $wgCommandLineMode;
51
52 // make additional variables available
53 // phpcs:ignore MediaWiki.VariableAnalysis.MisleadingGlobalNames.Misleading$wgSettings
54 $wgSettings = $this->settingsBuilder;
55 $IP = $this->baseDir;
56
57 // pull in the actual settings file
58 $file = SettingsFileUtils::resolveRelativeLocation( $file, $this->baseDir );
59 $settings = require $file;
60
61 // Capture config variables.
62 $overrides = [];
63 foreach ( get_defined_vars() as $name => $value ) {
64 if ( str_starts_with( $name, 'wg' ) ) {
65 $key = substr( $name, 2 );
66 $overrides[$key] = $value;
67 }
68 }
69
70 $this->settingsBuilder->overrideConfigValues( $overrides );
71
72 // If the file returned a settings array, use it.
73 // This is especially useful for generated PHP files.
74 if ( is_array( $settings ) ) {
75 $this->settingsBuilder->loadArray( $settings );
76 }
77 }
78}
if(!defined( 'MEDIAWIKI')) if(ini_get('mbstring.func_overload')) if(!defined( 'MW_ENTRY_POINT')) global $IP
Environment checks.
Definition Setup.php:108
if(!interface_exists(LoggerInterface::class)) $wgCommandLineMode
Pre-config setup: Before loading LocalSettings.php.
Definition Setup.php:148
$wgSettings
Definition Setup.php:159
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.