Merge "Improve serialization of Message, Title"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 16 Jul 2015 19:52:16 +0000 (19:52 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 16 Jul 2015 19:52:16 +0000 (19:52 +0000)
1  2 
includes/Title.php

diff --combined includes/Title.php
@@@ -313,7 -313,7 +313,7 @@@ class Title 
                $filteredText = Sanitizer::decodeCharReferencesAndNormalize( $text );
  
                $t = new Title();
 -              $t->mDbkeyform = str_replace( ' ', '_', $filteredText );
 +              $t->mDbkeyform = strtr( $filteredText, ' ', '_' );
                $t->mDefaultNamespace = intval( $defaultNamespace );
  
                $t->secureAndSplit();
                # but some URLs used it as a space replacement and they still come
                # from some external search tools.
                if ( strpos( self::legalChars(), '+' ) === false ) {
 -                      $url = str_replace( '+', ' ', $url );
 +                      $url = strtr( $url, '+', ' ' );
                }
  
 -              $t->mDbkeyform = str_replace( ' ', '_', $url );
 +              $t->mDbkeyform = strtr( $url, ' ', '_' );
  
                try {
                        $t->secureAndSplit();
                $t->mInterwiki = $interwiki;
                $t->mFragment = $fragment;
                $t->mNamespace = $ns = intval( $ns );
 -              $t->mDbkeyform = str_replace( ' ', '_', $title );
 +              $t->mDbkeyform = strtr( $title, ' ', '_' );
                $t->mArticleID = ( $ns >= 0 ) ? -1 : 0;
                $t->mUrlform = wfUrlencode( $t->mDbkeyform );
 -              $t->mTextform = str_replace( '_', ' ', $title );
 +              $t->mTextform = strtr( $title, '_', ' ' );
                $t->mContentModel = false; # initialized lazily in getContentModel()
                return $t;
        }
         * @param string $fragment Text
         */
        public function setFragment( $fragment ) {
 -              $this->mFragment = str_replace( '_', ' ', substr( $fragment, 1 ) );
 +              $this->mFragment = strtr( substr( $fragment, 1 ), '_', ' ' );
        }
  
        /**
         */
        public function getPrefixedDBkey() {
                $s = $this->prefix( $this->mDbkeyform );
 -              $s = str_replace( ' ', '_', $s );
 +              $s = strtr( $s, ' ', '_' );
                return $s;
        }
  
        public function getPrefixedText() {
                if ( $this->mPrefixedText === null ) {
                        $s = $this->prefix( $this->mTextform );
 -                      $s = str_replace( '_', ' ', $s );
 +                      $s = strtr( $s, '_', ' ' );
                        $this->mPrefixedText = $s;
                }
                return $this->mPrefixedText;
         */
        public function getSubpageUrlForm() {
                $text = $this->getSubpageText();
 -              $text = wfUrlencode( str_replace( ' ', '_', $text ) );
 +              $text = wfUrlencode( strtr( $text, ' ', '_' ) );
                return $text;
        }
  
         */
        public function getPrefixedURL() {
                $s = $this->prefix( $this->mDbkeyform );
 -              $s = wfUrlencode( str_replace( ' ', '_', $s ) );
 +              $s = wfUrlencode( strtr( $s, ' ', '_' ) );
                return $s;
        }
  
  
                $this->mDbkeyform = $parts['dbkey'];
                $this->mUrlform = wfUrlencode( $this->mDbkeyform );
 -              $this->mTextform = str_replace( '_', ' ', $this->mDbkeyform );
 +              $this->mTextform = strtr( $this->mDbkeyform, '_', ' ' );
  
                # We already know that some pages won't be in the database!
                if ( $this->isExternal() || $this->mNamespace == NS_SPECIAL ) {
                        }
                } else {
                        // Even if there are no subpages in namespace, we still don't want "/" in MediaWiki message keys
 -                      $editnoticeText = $editnotice_ns . '-' . str_replace( '/', '-', $this->getDBkey() );
 +                      $editnoticeText = $editnotice_ns . '-' . strtr( $this->getDBkey(), '/', '-' );
                        $msg = wfMessage( $editnoticeText );
                        if ( $msg->exists() ) {
                                $html = $msg->parseAsBlock();
                Hooks::run( 'TitleGetEditNotices', array( $this, $oldid, &$notices ) );
                return $notices;
        }
+       /**
+        * @return array
+        */
+       public function __sleep() {
+               return array(
+                       'mNamespace',
+                       'mDbkeyform',
+                       'mFragment',
+                       'mInterwiki',
+                       'mLocalInterwiki',
+                       'mUserCaseDBKey',
+                       'mDefaultNamespace',
+               );
+       }
+       public function __wakeup() {
+               $this->mArticleID = ( $this->mNamespace >= 0 ) ? -1 : 0;
+               $this->mUrlform = wfUrlencode( $this->mDbkeyform );
+               $this->mTextform = strtr( $this->mDbkeyform, '_', ' ' );
+       }
  }