Make Gender normalize usernames
This ensures that if GENDER is fed wfEscapeWikitext()'d version of a username, it will normalize it. See discussion on T182800. Note, we do not need to worry about the case of a user named "Project:*foo" as such namespace prefixes are illegal in usernames. Change-Id: Ic5a8fc76c28dca43ce8e334ef1874c2673433f00
This commit is contained in:
parent
7084c1e9f4
commit
5fd1e1abe0
2 changed files with 23 additions and 2 deletions
|
|
@ -337,8 +337,8 @@ class CoreParserFunctions {
|
|||
// default
|
||||
$gender = User::getDefaultOption( 'gender' );
|
||||
|
||||
// allow prefix.
|
||||
$title = Title::newFromText( $username );
|
||||
// allow prefix and normalize (e.g. "*foo" -> "*foo" ).
|
||||
$title = Title::newFromText( $username, NS_USER );
|
||||
|
||||
if ( $title && $title->inNamespace( NS_USER ) ) {
|
||||
$username = $title->getText();
|
||||
|
|
|
|||
21
tests/phpunit/includes/parser/CoreParserFunctionsTest.php
Normal file
21
tests/phpunit/includes/parser/CoreParserFunctionsTest.php
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* @group Database
|
||||
* @covers CoreParserFunctions
|
||||
*/
|
||||
class CoreParserFunctionsTest extends MediaWikiTestCase {
|
||||
|
||||
public function testGender() {
|
||||
$user = User::createNew( '*Female' );
|
||||
$user->setOption( 'gender', 'female' );
|
||||
$user->saveSettings();
|
||||
|
||||
$msg = ( new RawMessage( '{{GENDER:*Female|m|f|o}}' ) )->parse();
|
||||
$this->assertEquals( $msg, 'f', 'Works unescaped' );
|
||||
$escapedName = wfEscapeWikiText( '*Female' );
|
||||
$msg2 = ( new RawMessage( '{{GENDER:' . $escapedName . '|m|f|o}}' ) )
|
||||
->parse();
|
||||
$this->assertEquals( $msg, 'f', 'Works escaped' );
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in a new issue