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 // Non-config globals available to LocalSettings
49 //
50 // NOTE: Keep in sync with Installer::getExistingLocalSettings
51 //
52 // phpcs:ignore MediaWiki.VariableAnalysis.UnusedGlobalVariables, MediaWiki.Usage.DeprecatedGlobalVariables
54
55 // make additional variables available
56 // phpcs:ignore MediaWiki.VariableAnalysis.MisleadingGlobalNames.Misleading$wgSettings
57 $wgSettings = $this->settingsBuilder;
58 $IP = $this->baseDir;
59
60 // pull in the actual settings file
61 $file = SettingsFileUtils::resolveRelativeLocation( $file, $this->baseDir );
62 $settings = require $file;
63
64 // Capture config variables.
65 $overrides = [];
66 foreach ( get_defined_vars() as $name => $value ) {
67 if ( str_starts_with( $name, 'wg' ) ) {
68 $key = substr( $name, 2 );
69 $overrides[$key] = $value;
70 }
71 }
72
73 $this->settingsBuilder->overrideConfigValues( $overrides );
74
75 // If the file returned a settings array, use it.
76 // This is especially useful for generated PHP files.
77 if ( is_array( $settings ) ) {
78 $this->settingsBuilder->loadArray( $settings );
79 }
80 }
81}
if(!defined('MEDIAWIKI')) if(!defined( 'MW_ENTRY_POINT')) global $IP
Environment checks.
Definition Setup.php:90
$wgConf
$wgConf hold the site configuration.
Definition Setup.php:139
if(!interface_exists(LoggerInterface::class)) $wgCommandLineMode
Pre-config setup: Before loading LocalSettings.php.
Definition Setup.php:132
$wgSettings
Definition Setup.php:143
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.