X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSetup.php;h=afde02fa80716439efef1751e38e6c2d4d79de42;hb=0399907dbddd4c9808a91a06f64e44beb1fc2c26;hp=97e6344f848554c2fa8b482e9ba2198ae3f73ef6;hpb=95328fafaf92444fb6554d8a133f67fd88067921;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Setup.php b/includes/Setup.php index 97e6344f84..afde02fa80 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -1,14 +1,15 @@ $wgRightsUrl, + 'src' => $wgRightsIcon, + 'alt' => $wgRightsText, + ); + } else { + unset( $wgFooterIcons['copyright']['copyright'] ); + } +} -if ( empty( $wgFileStore['deleted']['directory'] ) ) { - $wgFileStore['deleted']['directory'] = "{$wgUploadDirectory}/deleted"; +if ( isset( $wgFooterIcons['poweredby'] ) && + isset( $wgFooterIcons['poweredby']['mediawiki'] ) && + $wgFooterIcons['poweredby']['mediawiki']['src'] === null ) +{ + $wgFooterIcons['poweredby']['mediawiki']['src'] = "$wgStylePath/common/images/poweredby_mediawiki_88x31.png"; } /** @@ -79,17 +118,23 @@ $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK; * Initialise $wgLocalFileRepo from backwards-compatible settings */ if ( !$wgLocalFileRepo ) { + if ( isset( $wgFileStore['deleted']['hash'] ) ) { + $deletedHashLevel = $wgFileStore['deleted']['hash']; + } else { + $deletedHashLevel = $wgHashedUploadDirectory ? 3 : 0; + } $wgLocalFileRepo = array( 'class' => 'LocalRepo', 'name' => 'local', 'directory' => $wgUploadDirectory, + 'scriptDirUrl' => $wgScriptPath, + 'scriptExtension' => $wgScriptExtension, 'url' => $wgUploadBaseUrl ? $wgUploadBaseUrl . $wgUploadPath : $wgUploadPath, 'hashLevels' => $wgHashedUploadDirectory ? 2 : 0, 'thumbScriptUrl' => $wgThumbnailScriptPath, 'transformVia404' => !$wgGenerateThumbnailOnParse, - 'initialCapital' => $wgCapitalLinks, - 'deletedDir' => $wgFileStore['deleted']['directory'], - 'deletedHashLevels' => $wgFileStore['deleted']['hash'] + 'deletedDir' => $wgDeletedDirectory, + 'deletedHashLevels' => $deletedHashLevel ); } /** @@ -110,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, @@ -130,64 +175,31 @@ if ( $wgUseSharedUploads ) { ); } } -if ( !class_exists( 'AutoLoader' ) ) { - require_once( "$IP/includes/AutoLoader.php" ); -} - -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" ); -require_once( "$IP/includes/StubObject.php" ); -wfProfileOut( $fname.'-includes' ); -wfProfileIn( $fname.'-misc1' ); -# Raise the memory limit if it's too low -global $wgMemoryLimit; -$memlimit = ini_get( "memory_limit" ); -if( !( empty( $memlimit ) || $memlimit == -1 ) ) { - if( wfParseMemoryLimit( $memlimit ) < wfParseMemoryLimit( $wgMemoryLimit ) ) { - wfDebug( "\n\nRaise PHP's memory limit from $memlimit to $wgMemoryLimit\n" ); - wfEnableWarnings() - ini_set( "memory_limit", $wgMemoryLimit ); - wfDisableWarnings() - } +if ( $wgUseInstantCommons ) { + $wgForeignFileRepos[] = array( + 'class' => 'ForeignAPIRepo', + 'name' => 'wikimediacommons', + 'apibase' => 'http://commons.wikimedia.org/w/api.php', + 'hashLevels' => 2, + 'fetchDescription' => true, + 'descriptionCacheExpiry' => 43200, + 'apiThumbCacheExpiry' => 86400, + ); } -$wgIP = false; # Load on demand -# Can't stub this one, it sets up $_GET and $_REQUEST in its constructor -$wgRequest = new WebRequest; +if ( is_null( $wgEnableAutoRotation ) ) { + // Only enable auto-rotation when the bitmap handler can rotate + $wgEnableAutoRotation = BitmapHandler::canRotate(); +} -# Useful debug output -if ( $wgCommandLineMode ) { - wfDebug( "\n\nStart command line script $self\n" ); -} elseif ( function_exists( 'getallheaders' ) ) { - wfDebug( "\n\nStart request\n" ); - wfDebug( $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . "\n" ); - $headers = getallheaders(); - foreach ($headers as $name => $value) { - wfDebug( "$name: $value\n" ); - } - wfDebug( "\n" ); -} elseif( isset( $_SERVER['REQUEST_URI'] ) ) { - wfDebug( $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . "\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; } } @@ -197,139 +209,269 @@ 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'; } -wfProfileOut( $fname.'-misc1' ); -wfProfileIn( $fname.'-memcached' ); +# $wgDisabledActions is deprecated as of 1.18 +foreach( $wgDisabledActions as $action ){ + $wgActions[$action] = false; +} +if( !$wgAllowPageInfo ){ + $wgActions['info'] = false; +} -$wgMemc =& wfGetMainCache(); -$messageMemc =& wfGetMessageCacheStorage(); -$parserMemc =& wfGetParserCacheStorage(); +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'; + } +} -wfDebug( 'Main cache: ' . get_class( $wgMemc ) . - "\nMessage cache: " . get_class( $messageMemc ) . - "\nParser cache: " . get_class( $parserMemc ) . "\n" ); +# Blacklisted file extensions shouldn't appear on the "allowed" list +$wgFileExtensions = array_diff ( $wgFileExtensions, $wgFileBlacklist ); -wfProfileOut( $fname.'-memcached' ); +if ( $wgArticleCountMethod === null ) { + $wgArticleCountMethod = $wgUseCommaCount ? 'comma' : 'link'; +} -## Most of the config is out, some might want to run hooks here. -wfRunHooks( 'SetupAfterCache' ); +if ( $wgInvalidateCacheOnLocalSettingsChange ) { + $wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', @filemtime( "$IP/LocalSettings.php" ) ) ); +} -wfProfileIn( $fname.'-SetupSession' ); +if ( $wgAjaxUploadDestCheck ) { + $wgAjaxExportList[] = 'SpecialUpload::ajaxGetExistsWarning'; +} -# Set default shared prefix -if( $wgSharedPrefix === false ) $wgSharedPrefix = $wgDBprefix; +if ( $wgNewUserLog ) { + # Add a new log type + $wgLogTypes[] = 'newusers'; + $wgLogNames['newusers'] = 'newuserlogpage'; + $wgLogHeaders['newusers'] = 'newuserlogpagetext'; + # newusers, create, create2, autocreate + $wgLogActionsHandlers['newusers/*'] = 'NewUsersLogFormatter'; +} -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; +if ( $wgCookieSecure === 'detect' ) { + $wgCookieSecure = ( substr( $wgServer, 0, 6 ) === 'https:' ); +} + +if ( !defined( 'MW_COMPILED' ) ) { + if ( !MWInit::classExists( 'AutoLoader' ) ) { + require_once( "$IP/includes/AutoLoader.php" ); } + + 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' ); } -$wgCookiePrefix = strtr($wgCookiePrefix, "=,; +.\"'\\[", "__________"); -# If session.auto_start is there, we can't touch session name -# -if( !wfIniGetBool( 'session.auto_start' ) ) - session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' ); +# Now that GlobalFunctions is loaded, set the default for $wgCanonicalServer +if ( $wgCanonicalServer === false ) { + $wgCanonicalServer = wfExpandUrl( $wgServer, PROTO_HTTP ); +} + +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. + */ +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() ); -if( !$wgCommandLineMode && ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix.'Token'] ) ) ) { - wfIncrStats( 'request_with_session' ); - wfSetupSession(); - $wgSessionStarted = true; + wfDebug( "\n\nStart command line script $self\n" ); } else { - wfIncrStats( 'request_without_session' ); - $wgSessionStarted = false; + # 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" ); } -wfProfileOut( $fname.'-SetupSession' ); -wfProfileIn( $fname.'-globals' ); +wfProfileOut( $fname . '-misc1' ); +wfProfileIn( $fname . '-memcached' ); -$wgContLang = new StubContLang; +$wgMemc = wfGetMainCache(); +$messageMemc = wfGetMessageCacheStorage(); +$parserMemc = wfGetParserCacheStorage(); -// Now that variant lists may be available... -$wgRequest->interpolateTitle(); +wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' . + get_class( $messageMemc ) . '[message] ' . + get_class( $parserMemc ) . "[parser]\n" ); -$wgUser = new StubUser; -$wgLang = new StubUserLang; -$wgVariant = new StubUserVariant; -$wgOut = new StubObject( 'wgOut', 'OutputPage' ); -$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) ); +wfProfileOut( $fname . '-memcached' ); -$wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache', - array( $messageMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry, wfWikiID() ) ); +# # Most of the config is out, some might want to run hooks here. +wfRunHooks( 'SetupAfterCache' ); -wfProfileOut( $fname.'-globals' ); -wfProfileIn( $fname.'-User' ); +wfProfileIn( $fname . '-session' ); -# 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 ); +# If session.auto_start is there, we can't touch session name +if ( !wfIniGetBool( 'session.auto_start' ) ) { + session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' ); } -if( !is_object( $wgAuth ) ) { - $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' ); - wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) ); +if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) { + if ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix . 'Token'] ) ) { + wfIncrStats( 'request_with_session' ); + wfSetupSession(); + $wgSessionStarted = true; + } else { + wfIncrStats( 'request_without_session' ); + $wgSessionStarted = false; + } } -wfProfileOut( $fname.'-User' ); +wfProfileOut( $fname . '-session' ); +wfProfileIn( $fname . '-globals' ); -wfProfileIn( $fname.'-misc2' ); +$wgContLang = Language::factory( $wgLanguageCode ); +$wgContLang->initEncoding(); +$wgContLang->initContLang(); -$wgDeferredUpdateList = array(); -$wgPostCommitUpdateList = array(); +// Now that variant lists may be available... +$wgRequest->interpolateTitle(); +$wgUser = RequestContext::getMain()->getUser(); # BackCompat + +/** + * @var Language + */ +$wgLang = new StubUserLang; -if ( $wgAjaxWatch ) $wgAjaxExportList[] = 'wfAjaxWatch'; -if ( $wgAjaxUploadDestCheck ) $wgAjaxExportList[] = 'UploadForm::ajaxGetExistsWarning'; -if( $wgAjaxLicensePreview ) - $wgAjaxExportList[] = 'UploadForm::ajaxGetLicensePreview'; +/** + * @var OutputPage + */ +$wgOut = RequestContext::getMain()->getOutput(); # BackCompat + +/** + * @var Parser + */ +$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) ); + +if ( !is_object( $wgAuth ) ) { + $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' ); + wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) ); +} # Placeholders in case of DB error $wgTitle = null; -$wgArticle = null; -wfProfileOut( $fname.'-misc2' ); -wfProfileIn( $fname.'-extensions' ); +$wgDeferredUpdateList = array(); -/* - * load the $wgExtensionMessagesFiles for the script loader - * this can't be done in a normal extension type way - * since the script-loader is an entry point - */ -if( $wgEnableScriptLoader && strpos( wfGetScriptUrl(), "mwScriptLoader.php" ) !== false ){ - $wgExtensionMessagesFiles['mwEmbed'] = "{$IP}/js2/mwEmbed/php/languages/mwEmbed.i18n.php"; +// 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 . '-globals' ); +wfProfileIn( $fname . '-extensions' ); # Extension setup functions for extensions other than skins # Entries should be added to this variable during the inclusion @@ -338,14 +480,14 @@ if( $wgEnableScriptLoader && strpos( wfGetScriptUrl(), "mwScriptLoader.php" ) != 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 ); @@ -353,24 +495,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 );