From 261a683265ff528b008a3da13d967b6af9fb5481 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Sat, 14 Jan 2006 23:56:01 +0000 Subject: [PATCH] Restoring ThomasV's patch for a hook & use of the existing $cache parameter on addPrimaryWikiText. Further testing indicates the problem was probably an incomplete sync or bad caching of OutputPage.php on some servers, so the broken version of the function was called on old page views, incorrectly storing old text items into the parser cache. --- RELEASE-NOTES | 2 ++ includes/Article.php | 3 ++- includes/OutputPage.php | 12 +++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 5dfb357146..2ea75a5a88 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -483,6 +483,8 @@ fully support the editing toolbar, but was found to be too confusing. * (bug 1103) Fix up redirect handling for images, categories Redirects are now followed from the top-level, outside of the Article content loading and viewing, for clarity and consistency. +* (bug 4104) 'OutputPageBeforeHTML' hook to postprocess article HTML on + page view (comes after parser cache, if used). Patch by ThomasV. * Linker::formatComment corrupted the passed title object on PHP 5 if the comment included a section link. Use clone() to make a safe copy. * Add wfClone() wrapper since we're still using PHP 4 on some servers. diff --git a/includes/Article.php b/includes/Article.php index 555f5bbec7..82891fc7bc 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -875,7 +875,8 @@ class Article { if( !$this->isCurrent() ) { $oldEditSectionSetting = $wgOut->mParserOptions->setEditSection( false ); } - $wgOut->addWikiText( $text ); + # Display content and don't save to parser cache + $wgOut->addPrimaryWikiText( $text, $this, false ); if( !$this->isCurrent() ) { $wgOut->mParserOptions->setEditSection( $oldEditSectionSetting ); diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 7201e6e54f..f04bc6412e 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -309,12 +309,16 @@ class OutputPage { $parserOutput = $wgParser->parse( $text, $article->mTitle, $this->mParserOptions, true, true, $this->mRevisionId ); - if ( $article && $parserOutput->getCacheTime() != -1 ) { + if ( $cache && $article && $parserOutput->getCacheTime() != -1 ) { $parserCache =& ParserCache::singleton(); $parserCache->save( $parserOutput, $article, $wgUser ); } - $this->addParserOutput( $parserOutput ); + $this->addParserOutputNoText( $parserOutput ); + $text = $parserOutput->getText(); + wfRunHooks( 'OutputPageBeforeHTML',array( &$this, &$text ) ); + $parserOutput->setText( $text ); + $this->addHTML( $parserOutput->getText() ); } /** @@ -351,7 +355,9 @@ class OutputPage { $this->mLanguageLinks += $parserOutput->getLanguageLinks(); $this->addCategoryLinks( $parserOutput->getCategories() ); $this->addKeywords( $parserOutput ); - $this->addHTML( $parserOutput->getText() ); + $text = $parserOutput->getText(); + wfRunHooks( 'OutputPageBeforeHTML', array( &$this, &$text ) ); + $this->addHTML( $text ); $t = $parserOutput->getTitleText(); if( !empty( $t ) ) { $this->setPageTitle( $t ); -- 2.20.1