X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Ftitle%2FMediaWikiTitleCodec.php;h=a937e757f1748ece52bbabe720fbc6c2854fc629;hb=e758226c91935a1df2b6fd3ed1f18922d8bfb45b;hp=0e291ede141aad01b541fb4b36e125027bf13dbe;hpb=46deecce89b76e2d45e61f5f696928bb859ae324;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/title/MediaWikiTitleCodec.php b/includes/title/MediaWikiTitleCodec.php index 0e291ede14..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; } } @@ -181,6 +187,37 @@ class MediaWikiTitleCodec implements TitleFormatter, TitleParser { ); } + /** + * @since 1.27 + * @see TitleFormatter::getPrefixedDBkey() + * @param LinkTarget $target + * @return string + */ + public function getPrefixedDBkey( LinkTarget $target ) { + $key = ''; + if ( $target->isExternal() ) { + $key .= $target->getInterwiki() . ':'; + } + // Try to get a namespace name, but fallback + // to empty string if it doesn't exist + try { + $nsName = $this->getNamespaceName( + $target->getNamespace(), + $target->getText() + ); + } catch ( InvalidArgumentException $e ) { + $nsName = ''; + } + + if ( $target->getNamespace() !== 0 ) { + $key .= $nsName . ':'; + } + + $key .= $target->getText(); + + return strtr( $key, ' ', '_' ); + } + /** * @see TitleFormatter::getText() *