ApiExpandTemplates: Start parse before creating frame
authorBrad Jorsch <bjorsch@wikimedia.org>
Wed, 18 Jun 2014 18:12:08 +0000 (14:12 -0400)
committerBrad Jorsch <bjorsch@wikimedia.org>
Wed, 18 Jun 2014 18:20:46 +0000 (14:20 -0400)
The code added in Id12cbe4a is creating a frame from the parser object
before actually starting a parse, meaning the frame ends up with no
title, which causes problems for other stuff that assumes the frame
*does* have a title.

While we could possibly change from calling ->preprocess() to
->recursivePreprocess() to avoid re-starting the parse, there are some
hooks called from ->preprocess() that it's probably best to continue
calling to not break BC.

Bug: 66798
Change-Id: If2ca8ab94ab81ee10f33ce1f4ee75655b7c1e680

includes/api/ApiExpandTemplates.php

index eb3f87c..82d303f 100644 (file)
@@ -89,6 +89,7 @@ class ApiExpandTemplates extends ApiBase {
                // if they didn't want any output except (probably) the parse tree,
                // then don't bother actually fully expanding it
                if ( $prop || $params['prop'] === null ) {
+                       $wgParser->startExternalParse( $title_obj, $options, OT_PREPROCESS );
                        $frame = $wgParser->getPreprocessor()->newFrame();
                        $wikitext = $wgParser->preprocess( $params['text'], $title_obj, $options, null, $frame );
                        if ( $params['prop'] === null ) {