X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSetup.php;h=a5e204809930990b4315e1e745deca548759e3b3;hb=aab04d9b84d9581f3c58c2403d7b46e7aef16c9d;hp=4c4328dd408e50fa965a405e150ec611c13db7ae;hpb=2fb7f4fdb2029c9280eb1b0ee94ff1f0fa4c0492;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Setup.php b/includes/Setup.php index 4c4328dd40..a5e2048099 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -1,14 +1,16 @@ 'LocalRepo', + 'name' => 'local', + 'directory' => $wgUploadDirectory, + 'url' => $wgUploadBaseUrl ? $wgUploadBaseUrl . $wgUploadPath : $wgUploadPath, + 'hashLevels' => $wgHashedUploadDirectory ? 2 : 0, + 'thumbScriptUrl' => $wgThumbnailScriptPath, + 'transformVia404' => !$wgGenerateThumbnailOnParse, + 'initialCapital' => $wgCapitalLinks, + ); +} +/** + * Initialise shared repo from backwards-compatible settings + */ +if ( $wgUseSharedUploads ) { + if ( $wgSharedUploadDBname ) { + $wgForeignFileRepos[] = array( + 'class' => 'ForeignDBRepo', + 'name' => 'shared', + 'directory' => $wgSharedUploadDirectory, + 'url' => $wgSharedUploadPath, + 'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0, + 'thumbScriptUrl' => $wgSharedThumbnailScriptPath, + 'transformVia404' => !$wgGenerateThumbnailOnParse, + 'dbType' => $wgDBtype, + 'dbServer' => $wgDBserver, + 'dbUser' => $wgDBuser, + 'dbPassword' => $wgDBpassword, + 'dbName' => $wgSharedUploadDBname, + 'dbFlags' => DBO_DEFAULT, + 'tablePrefix' => $wgSharedUploadDBprefix, + 'hasSharedCache' => $wgCacheSharedUploads, + 'descBaseUrl' => $wgRepositoryBaseUrl, + 'fetchDescription' => $wgFetchCommonsDescriptions, + ); + } else { + $wgForeignFileRepos[] = array( + 'class' => 'FSRepo', + 'name' => 'shared', + 'directory' => $wgSharedUploadDirectory, + 'url' => $wgSharedUploadPath, + 'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0, + 'thumbScriptUrl' => $wgSharedThumbnailScriptPath, + 'transformVia404' => !$wgGenerateThumbnailOnParse, + 'descBaseUrl' => $wgRepositoryBaseUrl, + 'fetchDescription' => $wgFetchCommonsDescriptions, + ); + } } +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' ); + $wgIP = false; # Load on demand -$wgRequest = new WebRequest(); +# Can't stub this one, it sets up $_GET and $_REQUEST in its constructor +$wgRequest = new WebRequest; if ( function_exists( 'posix_uname' ) ) { $wguname = posix_uname(); $wgNodeName = $wguname['nodename']; @@ -86,7 +139,7 @@ if ( function_exists( 'posix_uname' ) ) { # Useful debug output if ( $wgCommandLineMode ) { - # wfDebug( '"' . implode( '" "', $argv ) . '"' ); + 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" ); @@ -105,6 +158,14 @@ if ( $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' ); @@ -126,16 +187,16 @@ if ( $wgDBprefix ) { } else { $wgCookiePrefix = $wgDBname; } +$wgCookiePrefix = strtr($wgCookiePrefix, "=,; +.\"'\\[", "__________"); # If session.auto_start is there, we can't touch session name # -if (!ini_get('session.auto_start')) { - session_name( $wgCookiePrefix . '_session' ); -} +if( !ini_get( 'session.auto_start' ) ) + session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' ); -if( !$wgCommandLineMode && ( isset( $_COOKIE[session_name()] ) || isset( $_COOKIE[$wgCookiePrefix.'Token'] ) ) ) { +if( !$wgCommandLineMode && ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix.'Token'] ) ) ) { wfIncrStats( 'request_with_session' ); - User::SetupSession(); + wfSetupSession(); $wgSessionStarted = true; } else { wfIncrStats( 'request_without_session' ); @@ -143,7 +204,7 @@ if( !$wgCommandLineMode && ( isset( $_COOKIE[session_name()] ) || isset( $_COOKI } wfProfileOut( $fname.'-SetupSession' ); -wfProfileIn( $fname.'-database' ); +wfProfileIn( $fname.'-globals' ); if ( !$wgDBservers ) { $wgDBservers = array(array( @@ -156,47 +217,22 @@ if ( !$wgDBservers ) { 'flags' => ($wgDebugDumpSql ? DBO_DEBUG : 0) | DBO_DEFAULT )); } -$wgLoadBalancer = LoadBalancer::newFromParams( $wgDBservers, false, $wgMasterWaitTimeout ); -$wgLoadBalancer->loadMasterPos(); - -wfProfileOut( $fname.'-database' ); -wfProfileIn( $fname.'-language1' ); - -require_once( "$IP/languages/Language.php" ); - -function setupLangObj($langclass) { - global $IP; - - if( ! class_exists( $langclass ) ) { - # Default to English/UTF-8 - $baseclass = 'LanguageUtf8'; - require_once( "$IP/languages/$baseclass.php" ); - $lc = strtolower(substr($langclass, 8)); - $snip = " - class $langclass extends $baseclass { - function getVariants() { - return array(\"$lc\"); - } - - }"; - eval($snip); - } - $lang = new $langclass(); +$wgLoadBalancer = new StubObject( 'wgLoadBalancer', 'LoadBalancer', + array( $wgDBservers, false, $wgMasterWaitTimeout, true ) ); +$wgContLang = new StubContLang; - return $lang; -} +// Now that variant lists may be available... +$wgRequest->interpolateTitle(); -# $wgLanguageCode may be changed later to fit with user preference. -# The content language will remain fixed as per the configuration, -# so let's keep it. -$wgContLanguageCode = $wgLanguageCode; -$wgContLangClass = 'Language' . str_replace( '-', '_', ucfirst( $wgContLanguageCode ) ); +$wgUser = new StubUser; +$wgLang = new StubUserLang; +$wgOut = new StubObject( 'wgOut', 'OutputPage' ); +$wgParser = new StubObject( 'wgParser', 'Parser' ); +$wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache', + array( $parserMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry, wfWikiID() ) ); -$wgContLang = setupLangObj( $wgContLangClass ); -$wgContLang->initEncoding(); - -wfProfileOut( $fname.'-language1' ); +wfProfileOut( $fname.'-globals' ); wfProfileIn( $fname.'-User' ); # Skin setup functions @@ -208,106 +244,28 @@ foreach ( $wgSkinExtensionFunctions as $func ) { } if( !is_object( $wgAuth ) ) { - require_once( 'AuthPlugin.php' ); - $wgAuth = new AuthPlugin(); -} - -if( $wgCommandLineMode ) { - # Used for some maintenance scripts; user session cookies can screw things up - # when the database is in an in-between state. - $wgUser = new User(); - # Prevent loading User settings from the DB. - $wgUser->setLoaded( true ); -} else { - $wgUser = null; - wfRunHooks('AutoAuthenticate',array(&$wgUser)); - if ($wgUser === null) { - $wgUser = User::loadFromSession(); - } + $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' ); + wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) ); } wfProfileOut( $fname.'-User' ); -wfProfileIn( $fname.'-language2' ); - -// wgLanguageCode now specifically means the UI language -$wgLanguageCode = $wgRequest->getText('uselang', ''); -if ($wgLanguageCode == '') - $wgLanguageCode = $wgUser->getOption('language'); -# Validate $wgLanguageCode, which will soon be sent to an eval() -if( empty( $wgLanguageCode ) || !preg_match( '/^[a-z]+(-[a-z]+)?$/', $wgLanguageCode ) ) { - $wgLanguageCode = $wgContLanguageCode; -} -$wgLangClass = 'Language'. str_replace( '-', '_', ucfirst( $wgLanguageCode ) ); - -if( $wgLangClass == $wgContLangClass ) { - $wgLang = &$wgContLang; -} else { - wfSuppressWarnings(); - // Preload base classes to work around APC/PHP5 bug - include_once("$IP/languages/$wgLangClass.deps.php"); - include_once("$IP/languages/$wgLangClass.php"); - wfRestoreWarnings(); - - $wgLang = setupLangObj( $wgLangClass ); -} - -wfProfileOut( $fname.'-language2' ); -wfProfileIn( $fname.'-MessageCache' ); - -$wgMessageCache = new MessageCache; -$wgMessageCache->initialise( $parserMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry, $wgDBname); - -wfProfileOut( $fname.'-MessageCache' ); - -# -# I guess the warning about UI switching might still apply... -# -# FIXME: THE ABOVE MIGHT BREAK NAMESPACES, VARIABLES, -# SEARCH INDEX UPDATES, AND MANY MANY THINGS. -# DO NOT USE THIS MODE EXCEPT FOR TESTING RIGHT NOW. -# -# To disable it, the easiest thing could be to uncomment the -# following; they should effectively disable the UI switch functionality -# -# $wgLangClass = $wgContLangClass; -# $wgLanguageCode = $wgContLanguageCode; -# $wgLang = $wgContLang; -# -# TODO: Need to change reference to $wgLang to $wgContLang at proper -# places, including namespaces, dates in signatures, magic words, -# and links -# -# TODO: Need to look at the issue of input/output encoding -# - - -wfProfileIn( $fname.'-OutputPage' ); - -$wgOut = new OutputPage(); - -wfProfileOut( $fname.'-OutputPage' ); wfProfileIn( $fname.'-misc2' ); $wgDeferredUpdateList = array(); $wgPostCommitUpdateList = array(); -$wgMagicWords = array(); -$wgMwRedir =& MagicWord::get( MAG_REDIRECT ); +if ( $wgAjaxSearch ) $wgAjaxExportList[] = 'wfSajaxSearch'; +if ( $wgAjaxWatch ) $wgAjaxExportList[] = 'wfAjaxWatch'; +if ( $wgAjaxUploadDestCheck ) $wgAjaxExportList[] = 'UploadForm::ajaxGetExistsWarning'; +if( $wgAjaxLicencePreview ) + $wgAjaxExportList[] = 'UploadForm::ajaxGetLicencePreview'; -if ( $wgUseXMLparser ) { - require_once( 'ParserXML.php' ); - $wgParser = new ParserXML(); -} else { - $wgParser = new Parser(); -} -$wgOut->setParserOptions( ParserOptions::newFromUser( $wgUser ) ); -$wgMsgParserOptions = ParserOptions::newFromUser($wgUser); wfSeedRandom(); # Placeholders in case of DB error -$wgTitle = Title::makeTitle( NS_SPECIAL, 'Error' ); -$wgArticle = new Article($wgTitle); +$wgTitle = null; +$wgArticle = null; wfProfileOut( $fname.'-misc2' ); wfProfileIn( $fname.'-extensions' ); @@ -317,7 +275,10 @@ wfProfileIn( $fname.'-extensions' ); # 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 ); + wfProfileIn( $profName ); call_user_func( $func ); + wfProfileOut( $profName ); } // For compatibility @@ -327,10 +288,9 @@ wfRunHooks( 'LogPageLogHeader', array( &$wgLogHeaders ) ); wfRunHooks( 'LogPageActionText', array( &$wgLogActions ) ); -wfDebug( "\n" ); +wfDebug( "Fully initialised\n" ); $wgFullyInitialised = true; wfProfileOut( $fname.'-extensions' ); wfProfileOut( $fname ); -} -?> +