From a22ab0eab02c6de1335ded722cf5b712fc79504a Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Thu, 26 May 2016 13:29:02 -0700 Subject: [PATCH] TitleParser: In formatTitle(), don't throw exceptions on bad namespaces This ocassionally happens for whatever reason, but it doesn't really make sense to throw an exception when creating a broken-looking link would also work. We already do this for TitleParser::getPrefixedDBkey(), and this also matches the behavior of Title::getNsText(). Bug: T136352 Bug: T136356 Change-Id: Ic7eb17f8917f7fbb28b11d94b742dac1fe5582a1 --- includes/title/MediaWikiTitleCodec.php | 12 +++++++++--- .../includes/title/MediaWikiTitleCodecTest.php | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/includes/title/MediaWikiTitleCodec.php b/includes/title/MediaWikiTitleCodec.php index 38e9ecdacf..a937e757f1 100644 --- a/includes/title/MediaWikiTitleCodec.php +++ b/includes/title/MediaWikiTitleCodec.php @@ -105,10 +105,16 @@ class MediaWikiTitleCodec implements TitleFormatter, TitleParser { */ public function formatTitle( $namespace, $text, $fragment = '', $interwiki = '' ) { if ( $namespace !== false ) { - $namespace = $this->getNamespaceName( $namespace, $text ); + // Try to get a namespace name, but fallback + // to empty string if it doesn't exist + try { + $nsName = $this->getNamespaceName( $namespace, $text ); + } catch ( InvalidArgumentException $e ) { + $nsName = ''; + } - if ( $namespace !== '' ) { - $text = $namespace . ':' . $text; + if ( $namespace !== 0 ) { + $text = $nsName . ':' . $text; } } diff --git a/tests/phpunit/includes/title/MediaWikiTitleCodecTest.php b/tests/phpunit/includes/title/MediaWikiTitleCodecTest.php index e55a3a4438..4d914e4680 100644 --- a/tests/phpunit/includes/title/MediaWikiTitleCodecTest.php +++ b/tests/phpunit/includes/title/MediaWikiTitleCodecTest.php @@ -164,6 +164,7 @@ class MediaWikiTitleCodecTest extends MediaWikiTestCase { // getGenderCache() provides a mock that considers first // names ending in "a" to be female. [ NS_USER, 'Lisa_Müller', '', 'de', 'Benutzerin:Lisa Müller' ], + [ 1000000, 'Invalid_namespace', '', 'en', ':Invalid namespace' ], ]; } -- 2.20.1