Hi trying to override settings in localsettings.php wont work un less it is not extension registration for extension/skin. Meanning the workaround is to change it in the extension.json or skin.json for now until it is fixed and you can set it in localsettings.php
Description
Details
Related Objects
Event Timeline
Please provide an exact example and clear steps to reproduce the problem (so other people have an exact testcase), preferably as a bulleted list.
Ok sorry. I will try to make it clearer
Steps to reproduce
Download
- Vector skin for mediawiki 1.26 from master branch
Install
- Then install it by doing either
- Adding wfLoadSkin( 'Vector' );
- or require_once( "$IP/skins/Vector/Vector.php" );
- then go to your website to check it works then go back to LocalSettings.php
- And try turning of The search bar or watch list using these configuations
- set these in the localsettings.php file
- $wgVectorUseSimpleSearch = false;
- $wgVectorUseIconWatch = false;
- and then go to your site to see if it changes any thing if it doesent then there is a problem with mediawiki extension registration.
another user has reported this problem here https://github.com/paladox/Metrolook/issues/107
a temporary fallback is to set it in the extension.json/skin.json manually.
1.26 and 1.25, both that have the extension registration system that support both extension.json skin.json.
I have this same problem. The skin settings in LocalSettings.php are not transferred to skin. MW 1.25.1.
oops. Vector settings also don't work with MW1.24 i.e. for Vector the problem is not in the new system of registration
I was able to reproduce this on master with Vector.
In ExtensionRegistry::exportExtractedData there's a line:
if ( !isset( $GLOBALS[$key] ) || !$GLOBALS[$key] ) { $GLOBALS[$key] = $val;
So if $wgVectorUseIconWatch is false from LocalSettings.php, !$GLOBALS['wgVectorUseIconWatch'] is true, and its value gets overriden by ExtensionRegistration. This seems like a bug in Extension registration, and it should only be the isset part of the check but i'm not very familar with that part of the code.
Note, if you need to work around this bug right now, a very hacky work around would be to do:
` $wgExtensionFunctions[] = 'wfSetVectorVar'; function wfSetVectorVar() { global $wgVectorUseIconWatch; $wgVectorUseIconWatch = false; }
In LocalSettings.php
It's checking for empty arrays which we can just replace instead of merging into. The check should be more specific to arrays...
Change 215634 had a related patch set uploaded (by Legoktm):
registration: Don't override boolean false settings
Change 215636 had a related patch set uploaded (by Brian Wolff):
registration: Don't override boolean false settings
Change 215634 merged by jenkins-bot:
registration: Don't override boolean false settings
Change 215636 merged by jenkins-bot:
registration: Don't override boolean false settings
- https://gerrit.wikimedia.org/r/215636 (branch REL1_25): MW-1.25-release
- https://gerrit.wikimedia.org/r/215634 (branch master): MW-1.26-release, WMF-deploy-2015-06-09_(1.26wmf9)
It works but then a problem comes in if it is false and then you want to set true in localsettings.php. And probly array having problems.
And should allow other settings like numbers, set false and true in an array.
Like
Confirmaccount {
bio{
enable: true,
min: 50
}
}
Like
"ConfirmAccountRequestFormItems": { "UserName": { "enabled": true }, "RealName": { "enabled": true }, "Biography": { "enabled": true, "minWords": 50 }, "AreasOfInterest": { "enabled": true }, "CV": { "enabled": true }, "Notes": { "enabled": true }, "Links": { "enabled": true }, "TermsOfService": { "enabled": true } },
@Paladox: Do you have an actual test case of things not working? I don't understand your comment.
@Bawolff what I mean is you carnt set true or false in an array. Not even numbers like 0 or 50.
and when you set false in the extension.json or skin.json and you set true in localsettings.php it wont work like it woulden before this patch for false. needs fixing to be able to freely set true or false in an array or not. But extension.json or skin.json should not override localsettings.php
I'm marking fixed for the original example being fixed. 2d arrays like ConfirmAccount is T99257. If there are further issues of things being overridden, please file separate bugs with example code, expected behaviour and actual behaviour.
But what about settings true in localsettings.php. now true doesent work only false as long as the extension has true for that setting on by default.
Please provide a link to an extension.json in a repository that currently doesn't work.
Tested with metrolook latest release setting for example metrolook search bar setting to false in the skin.json and then setting it in localsettings to true does not work but if it was the other way around and it was set to false in the skin.json file and true in localsettings.php it works. source at https://github.com/paladox/Metrolook
I've tested with modifying the vector skins.json and it works fine.
When reporting bugs in the future, please provide step by steps to reproduce, with example code. See http://www.chiark.greenend.org.uk/~sgtatham/bugs.html