Merge "Use injected services instead of static method"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 19 Aug 2019 16:04:04 +0000 (16:04 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 19 Aug 2019 16:04:04 +0000 (16:04 +0000)
1  2 
includes/title/MediaWikiTitleCodec.php

@@@ -62,7 -62,8 +62,8 @@@ class MediaWikiTitleCodec implements Ti
        protected $nsInfo;
  
        /**
-        * @param Language $language The language object to use for localizing namespace names.
+        * @param Language $language The language object to use for localizing namespace names,
+        *   capitalization, etc.
         * @param GenderCache $genderCache The gender cache for generating gendered namespace names
         * @param string[]|string $localInterwikis
         * @param InterwikiLookup|null $interwikiLookup
                );
        }
  
 +      /**
 +       * Given a namespace and title, return a TitleValue if valid, or null if invalid.
 +       *
 +       * @param int $namespace
 +       * @param string $text
 +       * @param string $fragment
 +       * @param string $interwiki
 +       *
 +       * @return TitleValue|null
 +       */
 +      public function makeTitleValueSafe( $namespace, $text, $fragment = '', $interwiki = '' ) {
 +              if ( !$this->nsInfo->exists( $namespace ) ) {
 +                      return null;
 +              }
 +
 +              $canonicalNs = $this->nsInfo->getCanonicalName( $namespace );
 +              $fullText = $canonicalNs == '' ? $text : "$canonicalNs:$text";
 +              if ( strval( $interwiki ) != '' ) {
 +                      $fullText = "$interwiki:$fullText";
 +              }
 +              if ( strval( $fragment ) != '' ) {
 +                      $fullText .= '#' . $fragment;
 +              }
 +
 +              try {
 +                      $parts = $this->splitTitleString( $fullText );
 +              } catch ( MalformedTitleException $e ) {
 +                      return null;
 +              }
 +
 +              return new TitleValue(
 +                      $parts['namespace'], $parts['dbkey'], $parts['fragment'], $parts['interwiki'] );
 +      }
 +
        /**
         * @see TitleFormatter::getText()
         *
                # and [[Foo]] point to the same place.  Don't force it for interwikis, since the
                # other site might be case-sensitive.
                $parts['user_case_dbkey'] = $dbkey;
-               if ( $parts['interwiki'] === '' ) {
-                       $dbkey = Title::capitalize( $dbkey, $parts['namespace'] );
+               if ( $parts['interwiki'] === '' && $this->nsInfo->isCapitalized( $parts['namespace'] ) ) {
+                       $dbkey = $this->language->ucfirst( $dbkey );
                }
  
                # Can't make a link to a namespace alone... "empty" local links can only be