MediaWiki master
WikiFarmSettingsLoader.php
Go to the documentation of this file.
1<?php
2
3namespace MediaWiki\Settings;
4
6
16
17 private SettingsBuilder $settingsBuilder;
18
19 public function __construct( SettingsBuilder $settingsBuilder ) {
20 $this->settingsBuilder = $settingsBuilder;
21 }
22
36 public function loadWikiFarmSettings() {
37 $config = $this->settingsBuilder->getConfig();
38
39 $farmDir = $config->get( MainConfigNames::WikiFarmSettingsDirectory );
40 $farmExt = $config->get( MainConfigNames::WikiFarmSettingsExtension );
41
42 if ( !$farmDir ) {
43 return;
44 }
45
46 $site = null;
47 $wikiName = $this->getWikiNameConstant();
48 if ( $wikiName !== null ) {
49 // The MW_WIKI_NAME constant is used to control the target wiki when running CLI scripts.
50 // Maintenance.php sets it to the value of the --wiki option.
51 $site = $wikiName;
52 } elseif ( isset( $_SERVER['MW_WIKI_NAME'] ) ) {
53 // The MW_WIKI_NAME environment variable is used to set the target wiki
54 // via web server configuration, e.g. using Apache's SetEnv directive.
55 // For maintenance scripts, it may be set as an environment variable,
56 // or by using the --wiki option.
57 $site = $_SERVER['MW_WIKI_NAME'];
58 } elseif ( isset( $_SERVER['WIKI_NAME'] ) ) {
59 // In 1.38, experimental support for wiki farms was added using the
60 // "WIKI_NAME" server variable. This has been changed to "MW_WIKI_NAME"
61 // in 1.39.
62 $site = $_SERVER['WIKI_NAME'];
63
64 // NOTE: We can't use wfDeprecatedMsg here, MediaWiki hasn't been initialized yet.
65 trigger_error(
66 'The WIKI_NAME server variable has been deprecated since 1.39, ' .
67 'use MW_WIKI_NAME instead.'
68 );
69 }
70
71 if ( !$site ) {
72 return;
73 }
74
75 $path = "$farmDir/$site.$farmExt";
76 if ( $this->settingsBuilder->fileExists( $path ) ) {
77 $this->settingsBuilder->loadFile( $path );
78 }
79 }
80
86 protected function getWikiNameConstant() {
87 return defined( 'MW_WIKI_NAME' ) ? MW_WIKI_NAME : null;
88 }
89
90}
A class containing constants representing the names of configuration variables.
const WikiFarmSettingsExtension
Name constant for the WikiFarmSettingsExtension setting, for use with Config::get()
const WikiFarmSettingsDirectory
Name constant for the WikiFarmSettingsDirectory setting, for use with Config::get()
Builder class for constructing a Config object from a set of sources during bootstrap.
Utility for loading site-specific settings in a multi-tenancy ("wiki farm" or "wiki family") environm...
__construct(SettingsBuilder $settingsBuilder)
getWikiNameConstant()
Access MW_WIKI_NAME in a way that can be overridden by tests.
loadWikiFarmSettings()
Loads any site-specific settings in a multi-tenant (wiki-farm) environment.