X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Finstaller%2FLocalSettingsGenerator.php;h=5439430effcbc32f5a8e0d76983c135987e23d4b;hb=a90c8f87b2e7c2d26d148b1d2679e02441539291;hp=d09a56f760ef82734c8b0969c3aaf8e773ec4601;hpb=f5b43f4ecdfb9dd8bb1aec64a0b40d040a007e9d;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/installer/LocalSettingsGenerator.php b/includes/installer/LocalSettingsGenerator.php index d09a56f760..5439430eff 100644 --- a/includes/installer/LocalSettingsGenerator.php +++ b/includes/installer/LocalSettingsGenerator.php @@ -1,19 +1,24 @@ installer = $installer; - - $this->configPath = $installer->getVar( 'IP' ) . '/config'; + $this->extensions = $installer->getVar( '_Extensions' ); - + $db = $installer->getDBInstaller( $installer->getVar( 'wgDBtype' ) ); $confItems = array_merge( @@ -41,31 +45,32 @@ class LocalSettingsGenerator { 'wgDBtype', 'wgSecretKey', 'wgRightsUrl', 'wgSitename', 'wgRightsIcon', 'wgRightsText', 'wgRightsCode', 'wgMainCacheType', 'wgEnableUploads', 'wgMainCacheType', '_MemCachedServers', 'wgDBserver', 'wgDBuser', - 'wgDBpassword', 'wgUseInstantCommons' + 'wgDBpassword', 'wgUseInstantCommons', 'wgUpgradeKey', 'wgDefaultSkin', + 'wgMetaNamespace' ), $db->getGlobalNames() ); - + $unescaped = array( 'wgRightsIcon' ); - $boolItems = array( + $boolItems = array( 'wgEnableEmail', 'wgEnableUserEmail', 'wgEnotifUserTalk', 'wgEnotifWatchlist', 'wgEmailAuthentication', 'wgEnableUploads', 'wgUseInstantCommons' ); - + foreach( $confItems as $c ) { $val = $installer->getVar( $c ); - + if( in_array( $c, $boolItems ) ) { $val = wfBoolToStr( $val ); } - + if ( !in_array( $c, $unescaped ) ) { $val = self::escapePhpString( $val ); } - + $this->values[$c] = $val; } - + $this->dbSettings = $db->getLocalSettings(); $this->safeMode = $installer->getVar( '_SafeMode' ); $this->values['wgEmergencyContact'] = $this->values['wgPasswordSender']; @@ -73,16 +78,16 @@ class LocalSettingsGenerator { /** * Returns the escaped version of a string of php code. - * + * * @param $string String - * + * * @return String */ public static function escapePhpString( $string ) { if ( is_array( $string ) || is_object( $string ) ) { return false; } - + return strtr( $string, array( @@ -99,47 +104,63 @@ class LocalSettingsGenerator { /** * Return the full text of the generated LocalSettings.php file, * including the extensions - * + * * @return String */ public function getText() { $localSettings = $this->getDefaultText(); - + if( count( $this->extensions ) ) { - $localSettings .= "\n# The following extensions were automatically enabled:\n"; - - foreach( $this->extensions as $ext ) { - $localSettings .= "require( 'extensions/$ext/$ext.php' );\n"; + $localSettings .= " +# Enabled Extensions. Most extensions are enabled by including the base extension file here +# but check specific extension documentation for more details +# The following extensions were automatically enabled:\n"; + + foreach( $this->extensions as $extName ) { + $encExtName = self::escapePhpString( $extName ); + $localSettings .= "require( \"extensions/$encExtName/$encExtName.php\" );\n"; } } + $localSettings .= "\n\n# End of automatically generated settings. +# Add more configuration options below.\n\n"; + return $localSettings; } + /** + * Write the generated LocalSettings to a file + * + * @param $fileName String Full path to filename to write to + */ + public function writeFile( $fileName ) { + file_put_contents( $fileName, $this->getText() ); + } + /** * @return String */ private function buildMemcachedServerList() { $servers = $this->values['_MemCachedServers']; - + if( !$servers ) { return 'array()'; } else { $ret = 'array( '; $servers = explode( ',', $servers ); - + foreach( $servers as $srv ) { $srv = trim( $srv ); $ret .= "'$srv', "; } - + return rtrim( $ret, ', ' ) . ' )'; } } /** * @return String - */ + */ private function getDefaultText() { if( !$this->values['wgImageMagickConvertCommand'] ) { $this->values['wgImageMagickConvertCommand'] = '/usr/bin/convert'; @@ -147,17 +168,21 @@ class LocalSettingsGenerator { } else { $magic = ''; } - + if( !$this->values['wgShellLocale'] ) { $this->values['wgShellLocale'] = 'en_US.UTF-8'; $locale = '#'; } else { $locale = ''; } - + $rights = $this->values['wgRightsUrl'] ? '' : '#'; - $hashedUploads = $this->safeMode ? '#' : ''; - + $hashedUploads = $this->safeMode ? '' : '#'; + $metaNamespace = ''; + if( $this->values['wgMetaNamespace'] !== $this->values['wgSitename'] ) { + $metaNamespace = "\$wgMetaNamespace = \"{$this->values['wgMetaNamespace']}\";\n"; + } + switch( $this->values['wgMainCacheType'] ) { case 'anything': case 'db': @@ -169,7 +194,7 @@ class LocalSettingsGenerator { default: $cacheType = 'CACHE_NONE'; } - + $mcservers = $this->buildMemcachedServerList(); return "values['wgSitename']}\"; - +\$wgSitename = \"{$this->values['wgSitename']}\"; +{$metaNamespace} ## The URL base path to the directory containing the wiki; ## defaults for all runtime URL paths are based off of this. ## For more information on customizing the URLs please see: @@ -271,16 +286,18 @@ if ( \$wgCommandLineMode ) { ## be publically accessible from the web. #\$wgCacheDirectory = \"\$IP/cache\"; -\$wgLocalInterwiki = strtolower( \$wgSitename ); - # Site language code, should be one of ./languages/Language(.*).php \$wgLanguageCode = \"{$this->values['wgLanguageCode']}\"; \$wgSecretKey = \"{$this->values['wgSecretKey']}\"; +# Site upgrade key. Must be set to a string (default provided) to turn on the +# web installer while LocalSettings.php is in place +\$wgUpgradeKey = \"{$this->values['wgUpgradeKey']}\"; + ## Default skin: you can change the default skin. Use the internal symbolic ## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook', 'vector': -\$wgDefaultSkin = 'vector'; +\$wgDefaultSkin = \"{$this->values['wgDefaultSkin']}\"; ## For attaching licensing metadata to pages, and displaying an ## appropriate copyright notice / icon. GNU Free Documentation @@ -294,11 +311,7 @@ if ( \$wgCommandLineMode ) { # Path to the GNU diff3 utility. Used for conflict resolution. \$wgDiff3 = \"{$this->values['wgDiff3']}\"; - -# When you make changes to this configuration file, this will make -# sure that cached pages are cleared. -\$wgCacheEpoch = max( \$wgCacheEpoch, gmdate( 'YmdHis', @filemtime( __FILE__ ) ) ); "; } - -} \ No newline at end of file + +}