r96798 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r96797‎ | r96798 | r96799 >
Date:17:56, 11 September 2011
Author:robin
Status:reverted (Comments)
Tags:
Comment:
(Bug 30364) LanguageConverter should depend on the page content language instead of the wiki content language. Remains largely the same, except for extensions using the PageContentLanguage hook like Translate and WikimediaIncubator.
* Made variant tabs hidden on special pages (has no or sometimes wrong/inconsistent effect there; plus it's mainly in the user language)
* Made redirects be in content language again (remove from Title->getPageLanguage())
Modified paths:
  • /trunk/phase3/RELEASE-NOTES-1.19 (modified) (history)
  • /trunk/phase3/includes/Article.php (modified) (history)
  • /trunk/phase3/includes/OutputPage.php (modified) (history)
  • /trunk/phase3/includes/SkinLegacy.php (modified) (history)
  • /trunk/phase3/includes/SkinTemplate.php (modified) (history)
  • /trunk/phase3/includes/Title.php (modified) (history)
  • /trunk/phase3/includes/WikiPage.php (modified) (history)
  • /trunk/phase3/includes/parser/Parser.php (modified) (history)
  • /trunk/phase3/includes/parser/ParserCache.php (modified) (history)
  • /trunk/phase3/includes/parser/ParserOptions.php (modified) (history)
  • /trunk/phase3/languages/LanguageConverter.php (modified) (history)

Diff [purge]

Index: trunk/phase3/RELEASE-NOTES-1.19
@@ -59,6 +59,8 @@
6060 * Conversion script between Tifinagh and Latin for the Tachelhit language
6161 * (bug 16755) Add options 'noreplace' and 'noerror' to {{DEFAULTSORT:...}}
6262 to stop it from replace an already existing default sort, and suppress error.
 63+* (bug 30364) LanguageConverter now depends on the page content language
 64+ instead of the wiki content language
6365
6466 === Bug fixes in 1.19 ===
6567 * $wgUploadNavigationUrl should be used for file redlinks if
Index: trunk/phase3/includes/Article.php
@@ -1050,13 +1050,14 @@
10511051 * @return string containing HMTL with redirect link
10521052 */
10531053 public function viewRedirect( $target, $appendSubtitle = true, $forceKnown = false ) {
1054 - global $wgOut, $wgLang, $wgStylePath;
 1054+ global $wgOut, $wgStylePath;
10551055
10561056 if ( !is_array( $target ) ) {
10571057 $target = array( $target );
10581058 }
10591059
1060 - $imageDir = $wgLang->getDir();
 1060+ $lang = $this->getTitle()->getPageLanguage();
 1061+ $imageDir = $lang->getDir();
10611062
10621063 if ( $appendSubtitle ) {
10631064 $wgOut->appendSubtitle( wfMsgHtml( 'redirectpagesub' ) );
@@ -1072,7 +1073,7 @@
10731074 }
10741075
10751076 $nextRedirect = $wgStylePath . '/common/images/nextredirect' . $imageDir . '.png';
1076 - $alt = $wgLang->isRTL() ? '←' : '→';
 1077+ $alt = $lang->isRTL() ? '←' : '→';
10771078 // Automatically append redirect=no to each link, since most of them are redirect pages themselves.
10781079 foreach ( $target as $rt ) {
10791080 $link .= Html::element( 'img', array( 'src' => $nextRedirect, 'alt' => $alt ) );
Index: trunk/phase3/includes/parser/Parser.php
@@ -321,7 +321,7 @@
322322 * to internalParse() which does all the real work.
323323 */
324324
325 - global $wgUseTidy, $wgAlwaysUseTidy, $wgContLang, $wgDisableLangConversion, $wgDisableTitleConversion;
 325+ global $wgUseTidy, $wgAlwaysUseTidy, $wgDisableLangConversion, $wgDisableTitleConversion;
326326 $fname = __METHOD__.'-' . wfGetCaller();
327327 wfProfileIn( __METHOD__ );
328328 wfProfileIn( $fname );
@@ -376,8 +376,7 @@
377377 # The position of the convert() call should not be changed. it
378378 # assumes that the links are all replaced and the only thing left
379379 # is the <nowiki> mark.
380 -
381 - $text = $wgContLang->convert( $text );
 380+ $text = $this->getFunctionLang()->convert( $text );
382381 }
383382
384383 /**
@@ -393,11 +392,11 @@
394393 || isset( $this->mDoubleUnderscores['notitleconvert'] )
395394 || $this->mOutput->getDisplayTitle() !== false ) )
396395 {
397 - $convruletitle = $wgContLang->getConvRuleTitle();
 396+ $convruletitle = $this->getFunctionLang()->getConvRuleTitle();
398397 if ( $convruletitle ) {
399398 $this->mOutput->setTitleText( $convruletitle );
400399 } else {
401 - $titleText = $wgContLang->convertTitle( $title );
 400+ $titleText = $this->getFunctionLang()->convertTitle( $title );
402401 $this->mOutput->setTitleText( $titleText );
403402 }
404403 }
@@ -1309,7 +1308,6 @@
13101309 * @private
13111310 */
13121311 function makeFreeExternalLink( $url ) {
1313 - global $wgContLang;
13141312 wfProfileIn( __METHOD__ );
13151313
13161314 $trail = '';
@@ -1342,7 +1340,7 @@
13431341 $text = $this->maybeMakeExternalImage( $url );
13441342 if ( $text === false ) {
13451343 # Not an image, make a link
1346 - $text = Linker::makeExternalLink( $url, $wgContLang->markNoConversion($url), true, 'free',
 1344+ $text = Linker::makeExternalLink( $url, $this->getFunctionLang()->markNoConversion($url), true, 'free',
13471345 $this->getExternalLinkAttribs( $url ) );
13481346 # Register it in the output object...
13491347 # Replace unnecessary URL escape codes with their equivalent characters
@@ -1570,7 +1568,6 @@
15711569 * @return string
15721570 */
15731571 function replaceExternalLinks( $text ) {
1574 - global $wgContLang;
15751572 wfProfileIn( __METHOD__ );
15761573
15771574 $bits = preg_split( $this->mExtLinkBracketedRegex, $text, -1, PREG_SPLIT_DELIM_CAPTURE );
@@ -1616,7 +1613,7 @@
16171614 list( $dtrail, $trail ) = Linker::splitTrail( $trail );
16181615 }
16191616
1620 - $text = $wgContLang->markNoConversion( $text );
 1617+ $text = $this->getFunctionLang()->markNoConversion( $text );
16211618
16221619 $url = Sanitizer::cleanUrl( $url );
16231620
@@ -1773,8 +1770,6 @@
17741771 * @private
17751772 */
17761773 function replaceInternalLinks2( &$s ) {
1777 - global $wgContLang;
1778 -
17791774 wfProfileIn( __METHOD__ );
17801775
17811776 wfProfileIn( __METHOD__.'-setup' );
@@ -1798,7 +1793,7 @@
17991794 $line = $a->current(); # Workaround for broken ArrayIterator::next() that returns "void"
18001795 $s = substr( $s, 1 );
18011796
1802 - $useLinkPrefixExtension = $wgContLang->linkPrefixExtension();
 1797+ $useLinkPrefixExtension = $this->getFunctionLang()->linkPrefixExtension();
18031798 $e2 = null;
18041799 if ( $useLinkPrefixExtension ) {
18051800 # Match the end of a line for a word that's not followed by whitespace,
@@ -1824,8 +1819,8 @@
18251820 $prefix = '';
18261821 }
18271822
1828 - if ( $wgContLang->hasVariants() ) {
1829 - $selflink = $wgContLang->autoConvertToAllVariants( $this->mTitle->getPrefixedText() );
 1823+ if ( $this->getFunctionLang()->hasVariants() ) {
 1824+ $selflink = $this->getFunctionLang()->autoConvertToAllVariants( $this->mTitle->getPrefixedText() );
18301825 } else {
18311826 $selflink = array( $this->mTitle->getPrefixedText() );
18321827 }
@@ -1993,6 +1988,7 @@
19941989
19951990 # Link not escaped by : , create the various objects
19961991 if ( $noforce ) {
 1992+ global $wgContLang;
19971993
19981994 # Interwikis
19991995 wfProfileIn( __METHOD__."-interwiki" );
@@ -2042,7 +2038,7 @@
20432039 }
20442040 $sortkey = Sanitizer::decodeCharReferences( $sortkey );
20452041 $sortkey = str_replace( "\n", '', $sortkey );
2046 - $sortkey = $wgContLang->convertCategoryKey( $sortkey );
 2042+ $sortkey = $this->getFunctionLang()->convertCategoryKey( $sortkey );
20472043 $this->mOutput->addCategory( $nt->getDBkey(), $sortkey );
20482044
20492045 /**
@@ -3244,7 +3240,7 @@
32453241 $function = $this->mFunctionSynonyms[1][$function];
32463242 } else {
32473243 # Case insensitive functions
3248 - $function = $wgContLang->lc( $function );
 3244+ $function = $this->getFunctionLang()->lc( $function );
32493245 if ( isset( $this->mFunctionSynonyms[0][$function] ) ) {
32503246 $function = $this->mFunctionSynonyms[0][$function];
32513247 } else {
@@ -3320,8 +3316,8 @@
33213317 }
33223318 $titleText = $title->getPrefixedText();
33233319 # Check for language variants if the template is not found
3324 - if ( $wgContLang->hasVariants() && $title->getArticleID() == 0 ) {
3325 - $wgContLang->findVariantLink( $part1, $title, true );
 3320+ if ( $this->getFunctionLang()->hasVariants() && $title->getArticleID() == 0 ) {
 3321+ $this->getFunctionLang()->findVariantLink( $part1, $title, true );
33263322 }
33273323 # Do recursion depth check
33283324 $limit = $this->mOptions->getMaxTemplateDepth();
Index: trunk/phase3/includes/parser/ParserOptions.php
@@ -274,10 +274,12 @@
275275 * settings.
276276 *
277277 * @since 1.17
 278+ * @param $forOptions Array
 279+ * @param $title Title: used to get the content language of the page
278280 * @return \string Page rendering hash
279281 */
280 - public function optionsHash( $forOptions ) {
281 - global $wgContLang, $wgRenderHashAppend;
 282+ public function optionsHash( $forOptions, $title = null ) {
 283+ global $wgRenderHashAppend, $wgTitle;
282284
283285 $confstr = '';
284286
@@ -321,7 +323,12 @@
322324
323325 // add in language specific options, if any
324326 // @todo FIXME: This is just a way of retrieving the url/user preferred variant
325 - $confstr .= $wgContLang->getExtraHashOptions();
 327+ if( !is_null( $title ) ) {
 328+ $confstr .= $title->getPageLanguage()->getExtraHashOptions();
 329+ } else {
 330+ global $wgContLang;
 331+ $confstr .= $wgContLang->getExtraHashOptions();
 332+ }
326333
327334 $confstr .= $wgRenderHashAppend;
328335
Index: trunk/phase3/includes/parser/ParserCache.php
@@ -80,7 +80,7 @@
8181 */
8282 function getETag( $article, $popts ) {
8383 return 'W/"' . $this->getParserOutputKey( $article,
84 - $popts->optionsHash( ParserOptions::legacyOptions() ) ) .
 84+ $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) ) .
8585 "--" . $article->getTouched() . '"';
8686 }
8787
@@ -130,7 +130,7 @@
131131 $usedOptions = ParserOptions::legacyOptions();
132132 }
133133
134 - return $this->getParserOutputKey( $article, $popts->optionsHash( $usedOptions ) );
 134+ return $this->getParserOutputKey( $article, $popts->optionsHash( $usedOptions, $article->getTitle() ) );
135135 }
136136
137137 /**
@@ -165,7 +165,8 @@
166166 $value = $this->mMemc->get( $parserOutputKey );
167167 if ( self::try116cache && !$value && strpos( $value, '*' ) !== -1 ) {
168168 wfDebug( "New format parser cache miss.\n" );
169 - $parserOutputKey = $this->getParserOutputKey( $article, $popts->optionsHash( ParserOptions::legacyOptions() ) );
 169+ $parserOutputKey = $this->getParserOutputKey( $article,
 170+ $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) );
170171 $value = $this->mMemc->get( $parserOutputKey );
171172 }
172173 if ( !$value ) {
@@ -211,7 +212,7 @@
212213 $optionsKey->setContainsOldMagic( $parserOutput->containsOldMagic() );
213214
214215 $parserOutputKey = $this->getParserOutputKey( $article,
215 - $popts->optionsHash( $optionsKey->mUsedOptions ) );
 216+ $popts->optionsHash( $optionsKey->mUsedOptions, $article->getTitle() ) );
216217
217218 // Save the timestamp so that we don't have to load the revision row on view
218219 $parserOutput->mTimestamp = $article->getTimestamp();
Index: trunk/phase3/includes/OutputPage.php
@@ -1653,12 +1653,12 @@
16541654 * /w/index.php?title=Main_page&variant=zh-cn should never be served.
16551655 */
16561656 function addAcceptLanguage() {
1657 - global $wgContLang;
1658 - if( !$this->getRequest()->getCheck( 'variant' ) && $wgContLang->hasVariants() ) {
1659 - $variants = $wgContLang->getVariants();
 1657+ $lang = $this->getTitle()->getPageLanguage();
 1658+ if( !$this->getRequest()->getCheck( 'variant' ) && $lang->hasVariants() ) {
 1659+ $variants = $lang->getVariants();
16601660 $aloption = array();
16611661 foreach ( $variants as $variant ) {
1662 - if( $variant === $wgContLang->getCode() ) {
 1662+ if( $variant === $lang->getCode() ) {
16631663 continue;
16641664 } else {
16651665 $aloption[] = 'string-contains=' . $variant;
@@ -2613,7 +2613,7 @@
26142614 * have to be purged on configuration changes.
26152615 */
26162616 protected function getJSVars() {
2617 - global $wgUseAjax, $wgEnableMWSuggest, $wgContLang;
 2617+ global $wgUseAjax, $wgEnableMWSuggest;
26182618
26192619 $title = $this->getTitle();
26202620 $ns = $title->getNamespace();
@@ -2639,8 +2639,9 @@
26402640 'wgCategories' => $this->getCategories(),
26412641 'wgBreakFrames' => $this->getFrameOptions() == 'DENY',
26422642 );
2643 - if ( $wgContLang->hasVariants() ) {
2644 - $vars['wgUserVariant'] = $wgContLang->getPreferredVariant();
 2643+ $lang = $this->getTitle()->getPageLanguage();
 2644+ if ( $lang->hasVariants() ) {
 2645+ $vars['wgUserVariant'] = $lang->getPreferredVariant();
26452646 }
26462647 foreach ( $title->getRestrictionTypes() as $type ) {
26472648 $vars['wgRestriction' . ucfirst( $type )] = $title->getRestrictions( $type );
@@ -2692,7 +2693,7 @@
26932694 global $wgUniversalEditButton, $wgFavicon, $wgAppleTouchIcon, $wgEnableAPI,
26942695 $wgSitename, $wgVersion, $wgHtml5, $wgMimeType,
26952696 $wgFeed, $wgOverrideSiteFeed, $wgAdvertisedFeedTypes,
2696 - $wgDisableLangConversion, $wgCanonicalLanguageLinks, $wgContLang,
 2697+ $wgDisableLangConversion, $wgCanonicalLanguageLinks,
26972698 $wgRightsPage, $wgRightsUrl;
26982699
26992700 $tags = array();
@@ -2818,14 +2819,16 @@
28192820 ) );
28202821 }
28212822
 2823+ $lang = $this->getTitle()->getPageLanguage();
 2824+
28222825 # Language variants
28232826 if ( !$wgDisableLangConversion && $wgCanonicalLanguageLinks
2824 - && $wgContLang->hasVariants() ) {
 2827+ && $lang->hasVariants() ) {
28252828
2826 - $urlvar = $wgContLang->getURLVariant();
 2829+ $urlvar = $lang->getURLVariant();
28272830
28282831 if ( !$urlvar ) {
2829 - $variants = $wgContLang->getVariants();
 2832+ $variants = $lang->getVariants();
28302833 foreach ( $variants as $_v ) {
28312834 $tags[] = Html::element( 'link', array(
28322835 'rel' => 'alternate',
Index: trunk/phase3/includes/Title.php
@@ -877,7 +877,7 @@
878878 */
879879 public function getLocalURL( $query = '', $variant = false ) {
880880 global $wgArticlePath, $wgScript, $wgServer, $wgRequest;
881 - global $wgVariantArticlePath, $wgContLang;
 881+ global $wgVariantArticlePath;
882882
883883 if ( is_array( $query ) ) {
884884 $query = wfArrayToCGI( $query );
@@ -896,7 +896,7 @@
897897 } else {
898898 $dbkey = wfUrlencode( $this->getPrefixedDBkey() );
899899 if ( $query == '' ) {
900 - if ( $variant != false && $wgContLang->hasVariants() ) {
 900+ if ( $variant != false && $this->getPageLanguage()->hasVariants() ) {
901901 if ( !$wgVariantArticlePath ) {
902902 $variantArticlePath = "$wgScript?title=$1&variant=$2"; // default
903903 } else {
@@ -4369,9 +4369,6 @@
43704370 if ( $this->getNamespace() == NS_SPECIAL ) {
43714371 // special pages are in the user language
43724372 return $wgLang;
4373 - } elseif ( $this->isRedirect() ) {
4374 - // the arrow on a redirect page is aligned according to the user language
4375 - return $wgLang;
43764373 } elseif ( $this->isCssOrJsPage() ) {
43774374 // css/js should always be LTR and is, in fact, English
43784375 return wfGetLangObj( 'en' );
Index: trunk/phase3/includes/SkinLegacy.php
@@ -279,13 +279,14 @@
280280 $s = '';
281281
282282 /* show links to different language variants */
283 - global $wgDisableLangConversion, $wgLang, $wgContLang;
 283+ global $wgDisableLangConversion, $wgLang;
284284
285 - $variants = $wgContLang->getVariants();
 285+ $lang = $this->getSkin()->getTitle()->getPageLanguage();
 286+ $variants = $lang->getVariants();
286287
287288 if ( !$wgDisableLangConversion && sizeof( $variants ) > 1 ) {
288289 foreach ( $variants as $code ) {
289 - $varname = $wgContLang->getVariantname( $code );
 290+ $varname = $lang->getVariantname( $code );
290291
291292 if ( $varname == 'disable' ) {
292293 continue;
Index: trunk/phase3/includes/SkinTemplate.php
@@ -1012,16 +1012,21 @@
10131013 array( &$this, &$content_navigation ) );
10141014 }
10151015
 1016+ $pageLang = $title->getPageLanguage();
 1017+
10161018 // Gets list of language variants
1017 - $variants = $wgContLang->getVariants();
 1019+ $variants = $pageLang->getVariants();
10181020 // Checks that language conversion is enabled and variants exist
1019 - if( !$wgDisableLangConversion && count( $variants ) > 1 ) {
1020 - // Gets preferred variant
1021 - $preferred = $wgContLang->getPreferredVariant();
 1021+ // And if it is not in the special namespace
 1022+ if( !$wgDisableLangConversion && count( $variants ) > 1
 1023+ && $title->getNamespace() != NS_SPECIAL ) {
 1024+ // Gets preferred variant (note that user preference is
 1025+ // only possible for wiki content language variant)
 1026+ $preferred = $pageLang->getPreferredVariant();
10221027 // Loops over each variant
10231028 foreach( $variants as $code ) {
10241029 // Gets variant name from language code
1025 - $varname = $wgContLang->getVariantname( $code );
 1030+ $varname = $pageLang->getVariantname( $code );
10261031 // Checks if the variant is marked as disabled
10271032 if( $varname == 'disable' ) {
10281033 // Skips this variant
Index: trunk/phase3/includes/WikiPage.php
@@ -2559,7 +2559,7 @@
25602560 * @return mixed ParserOptions object or boolean false
25612561 */
25622562 public function getParserOptions( $canonical = false ) {
2563 - global $wgUser, $wgLanguageCode;
 2563+ global $wgUser;
25642564
25652565 if ( !$this->mParserOptions || $canonical ) {
25662566 $user = !$canonical ? $wgUser : new User;
@@ -2568,7 +2568,7 @@
25692569 $parserOptions->enableLimitReport();
25702570
25712571 if ( $canonical ) {
2572 - $parserOptions->setUserLang( $wgLanguageCode ); # Must be set explicitely
 2572+ $parserOptions->setUserLang( $this->mTitle->getPageLanguage() ); # Must be set explicitely
25732573 return $parserOptions;
25742574 }
25752575 $this->mParserOptions = $parserOptions;
Index: trunk/phase3/languages/LanguageConverter.php
@@ -158,7 +158,7 @@
159159 // not memoized (i.e. there return value is not cached) since
160160 // new information might appear during processing after this
161161 // is first called.
162 - if ( $req ) {
 162+ if ( $req = $this->validateVariant( $req ) ) {
163163 return $req;
164164 }
165165 return $this->mMainLanguageCode;

Follow-up revisions

RevisionCommit summaryAuthorDate
r97047Revert r96798 - makes parser go infinite loop somewherenikerabbit11:23, 14 September 2011
r97636Re-do several things of r96798 in preparation of re-doing the rest (there's a...robin15:55, 20 September 2011
r97849Re-do r96798 ("LanguageConverter now depends on the page content language"), ...robin20:31, 22 September 2011

Comments

#Comment by Siebrand (talk | contribs)   18:04, 11 September 2011

-        if ( $req ) { +        if ( $req = $this->validateVariant( $req ) ) { Afaik assignments inside ifs should be avoided.

#Comment by Nikerabbit (talk | contribs)   11:19, 14 September 2011

This sends parser to some kind of infinite loop when trying to save page with Template:Identical template.

Stack trace:
#0 /www/sandwiki/includes/cache/MessageCache.php(592): wfGetLangObj(false)
#1 /www/sandwiki/includes/GlobalFunctions.php(1186): MessageCache->get('post-expand-tem...', true, false)
#2 /www/sandwiki/includes/GlobalFunctions.php(1311): wfMsgGetKey('post-expand-tem...', true, false, false)
#3 /www/sandwiki/includes/parser/Parser.php(3124): wfMsgExt('post-expand-tem...', Array, NULL, NULL)
#4 /www/sandwiki/includes/parser/Parser.php(3471): Parser->limitationWarn('post-expand-tem...')
#5 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#6 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#7 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#8 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#9 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#10 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#11 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#12 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#13 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#14 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#15 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#16 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('{{Identical|Inf...')
#17 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'info short')
#18 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#19 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#20 /www/sandwiki/includes/parser/Parser.php(3158): PPFrame_DOM->expand(Object(PPNode_DOM))
#21 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#22 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#23 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#24 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#25 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('{{Identical|Inf...')
#26 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'info short')
#27 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#28 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#29 /www/sandwiki/includes/parser/Parser.php(3158): PPFrame_DOM->expand(Object(PPNode_DOM))
#30 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#31 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#32 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#33 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#34 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#35 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#36 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#37 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#38 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#39 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#40 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#41 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('{{Identical|Inf...')
#42 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'info short')
#43 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#44 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#45 /www/sandwiki/includes/parser/Parser.php(3158): PPFrame_DOM->expand(Object(PPNode_DOM))
#46 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#47 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#48 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#49 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#50 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#51 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#52 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#53 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#54 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#55 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#56 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#57 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('{{Identical|Inf...')
#58 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'info short')
#59 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#60 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#61 /www/sandwiki/includes/parser/Parser.php(3158): PPFrame_DOM->expand(Object(PPNode_DOM))
#62 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#63 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#64 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#65 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#66 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#67 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#68 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#69 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#70 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#71 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#72 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#73 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#74 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#75 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#76 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#77 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#78 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#79 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#80 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#81 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#82 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#83 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#84 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#85 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#86 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#87 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#88 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#89 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#90 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#91 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#92 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#93 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#94 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#95 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#96 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#97 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#98 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#99 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#100 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#101 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#102 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#103 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#104 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#105 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#106 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#107 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#108 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#109 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#110 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#111 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#112 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#113 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#114 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#115 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#116 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#117 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#118 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#119 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#120 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#121 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#122 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#123 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#124 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#125 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#126 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#127 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#128 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#129 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#130 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#131 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#132 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#133 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#134 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#135 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#136 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#137 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#138 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#139 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#140 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#141 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#142 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#143 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#144 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#145 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#146 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#147 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#148 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#149 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#150 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#151 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#152 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#153 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#154 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#155 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#156 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#157 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#158 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#159 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#160 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#161 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#162 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#163 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#164 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#165 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#166 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#167 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#168 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#169 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#170 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#171 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#172 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#173 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#174 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#175 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#176 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#177 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#178 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#179 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#180 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#181 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#182 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#183 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#184 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#185 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#186 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#187 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#188 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#189 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#190 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#191 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#192 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#193 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#194 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#195 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#196 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#197 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#198 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#199 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#200 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#201 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#202 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#203 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#204 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#205 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#206 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#207 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#208 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#209 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#210 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#211 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#212 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#213 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#214 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#215 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#216 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#217 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#218 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#219 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#220 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#221 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#222 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#223 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#224 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#225 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#226 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#227 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#228 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#229 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#230 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#231 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#232 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#233 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#234 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#235 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#236 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#237 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#238 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#239 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#240 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#241 /www/sandwiki/includes/parser/CoreParserFunctions.php(101): Parser->replaceVariables('Display name of...')
#242 [internal function]: CoreParserFunctions::intFunction(Object(Parser), 'editsection')
#243 /www/sandwiki/includes/parser/Parser.php(3276): call_user_func_array(Array, Array)
#244 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPTemplateFrame_DOM))
#245 /www/sandwiki/includes/parser/Parser.php(3433): PPFrame_DOM->expand(Object(PPNode_DOM))
#246 /www/sandwiki/includes/parser/Preprocessor_DOM.php(1044): Parser->braceSubstitution(Array, Object(PPFrame_DOM))
#247 /www/sandwiki/includes/parser/Parser.php(3069): PPFrame_DOM->expand(Object(PPNode_DOM), 0)
#248 /www/sandwiki/includes/parser/Parser.php(1185): Parser->replaceVariables('wefwf?{{identic...')
#249 /www/sandwiki/includes/parser/Parser.php(345): Parser->internalParse('wefwf?{{identic...')
#250 /www/sandwiki/includes/WikiPage.php(1982): Parser->parse('wefwf?{{identic...', Object(Title), Object(ParserOptions), true, true, NULL)
#251 /www/sandwiki/includes/WikiPage.php(1100): WikiPage->prepareTextForEdit('wefwf?{{identic...', NULL, Object(User))
#252 [internal function]: WikiPage->doEdit('wefwf?{{identic...', '', 98)
#253 /www/sandwiki/includes/Article.php(1925): call_user_func_array(Array, Array)
#254 [internal function]: Article->__call('doEdit', Array)
#255 /www/sandwiki/includes/EditPage.php(1207): Article->doEdit('wefwf?{{identic...', '', 98)
#256 /www/sandwiki/includes/EditPage.php(2890): EditPage->internalAttemptSave(Array, false)
#257 /www/sandwiki/includes/EditPage.php(478): EditPage->attemptSave()
#258 /www/sandwiki/includes/EditPage.php(359): EditPage->edit()
#259 /www/sandwiki/includes/Wiki.php(497): EditPage->submit()
#260 /www/sandwiki/includes/Wiki.php(237): MediaWiki->performAction(Object(Article))
#261 /www/sandwiki/includes/Wiki.php(622): MediaWiki->performRequest()
#262 /www/sandwiki/includes/Wiki.php(529): MediaWiki->main()
#263 /www/sandwiki/index.php(58): MediaWiki->run()
#264 {main}

Status & tagging log