*/
function getETag( $article, $popts ) {
return 'W/"' . $this->getParserOutputKey( $article,
- $popts->optionsHash( ParserOptions::legacyOptions() ) ) .
+ $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) ) .
"--" . $article->getTouched() . '"';
}
$usedOptions = ParserOptions::legacyOptions();
}
- return $this->getParserOutputKey( $article, $popts->optionsHash( $usedOptions ) );
+ return $this->getParserOutputKey( $article, $popts->optionsHash( $usedOptions, $article->getTitle() ) );
}
/**
$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" );
* @param $parserOutput ParserOutput
* @param $article Article
* @param $popts ParserOptions
- * @return void
*/
public function save( $parserOutput, $article, $popts ) {
$expire = $parserOutput->getCacheExpiry();
$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" );