Merge "Add SpecialPage::getTitleValueFor()"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 11 Aug 2016 08:32:35 +0000 (08:32 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 11 Aug 2016 08:32:35 +0000 (08:32 +0000)
1  2 
includes/specialpage/SpecialPage.php
includes/specialpage/SpecialPageFactory.php

@@@ -61,12 -61,14 +61,14 @@@ class SpecialPage 
        protected $mContext;
  
        /**
 -       * @var LinkRenderer|null
 +       * @var \MediaWiki\Linker\LinkRenderer|null
         */
        private $linkRenderer;
  
        /**
         * Get a localised Title object for a specified special page name
+        * If you don't need a full Title object, consider using TitleValue through
+        * getTitleValueFor() below.
         *
         * @since 1.9
         * @since 1.21 $fragment parameter added
         * @throws MWException
         */
        public static function getTitleFor( $name, $subpage = false, $fragment = '' ) {
+               return Title::newFromTitleValue(
+                       self::getTitleValueFor( $name, $subpage, $fragment )
+               );
+       }
+       /**
+        * Get a localised TitleValue object for a specified special page name
+        *
+        * @since 1.28
+        * @param string $name
+        * @param string|bool $subpage Subpage string, or false to not use a subpage
+        * @param string $fragment The link fragment (after the "#")
+        * @return TitleValue
+        */
+       public static function getTitleValueFor( $name, $subpage = false, $fragment = '' ) {
                $name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
  
-               return Title::makeTitle( NS_SPECIAL, $name, $fragment );
+               return new TitleValue( NS_SPECIAL, $name, $fragment );
        }
  
        /**
  
        /**
         * @since 1.28
 -       * @return LinkRenderer
 +       * @return \MediaWiki\Linker\LinkRenderer
         */
        protected function getLinkRenderer() {
                if ( $this->linkRenderer ) {
  
        /**
         * @since 1.28
 -       * @param LinkRenderer $linkRenderer
 +       * @param \MediaWiki\Linker\LinkRenderer $linkRenderer
         */
        public function setLinkRenderer( LinkRenderer $linkRenderer ) {
                $this->linkRenderer = $linkRenderer;
@@@ -84,8 -84,8 +84,8 @@@ class SpecialPageFactory 
  
                // Authentication
                'Userlogin' => 'SpecialUserLogin',
 -              'Userlogout' => 'SpecialUserlogoutPreAuthManager',
 -              'CreateAccount' => 'SpecialCreateAccountPreAuthManager',
 +              'Userlogout' => 'SpecialUserLogout',
 +              'CreateAccount' => 'SpecialCreateAccount',
                'LinkAccounts' => 'SpecialLinkAccounts',
                'UnlinkAccounts' => 'SpecialUnlinkAccounts',
                'ChangeCredentials' => 'SpecialChangeCredentials',
@@@ -96,9 -96,9 +96,9 @@@
                'Block' => 'SpecialBlock',
                'Unblock' => 'SpecialUnblock',
                'BlockList' => 'SpecialBlockList',
 -              'ChangePassword' => 'SpecialChangePasswordPreAuthManager',
 +              'ChangePassword' => 'SpecialChangePassword',
                'BotPasswords' => 'SpecialBotPasswords',
 -              'PasswordReset' => 'SpecialPasswordResetPreAuthManager',
 +              'PasswordReset' => 'SpecialPasswordReset',
                'DeletedContributions' => 'DeletedContributionsPage',
                'Preferences' => 'SpecialPreferences',
                'ResetTokens' => 'SpecialResetTokens',
                global $wgDisableInternalSearch, $wgEmailAuthentication;
                global $wgEnableEmail, $wgEnableJavaScriptTest;
                global $wgPageLanguageUseDB, $wgContentHandlerUseDB;
 -              global $wgDisableAuthManager;
  
                if ( !is_array( self::$list ) ) {
  
                        }
  
                        if ( $wgEnableEmail ) {
 -                              self::$list['ChangeEmail'] = 'SpecialChangeEmailPreAuthManager';
 +                              self::$list['ChangeEmail'] = 'SpecialChangeEmail';
                        }
  
                        if ( $wgEnableJavaScriptTest ) {
                                self::$list['ChangeContentModel'] = 'SpecialChangeContentModel';
                        }
  
 -                      // horrible hack to allow selection between old and new classes via a feature flag - T110756
 -                      // will be removed once AuthManager is stable
 -                      if ( !$wgDisableAuthManager ) {
 -                              self::$list = array_map( function ( $class ) {
 -                                      return preg_replace( '/PreAuthManager$/', '', $class );
 -                              }, self::$list );
 -                              self::$list['Userlogout'] = 'SpecialUserLogout'; // case matters
 -                      } else {
 -                              self::$list['Userlogin'] = 'LoginForm';
 -                              self::$list = array_diff_key( self::$list, array_fill_keys( [
 -                                      'LinkAccounts', 'UnlinkAccounts', 'ChangeCredentials', 'RemoveCredentials',
 -                              ], true ) );
 -                      }
 -
                        // Add extension special pages
                        self::$list = array_merge( self::$list, $wgSpecialPages );
  
                }
  
                if ( $subpage !== false && !is_null( $subpage ) ) {
+                       // Make sure it's in dbkey form
+                       $subpage = str_replace( ' ', '_', $subpage );
                        $name = "$name/$subpage";
                }