Introduce ParserOutput::getRawText()
authorTim Starling <tstarling@wikimedia.org>
Mon, 25 Jan 2016 03:44:36 +0000 (14:44 +1100)
committerTim Starling <tstarling@wikimedia.org>
Mon, 25 Jan 2016 03:50:27 +0000 (14:50 +1100)
Avoid polluting the parser cache with skin-dependent output from
Skin::doEditSectionLink() by introducing getRawText(), which provides
access to the uncooked text. Use this in
WikitextContent::fillParserOutput() which is the primary offender
judging by the debug logs (see referenced bug).

Bug: T124356
Change-Id: Ia9e1e4a6dc3a26f88eeebc64eed023ff20c53d58

includes/content/WikitextContent.php
includes/parser/ParserOutput.php

index 8beae39..89e9356 100644 (file)
@@ -338,7 +338,7 @@ class WikitextContent extends TextContent {
                                $chain = $this->getRedirectChain();
                                $output->setText(
                                        Article::getRedirectHeaderHtml( $title->getPageLanguage(), $chain, false ) .
-                                       $output->getText()
+                                       $output->getRawText()
                                );
                                $output->addModuleStyles( 'mediawiki.action.view.redirectPage' );
                        }
index 72668bf..656e580 100644 (file)
@@ -220,6 +220,17 @@ class ParserOutput extends CacheTime {
                $this->mTitleText = $titletext;
        }
 
+       /**
+        * Get the cacheable text with <mw:editsection> markers still in it. The
+        * return value is suitable for writing back via setText() but is not valid
+        * for display to the user.
+        *
+        * @since 1.27
+        */
+       public function getRawText() {
+               return $this->mText;
+       }
+
        public function getText() {
                $text = $this->mText;
                if ( $this->mEditSectionTokens ) {