Localisation updates for core and extension messages from translatewiki.net
[lhc/web/wiklou.git] / includes / parser / ParserCache.php
index 9515859..f91f26a 100644 (file)
@@ -80,7 +80,7 @@ class ParserCache {
         */
        function getETag( $article, $popts ) {
                return 'W/"' . $this->getParserOutputKey( $article,
-                       $popts->optionsHash( ParserOptions::legacyOptions() ) ) .
+                       $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) ) .
                                "--" . $article->getTouched() . '"';
        }
 
@@ -130,7 +130,7 @@ class ParserCache {
                        $usedOptions = ParserOptions::legacyOptions();
                }
 
-               return $this->getParserOutputKey( $article, $popts->optionsHash( $usedOptions ) );
+               return $this->getParserOutputKey( $article, $popts->optionsHash( $usedOptions, $article->getTitle() ) );
        }
 
        /**
@@ -165,17 +165,23 @@ class ParserCache {
                $value = $this->mMemc->get( $parserOutputKey );
                if ( self::try116cache && !$value && strpos( $value, '*' ) !== -1 ) {
                        wfDebug( "New format parser cache miss.\n" );
-                       $parserOutputKey = $this->getParserOutputKey( $article, $popts->optionsHash( ParserOptions::legacyOptions() ) );
+                       $parserOutputKey = $this->getParserOutputKey( $article,
+                               $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) );
                        $value = $this->mMemc->get( $parserOutputKey );
                }
                if ( !$value ) {
-                       wfDebug( "Parser cache miss.\n" );
+                       wfDebug( "ParserOutput cache miss.\n" );
                        wfIncrStats( "pcache_miss_absent" );
                        wfProfileOut( __METHOD__ );
                        return false;
                }
 
-               wfDebug( "Found.\n" );
+               wfDebug( "ParserOutput cache found.\n" );
+
+               // The edit section preference may not be the appropiate one in 
+               // the ParserOutput, as we are not storing it in the parsercache 
+               // key. Force it here. See bug 31445.
+               $value->setEditSectionTokens( $popts->getEditSection() );
 
                if ( !$useOutdated && $value->expired( $touched ) ) {
                        wfIncrStats( "pcache_miss_expired" );
@@ -194,7 +200,6 @@ class ParserCache {
         * @param $parserOutput ParserOutput
         * @param $article Article
         * @param $popts ParserOptions
-        * @return void
         */
        public function save( $parserOutput, $article, $popts ) {
                $expire = $parserOutput->getCacheExpiry();
@@ -212,10 +217,10 @@ class ParserCache {
                        $optionsKey->setContainsOldMagic( $parserOutput->containsOldMagic() );
 
                        $parserOutputKey = $this->getParserOutputKey( $article,
-                               $popts->optionsHash( $optionsKey->mUsedOptions ) );
+                               $popts->optionsHash( $optionsKey->mUsedOptions, $article->getTitle() ) );
 
                        // Save the timestamp so that we don't have to load the revision row on view
-                       $parserOutput->mTimestamp = $article->getTimestamp();
+                       $parserOutput->setTimestamp( $article->getTimestamp() );
 
                        $parserOutput->mText .= "\n<!-- Saved in parser cache with key $parserOutputKey and timestamp $now -->\n";
                        wfDebug( "Saved in parser cache with key $parserOutputKey and timestamp $now\n" );