X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSetup.php;h=7f964a1d21ff93ae8efd6dd80150481df678ea74;hb=ae23eaf60beeee40e3f2f33f2d3e1e6a302e40bc;hp=705a719015f7cac0e5da36d44f920d17513767bf;hpb=266d41f165fe23e85f70f90891f951b0b0bcda7a;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Setup.php b/includes/Setup.php index 705a719015..7f964a1d21 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -1,14 +1,16 @@ getCode() +$wgContLanguageCode = $wgLanguageCode; + wfProfileOut( $fname.'-misc1' ); wfProfileIn( $fname.'-memcached' ); @@ -116,14 +127,22 @@ wfProfileOut( $fname.'-memcached' ); wfProfileIn( $fname.'-SetupSession' ); if ( $wgDBprefix ) { - session_name( $wgDBname . '_' . $wgDBprefix . '_session' ); + $wgCookiePrefix = $wgDBname . '_' . $wgDBprefix; +} elseif ( $wgSharedDB ) { + $wgCookiePrefix = $wgSharedDB; } else { - session_name( $wgDBname . '_session' ); + $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( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' ); -if( !$wgCommandLineMode && ( isset( $_COOKIE[session_name()] ) || isset( $_COOKIE[$wgDBname.'Token'] ) ) ) { +if( !$wgCommandLineMode && ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix.'Token'] ) ) ) { wfIncrStats( 'request_with_session' ); - User::SetupSession(); + wfSetupSession(); $wgSessionStarted = true; } else { wfIncrStats( 'request_without_session' ); @@ -131,7 +150,7 @@ if( !$wgCommandLineMode && ( isset( $_COOKIE[session_name()] ) || isset( $_COOKI } wfProfileOut( $fname.'-SetupSession' ); -wfProfileIn( $fname.'-database' ); +wfProfileIn( $fname.'-globals' ); if ( !$wgDBservers ) { $wgDBservers = array(array( @@ -144,160 +163,52 @@ 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 # Entries can be added to this variable during the inclusion # of the extension file. Skins can then perform any necessary initialisation. # -# require_once is slow even on the second call, so this needs to be outside the loop -if ( count( $wgSkinExtensionFunctions ) ) { - require_once( 'PersistentObject.php' ); -} foreach ( $wgSkinExtensionFunctions as $func ) { call_user_func( $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(); - 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 ( $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' ); @@ -306,17 +217,23 @@ wfProfileIn( $fname.'-extensions' ); # 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 -if ( count( $wgExtensionFunctions ) ) { - require_once( 'PersistentObject.php' ); -} foreach ( $wgExtensionFunctions as $func ) { + $profName = $fname.'-extensions-'.strval( $func ); + wfProfileIn( $profName ); call_user_func( $func ); + wfProfileOut( $profName ); } -wfDebug( "\n" ); +// For compatibility +wfRunHooks( 'LogPageValidTypes', array( &$wgLogTypes ) ); +wfRunHooks( 'LogPageLogName', array( &$wgLogNames ) ); +wfRunHooks( 'LogPageLogHeader', array( &$wgLogHeaders ) ); +wfRunHooks( 'LogPageActionText', array( &$wgLogActions ) ); + + +wfDebug( "Fully initialised\n" ); $wgFullyInitialised = true; wfProfileOut( $fname.'-extensions' ); wfProfileOut( $fname ); -} ?>