From ca32f08966f1b51fcb19460f0996bb0c4048e6fe Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Sat, 3 Dec 2011 13:29:22 +0100 Subject: Update to MediaWiki 1.18.0 * also update ArchLinux skin to chagnes in MonoBook * Use only css to hide our menu bar when printing --- includes/Setup.php | 463 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 265 insertions(+), 198 deletions(-) (limited to 'includes/Setup.php') diff --git a/includes/Setup.php b/includes/Setup.php index 5d348885..815d24eb 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -9,7 +9,7 @@ * This file is not a valid entry point, perform no further processing unless * MEDIAWIKI is defined */ -if( !defined( 'MEDIAWIKI' ) ) { +if ( !defined( 'MEDIAWIKI' ) ) { exit( 1 ); } @@ -29,60 +29,72 @@ if ( !isset( $wgVersion ) ) { } // Set various default paths sensibly... -if( $wgScript === false ) $wgScript = "$wgScriptPath/index$wgScriptExtension"; -if( $wgRedirectScript === false ) $wgRedirectScript = "$wgScriptPath/redirect$wgScriptExtension"; -if( $wgLoadScript === false ) $wgLoadScript = "$wgScriptPath/load$wgScriptExtension"; +if ( $wgScript === false ) $wgScript = "$wgScriptPath/index$wgScriptExtension"; +if ( $wgRedirectScript === false ) $wgRedirectScript = "$wgScriptPath/redirect$wgScriptExtension"; +if ( $wgLoadScript === false ) $wgLoadScript = "$wgScriptPath/load$wgScriptExtension"; -if( $wgArticlePath === false ) { - if( $wgUsePathInfo ) { +if ( $wgArticlePath === false ) { + if ( $wgUsePathInfo ) { $wgArticlePath = "$wgScript/$1"; } else { $wgArticlePath = "$wgScript?title=$1"; } } -if( $wgStylePath === false ) $wgStylePath = "$wgScriptPath/skins"; -if( $wgLocalStylePath === false ) $wgLocalStylePath = "$wgScriptPath/skins"; -if( $wgStyleDirectory === false) $wgStyleDirectory = "$IP/skins"; -if( $wgExtensionAssetsPath === false ) $wgExtensionAssetsPath = "$wgScriptPath/extensions"; +if ( !empty($wgActionPaths) && !isset($wgActionPaths['view']) ) { + # 'view' is assumed the default action path everywhere in the code + # but is rarely filled in $wgActionPaths + $wgActionPaths['view'] = $wgArticlePath; +} + +if ( !empty($wgActionPaths) && !isset($wgActionPaths['view']) ) { + # 'view' is assumed the default action path everywhere in the code + # but is rarely filled in $wgActionPaths + $wgActionPaths['view'] = $wgArticlePath ; +} -if( $wgLogo === false ) $wgLogo = "$wgStylePath/common/images/wiki.png"; +if ( $wgStylePath === false ) $wgStylePath = "$wgScriptPath/skins"; +if ( $wgLocalStylePath === false ) $wgLocalStylePath = "$wgScriptPath/skins"; +if ( $wgStyleDirectory === false ) $wgStyleDirectory = "$IP/skins"; +if ( $wgExtensionAssetsPath === false ) $wgExtensionAssetsPath = "$wgScriptPath/extensions"; -if( $wgUploadPath === false ) $wgUploadPath = "$wgScriptPath/images"; -if( $wgUploadDirectory === false ) $wgUploadDirectory = "$IP/images"; +if ( $wgLogo === false ) $wgLogo = "$wgStylePath/common/images/wiki.png"; -if( $wgMathPath === false ) $wgMathPath = "{$wgUploadPath}/math"; -if( $wgMathDirectory === false ) $wgMathDirectory = "{$wgUploadDirectory}/math"; -if( $wgTmpDirectory === false ) $wgTmpDirectory = "{$wgUploadDirectory}/tmp"; +if ( $wgUploadPath === false ) $wgUploadPath = "$wgScriptPath/images"; +if ( $wgUploadDirectory === false ) $wgUploadDirectory = "$IP/images"; -if( $wgReadOnlyFile === false ) $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR"; -if( $wgFileCacheDirectory === false ) $wgFileCacheDirectory = "{$wgUploadDirectory}/cache"; -if( $wgDeletedDirectory === false ) $wgDeletedDirectory = "{$wgUploadDirectory}/deleted"; +if ( $wgTmpDirectory === false ) $wgTmpDirectory = "{$wgUploadDirectory}/tmp"; -if( isset( $wgFileStore['deleted']['directory'] ) ) { +if ( $wgReadOnlyFile === false ) $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR"; +if ( $wgFileCacheDirectory === false ) $wgFileCacheDirectory = "{$wgUploadDirectory}/cache"; +if ( $wgDeletedDirectory === false ) $wgDeletedDirectory = "{$wgUploadDirectory}/deleted"; + +if ( isset( $wgFileStore['deleted']['directory'] ) ) { $wgDeletedDirectory = $wgFileStore['deleted']['directory']; } -if( isset($wgFooterIcons["copyright"]) && - isset($wgFooterIcons["copyright"]["copyright"]) && - $wgFooterIcons["copyright"]["copyright"] === array() ) { +if ( isset( $wgFooterIcons['copyright'] ) && + isset( $wgFooterIcons['copyright']['copyright'] ) && + $wgFooterIcons['copyright']['copyright'] === array() ) +{ if ( isset( $wgCopyrightIcon ) && $wgCopyrightIcon ) { - $wgFooterIcons["copyright"]["copyright"] = $wgCopyrightIcon; + $wgFooterIcons['copyright']['copyright'] = $wgCopyrightIcon; } elseif ( $wgRightsIcon || $wgRightsText ) { - $wgFooterIcons["copyright"]["copyright"] = array( - "url" => $wgRightsUrl, - "src" => $wgRightsIcon, - "alt" => $wgRightsText, + $wgFooterIcons['copyright']['copyright'] = array( + 'url' => $wgRightsUrl, + 'src' => $wgRightsIcon, + 'alt' => $wgRightsText, ); } else { - unset($wgFooterIcons["copyright"]["copyright"]); + unset( $wgFooterIcons['copyright']['copyright'] ); } } -if( isset($wgFooterIcons["poweredby"]) && - isset($wgFooterIcons["poweredby"]["mediawiki"]) && - $wgFooterIcons["poweredby"]["mediawiki"]["src"] === null ) { - $wgFooterIcons["poweredby"]["mediawiki"]["src"] = "$wgStylePath/common/images/poweredby_mediawiki_88x31.png"; +if ( isset( $wgFooterIcons['poweredby'] ) && + isset( $wgFooterIcons['poweredby']['mediawiki'] ) && + $wgFooterIcons['poweredby']['mediawiki']['src'] === null ) +{ + $wgFooterIcons['poweredby']['mediawiki']['src'] = "$wgStylePath/common/images/poweredby_mediawiki_88x31.png"; } /** @@ -106,7 +118,7 @@ $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK; * Initialise $wgLocalFileRepo from backwards-compatible settings */ if ( !$wgLocalFileRepo ) { - if( isset( $wgFileStore['deleted']['hash'] ) ) { + if ( isset( $wgFileStore['deleted']['hash'] ) ) { $deletedHashLevel = $wgFileStore['deleted']['hash']; } else { $deletedHashLevel = $wgHashedUploadDirectory ? 3 : 0; @@ -143,7 +155,7 @@ if ( $wgUseSharedUploads ) { 'dbUser' => $wgDBuser, 'dbPassword' => $wgDBpassword, 'dbName' => $wgSharedUploadDBname, - 'dbFlags' => ($wgDebugDumpSql ? DBO_DEBUG : 0) | DBO_DEFAULT, + 'dbFlags' => ( $wgDebugDumpSql ? DBO_DEBUG : 0 ) | DBO_DEFAULT, 'tablePrefix' => $wgSharedUploadDBprefix, 'hasSharedCache' => $wgCacheSharedUploads, 'descBaseUrl' => $wgRepositoryBaseUrl, @@ -163,7 +175,7 @@ if ( $wgUseSharedUploads ) { ); } } -if( $wgUseInstantCommons ) { +if ( $wgUseInstantCommons ) { $wgForeignFileRepos[] = array( 'class' => 'ForeignAPIRepo', 'name' => 'wikimediacommons', @@ -175,81 +187,19 @@ if( $wgUseInstantCommons ) { ); } -if ( !class_exists( 'AutoLoader' ) ) { - require_once( "$IP/includes/AutoLoader.php" ); +if ( is_null( $wgEnableAutoRotation ) ) { + // Only enable auto-rotation when the bitmap handler can rotate + $wgEnableAutoRotation = BitmapHandler::canRotate(); } -wfProfileIn( $fname.'-exception' ); -require_once( "$IP/includes/Exception.php" ); -wfInstallExceptionHandler(); -wfProfileOut( $fname.'-exception' ); - -wfProfileIn( $fname.'-includes' ); -require_once( "$IP/includes/GlobalFunctions.php" ); -require_once( "$IP/includes/Hooks.php" ); -require_once( "$IP/includes/Namespace.php" ); -require_once( "$IP/includes/ProxyTools.php" ); -require_once( "$IP/includes/ObjectCache.php" ); -require_once( "$IP/includes/ImageFunctions.php" ); -wfProfileOut( $fname.'-includes' ); -wfProfileIn( $fname.'-misc1' ); - -# Raise the memory limit if it's too low -wfMemoryLimit(); - -/** - * Set up the timezone, suppressing the pseudo-security warning in PHP 5.1+ - * that happens whenever you use a date function without the timezone being - * explicitly set. Inspired by phpMyAdmin's treatment of the problem. - */ -wfSuppressWarnings(); -date_default_timezone_set( date_default_timezone_get() ); -wfRestoreWarnings(); - -# Can't stub this one, it sets up $_GET and $_REQUEST in its constructor -$wgRequest = new WebRequest; - -# Useful debug output -global $wgCommandLineMode; -if ( $wgCommandLineMode ) { - wfDebug( "\n\nStart command line script $self\n" ); -} else { - wfDebug( "Start request\n\n" ); - # Output the REQUEST_URI. This is not supported by IIS in rewrite mode, - # so use an alternative - $requestUri = isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : - ( isset( $_SERVER['HTTP_X_ORIGINAL_URL'] ) ? $_SERVER['HTTP_X_ORIGINAL_URL'] : - $_SERVER['PHP_SELF'] ); - wfDebug( "{$_SERVER['REQUEST_METHOD']} {$requestUri}\n" ); - - if ( $wgDebugPrintHttpHeaders ) { - $headerOut = "HTTP HEADERS:\n"; - - if ( function_exists( 'getallheaders' ) ) { - $headers = getallheaders(); - foreach ( $headers as $name => $value ) { - $headerOut .= "$name: $value\n"; - } - } else { - $headers = $_SERVER; - foreach ( $headers as $name => $value ) { - if ( substr( $name, 0, 5 ) !== 'HTTP_' ) continue; - $name = substr( $name, 5 ); - $headerOut .= "$name: $value\n"; - } - } - wfDebug( "$headerOut\n" ); - } -} - -if( $wgRCFilterByAge ) { - ## Trim down $wgRCLinkDays so that it only lists links which are valid - ## as determined by $wgRCMaxAge. - ## Note that we allow 1 link higher than the max for things like 56 days but a 60 day link. - sort($wgRCLinkDays); - for( $i = 0; $i < count($wgRCLinkDays); $i++ ) { - if( $wgRCLinkDays[$i] >= $wgRCMaxAge / ( 3600 * 24 ) ) { - $wgRCLinkDays = array_slice( $wgRCLinkDays, 0, $i+1, false ); +if ( $wgRCFilterByAge ) { + # # Trim down $wgRCLinkDays so that it only lists links which are valid + # # as determined by $wgRCMaxAge. + # # Note that we allow 1 link higher than the max for things like 56 days but a 60 day link. + sort( $wgRCLinkDays ); + for ( $i = 0; $i < count( $wgRCLinkDays ); $i++ ) { + if ( $wgRCLinkDays[$i] >= $wgRCMaxAge / ( 3600 * 24 ) ) { + $wgRCLinkDays = array_slice( $wgRCLinkDays, 0, $i + 1, false ); break; } } @@ -259,84 +209,218 @@ if ( $wgSkipSkin ) { $wgSkipSkins[] = $wgSkipSkin; } +# Set default shared prefix +if ( $wgSharedPrefix === false ) { + $wgSharedPrefix = $wgDBprefix; +} + +if ( !$wgCookiePrefix ) { + if ( $wgSharedDB && $wgSharedPrefix && in_array( 'user', $wgSharedTables ) ) { + $wgCookiePrefix = $wgSharedDB . '_' . $wgSharedPrefix; + } elseif ( $wgSharedDB && in_array( 'user', $wgSharedTables ) ) { + $wgCookiePrefix = $wgSharedDB; + } elseif ( $wgDBprefix ) { + $wgCookiePrefix = $wgDBname . '_' . $wgDBprefix; + } else { + $wgCookiePrefix = $wgDBname; + } +} +$wgCookiePrefix = strtr( $wgCookiePrefix, '=,; +."\'\\[', '__________' ); + $wgUseEnotif = $wgEnotifUserTalk || $wgEnotifWatchlist; -if($wgMetaNamespace === FALSE) { +if ( $wgMetaNamespace === false ) { $wgMetaNamespace = str_replace( ' ', '_', $wgSitename ); } +/** + * Definitions of the NS_ constants are in Defines.php + * @private + */ +$wgCanonicalNamespaceNames = array( + NS_MEDIA => 'Media', + NS_SPECIAL => 'Special', + NS_TALK => 'Talk', + NS_USER => 'User', + NS_USER_TALK => 'User_talk', + NS_PROJECT => 'Project', + NS_PROJECT_TALK => 'Project_talk', + NS_FILE => 'File', + NS_FILE_TALK => 'File_talk', + NS_MEDIAWIKI => 'MediaWiki', + NS_MEDIAWIKI_TALK => 'MediaWiki_talk', + NS_TEMPLATE => 'Template', + NS_TEMPLATE_TALK => 'Template_talk', + NS_HELP => 'Help', + NS_HELP_TALK => 'Help_talk', + NS_CATEGORY => 'Category', + NS_CATEGORY_TALK => 'Category_talk', +); + +/// @todo UGLY UGLY +if( is_array( $wgExtraNamespaces ) ) { + $wgCanonicalNamespaceNames = $wgCanonicalNamespaceNames + $wgExtraNamespaces; +} + # These are now the same, always # To determine the user language, use $wgLang->getCode() $wgContLanguageCode = $wgLanguageCode; # Easy to forget to falsify $wgShowIPinHeader for static caches. # If file cache or squid cache is on, just disable this (DWIMD). -if( $wgUseFileCache || $wgUseSquid ) $wgShowIPinHeader = false; +if ( $wgUseFileCache || $wgUseSquid ) { + $wgShowIPinHeader = false; +} # $wgAllowRealName and $wgAllowUserSkin were removed in 1.16 # in favor of $wgHiddenPrefs, handle b/c here -if( !$wgAllowRealName ) { +if ( !$wgAllowRealName ) { $wgHiddenPrefs[] = 'realname'; } -if( !$wgAllowUserSkin ) { - $wgHiddenPrefs[] = 'skin'; +# Doesn't make sense to have if disabled. +if ( !$wgEnotifMinorEdits ) { + $wgHiddenPrefs[] = 'enotifminoredits'; +} + +# $wgDisabledActions is deprecated as of 1.18 +foreach( $wgDisabledActions as $action ){ + $wgActions[$action] = false; +} +if( !$wgAllowPageInfo ){ + $wgActions['info'] = false; } if ( !$wgHtml5Version && $wgHtml5 && $wgAllowRdfaAttributes ) { # see http://www.w3.org/TR/rdfa-in-html/#document-conformance - if ( $wgMimeType == 'application/xhtml+xml' ) $wgHtml5Version = 'XHTML+RDFa 1.0'; - else $wgHtml5Version = 'HTML+RDFa 1.0'; + if ( $wgMimeType == 'application/xhtml+xml' ) { + $wgHtml5Version = 'XHTML+RDFa 1.0'; + } else { + $wgHtml5Version = 'HTML+RDFa 1.0'; + } +} + +# Blacklisted file extensions shouldn't appear on the "allowed" list +$wgFileExtensions = array_diff ( $wgFileExtensions, $wgFileBlacklist ); + +if ( $wgArticleCountMethod === null ) { + $wgArticleCountMethod = $wgUseCommaCount ? 'comma' : 'link'; } if ( $wgInvalidateCacheOnLocalSettingsChange ) { $wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', @filemtime( "$IP/LocalSettings.php" ) ) ); } -# Blacklisted file extensions shouldn't appear on the "allowed" list -$wgFileExtensions = array_diff ( $wgFileExtensions, $wgFileBlacklist ); +if ( $wgAjaxUploadDestCheck ) { + $wgAjaxExportList[] = 'SpecialUpload::ajaxGetExistsWarning'; +} -wfProfileOut( $fname.'-misc1' ); -wfProfileIn( $fname.'-memcached' ); +if ( $wgNewUserLog ) { + # Add a new log type + $wgLogTypes[] = 'newusers'; + $wgLogNames['newusers'] = 'newuserlogpage'; + $wgLogHeaders['newusers'] = 'newuserlogpagetext'; + $wgLogActions['newusers/newusers'] = 'newuserlogentry'; // For compatibility with older log entries + $wgLogActions['newusers/create'] = 'newuserlog-create-entry'; + $wgLogActions['newusers/create2'] = 'newuserlog-create2-entry'; + $wgLogActions['newusers/autocreate'] = 'newuserlog-autocreate-entry'; +} -$wgMemc =& wfGetMainCache(); -$messageMemc =& wfGetMessageCacheStorage(); -$parserMemc =& wfGetParserCacheStorage(); +if ( $wgCookieSecure === 'detect' ) { + $wgCookieSecure = ( substr( $wgServer, 0, 6 ) === 'https:' ); +} -wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' . - get_class( $messageMemc ) . '[message] ' . - get_class( $parserMemc ) . "[parser]\n" ); +if ( !defined( 'MW_COMPILED' ) ) { + if ( !MWInit::classExists( 'AutoLoader' ) ) { + require_once( "$IP/includes/AutoLoader.php" ); + } -wfProfileOut( $fname.'-memcached' ); + wfProfileIn( $fname . '-exception' ); + MWExceptionHandler::installHandler(); + wfProfileOut( $fname . '-exception' ); + + wfProfileIn( $fname . '-includes' ); + require_once( "$IP/includes/normal/UtfNormalUtil.php" ); + require_once( "$IP/includes/GlobalFunctions.php" ); + require_once( "$IP/includes/ProxyTools.php" ); + require_once( "$IP/includes/ImageFunctions.php" ); + require_once( "$IP/includes/normal/UtfNormalDefines.php" ); + wfProfileOut( $fname . '-includes' ); +} -## Most of the config is out, some might want to run hooks here. -wfRunHooks( 'SetupAfterCache' ); +# Now that GlobalFunctions is loaded, set the default for $wgCanonicalServer +if ( $wgCanonicalServer === false ) { + $wgCanonicalServer = wfExpandUrl( $wgServer, PROTO_HTTP ); +} -wfProfileIn( $fname.'-SetupSession' ); +wfProfileIn( $fname . '-misc1' ); -# Set default shared prefix -if( $wgSharedPrefix === false ) $wgSharedPrefix = $wgDBprefix; +# Raise the memory limit if it's too low +wfMemoryLimit(); -if( !$wgCookiePrefix ) { - if ( $wgSharedDB && $wgSharedPrefix && in_array('user',$wgSharedTables) ) { - $wgCookiePrefix = $wgSharedDB . '_' . $wgSharedPrefix; - } elseif ( $wgSharedDB && in_array('user',$wgSharedTables) ) { - $wgCookiePrefix = $wgSharedDB; - } elseif ( $wgDBprefix ) { - $wgCookiePrefix = $wgDBname . '_' . $wgDBprefix; - } else { - $wgCookiePrefix = $wgDBname; +/** + * Set up the timezone, suppressing the pseudo-security warning in PHP 5.1+ + * that happens whenever you use a date function without the timezone being + * explicitly set. Inspired by phpMyAdmin's treatment of the problem. + */ +if ( is_null( $wgLocaltimezone) ) { + wfSuppressWarnings(); + $wgLocaltimezone = date_default_timezone_get(); + wfRestoreWarnings(); +} + +date_default_timezone_set( $wgLocaltimezone ); +if( is_null( $wgLocalTZoffset ) ) { + $wgLocalTZoffset = date( 'Z' ) / 60; +} + +# Useful debug output +global $wgCommandLineMode; +if ( $wgCommandLineMode ) { + $wgRequest = new FauxRequest( array() ); + + wfDebug( "\n\nStart command line script $self\n" ); +} else { + # Can't stub this one, it sets up $_GET and $_REQUEST in its constructor + $wgRequest = new WebRequest; + + $debug = "Start request\n\n{$_SERVER['REQUEST_METHOD']} {$wgRequest->getRequestURL()}"; + + if ( $wgDebugPrintHttpHeaders ) { + $debug .= "\nHTTP HEADERS:\n"; + + foreach ( $wgRequest->getAllHeaders() as $name => $value ) { + $debug .= "$name: $value\n"; + } } + wfDebug( "$debug\n" ); } -$wgCookiePrefix = strtr($wgCookiePrefix, "=,; +.\"'\\[", "__________"); + +wfProfileOut( $fname . '-misc1' ); +wfProfileIn( $fname . '-memcached' ); + +$wgMemc = wfGetMainCache(); +$messageMemc = wfGetMessageCacheStorage(); +$parserMemc = wfGetParserCacheStorage(); + +wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' . + get_class( $messageMemc ) . '[message] ' . + get_class( $parserMemc ) . "[parser]\n" ); + +wfProfileOut( $fname . '-memcached' ); + +# # Most of the config is out, some might want to run hooks here. +wfRunHooks( 'SetupAfterCache' ); + +wfProfileIn( $fname . '-session' ); # If session.auto_start is there, we can't touch session name -# -if( !wfIniGetBool( 'session.auto_start' ) ) +if ( !wfIniGetBool( 'session.auto_start' ) ) { session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' ); +} -if( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) { - if( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix.'Token'] ) ) { +if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) { + if ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix . 'Token'] ) ) { wfIncrStats( 'request_with_session' ); wfSetupSession(); $wgSessionStarted = true; @@ -346,51 +430,50 @@ if( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) { } } -wfProfileOut( $fname.'-SetupSession' ); -wfProfileIn( $fname.'-globals' ); +wfProfileOut( $fname . '-session' ); +wfProfileIn( $fname . '-globals' ); -$wgContLang = new StubContLang; +$wgContLang = Language::factory( $wgLanguageCode ); +$wgContLang->initEncoding(); +$wgContLang->initContLang(); // Now that variant lists may be available... $wgRequest->interpolateTitle(); -$wgUser = $wgCommandLineMode ? new User : User::newFromSession(); -$wgLang = new StubUserLang; -$wgOut = new StubObject( 'wgOut', 'OutputPage' ); -$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) ); +$wgUser = RequestContext::getMain()->getUser(); # BackCompat -$wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache', - array( $messageMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry ) ); +/** + * @var Language + */ +$wgLang = new StubUserLang; -wfProfileOut( $fname.'-globals' ); -wfProfileIn( $fname.'-User' ); +/** + * @var OutputPage + */ +$wgOut = RequestContext::getMain()->getOutput(); # BackCompat -# Skin setup functions -# Entries can be added to this variable during the inclusion -# of the extension file. Skins can then perform any necessary initialisation. -# -foreach ( $wgSkinExtensionFunctions as $func ) { - call_user_func( $func ); -} +/** + * @var Parser + */ +$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) ); -if( !is_object( $wgAuth ) ) { +if ( !is_object( $wgAuth ) ) { $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' ); wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) ); } -wfProfileOut( $fname.'-User' ); - -wfProfileIn( $fname.'-misc2' ); +# Placeholders in case of DB error +$wgTitle = null; $wgDeferredUpdateList = array(); -if ( $wgAjaxUploadDestCheck ) $wgAjaxExportList[] = 'SpecialUpload::ajaxGetExistsWarning'; - -# Placeholders in case of DB error -$wgTitle = null; -$wgArticle = null; +// We need to check for safe_mode, because mail() will throw an E_NOTICE +// on additional parameters +if( !is_null($wgAdditionalMailParams) && wfIniGetBool('safe_mode') ) { + $wgAdditionalMailParams = null; +} -wfProfileOut( $fname.'-misc2' ); -wfProfileIn( $fname.'-extensions' ); +wfProfileOut( $fname . '-globals' ); +wfProfileIn( $fname . '-extensions' ); # Extension setup functions for extensions other than skins # Entries should be added to this variable during the inclusion @@ -399,14 +482,14 @@ wfProfileIn( $fname.'-extensions' ); foreach ( $wgExtensionFunctions as $func ) { # Allow closures in PHP 5.3+ if ( is_object( $func ) && $func instanceof Closure ) { - $profName = $fname.'-extensions-closure'; - } elseif( is_array( $func ) ) { + $profName = $fname . '-extensions-closure'; + } elseif ( is_array( $func ) ) { if ( is_object( $func[0] ) ) - $profName = $fname.'-extensions-'.get_class( $func[0] ).'::'.$func[1]; + $profName = $fname . '-extensions-' . get_class( $func[0] ) . '::' . $func[1]; else - $profName = $fname.'-extensions-'.implode( '::', $func ); + $profName = $fname . '-extensions-' . implode( '::', $func ); } else { - $profName = $fname.'-extensions-'.strval( $func ); + $profName = $fname . '-extensions-' . strval( $func ); } wfProfileIn( $profName ); @@ -414,24 +497,8 @@ foreach ( $wgExtensionFunctions as $func ) { wfProfileOut( $profName ); } -// For compatibility -wfRunHooks( 'LogPageValidTypes', array( &$wgLogTypes ) ); -wfRunHooks( 'LogPageLogName', array( &$wgLogNames ) ); -wfRunHooks( 'LogPageLogHeader', array( &$wgLogHeaders ) ); -wfRunHooks( 'LogPageActionText', array( &$wgLogActions ) ); - -if( !empty($wgNewUserLog) ) { - # Add a new log type - $wgLogTypes[] = 'newusers'; - $wgLogNames['newusers'] = 'newuserlogpage'; - $wgLogHeaders['newusers'] = 'newuserlogpagetext'; - $wgLogActions['newusers/newusers'] = 'newuserlogentry'; // For compatibility with older log entries - $wgLogActions['newusers/create'] = 'newuserlog-create-entry'; - $wgLogActions['newusers/create2'] = 'newuserlog-create2-entry'; - $wgLogActions['newusers/autocreate'] = 'newuserlog-autocreate-entry'; -} - wfDebug( "Fully initialised\n" ); $wgFullyInitialised = true; -wfProfileOut( $fname.'-extensions' ); + +wfProfileOut( $fname . '-extensions' ); wfProfileOut( $fname ); -- cgit v1.2.2