Is it dangerous to call WikiPage->doEdit inside a parser tag callback?

I'm writing a parser tag extension <whatever>, whose callback function is:

public static function myCallback($input, $argv, $parser) {
  $t = Title::newFromText('anytitle'); // any article title at all
  $p = WikiPage::factory($t);
  $p->doEdit('my text', 'my comment');
  return 'foo';
}

The doEdit always succeeds (based on its return Status).
But somewhere later, as the parser tag renders, the following error always gets 
thrown:

Invalid marker: UNIQ586469ef5f8b5a1a-whatever-00000000-QINU

Backtrace:

#0 /var/www/html/w/includes/parser/StripState.php(66): 
StripState->addItem('general', 'UNIQ586469ef5f...', 'foo')
#1 /var/www/html/w/includes/parser/Parser.php(3844): 
StripState->addGeneral('UNIQ586469ef5f...', 'foo')
#2 /var/www/html/w/includes/parser/Preprocessor_DOM.php(1150): 
Parser->extensionSubstitution(Array, Object(PPFrame_DOM))
#3 /var/www/html/w/includes/parser/Parser.php(3038): 
PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#4 /var/www/html/w/includes/parser/Parser.php(1136): 
Parser->replaceVariables('<whatever/>')
#5 /var/www/html/w/includes/parser/Parser.php(370): 
Parser->internalParse('<whatever/>')
#6 /var/www/html/w/includes/WikiPage.php(3110): Parser->parse('<whatever/>', 
Object(Title), Object(ParserOptions), true, true, 1429350)
#7 /var/www/html/w/includes/PoolCounter.php(209): PoolWorkArticleView->doWork()
#8 /var/www/html/w/includes/Article.php(631): PoolCounterWork->execute()
#9 /var/www/html/w/includes/actions/ViewAction.php(37): Article->view()
#10 /var/www/html/w/includes/Wiki.php(427): ViewAction->show()
#11 /var/www/html/w/includes/Wiki.php(304): 
MediaWiki->performAction(Object(Article))
#12 /var/www/html/w/includes/Wiki.php(536): MediaWiki->performRequest()
#13 /var/www/html/w/includes/Wiki.php(446): MediaWiki->main()
#14 /var/www/html/w/index.php(75): MediaWiki->run()
#15 {main}

So I am wondering: is it dangerous to call doEdit inside a parser tag's 
callback?
Is there another way to make a parser tag create an article?
This is MediaWiki 1.20.
        
Thank you,
DanB


_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to