diff options
Diffstat (limited to 'includes/installer/LocalSettingsGenerator.php')
-rw-r--r-- | includes/installer/LocalSettingsGenerator.php | 112 |
1 files changed, 58 insertions, 54 deletions
diff --git a/includes/installer/LocalSettingsGenerator.php b/includes/installer/LocalSettingsGenerator.php index bbc6b64e..53939826 100644 --- a/includes/installer/LocalSettingsGenerator.php +++ b/includes/installer/LocalSettingsGenerator.php @@ -62,25 +62,25 @@ class LocalSettingsGenerator { 'wgRightsText', 'wgMainCacheType', 'wgEnableUploads', 'wgMainCacheType', '_MemCachedServers', 'wgDBserver', 'wgDBuser', 'wgDBpassword', 'wgUseInstantCommons', 'wgUpgradeKey', 'wgDefaultSkin', - 'wgMetaNamespace', 'wgResourceLoaderMaxQueryLength' + 'wgMetaNamespace', 'wgResourceLoaderMaxQueryLength', 'wgLogo', ), $db->getGlobalNames() ); - $unescaped = array( 'wgRightsIcon' ); + $unescaped = array( 'wgRightsIcon', 'wgLogo' ); $boolItems = array( 'wgEnableEmail', 'wgEnableUserEmail', 'wgEnotifUserTalk', 'wgEnotifWatchlist', 'wgEmailAuthentication', 'wgEnableUploads', 'wgUseInstantCommons' ); - foreach( $confItems as $c ) { + foreach ( $confItems as $c ) { $val = $installer->getVar( $c ); - if( in_array( $c, $boolItems ) ) { + if ( in_array( $c, $boolItems ) ) { $val = wfBoolToStr( $val ); } - if ( !in_array( $c, $unescaped ) ) { + if ( !in_array( $c, $unescaped ) && $val !== null ) { $val = self::escapePhpString( $val ); } @@ -94,8 +94,8 @@ class LocalSettingsGenerator { /** * For $wgGroupPermissions, set a given ['group']['permission'] value. - * @param $group String Group name - * @param $rightsArr Array An array of permissions, in the form of: + * @param string $group Group name + * @param array $rightsArr An array of permissions, in the form of: * array( 'right' => true, 'right2' => false ) */ public function setGroupRights( $group, $rightsArr ) { @@ -136,15 +136,22 @@ class LocalSettingsGenerator { public function getText() { $localSettings = $this->getDefaultText(); - if( count( $this->extensions ) ) { + if ( count( $this->extensions ) ) { + $extensions = $this->installer->findExtensions(); $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_once( \"\$IP/extensions/$encExtName/$encExtName.php\" );\n"; + $ip = $this->installer->getVar( 'IP' ); + foreach ( $this->extensions as $ext) { + $path = str_replace( $ip, '', $extensions[$ext]['path'] ); + $prefix = ''; + if ( $path !== $extensions[$ext]['path'] ) { + $prefix = '$IP'; + } + $path = $prefix . self::escapePhpString( $path ); + $localSettings .= "require_once \"$path\";\n"; } } @@ -157,7 +164,7 @@ class LocalSettingsGenerator { /** * Write the generated LocalSettings to a file * - * @param $fileName String Full path to filename to write to + * @param string $fileName Full path to filename to write to */ public function writeFile( $fileName ) { file_put_contents( $fileName, $this->getText() ); @@ -169,13 +176,13 @@ class LocalSettingsGenerator { protected function buildMemcachedServerList() { $servers = $this->values['_MemCachedServers']; - if( !$servers ) { + if ( !$servers ) { return 'array()'; } else { $ret = 'array( '; $servers = explode( ',', $servers ); - foreach( $servers as $srv ) { + foreach ( $servers as $srv ) { $srv = trim( $srv ); $ret .= "'$srv', "; } @@ -188,33 +195,33 @@ class LocalSettingsGenerator { * @return String */ protected function getDefaultText() { - if( !$this->values['wgImageMagickConvertCommand'] ) { + if ( !$this->values['wgImageMagickConvertCommand'] ) { $this->values['wgImageMagickConvertCommand'] = '/usr/bin/convert'; $magic = '#'; } else { $magic = ''; } - if( !$this->values['wgShellLocale'] ) { + if ( !$this->values['wgShellLocale'] ) { $this->values['wgShellLocale'] = 'en_US.UTF-8'; $locale = '#'; } else { $locale = ''; } - //$rightsUrl = $this->values['wgRightsUrl'] ? '' : '#'; // TODO: Fixme, I'm unused! + //$rightsUrl = $this->values['wgRightsUrl'] ? '' : '#'; // @todo FIXME: I'm unused! $hashedUploads = $this->safeMode ? '' : '#'; $metaNamespace = ''; - if( $this->values['wgMetaNamespace'] !== $this->values['wgSitename'] ) { + if ( $this->values['wgMetaNamespace'] !== $this->values['wgSitename'] ) { $metaNamespace = "\$wgMetaNamespace = \"{$this->values['wgMetaNamespace']}\";\n"; } $groupRights = ''; - if( $this->groupPermissions ) { + if ( $this->groupPermissions ) { $groupRights .= "# The following permissions were set based on your choice in the installer\n"; - foreach( $this->groupPermissions as $group => $rightArr ) { + foreach ( $this->groupPermissions as $group => $rightArr ) { $group = self::escapePhpString( $group ); - foreach( $rightArr as $right => $perm ) { + foreach ( $rightArr as $right => $perm ) { $right = self::escapePhpString( $right ); $groupRights .= "\$wgGroupPermissions['$group']['$right'] = " . wfBoolToStr( $perm ) . ";\n"; @@ -222,12 +229,18 @@ class LocalSettingsGenerator { } } - switch( $this->values['wgMainCacheType'] ) { + $wgServerSetting = ""; + if ( array_key_exists( 'wgServer', $this->values ) && $this->values['wgServer'] !== null ) { + $wgServerSetting = "\n## The protocol and server name to use in fully-qualified URLs\n"; + $wgServerSetting .= "\$wgServer = \"{$this->values['wgServer']}\";\n"; + } + + switch ( $this->values['wgMainCacheType'] ) { case 'anything': case 'db': case 'memcached': case 'accel': - $cacheType = 'CACHE_' . strtoupper( $this->values['wgMainCacheType']); + $cacheType = 'CACHE_' . strtoupper( $this->values['wgMainCacheType'] ); break; case 'none': default: @@ -235,6 +248,7 @@ class LocalSettingsGenerator { } $mcservers = $this->buildMemcachedServerList(); + return "<?php # This file was automatically generated by the MediaWiki {$GLOBALS['wgVersion']} # installer. If you make manual changes, please keep track in case you @@ -255,59 +269,56 @@ if ( !defined( 'MEDIAWIKI' ) ) { ## Uncomment this to disable output compression # \$wgDisableOutputCompression = true; -\$wgSitename = \"{$this->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 ## (like /w/index.php/Page_title to /wiki/Page_title) please see: ## http://www.mediawiki.org/wiki/Manual:Short_URL -\$wgScriptPath = \"{$this->values['wgScriptPath']}\"; -\$wgScriptExtension = \"{$this->values['wgScriptExtension']}\"; - -## The protocol and server name to use in fully-qualified URLs -\$wgServer = \"{$this->values['wgServer']}\"; - +\$wgScriptPath = \"{$this->values['wgScriptPath']}\"; +\$wgScriptExtension = \"{$this->values['wgScriptExtension']}\"; +${wgServerSetting} ## The relative URL path to the skins directory -\$wgStylePath = \"\$wgScriptPath/skins\"; +\$wgStylePath = \"\$wgScriptPath/skins\"; ## The relative URL path to the logo. Make sure you change this from the default, ## or else you'll overwrite your logo when you upgrade! -\$wgLogo = \"\$wgStylePath/common/images/wiki.png\"; +\$wgLogo = \"{$this->values['wgLogo']}\"; ## UPO means: this is also a user preference option -\$wgEnableEmail = {$this->values['wgEnableEmail']}; -\$wgEnableUserEmail = {$this->values['wgEnableUserEmail']}; # UPO +\$wgEnableEmail = {$this->values['wgEnableEmail']}; +\$wgEnableUserEmail = {$this->values['wgEnableUserEmail']}; # UPO \$wgEmergencyContact = \"{$this->values['wgEmergencyContact']}\"; -\$wgPasswordSender = \"{$this->values['wgPasswordSender']}\"; +\$wgPasswordSender = \"{$this->values['wgPasswordSender']}\"; -\$wgEnotifUserTalk = {$this->values['wgEnotifUserTalk']}; # UPO -\$wgEnotifWatchlist = {$this->values['wgEnotifWatchlist']}; # UPO +\$wgEnotifUserTalk = {$this->values['wgEnotifUserTalk']}; # UPO +\$wgEnotifWatchlist = {$this->values['wgEnotifWatchlist']}; # UPO \$wgEmailAuthentication = {$this->values['wgEmailAuthentication']}; ## Database settings -\$wgDBtype = \"{$this->values['wgDBtype']}\"; -\$wgDBserver = \"{$this->values['wgDBserver']}\"; -\$wgDBname = \"{$this->values['wgDBname']}\"; -\$wgDBuser = \"{$this->values['wgDBuser']}\"; -\$wgDBpassword = \"{$this->values['wgDBpassword']}\"; +\$wgDBtype = \"{$this->values['wgDBtype']}\"; +\$wgDBserver = \"{$this->values['wgDBserver']}\"; +\$wgDBname = \"{$this->values['wgDBname']}\"; +\$wgDBuser = \"{$this->values['wgDBuser']}\"; +\$wgDBpassword = \"{$this->values['wgDBpassword']}\"; {$this->dbSettings} ## Shared memory settings -\$wgMainCacheType = $cacheType; +\$wgMainCacheType = $cacheType; \$wgMemCachedServers = $mcservers; ## To enable image uploads, make sure the 'images' directory ## is writable, then set this to true: -\$wgEnableUploads = {$this->values['wgEnableUploads']}; +\$wgEnableUploads = {$this->values['wgEnableUploads']}; {$magic}\$wgUseImageMagick = true; {$magic}\$wgImageMagickConvertCommand = \"{$this->values['wgImageMagickConvertCommand']}\"; # InstantCommons allows wiki to use images from http://commons.wikimedia.org -\$wgUseInstantCommons = {$this->values['wgUseInstantCommons']}; +\$wgUseInstantCommons = {$this->values['wgUseInstantCommons']}; ## If you use ImageMagick (or any other shell command) on a ## Linux server, this will need to be set to the name of an @@ -335,27 +346,20 @@ if ( !defined( 'MEDIAWIKI' ) ) { \$wgUpgradeKey = \"{$this->values['wgUpgradeKey']}\"; ## Default skin: you can change the default skin. Use the internal symbolic -## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook', 'vector': +## names, ie 'cologneblue', 'monobook', 'vector': \$wgDefaultSkin = \"{$this->values['wgDefaultSkin']}\"; ## For attaching licensing metadata to pages, and displaying an ## appropriate copyright notice / icon. GNU Free Documentation ## License and Creative Commons licenses are supported so far. \$wgRightsPage = \"\"; # Set to the title of a wiki page that describes your license/copyright -\$wgRightsUrl = \"{$this->values['wgRightsUrl']}\"; +\$wgRightsUrl = \"{$this->values['wgRightsUrl']}\"; \$wgRightsText = \"{$this->values['wgRightsText']}\"; \$wgRightsIcon = \"{$this->values['wgRightsIcon']}\"; # Path to the GNU diff3 utility. Used for conflict resolution. \$wgDiff3 = \"{$this->values['wgDiff3']}\"; -# Query string length limit for ResourceLoader. You should only set this if -# your web server has a query string length limit (then set it to that limit), -# or if you have suhosin.get.max_value_length set in php.ini (then set it to -# that value) -\$wgResourceLoaderMaxQueryLength = {$this->values['wgResourceLoaderMaxQueryLength']}; - {$groupRights}"; } - } |