Restoring ThomasV's patch for a hook & use of the existing $cache parameter on addPri...
authorBrion Vibber <brion@users.mediawiki.org>
Sat, 14 Jan 2006 23:56:01 +0000 (23:56 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Sat, 14 Jan 2006 23:56:01 +0000 (23:56 +0000)
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
includes/Article.php
includes/OutputPage.php

index 5dfb357..2ea75a5 100644 (file)
@@ -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.
index 555f5bb..82891fc 100644 (file)
@@ -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 );
index 7201e6e..f04bc64 100644 (file)
@@ -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 );