From 51da374bd1c3e4b36128aef582a284e9407a2f10 Mon Sep 17 00:00:00 2001 From: Platonides Date: Tue, 7 Jun 2011 22:28:57 +0000 Subject: [PATCH] Reinstate r79122 (fix for bug 14404), reverting r83868. The real bug seem to have been r86131, fixed in r88902 (1.17) and r88902 (1.18). This is not merged with the r86131 change to Article::getParserOptions() since I don't see the point for the new function yet. Reenabled its test ArticleTablesTest which was disabled in r85618 --- includes/Article.php | 25 ++++++++++++++------ tests/phpunit/includes/ArticleTablesTest.php | 4 +--- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/includes/Article.php b/includes/Article.php index 37dac153c0..c2ad333ef4 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -63,7 +63,7 @@ class Article { var $mTouched = '19700101000000'; // !< /** - * @var ParserOptions + * @var ParserOptions: ParserOptions object for $wgUser articles */ var $mParserOptions; @@ -3541,7 +3541,7 @@ class Article { $edit->revid = $revid; $edit->newText = $text; $edit->pst = $this->preSaveTransform( $text, $user, $popts ); - $edit->popts = $this->getParserOptions(); + $edit->popts = $this->getParserOptions( true ); $edit->output = $wgParser->parse( $edit->pst, $this->mTitle, $edit->popts, true, true, $revid ); $edit->oldText = $this->getRawText(); @@ -4329,12 +4329,23 @@ class Article { /** * Get parser options suitable for rendering the primary article wikitext - * @return ParserOptions object + * @param $canonical boolean Determines that the generated options must not depend on user preferences (see bug 14404) + * @return mixed ParserOptions object or boolean false */ - public function getParserOptions() { - global $wgUser; - if ( !$this->mParserOptions ) { - $this->mParserOptions = $this->makeParserOptions( $wgUser ); + public function getParserOptions( $canonical = false ) { + global $wgUser, $wgLanguageCode; + + if ( !$this->mParserOptions || $canonical ) { + $user = !$canonical ? $wgUser : new User; + $parserOptions = new ParserOptions( $user ); + $parserOptions->setTidy( true ); + $parserOptions->enableLimitReport(); + + if ( $canonical ) { + $parserOptions->setUserLang( $wgLanguageCode ); # Must be set explicitely + return $parserOptions; + } + $this->mParserOptions = $parserOptions; } // Clone to allow modifications of the return value without affecting cache return clone $this->mParserOptions; diff --git a/tests/phpunit/includes/ArticleTablesTest.php b/tests/phpunit/includes/ArticleTablesTest.php index 1caf5871af..362cddf9a6 100644 --- a/tests/phpunit/includes/ArticleTablesTest.php +++ b/tests/phpunit/includes/ArticleTablesTest.php @@ -5,9 +5,7 @@ * @group Destructive */ class ArticleTablesTest extends MediaWikiLangTestCase { - /** - * @group Broken - */ + function testbug14404() { global $wgUser, $wgContLang, $wgLanguageCode, $wgLang; -- 2.20.1