installer: Add support for PlatformSettings.php
authorKunal Mehta <legoktm@member.fsf.org>
Mon, 2 Apr 2018 22:27:18 +0000 (15:27 -0700)
committerKrinkle <krinklemail@gmail.com>
Tue, 10 Apr 2018 02:51:02 +0000 (02:51 +0000)
PlatformSettings.php is a standardized and recommended way for
re-distributors and packagers of MediaWiki to be able to tune
DefaultSettings.php as appropriate.

If includes/PlatformSettings.php exists, the installer will
automatically include it as part of the generated LocalSettings.php.

The main advantage of this system is that if the distributor wants to
change the default settings, all users will benefit immediately. And if
people want a vanilla MediaWiki experience, they can just remove the
inclusion from their LocalSettings.php.

This RfC
(<https://www.mediawiki.org/wiki/Requests_for_comment/PlatformSettings.php>)
was approved by TechCom.

Bug: T182020
Change-Id: I34f9a4acbe86b9c5c80ac16451b317ce5f6640f9

docs/distributors.txt
includes/installer/LocalSettingsGenerator.php

index 7581110..729dffa 100644 (file)
@@ -87,10 +87,15 @@ which the user can edit by hand thereafter. It's just a plain old PHP file,
 and can contain any PHP statements. It usually sets global variables that are
 used for configuration, and includes files used by any extensions.
 
-Distributors can easily change the installer behavior, including LocalSettings
-generated, by placing their overrides into mw-config/overrides directory. Doing
-that is highly preferred to modifying MediaWiki code directly. See
-mw-config/overrides/README for more details and examples.
+Distributors can easily change the default settings by creating
+includes/PlatformSettings.php with overrides/additions to the default settings.
+The installer will automatically include the platform defaults when generating
+the user's LocalSettings.php file.
+
+Furthermore, distributors can change the installer behavior, by placing their
+overrides into mw-config/overrides directory. Doing that is highly preferred
+to modifying MediaWiki code directly. See mw-config/overrides/README for more
+details and examples.
 
 There's a new maintenance/install.php script which could be used for performing
 an install through the command line.
index b4ef49d..6d70338 100644 (file)
@@ -299,6 +299,12 @@ class LocalSettingsGenerator {
                }
 
                $mcservers = $this->buildMemcachedServerList();
+               if ( file_exists( dirname( __DIR__ ) . '/PlatformSettings.php' ) ) {
+                       $platformSettings = "\n## Include platform/distribution defaults";
+                       $platformSettings .= "\nrequire_once \"\$IP/includes/PlatformSettings.php\";";
+               } else {
+                       $platformSettings = '';
+               }
 
                return "<?php
 # This file was automatically generated by the MediaWiki {$GLOBALS['wgVersion']}
@@ -316,6 +322,7 @@ class LocalSettingsGenerator {
 if ( !defined( 'MEDIAWIKI' ) ) {
        exit;
 }
+{$platformSettings}
 
 ## Uncomment this to disable output compression
 # \$wgDisableOutputCompression = true;