Our optimization of !$GLOBALS[$key] was affecting settings where a true
setting was being disabled in LocalSettings.php. Now explicitly check it
is an array before overriding it.
Bug: T100767
Change-Id: Id5397e526d66559bfabe6065223b1181a8a9d31e
protected function exportExtractedData( array $info ) {
foreach ( $info['globals'] as $key => $val ) {
- if ( !isset( $GLOBALS[$key] ) || !$GLOBALS[$key] ) {
+ if ( !isset( $GLOBALS[$key] ) || ( is_array( $GLOBALS[$key] ) && !$GLOBALS[$key] ) ) {
$GLOBALS[$key] = $val;
} elseif ( $key === 'wgHooks' || $key === 'wgExtensionCredits' ) {
// Special case $wgHooks and $wgExtensionCredits, which require a recursive merge.
)
),
),
- )
+ ),
+ array(
+ 'False local setting should not be overridden (T100767)',
+ array(
+ 'mwtestT100767' => false,
+ ),
+ array(
+ 'mwtestT100767' => true,
+ ),
+ array(
+ 'mwtestT100767' => false,
+ ),
+ ),
);
}
}