Make userLink() not fail too hard on false and null.
authordaniel <dkinzler@wikimedia.org>
Wed, 22 May 2019 20:12:11 +0000 (22:12 +0200)
committerThiemo Kreuz <thiemo.kreuz@wikimedia.de>
Wed, 5 Jun 2019 12:51:57 +0000 (14:51 +0200)
This works around an issue in Flow, which sometimes passes false
for a user name.

Bug: T224095
Change-Id: I14dc52f7199012dc35605f3170b06eb1719165a7

includes/Linker.php
tests/phpunit/includes/LinkerTest.php

index eb7a44f..ae50c66 100644 (file)
@@ -894,7 +894,7 @@ class Linker {
         * @since 1.16.3. $altUserName was added in 1.19.
         */
        public static function userLink( $userId, $userName, $altUserName = false ) {
-               if ( $userName === '' ) {
+               if ( $userName === '' || $userName === false || $userName === null ) {
                        wfDebug( __METHOD__ . ' received an empty username. Are there database errors ' .
                                'that need to be fixed?' );
                        return wfMessage( 'empty-username' )->parse();
index c700d5f..fe32507 100644 (file)
@@ -14,11 +14,11 @@ class LinkerTest extends MediaWikiLangTestCase {
                ] );
 
                // We'd also test the warning, but injecting a mock logger into a static method is tricky.
-               if ( $userName === '' ) {
+               if ( !$userName ) {
                        Wikimedia\suppressWarnings();
                }
                $actual = Linker::userLink( $userId, $userName, $altUserName );
-               if ( $userName === '' ) {
+               if ( !$userName ) {
                        Wikimedia\restoreWarnings();
                }
 
@@ -37,6 +37,9 @@ class LinkerTest extends MediaWikiLangTestCase {
                        'Empty username, userid 0' => [ '(no username available)', 0, '' ],
                        'Empty username, userid > 0' => [ '(no username available)', 73, '' ],
 
+                       'false instead of username' => [ '(no username available)', 73, false ],
+                       'null instead of username' => [ '(no username available)', 0, null ],
+
                        # ## ANONYMOUS USER ########################################
                        [
                                '<a href="/wiki/Special:Contributions/JohnDoe" '