jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/343861 )
Change subject: Decode '0'-valued user options to integer 0 ...................................................................... Decode '0'-valued user options to integer 0 I13d0e402f fixed a MySQL strict-mode bug by having boolean false be sent to the database as 0 rather than "", since so many of our logically-boolean fields are typed as tinyints. That happened to also cause logically-false user preferences to be stored in the user_properties table as "0" rather than "", which works fine in PHP but confuses JavaScript since it considers string-0 as truthy rather than falsey. To avoid this situation, convert "0" to 0 when loading the user options. Completely solving T54542 is left for another time, since identifying which type to normalize each option to seems nontrivial. Change-Id: Ia3280b7ce923641eac077141b47cba10d3fb88db --- M includes/user/User.php 1 file changed, 7 insertions(+), 0 deletions(-) Approvals: Krinkle: Looks good to me, approved jenkins-bot: Verified diff --git a/includes/user/User.php b/includes/user/User.php index a963388..ef4537f 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -5266,6 +5266,13 @@ $this->mOptionOverrides = []; $data = []; foreach ( $res as $row ) { + // Convert '0' to 0. PHP's boolean conversion considers them both + // false, but e.g. JavaScript considers the former as true. + // @todo: T54542 Somehow determine the desired type (string/int/bool) + // and convert all values here. + if ( $row->up_value === '0' ) { + $row->up_value = 0; + } $data[$row->up_property] = $row->up_value; } } -- To view, visit https://gerrit.wikimedia.org/r/343861 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ia3280b7ce923641eac077141b47cba10d3fb88db Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Anomie <bjor...@wikimedia.org> Gerrit-Reviewer: Anomie <bjor...@wikimedia.org> Gerrit-Reviewer: Gergő Tisza <gti...@wikimedia.org> Gerrit-Reviewer: Krinkle <krinklem...@gmail.com> Gerrit-Reviewer: Legoktm <lego...@member.fsf.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits