X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSetup.php;h=f331dc4951efa41962afbf468649355070653194;hb=af04dde2901bf9303ebf6c9e8278b854736902c7;hp=b04319dc1e0ac0b784f8d6748b154e542c794653;hpb=7fbd29d17031b884c937b28472d794ddc6fa5492;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Setup.php b/includes/Setup.php index b04319dc1e..f331dc4951 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -1,14 +1,15 @@ $wgRightsUrl, + 'src' => $wgRightsIcon, + 'alt' => $wgRightsText, + ); + } else { + 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"; } /** - * Unconditional protection for NS_MEDIAWIKI since otherwise it's too easy for a - * sysadmin to set $wgNamespaceProtection incorrectly and leave the wiki insecure. + * Unconditional protection for NS_MEDIAWIKI since otherwise it's too easy for a + * sysadmin to set $wgNamespaceProtection incorrectly and leave the wiki insecure. * - * Note that this is the definition of editinterface and it can be granted to + * Note that this is the definition of editinterface and it can be granted to * all users if desired. */ $wgNamespaceProtection[NS_MEDIAWIKI] = 'editinterface'; @@ -78,25 +107,31 @@ $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK; /** * Initialise $wgLocalFileRepo from backwards-compatible settings */ -if( !$wgLocalFileRepo ) { +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 ); } /** * Initialise shared repo from backwards-compatible settings */ -if( $wgUseSharedUploads ) { - if( $wgSharedUploadDBname ) { +if ( $wgUseSharedUploads ) { + if ( $wgSharedUploadDBname ) { $wgForeignFileRepos[] = array( 'class' => 'ForeignDBRepo', 'name' => 'shared', @@ -110,7 +145,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,176 +165,245 @@ if( $wgUseSharedUploads ) { ); } } -require_once( "$IP/includes/AutoLoader.php" ); +if ( $wgUseInstantCommons ) { + $wgForeignFileRepos[] = array( + 'class' => 'ForeignAPIRepo', + 'name' => 'wikimediacommons', + 'apibase' => 'http://commons.wikimedia.org/w/api.php', + 'hashLevels' => 2, + 'fetchDescription' => true, + 'descriptionCacheExpiry' => 43200, + 'apiThumbCacheExpiry' => 86400, + ); +} + +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; + } + } +} + +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 ) { + $wgMetaNamespace = str_replace( ' ', '_', $wgSitename ); +} + +# 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; +} + +# $wgAllowRealName and $wgAllowUserSkin were removed in 1.16 +# in favor of $wgHiddenPrefs, handle b/c here +if ( !$wgAllowRealName ) { + $wgHiddenPrefs[] = 'realname'; +} + +if ( !$wgAllowUserSkin ) { + $wgHiddenPrefs[] = 'skin'; +} + +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'; + } +} -wfProfileIn( $fname.'-exception' ); +# Blacklisted file extensions shouldn't appear on the "allowed" list +$wgFileExtensions = array_diff ( $wgFileExtensions, $wgFileBlacklist ); + +if ( $wgInvalidateCacheOnLocalSettingsChange ) { + $wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', @filemtime( "$IP/LocalSettings.php" ) ) ); +} + +if ( $wgAjaxUploadDestCheck ) { + $wgAjaxExportList[] = 'SpecialUpload::ajaxGetExistsWarning'; +} + +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'; +} + +if ( !class_exists( 'AutoLoader' ) ) { + require_once( "$IP/includes/AutoLoader.php" ); +} + +wfProfileIn( $fname . '-exception' ); require_once( "$IP/includes/Exception.php" ); wfInstallExceptionHandler(); -wfProfileOut( $fname.'-exception' ); +wfProfileOut( $fname . '-exception' ); -wfProfileIn( $fname.'-includes' ); +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/objectcache/ObjectCache.php" ); require_once( "$IP/includes/ImageFunctions.php" ); -require_once( "$IP/includes/StubObject.php" ); -wfProfileOut( $fname.'-includes' ); -wfProfileIn( $fname.'-misc1' ); +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(); -$wgIP = false; # Load on demand # Can't stub this one, it sets up $_GET and $_REQUEST in its constructor $wgRequest = new WebRequest; # Useful debug output -if( $wgCommandLineMode ) { +global $wgCommandLineMode; +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" ); -} +} else { + $debug = "Start request\n\n{$_SERVER['REQUEST_METHOD']} {$wgRequest->getRequestURL()}"; -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; + if ( $wgDebugPrintHttpHeaders ) { + $debug .= "\nHTTP HEADERS:\n"; + + foreach ( $wgRequest->getAllHeaders() as $name => $value ) { + $debug .= "$name: $value\n"; } } + wfDebug( "$debug\n" ); } -if( $wgSkipSkin ) { - $wgSkipSkins[] = $wgSkipSkin; -} - -$wgUseEnotif = $wgEnotifUserTalk || $wgEnotifWatchlist; - -if( $wgMetaNamespace === FALSE ) { - $wgMetaNamespace = str_replace( ' ', '_', $wgSitename ); -} - -# These are now the same, always -# To determine the user language, use $wgLang->getCode() -$wgContLanguageCode = $wgLanguageCode; - -wfProfileOut( $fname.'-misc1' ); -wfProfileIn( $fname.'-memcached' ); +wfProfileOut( $fname . '-misc1' ); +wfProfileIn( $fname . '-memcached' ); $wgMemc =& wfGetMainCache(); $messageMemc =& wfGetMessageCacheStorage(); $parserMemc =& wfGetParserCacheStorage(); -wfDebug( 'Main cache: ' . get_class( $wgMemc ) . - "\nMessage cache: " . get_class( $messageMemc ) . - "\nParser cache: " . get_class( $parserMemc ) . "\n" ); +wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' . + get_class( $messageMemc ) . '[message] ' . + get_class( $parserMemc ) . "[parser]\n" ); -wfProfileOut( $fname.'-memcached' ); +wfProfileOut( $fname . '-memcached' ); -## Most of the config is out, some might want to run hooks here. +# # Most of the config is out, some might want to run hooks here. wfRunHooks( 'SetupAfterCache' ); -wfProfileIn( $fname.'-SetupSession' ); - -# 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, "=,; +.\"'\\[", "__________"); +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( !$wgCommandLineMode && ( $wgRequest->checkSessionCookie() || isset($_COOKIE[$wgCookiePrefix.'Token']) ) ) { - wfIncrStats( 'request_with_session' ); - wfSetupSession(); - $wgSessionStarted = true; -} else { - wfIncrStats( 'request_without_session' ); - $wgSessionStarted = false; +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.'-SetupSession' ); -wfProfileIn( $fname.'-globals' ); +wfProfileOut( $fname . '-session' ); +wfProfileIn( $fname . '-globals' ); $wgContLang = new StubContLang; // Now that variant lists may be available... $wgRequest->interpolateTitle(); - -$wgUser = new StubUser; +$wgUser = $wgCommandLineMode ? new User : User::newFromSession(); $wgLang = new StubUserLang; $wgOut = new StubObject( 'wgOut', 'OutputPage' ); $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) ); -$wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache', - array( $messageMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry, wfWikiID() ) ); - -wfProfileOut( $fname.'-globals' ); -wfProfileIn( $fname.'-User' ); - -# 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( !is_object( $wgAuth ) ) { +if ( !is_object( $wgAuth ) ) { $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' ); wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) ); } -wfProfileOut( $fname.'-User' ); - -wfProfileIn( $fname.'-misc2' ); - -$wgDeferredUpdateList = array(); -$wgPostCommitUpdateList = array(); - -if( $wgAjaxWatch ) $wgAjaxExportList[] = 'wfAjaxWatch'; -if( $wgAjaxUploadDestCheck ) $wgAjaxExportList[] = 'UploadForm::ajaxGetExistsWarning'; -if( $wgAjaxLicensePreview ) - $wgAjaxExportList[] = 'UploadForm::ajaxGetLicensePreview'; - # Placeholders in case of DB error $wgTitle = null; $wgArticle = null; -wfProfileOut( $fname.'-misc2' ); -wfProfileIn( $fname.'-extensions' ); +$wgDeferredUpdateList = array(); + +wfProfileOut( $fname . '-globals' ); +wfProfileIn( $fname . '-extensions' ); + +# 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 ); +} # Extension setup functions for extensions other than skins # Entries should be added to this variable during the inclusion # of the extension file. This allows the extension to perform # any necessary initialisation in the fully initialised environment -foreach( $wgExtensionFunctions as $func ) { - $profName = $fname.'-extensions-'.strval( $func ); +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 ) ) { + if ( is_object( $func[0] ) ) + $profName = $fname . '-extensions-' . get_class( $func[0] ) . '::' . $func[1]; + else + $profName = $fname . '-extensions-' . implode( '::', $func ); + } else { + $profName = $fname . '-extensions-' . strval( $func ); + } + wfProfileIn( $profName ); call_user_func( $func ); wfProfileOut( $profName ); @@ -311,18 +415,7 @@ 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 );