From adf6e8fcdd56c5ab76fb757630f0e772ec2853c5 Mon Sep 17 00:00:00 2001 From: Marius Hoch Date: Mon, 29 Oct 2012 01:21:20 +0100 Subject: [PATCH] Cache the result of User::getDefaultOptions Caching the result of User::getDefaultOptions as it always returns the same data, despite for unit tests, which can't use the cached values as they do evil things with variables being constant in normal operation. Change-Id: I02d557006d2f879e7ce510a5e47fa1543baab8a6 --- includes/User.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/includes/User.php b/includes/User.php index e210eba6cf..770b28eed9 100644 --- a/includes/User.php +++ b/includes/User.php @@ -1216,6 +1216,14 @@ class User { public static function getDefaultOptions() { global $wgNamespacesToBeSearchedDefault, $wgDefaultUserOptions, $wgContLang, $wgDefaultSkin; + static $defOpt = null; + if ( !defined( 'MW_PHPUNIT_TEST' ) && $defOpt !== null ) { + // Disabling this for the unit tests, as they rely on being able to change $wgContLang + // mid-request and see that change reflected in the return value of this function. + // Which is insane and would never happen during normal MW operation + return $defOpt; + } + $defOpt = $wgDefaultUserOptions; # default language setting $defOpt['variant'] = $wgContLang->getCode(); @@ -1225,12 +1233,6 @@ class User { } $defOpt['skin'] = $wgDefaultSkin; - // FIXME: Ideally we'd cache the results of this function so the hook is only run once, - // but that breaks the parser tests because they rely on being able to change $wgContLang - // mid-request and see that change reflected in the return value of this function. - // Which is insane and would never happen during normal MW operation, but is also not - // likely to get fixed unless and until we context-ify everything. - // See also https://www.mediawiki.org/wiki/Special:Code/MediaWiki/101488#c25275 wfRunHooks( 'UserGetDefaultOptions', array( &$defOpt ) ); return $defOpt; -- 2.20.1