API: Fixing issue mentioned on bug 16129 comment #3: for certain inputs, action=parse...
authorRoan Kattouw <catrope@users.mediawiki.org>
Sat, 20 Dec 2008 20:00:07 +0000 (20:00 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Sat, 20 Dec 2008 20:00:07 +0000 (20:00 +0000)
includes/api/ApiParse.php

index 2f74226..50b19e2 100644 (file)
@@ -49,7 +49,9 @@ class ApiParse extends ApiBase {
                $prop = array_flip($params['prop']);
                $revid = false;
 
-               global $wgParser, $wgUser;
+               // The parser needs $wgTitle to be set, apparently the
+               // $title parameter in Parser::parse isn't enough *sigh*
+               global $wgParser, $wgUser, $wgTitle;
                $popts = new ParserOptions();
                $popts->setTidy(true);
                $popts->enableLimitReport();
@@ -66,6 +68,7 @@ class ApiParse extends ApiBase {
                                        $this->dieUsage("You don't have permission to view deleted revisions", 'permissiondenied');
                                $text = $rev->getText( Revision::FOR_THIS_USER );
                                $titleObj = $rev->getTitle();
+                               $wgTitle = $titleObj;
                                $p_result = $wgParser->parse($text, $titleObj, $popts);
                        }
                        else
@@ -111,6 +114,7 @@ class ApiParse extends ApiBase {
                        $titleObj = Title::newFromText($title);
                        if(!$titleObj)
                                $titleObj = Title::newFromText("API");
+                       $wgTitle = $titleObj;
                        if($params['pst'] || $params['onlypst'])
                                $text = $wgParser->preSaveTransform($text, $titleObj, $wgUser, $popts);
                        if($params['onlypst'])