);
}
-if ( isset( $wgFooterIcons['copyright'] )
- && isset( $wgFooterIcons['copyright']['copyright'] )
- && $wgFooterIcons['copyright']['copyright'] === array()
+if ( isset( $wgFooterIcons['copyright']['copyright'] )
+ && $wgFooterIcons['copyright']['copyright'] === []
) {
- if ( $wgCopyrightIcon ) {
- $wgFooterIcons['copyright']['copyright'] = $wgCopyrightIcon;
- } elseif ( $wgRightsIcon || $wgRightsText ) {
- $wgFooterIcons['copyright']['copyright'] = array(
+ if ( $wgRightsIcon || $wgRightsText ) {
+ $wgFooterIcons['copyright']['copyright'] = [
'url' => $wgRightsUrl,
'src' => $wgRightsIcon,
'alt' => $wgRightsText,
- );
- } else {
- unset( $wgFooterIcons['copyright']['copyright'] );
+ ];
}
}
/**
* 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,
'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,
'hasSharedCache' => $wgCacheSharedUploads,
'descBaseUrl' => $wgRepositoryBaseUrl,
'fetchDescription' => $wgFetchCommonsDescriptions,
- );
+ ];
} else {
- $wgForeignFileRepos[] = array(
+ $wgForeignFileRepos[] = [
'class' => 'FileRepo',
'name' => 'shared',
'directory' => $wgSharedUploadDirectory,
'transformVia404' => !$wgGenerateThumbnailOnParse,
'descBaseUrl' => $wgRepositoryBaseUrl,
'fetchDescription' => $wgFetchCommonsDescriptions,
- );
+ ];
}
}
if ( $wgUseInstantCommons ) {
- $wgForeignFileRepos[] = array(
+ $wgForeignFileRepos[] = [
'class' => 'ForeignAPIRepo',
'name' => 'wikimediacommons',
'apibase' => 'https://commons.wikimedia.org/w/api.php',
'fetchDescription' => true,
'descriptionCacheExpiry' => 43200,
'apiThumbCacheExpiry' => 86400,
- );
+ ];
}
/*
* Add on default file backend config for file repos.
unset( $wgGroupPermissions['user']['sendemail'] );
$wgUseEnotif = false;
$wgUserEmailUseReplyTo = false;
- $wgUsersNotifiedOnAllChanges = array();
-}
-
-// Doesn't make sense to have if disabled.
-if ( !$wgEnotifMinorEdits ) {
- $wgHiddenPrefs[] = 'enotifminoredits';
+ $wgUsersNotifiedOnAllChanges = [];
}
if ( $wgMetaNamespace === false ) {
* Definitions of the NS_ constants are in Defines.php
* @private
*/
-$wgCanonicalNamespaceNames = array(
+$wgCanonicalNamespaceNames = [
NS_MEDIA => 'Media',
NS_SPECIAL => 'Special',
NS_TALK => 'Talk',
NS_HELP_TALK => 'Help_talk',
NS_CATEGORY => 'Category',
NS_CATEGORY_TALK => 'Category_talk',
-);
+];
/// @todo UGLY UGLY
if ( is_array( $wgExtraNamespaces ) ) {
$wgXhtmlDefaultNamespace = 'http://www.w3.org/1999/xhtml';
$wgJsMimeType = 'text/javascript';
-if ( !$wgHtml5Version && $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';
- }
-}
-
// Blacklisted file extensions shouldn't appear on the "allowed" list
$wgFileExtensions = array_values( array_diff( $wgFileExtensions, $wgFileBlacklist ) );
) {
$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 );
require_once "$IP/includes/AutoLoader.php";
}
+// Install a header callback to prevent caching of responses with cookies (T127993)
+if ( !$wgCommandLineMode ) {
+ header_register_callback( function () {
+ $headers = [];
+ foreach ( headers_list() as $header ) {
+ list( $name, $value ) = explode( ':', $header, 2 );
+ $headers[strtolower( trim( $name ) )][] = trim( $value );
+ }
+
+ if ( isset( $headers['set-cookie'] ) ) {
+ $cacheControl = isset( $headers['cache-control'] )
+ ? implode( ', ', $headers['cache-control'] )
+ : '';
+
+ if ( !preg_match( '/(?:^|,)\s*(?:private|no-cache|no-store)\s*(?:$|,)/i', $cacheControl ) ) {
+ header( 'Expires: Thu, 01 Jan 1970 00:00:00 GMT' );
+ header( 'Cache-Control: private, max-age=0, s-maxage=0' );
+ MediaWiki\Logger\LoggerFactory::getInstance( 'cache-cookies' )->warning(
+ 'Cookies set on {url} with Cache-Control "{cache-control}"', [
+ 'url' => WebRequest::getGlobalRequestURL(),
+ 'cookies' => $headers['set-cookie'],
+ 'cache-control' => $cacheControl ?: '<not set>',
+ ]
+ );
+ }
+ }
+ } );
+}
+
MWExceptionHandler::installHandler();
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 " .
if ( !$wgPasswordSender ) {
$wgPasswordSender = 'apache@' . $wgServerName;
}
+if ( !$wgNoReplyAddress ) {
+ $wgNoReplyAddress = $wgPasswordSender;
+}
if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
$wgSecureLogin = 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 );
if ( !is_object( $wgAuth ) ) {
$wgAuth = new AuthPlugin;
- Hooks::run( 'AuthPluginSetup', array( &$wgAuth ) );
+ Hooks::run( 'AuthPluginSetup', [ &$wgAuth ] );
}
// Set up the session
$ps_session = Profiler::instance()->scopedProfileIn( $fname . '-session' );
/**
- * @var MediaWiki\\Session\\SessionId|null $wgInitialSessionId The persistent
+ * @var MediaWiki\Session\SessionId|null $wgInitialSessionId The persistent
* session ID (if any) loaded at startup
*/
$wgInitialSessionId = null;
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 {
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 );
}
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 );
/**
* @var Parser $wgParser
*/
-$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
+$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], [ $wgParserConf ] );
/**
* @var Title $wgTitle
wfDebug( "Fully initialised\n" );
$wgFullyInitialised = true;
-// T125455
-if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
- MediaWiki\Session\SessionManager::singleton()->checkIpLimits();
-}
-
Profiler::instance()->scopedProfileOut( $ps_extensions );
Profiler::instance()->scopedProfileOut( $ps_setup );