Merge "Remove no-op parameter from UIDGeneratorTest"
[lhc/web/wiklou.git] / includes / Setup.php
index ba3d628..189855e 100644 (file)
@@ -121,16 +121,16 @@ if ( $wgRightsIcon ) {
 
 if ( isset( $wgFooterIcons['copyright'] )
        && isset( $wgFooterIcons['copyright']['copyright'] )
-       && $wgFooterIcons['copyright']['copyright'] === array()
+       && $wgFooterIcons['copyright']['copyright'] === []
 ) {
        if ( $wgCopyrightIcon ) {
                $wgFooterIcons['copyright']['copyright'] = $wgCopyrightIcon;
        } elseif ( $wgRightsIcon || $wgRightsText ) {
-               $wgFooterIcons['copyright']['copyright'] = array(
+               $wgFooterIcons['copyright']['copyright'] = [
                        'url' => $wgRightsUrl,
                        'src' => $wgRightsIcon,
                        'alt' => $wgRightsText,
-               );
+               ];
        } else {
                unset( $wgFooterIcons['copyright']['copyright'] );
        }
@@ -167,21 +167,21 @@ $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK;
 /**
  * Initialise $wgLockManagers to include basic FS version
  */
-$wgLockManagers[] = array(
+$wgLockManagers[] = [
        'name' => 'fsLockManager',
        'class' => 'FSLockManager',
        'lockDirectory' => "{$wgUploadDirectory}/lockdir",
-);
-$wgLockManagers[] = array(
+];
+$wgLockManagers[] = [
        'name' => 'nullLockManager',
        'class' => 'NullLockManager',
-);
+];
 
 /**
  * Initialise $wgLocalFileRepo from backwards-compatible settings
  */
 if ( !$wgLocalFileRepo ) {
-       $wgLocalFileRepo = array(
+       $wgLocalFileRepo = [
                'class' => 'LocalRepo',
                'name' => 'local',
                'directory' => $wgUploadDirectory,
@@ -193,14 +193,14 @@ if ( !$wgLocalFileRepo ) {
                'transformVia404' => !$wgGenerateThumbnailOnParse,
                'deletedDir' => $wgDeletedDirectory,
                'deletedHashLevels' => $wgHashedUploadDirectory ? 3 : 0
-       );
+       ];
 }
 /**
  * Initialise shared repo from backwards-compatible settings
  */
 if ( $wgUseSharedUploads ) {
        if ( $wgSharedUploadDBname ) {
-               $wgForeignFileRepos[] = array(
+               $wgForeignFileRepos[] = [
                        'class' => 'ForeignDBRepo',
                        'name' => 'shared',
                        'directory' => $wgSharedUploadDirectory,
@@ -218,9 +218,9 @@ if ( $wgUseSharedUploads ) {
                        'hasSharedCache' => $wgCacheSharedUploads,
                        'descBaseUrl' => $wgRepositoryBaseUrl,
                        'fetchDescription' => $wgFetchCommonsDescriptions,
-               );
+               ];
        } else {
-               $wgForeignFileRepos[] = array(
+               $wgForeignFileRepos[] = [
                        'class' => 'FileRepo',
                        'name' => 'shared',
                        'directory' => $wgSharedUploadDirectory,
@@ -230,11 +230,11 @@ if ( $wgUseSharedUploads ) {
                        'transformVia404' => !$wgGenerateThumbnailOnParse,
                        'descBaseUrl' => $wgRepositoryBaseUrl,
                        'fetchDescription' => $wgFetchCommonsDescriptions,
-               );
+               ];
        }
 }
 if ( $wgUseInstantCommons ) {
-       $wgForeignFileRepos[] = array(
+       $wgForeignFileRepos[] = [
                'class' => 'ForeignAPIRepo',
                'name' => 'wikimediacommons',
                'apibase' => 'https://commons.wikimedia.org/w/api.php',
@@ -245,7 +245,7 @@ if ( $wgUseInstantCommons ) {
                'fetchDescription' => true,
                'descriptionCacheExpiry' => 43200,
                'apiThumbCacheExpiry' => 86400,
-       );
+       ];
 }
 /*
  * Add on default file backend config for file repos.
@@ -363,7 +363,7 @@ if ( $wgEnableEmail ) {
        unset( $wgGroupPermissions['user']['sendemail'] );
        $wgUseEnotif = false;
        $wgUserEmailUseReplyTo = false;
-       $wgUsersNotifiedOnAllChanges = array();
+       $wgUsersNotifiedOnAllChanges = [];
 }
 
 // Doesn't make sense to have if disabled.
@@ -402,7 +402,7 @@ $wgMinUploadChunkSize = min(
  * Definitions of the NS_ constants are in Defines.php
  * @private
  */
-$wgCanonicalNamespaceNames = array(
+$wgCanonicalNamespaceNames = [
        NS_MEDIA            => 'Media',
        NS_SPECIAL          => 'Special',
        NS_TALK             => 'Talk',
@@ -420,7 +420,7 @@ $wgCanonicalNamespaceNames = array(
        NS_HELP_TALK        => 'Help_talk',
        NS_CATEGORY         => 'Category',
        NS_CATEGORY_TALK    => 'Category_talk',
-);
+];
 
 /// @todo UGLY UGLY
 if ( is_array( $wgExtraNamespaces ) ) {
@@ -517,6 +517,11 @@ if ( $wgPHPSessionHandling !== 'enable' &&
 ) {
        $wgPHPSessionHandling = 'warn';
 }
+if ( defined( 'MW_NO_SESSION' ) ) {
+       // If the entry point wants no session, force 'disable' here unless they
+       // specifically set it to the (undocumented) 'warn'.
+       $wgPHPSessionHandling = MW_NO_SESSION === 'warn' ? 'warn' : 'disable';
+}
 
 Profiler::instance()->scopedProfileOut( $ps_default );
 
@@ -538,7 +543,7 @@ require_once "$IP/includes/compat/normal/UtfNormalUtil.php";
 $ps_validation = Profiler::instance()->scopedProfileIn( $fname . '-validation' );
 
 // T48998: Bail out early if $wgArticlePath is non-absolute
-foreach ( array( 'wgArticlePath', 'wgVariantArticlePath' ) as $varName ) {
+foreach ( [ 'wgArticlePath', 'wgVariantArticlePath' ] as $varName ) {
        if ( $$varName && !preg_match( '/^(https?:\/\/|\/)/', $$varName ) ) {
                throw new FatalError(
                        "If you use a relative URL for \$$varName, it must start " .
@@ -599,12 +604,12 @@ if ( $wgMainWANCache === false ) {
        // Setup a WAN cache from $wgMainCacheType with no relayer.
        // Sites using multiple datacenters can configure a relayer.
        $wgMainWANCache = 'mediawiki-main-default';
-       $wgWANObjectCaches[$wgMainWANCache] = array(
+       $wgWANObjectCaches[$wgMainWANCache] = [
                'class'         => 'WANObjectCache',
                'cacheId'       => $wgMainCacheType,
                'pool'          => 'mediawiki-main-default',
-               'relayerConfig' => array( 'class' => 'EventRelayerNull' )
-       );
+               'relayerConfig' => [ 'class' => 'EventRelayerNull' ]
+       ];
 }
 
 Profiler::instance()->scopedProfileOut( $ps_default2 );
@@ -686,7 +691,7 @@ $wgRequest->interpolateTitle();
 
 if ( !is_object( $wgAuth ) ) {
        $wgAuth = new AuthPlugin;
-       Hooks::run( 'AuthPluginSetup', array( &$wgAuth ) );
+       Hooks::run( 'AuthPluginSetup', [ &$wgAuth ] );
 }
 
 // Set up the session
@@ -702,10 +707,13 @@ if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
                session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' );
        }
 
-       // Create the SessionManager singleton and set up our session handler
-       MediaWiki\Session\PHPSessionHandler::install(
-               MediaWiki\Session\SessionManager::singleton()
-       );
+       // Create the SessionManager singleton and set up our session handler,
+       // unless we're specifically asked not to.
+       if ( !defined( 'MW_NO_SESSION_HANDLER' ) ) {
+               MediaWiki\Session\PHPSessionHandler::install(
+                       MediaWiki\Session\SessionManager::singleton()
+               );
+       }
 
        // Initialize the session
        try {
@@ -714,7 +722,7 @@ if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
                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();
+                       $list = [];
                        foreach ( $ex->sessionInfos as $info ) {
                                $list[] = $info->getProvider()->describe( $wgContLang );
                        }
@@ -740,6 +748,16 @@ if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
                session_id( $session->getId() );
                MediaWiki\quietCall( 'session_start' );
        }
+
+       unset( $session );
+} else {
+       // Even if we didn't set up a global Session, still install our session
+       // handler unless specifically requested not to.
+       if ( !defined( 'MW_NO_SESSION_HANDLER' ) ) {
+               MediaWiki\Session\PHPSessionHandler::install(
+                       MediaWiki\Session\SessionManager::singleton()
+               );
+       }
 }
 Profiler::instance()->scopedProfileOut( $ps_session );
 
@@ -761,7 +779,7 @@ $wgOut = RequestContext::getMain()->getOutput(); // BackCompat
 /**
  * @var Parser $wgParser
  */
-$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
+$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], [ $wgParserConf ] );
 
 /**
  * @var Title $wgTitle
@@ -796,13 +814,15 @@ foreach ( $wgExtensionFunctions as $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 );
+if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
+       $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 );
 }
-unset( $sessionUser );
 
 wfDebug( "Fully initialised\n" );
 $wgFullyInitialised = true;