diff --git a/includes/Request/WebRequest.php b/includes/Request/WebRequest.php index 734076449b8..feb22155dd3 100644 --- a/includes/Request/WebRequest.php +++ b/includes/Request/WebRequest.php @@ -668,8 +668,12 @@ class WebRequest { * @return bool */ public function getFuzzyBool( $name, $default = false ): bool { - return $this->getBool( $name, $default ) - && strcasecmp( $this->getRawVal( $name ), 'false' ) !== 0; + $value = $this->getRawVal( $name ); + if ( $value === null ) { + return (bool)$default; + } + + return $value && strcasecmp( $value, 'false' ) !== 0; } /** diff --git a/tests/phpunit/includes/Request/WebRequestTest.php b/tests/phpunit/includes/Request/WebRequestTest.php index f6f63c97fa2..386bed6b4b5 100644 --- a/tests/phpunit/includes/Request/WebRequestTest.php +++ b/tests/phpunit/includes/Request/WebRequestTest.php @@ -297,6 +297,11 @@ class WebRequestTest extends MediaWikiIntegrationTestCase { $this->assertFalse( $req->getFuzzyBool( 'z' ), 'Not found' ); } + public function testGetFuzzyBoolDefaultTrue() { + $req = $this->mockWebRequest(); + $this->assertTrue( $req->getFuzzyBool( 'z', true ), 'Not found, default true' ); + } + public function testGetCheck() { $req = $this->mockWebRequest( [ 'x' => 'Value', 'zero' => '0' ] ); $this->assertFalse( $req->getCheck( 'z' ), 'Not found' );