wiki.techinc.nl/includes/installer/InstallerOverrides.php
Max Semenik d1effacdb1 Change the way installer overrides work
Instead of "don't edit this file, edit that file", do it settings.d
style where packagers can drop their stuff in mw-config/overrides.

I propose to backport it to 1.27 because LTS.

Bug: T135695
Change-Id: I2661ba2036b2887d31ab356751d731cc8b499f26
2016-06-09 17:05:35 +00:00

76 lines
2.3 KiB
PHP

<?php
/**
* MediaWiki installer overrides. See mw-config/overrides/README for details.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
/**
* @since 1.20
*/
class InstallerOverrides {
private static function getOverrides() {
global $IP;
static $overrides;
if ( !$overrides ) {
$overrides = [
'LocalSettingsGenerator' => 'LocalSettingsGenerator',
'WebInstaller' => 'WebInstaller',
'CliInstaller' => 'CliInstaller',
];
foreach ( glob( "$IP/mw-config/overrides/*.php" ) as $file ) {
require $file;
}
}
return $overrides;
}
/**
* Instantiates and returns an instance of LocalSettingsGenerator or its descendant classes
* @param Installer $installer
* @return LocalSettingsGenerator
*/
public static function getLocalSettingsGenerator( Installer $installer ) {
$className = self::getOverrides()['LocalSettingsGenerator'];
return new $className( $installer );
}
/**
* Instantiates and returns an instance of WebInstaller or its descendant classes
* @param WebRequest $request
* @return WebInstaller
*/
public static function getWebInstaller( WebRequest $request ) {
$className = self::getOverrides()['WebInstaller'];
return new $className( $request );
}
/**
* Instantiates and returns an instance of CliInstaller or its descendant classes
* @param string $siteName
* @param string|null $admin
* @param array $options
* @return CliInstaller
*/
public static function getCliInstaller( $siteName, $admin = null, array $options = [] ) {
$className = self::getOverrides()['CliInstaller'];
return new $className( $siteName, $admin, $options );
}
}