Add Special:ApiSandbox
[lhc/web/wiklou.git] / includes / Setup.php
index 85ff3f3..06962c1 100644 (file)
@@ -357,7 +357,6 @@ if ( $wgEnableEmail ) {
        $wgEnotifMaxRecips = 0;
        $wgEnotifMinorEdits = false;
        $wgEnotifRevealEditorAddress = false;
-       $wgEnotifUseJobQ = false;
        $wgEnotifUseRealName = false;
        $wgEnotifUserTalk = false;
        $wgEnotifWatchlist = false;
@@ -497,25 +496,10 @@ if ( $wgMaximalPasswordLength !== false ) {
        $wgPasswordPolicy['policies']['default']['MaximalPasswordLength'] = $wgMaximalPasswordLength;
 }
 
-// Backwards compatibility warning
-if ( !$wgSessionsInObjectCache && !$wgSessionsInMemcached ) {
-       wfDeprecated( '$wgSessionsInObjectCache = false', '1.27' );
-       if ( $wgSessionHandler ) {
-               wfDeprecated( '$wgSessionsHandler', '1.27' );
-       }
-       $cacheType = get_class( ObjectCache::getInstance( $wgSessionCacheType ) );
-       wfDebugLog(
-               "Session data will be stored in \"$cacheType\" cache with " .
-                       "expiry $wgObjectCacheSessionExpiry seconds"
-       );
-}
-$wgSessionsInObjectCache = true;
-
-if ( $wgPHPSessionHandling !== 'enable' &&
-       $wgPHPSessionHandling !== 'warn' &&
-       $wgPHPSessionHandling !== 'disable'
-) {
-       $wgPHPSessionHandling = 'warn';
+// Backwards compatibility with deprecated alias
+// Must be before call to wfSetupSession()
+if ( $wgSessionsInMemcached ) {
+       $wgSessionsInObjectCache = true;
 }
 
 Profiler::instance()->scopedProfileOut( $ps_default );
@@ -672,6 +656,20 @@ Profiler::instance()->scopedProfileOut( $ps_memcached );
 // Most of the config is out, some might want to run hooks here.
 Hooks::run( 'SetupAfterCache' );
 
+$ps_session = Profiler::instance()->scopedProfileIn( $fname . '-session' );
+
+if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
+       // If session.auto_start is there, we can't touch session name
+       if ( !wfIniGetBool( 'session.auto_start' ) ) {
+               session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' );
+       }
+
+       if ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix . 'Token'] ) ) {
+               wfSetupSession();
+       }
+}
+
+Profiler::instance()->scopedProfileOut( $ps_session );
 $ps_globals = Profiler::instance()->scopedProfileIn( $fname . '-globals' );
 
 /**
@@ -684,65 +682,6 @@ $wgContLang->initContLang();
 // Now that variant lists may be available...
 $wgRequest->interpolateTitle();
 
-if ( !is_object( $wgAuth ) ) {
-       $wgAuth = new AuthPlugin;
-       Hooks::run( 'AuthPluginSetup', array( &$wgAuth ) );
-}
-
-// Set up the session
-$ps_session = Profiler::instance()->scopedProfileIn( $fname . '-session' );
-/**
- * @var MediaWiki\\Session\\SessionId|null $wgInitialSessionId The persistent
- * session ID (if any) loaded at startup
- */
-$wgInitialSessionId = null;
-if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
-       // If session.auto_start is there, we can't touch session name
-       if ( $wgPHPSessionHandling !== 'disable' && !wfIniGetBool( 'session.auto_start' ) ) {
-               session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' );
-       }
-
-       // Create the SessionManager singleton and set up our session handler
-       MediaWiki\Session\PHPSessionHandler::install(
-               MediaWiki\Session\SessionManager::singleton()
-       );
-
-       // Initialize the session
-       try {
-               $session = MediaWiki\Session\SessionManager::getGlobalSession();
-       } catch ( OverflowException $ex ) {
-               if ( isset( $ex->sessionInfos ) && count( $ex->sessionInfos ) >= 2 ) {
-                       // The exception is because the request had multiple possible
-                       // sessions tied for top priority. Report this to the user.
-                       $list = array();
-                       foreach ( $ex->sessionInfos as $info ) {
-                               $list[] = $info->getProvider()->describe( $wgContLang );
-                       }
-                       $list = $wgContLang->listToText( $list );
-                       throw new HttpError( 400,
-                               Message::newFromKey( 'sessionmanager-tie', $list )->inLanguage( $wgContLang )->plain()
-                       );
-               }
-
-               // Not the one we want, rethrow
-               throw $ex;
-       }
-
-       if ( $session->isPersistent() ) {
-               $wgInitialSessionId = $session->getSessionId();
-       }
-
-       $session->renew();
-       if ( MediaWiki\Session\PHPSessionHandler::isEnabled() &&
-               ( $session->isPersistent() || $session->shouldRememberUser() )
-       ) {
-               // Start the PHP-session for backwards compatibility
-               session_id( $session->getId() );
-               MediaWiki\quietCall( 'session_start' );
-       }
-}
-Profiler::instance()->scopedProfileOut( $ps_session );
-
 /**
  * @var User $wgUser
  */
@@ -763,6 +702,11 @@ $wgOut = RequestContext::getMain()->getOutput(); // BackCompat
  */
 $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
 
+if ( !is_object( $wgAuth ) ) {
+       $wgAuth = new AuthPlugin;
+       Hooks::run( 'AuthPluginSetup', array( &$wgAuth ) );
+}
+
 /**
  * @var Title $wgTitle
  */
@@ -794,16 +738,6 @@ foreach ( $wgExtensionFunctions as $func ) {
        Profiler::instance()->scopedProfileOut( $ps_ext_func );
 }
 
-// If the session user has a 0 id but a valid name, that means we need to
-// autocreate it.
-$sessionUser = MediaWiki\Session\SessionManager::getGlobalSession()->getUser();
-if ( $sessionUser->getId() === 0 && User::isValidUserName( $sessionUser->getName() ) ) {
-       $ps_autocreate = Profiler::instance()->scopedProfileIn( $fname . '-autocreate' );
-       MediaWiki\Session\SessionManager::autoCreateUser( $sessionUser );
-       Profiler::instance()->scopedProfileOut( $ps_autocreate );
-}
-unset( $sessionUser );
-
 wfDebug( "Fully initialised\n" );
 $wgFullyInitialised = true;