From: Happy-melon Date: Tue, 30 Mar 2010 21:20:05 +0000 (+0000) Subject: Overhaul code format to coding conventions. X-Git-Tag: 1.31.0-rc.0~37298 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/password.php?a=commitdiff_plain;h=af56e348c177b0af2c2f0166db45081f372c7856;p=lhc%2Fweb%2Fwiklou.git Overhaul code format to coding conventions. --- diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index 3b6d6134ac..c2f93e3f66 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -45,8 +45,7 @@ * * @ingroup Parser */ -class Parser -{ +class Parser { /** * Update this version number when the ParserOutput format * changes in an incompatible way, so the parser cache @@ -93,10 +92,10 @@ class Parser * @private */ # Persistent: - var $mTagHooks, $mTransparentTagHooks, $mFunctionHooks, $mFunctionSynonyms, $mVariables, - $mSubstWords, $mImageParams, $mImageParamsMagicArray, $mStripList, $mMarkerIndex, - $mPreprocessor, $mExtLinkBracketedRegex, $mUrlProtocols, $mDefaultStripList, - $mVarCache, $mConf, $mFunctionTagHooks; + var $mTagHooks, $mTransparentTagHooks, $mFunctionHooks, $mFunctionSynonyms, $mVariables; + var $mSubstWords, $mImageParams, $mImageParamsMagicArray, $mStripList, $mMarkerIndex; + var $mPreprocessor, $mExtLinkBracketedRegex, $mUrlProtocols, $mDefaultStripList; + var $mVarCache, $mConf, $mFunctionTagHooks; # Cleared with clearState(): @@ -110,13 +109,13 @@ class Parser # Temporary # These are variables reset at least once per parse regardless of $clearState - var $mOptions, // ParserOptions object - $mTitle, // Title context, used for self-link rendering and similar things - $mOutputType, // Output type, one of the OT_xxx constants - $ot, // Shortcut alias, see setOutputType() - $mRevisionId, // ID to display in {{REVISIONID}} tags - $mRevisionTimestamp, // The timestamp of the specified revision ID - $mRevIdForTs; // The revision ID which was used to fetch the timestamp + var $mOptions; // ParserOptions object + var $mTitle; // Title context, used for self-link rendering and similar things + var $mOutputType; // Output type, one of the OT_xxx constants + var $ot; // Shortcut alias, see setOutputType() + var $mRevisionId; // ID to display in {{REVISIONID}} tags + var $mRevisionTimestamp; // The timestamp of the specified revision ID + var $mRevIdForTs; // The revision ID which was used to fetch the timestamp /**#@-*/ @@ -216,7 +215,7 @@ class Parser * Must not consist of all title characters, or else it will change * the behaviour of in a link. */ - #$this->mUniqPrefix = "\x07UNIQ" . Parser::getRandomString(); + # $this->mUniqPrefix = "\x07UNIQ" . Parser::getRandomString(); # Changed to \x7f to allow XML double-parsing -- TS $this->mUniqPrefix = "\x7fUNIQ" . self::getRandomString(); @@ -279,14 +278,14 @@ class Parser * @public */ function uniqPrefix() { - if( !isset( $this->mUniqPrefix ) ) { + if ( !isset( $this->mUniqPrefix ) ) { // @todo Fixme: this is probably *horribly wrong* // LanguageConverter seems to want $wgParser's uniqPrefix, however // if this is called for a parser cache hit, the parser may not // have ever been initialized in the first place. // Not really sure what the heck is supposed to be going on here. return ''; - //throw new MWException( "Accessing uninitialized mUniqPrefix" ); + // throw new MWException( "Accessing uninitialized mUniqPrefix" ); } return $this->mUniqPrefix; } @@ -323,7 +322,7 @@ class Parser $oldRevisionId = $this->mRevisionId; $oldRevisionTimestamp = $this->mRevisionTimestamp; - if( $revid !== null ) { + if ( $revid !== null ) { $this->mRevisionId = $revid; $this->mRevisionTimestamp = null; } @@ -342,9 +341,9 @@ class Parser '/(.) (?=\\?|:|;|!|%|\\302\\273)/' => '\\1 \\2', # french spaces, Guillemet-right '/(\\302\\253) /' => '\\1 ', - '/ (!\s*important)/' => ' \\1', #Beware of CSS magic word !important, bug #11874. + '/ (!\s*important)/' => ' \\1', # Beware of CSS magic word !important, bug #11874. ); - $text = preg_replace( array_keys($fixtags), array_values($fixtags), $text ); + $text = preg_replace( array_keys( $fixtags ), array_values( $fixtags ), $text ); $text = $this->doBlockLevels( $text, $linestart ); @@ -379,12 +378,11 @@ class Parser $elements = array_keys( $this->mTransparentTagHooks ); $text = self::extractTagsAndParams( $elements, $text, $matches, $uniq_prefix ); - foreach( $matches as $marker => $data ) { + foreach ( $matches as $marker => $data ) { list( $element, $content, $params, $tag ) = $data; $tagName = strtolower( $element ); - if( isset( $this->mTransparentTagHooks[$tagName] ) ) { - $output = call_user_func_array( $this->mTransparentTagHooks[$tagName], - array( $content, $params, $this ) ); + if ( isset( $this->mTransparentTagHooks[$tagName] ) ) { + $output = call_user_func_array( $this->mTransparentTagHooks[$tagName], array( $content, $params, $this ) ); } else { $output = $tag; } @@ -481,7 +479,7 @@ class Parser $this->setOutputType( self::OT_PREPROCESS ); $this->mOptions = $options; $this->setTitle( $title ); - if( $revid !== null ) { + if ( $revid !== null ) { $this->mRevisionId = $revid; } wfRunHooks( 'ParserBeforeStrip', array( &$this, &$text, &$this->mStripState ) ); @@ -517,7 +515,7 @@ class Parser * @static */ function getRandomString() { - return dechex(mt_rand(0, 0x7fffffff)) . dechex(mt_rand(0, 0x7fffffff)); + return dechex( mt_rand( 0, 0x7fffffff ) ) . dechex( mt_rand( 0, 0x7fffffff ) ); } function &getTitle() { return $this->mTitle; } @@ -566,7 +564,7 @@ class Parser * @public * @static */ - function extractTagsAndParams($elements, $text, &$matches, $uniq_prefix = ''){ + function extractTagsAndParams( $elements, $text, &$matches, $uniq_prefix = '' ) { static $n = 1; $stripped = ''; $matches = array(); @@ -577,10 +575,10 @@ class Parser while ( $text != '' ) { $p = preg_split( $start, $text, 2, PREG_SPLIT_DELIM_CAPTURE ); $stripped .= $p[0]; - if( count( $p ) < 5 ) { + if ( count( $p ) < 5 ) { break; } - if( count( $p ) > 5 ) { + if ( count( $p ) > 5 ) { // comment $element = $p[4]; $attributes = ''; @@ -594,7 +592,7 @@ class Parser $inside = $p[4]; } - $marker = "$uniq_prefix-$element-" . sprintf('%08X', $n++) . self::MARKER_SUFFIX; + $marker = "$uniq_prefix-$element-" . sprintf( '%08X', $n++ ) . self::MARKER_SUFFIX; $stripped .= $marker; if ( $close === '/>' ) { @@ -603,14 +601,14 @@ class Parser $text = $inside; $tail = null; } else { - if( $element === '!--' ) { + if ( $element === '!--' ) { $end = '/(-->)/'; } else { $end = "/(<\\/$element\\s*>)/i"; } $q = preg_split( $end, $inside, 2, PREG_SPLIT_DELIM_CAPTURE ); $content = $q[0]; - if( count( $q ) < 3 ) { + if ( count( $q ) < 3 ) { # No end tag -- let it run out to the end of the text. $tail = ''; $text = ''; @@ -638,7 +636,7 @@ class Parser /** * @deprecated use replaceVariables */ - function strip( $text, $state, $stripcomments = false , $dontstrip = array () ) { + function strip( $text, $state, $stripcomments = false , $dontstrip = array() ) { return $text; } @@ -698,22 +696,22 @@ class Parser * * @private */ - function doTableStuff ( $text ) { + function doTableStuff( $text ) { wfProfileIn( __METHOD__ ); $lines = StringUtils::explode( "\n", $text ); $out = ''; - $td_history = array (); // Is currently a td tag open? - $last_tag_history = array (); // Save history of last lag activated (td, th or caption) - $tr_history = array (); // Is currently a tr tag open? - $tr_attributes = array (); // history of tr attributes + $td_history = array(); // Is currently a td tag open? + $last_tag_history = array(); // Save history of last lag activated (td, th or caption) + $tr_history = array(); // Is currently a tr tag open? + $tr_attributes = array(); // history of tr attributes $has_opened_tr = array(); // Did this table open a element? $indent_level = 0; // indent level of the table foreach ( $lines as $outLine ) { $line = trim( $outLine ); - if( $line == '' ) { // empty line, go to next line + if ( $line == '' ) { // empty line, go to next line $out .= $outLine."\n"; continue; } @@ -725,7 +723,7 @@ class Parser $indent_level = strlen( $matches[1] ); $attributes = $this->mStripState->unstripBoth( $matches[2] ); - $attributes = Sanitizer::fixTagAttributes ( $attributes , 'table' ); + $attributes = Sanitizer::fixTagAttributes( $attributes , 'table' ); $outLine = str_repeat( '
' , $indent_level ) . ""; array_push( $td_history , false ); @@ -733,29 +731,29 @@ class Parser array_push( $tr_history , false ); array_push( $tr_attributes , '' ); array_push( $has_opened_tr , false ); - } else if ( count ( $td_history ) == 0 ) { + } elseif ( count( $td_history ) == 0 ) { // Don't do any of the following $out .= $outLine."\n"; continue; - } else if ( substr ( $line , 0 , 2 ) === '|}' ) { + } elseif ( substr( $line , 0 , 2 ) === '|}' ) { // We are ending a table - $line = '' . substr ( $line , 2 ); - $last_tag = array_pop ( $last_tag_history ); + $line = '' . substr( $line , 2 ); + $last_tag = array_pop( $last_tag_history ); - if ( !array_pop ( $has_opened_tr ) ) { + if ( !array_pop( $has_opened_tr ) ) { $line = "{$line}"; } - if ( array_pop ( $tr_history ) ) { + if ( array_pop( $tr_history ) ) { $line = "{$line}"; } - if ( array_pop ( $td_history ) ) { + if ( array_pop( $td_history ) ) { $line = "{$line}"; } - array_pop ( $tr_attributes ); + array_pop( $tr_attributes ); $outLine = $line . str_repeat( '
' , $indent_level ); - } else if ( substr ( $line , 0 , 2 ) === '|-' ) { + } elseif ( substr( $line , 0 , 2 ) === '|-' ) { // Now we have a table row $line = preg_replace( '#^\|-+#', '', $line ); @@ -766,34 +764,33 @@ class Parser array_push( $tr_attributes, $attributes ); $line = ''; - $last_tag = array_pop ( $last_tag_history ); - array_pop ( $has_opened_tr ); - array_push ( $has_opened_tr , true ); + $last_tag = array_pop( $last_tag_history ); + array_pop( $has_opened_tr ); + array_push( $has_opened_tr , true ); - if ( array_pop ( $tr_history ) ) { + if ( array_pop( $tr_history ) ) { $line = ''; } - if ( array_pop ( $td_history ) ) { + if ( array_pop( $td_history ) ) { $line = "{$line}"; } $outLine = $line; - array_push ( $tr_history , false ); - array_push ( $td_history , false ); - array_push ( $last_tag_history , '' ); - } - else if ( $first_character === '|' || $first_character === '!' || substr ( $line , 0 , 2 ) === '|+' ) { + array_push( $tr_history , false ); + array_push( $td_history , false ); + array_push( $last_tag_history , '' ); + } elseif ( $first_character === '|' || $first_character === '!' || substr( $line , 0 , 2 ) === '|+' ) { // This might be cell elements, td, th or captions - if ( substr ( $line , 0 , 2 ) === '|+' ) { + if ( substr( $line , 0 , 2 ) === '|+' ) { $first_character = '+'; - $line = substr ( $line , 1 ); + $line = substr( $line , 1 ); } - $line = substr ( $line , 1 ); + $line = substr( $line , 1 ); if ( $first_character === '!' ) { - $line = str_replace ( '!!' , '||' , $line ); + $line = str_replace( '!!' , '||' , $line ); } // Split up multiple cells on the same line. @@ -805,71 +802,68 @@ class Parser $outLine = ''; // Loop through each table cell - foreach ( $cells as $cell ) - { + foreach ( $cells as $cell ) { $previous = ''; - if ( $first_character !== '+' ) - { - $tr_after = array_pop ( $tr_attributes ); - if ( !array_pop ( $tr_history ) ) { + if ( $first_character !== '+' ) { + $tr_after = array_pop( $tr_attributes ); + if ( !array_pop( $tr_history ) ) { $previous = "\n"; } - array_push ( $tr_history , true ); - array_push ( $tr_attributes , '' ); - array_pop ( $has_opened_tr ); - array_push ( $has_opened_tr , true ); + array_push( $tr_history , true ); + array_push( $tr_attributes , '' ); + array_pop( $has_opened_tr ); + array_push( $has_opened_tr , true ); } - $last_tag = array_pop ( $last_tag_history ); + $last_tag = array_pop( $last_tag_history ); - if ( array_pop ( $td_history ) ) { + if ( array_pop( $td_history ) ) { $previous = "{$previous}"; } if ( $first_character === '|' ) { $last_tag = 'td'; - } else if ( $first_character === '!' ) { + } elseif ( $first_character === '!' ) { $last_tag = 'th'; - } else if ( $first_character === '+' ) { + } elseif ( $first_character === '+' ) { $last_tag = 'caption'; } else { $last_tag = ''; } - array_push ( $last_tag_history , $last_tag ); + array_push( $last_tag_history , $last_tag ); // A cell could contain both parameters and data - $cell_data = explode ( '|' , $cell , 2 ); + $cell_data = explode( '|' , $cell , 2 ); // Bug 553: Note that a '|' inside an invalid link should not // be mistaken as delimiting cell parameters if ( strpos( $cell_data[0], '[[' ) !== false ) { $cell = "{$previous}<{$last_tag}>{$cell}"; - } else if ( count ( $cell_data ) == 1 ) + } elseif ( count( $cell_data ) == 1 ) { $cell = "{$previous}<{$last_tag}>{$cell_data[0]}"; - else { + } else { $attributes = $this->mStripState->unstripBoth( $cell_data[0] ); $attributes = Sanitizer::fixTagAttributes( $attributes , $last_tag ); $cell = "{$previous}<{$last_tag}{$attributes}>{$cell_data[1]}"; } $outLine .= $cell; - array_push ( $td_history , true ); + array_push( $td_history , true ); } } $out .= $outLine . "\n"; } // Closing open td, tr && table - while ( count ( $td_history ) > 0 ) - { - if ( array_pop ( $td_history ) ) { + while ( count( $td_history ) > 0 ) { + if ( array_pop( $td_history ) ) { $out .= "\n"; } - if ( array_pop ( $tr_history ) ) { + if ( array_pop( $tr_history ) ) { $out .= "\n"; } - if ( !array_pop ( $has_opened_tr ) ) { + if ( !array_pop( $has_opened_tr ) ) { $out .= "\n" ; } @@ -882,7 +876,7 @@ class Parser } // special case: don't return empty table - if( $out === "\n\n
" ) { + if ( $out === "\n\n
" ) { $out = ''; } @@ -909,18 +903,18 @@ class Parser } // if $frame is provided, then use $frame for replacing any variables - if ($frame) { + if ( $frame ) { // use frame depth to infer how include/noinclude tags should be handled // depth=0 means this is the top-level document; otherwise it's an included document - if( !$frame->depth ) + if ( !$frame->depth ) { $flag = 0; - else + } else { $flag = Parser::PTD_FOR_INCLUSION; $dom = $this->preprocessToDom( $text, $flag ); $text = $frame->expand( $dom ); - } - // if $frame is not provided, then use old-style replaceVariables - else { + } + } else { + // if $frame is not provided, then use old-style replaceVariables $text = $this->replaceVariables( $text ); } @@ -938,7 +932,7 @@ class Parser $text = $this->doDoubleUnderscore( $text ); $text = $this->doHeadings( $text ); - if( $this->mOptions->getUseDynamicDates() ) { + if ( $this->mOptions->getUseDynamicDates() ) { $df = DateFormatter::getInstance(); $text = $df->reformat( $this->mOptions->getDateFormat(), $text ); } @@ -948,7 +942,7 @@ class Parser # replaceInternalLinks may sometimes leave behind # absolute URLs, which have to be masked to hide them from replaceExternalLinks - $text = str_replace($this->mUniqPrefix.'NOPARSE', '', $text); + $text = str_replace( $this->mUniqPrefix.'NOPARSE', '', $text ); $text = $this->doMagicLinks( $text ); $text = $this->formatHeadings( $text, $origText, $isMain ); @@ -1009,7 +1003,7 @@ class Parser $id = $m[4]; } else { throw new MWException( __METHOD__.': unrecognised match type "' . - substr($m[0], 0, 20 ) . '"' ); + substr( $m[0], 0, 20 ) . '"' ); } $url = wfMsg( $urlmsg, $id); $sk = $this->mOptions->getSkin(); @@ -1048,9 +1042,9 @@ class Parser # removeHTMLtags()) should not be included in # URLs, per RFC 2396. $m2 = array(); - if (preg_match('/&(lt|gt);/', $url, $m2, PREG_OFFSET_CAPTURE)) { - $trail = substr($url, $m2[0][1]) . $trail; - $url = substr($url, 0, $m2[0][1]); + if ( preg_match( '/&(lt|gt);/', $url, $m2, PREG_OFFSET_CAPTURE ) ) { + $trail = substr( $url, $m2[0][1] ) . $trail; + $url = substr( $url, 0, $m2[0][1] ); } # Move trailing punctuation to $trail @@ -1112,7 +1106,7 @@ class Parser foreach ( $lines as $line ) { $outtext .= $this->doQuotes( $line ) . "\n"; } - $outtext = substr($outtext, 0,-1); + $outtext = substr( $outtext, 0,-1 ); wfProfileOut( __METHOD__ ); return $outtext; } @@ -1122,39 +1116,38 @@ class Parser */ public function doQuotes( $text ) { $arr = preg_split( "/(''+)/", $text, -1, PREG_SPLIT_DELIM_CAPTURE ); - if ( count( $arr ) == 1 ) + if ( count( $arr ) == 1 ) { return $text; - else - { + } else { # First, do some preliminary work. This may shift some apostrophes from # being mark-up to being text. It also counts the number of occurrences # of bold and italics mark-ups. $i = 0; $numbold = 0; $numitalics = 0; - foreach ( $arr as $r ) - { - if ( ( $i % 2 ) == 1 ) - { + foreach ( $arr as $r ) { + if ( ( $i % 2 ) == 1 ) { # If there are ever four apostrophes, assume the first is supposed to # be text, and the remaining three constitute mark-up for bold text. - if ( strlen( $arr[$i] ) == 4 ) - { + if ( strlen( $arr[$i] ) == 4 ) { $arr[$i-1] .= "'"; $arr[$i] = "'''"; - } - # If there are more than 5 apostrophes in a row, assume they're all - # text except for the last 5. - else if ( strlen( $arr[$i] ) > 5 ) - { + } elseif ( strlen( $arr[$i] ) > 5 ) { + # If there are more than 5 apostrophes in a row, assume they're all + # text except for the last 5. $arr[$i-1] .= str_repeat( "'", strlen( $arr[$i] ) - 5 ); $arr[$i] = "'''''"; } # Count the number of occurrences of bold and italics mark-ups. # We are not counting sequences of five apostrophes. - if ( strlen( $arr[$i] ) == 2 ) { $numitalics++; } - else if ( strlen( $arr[$i] ) == 3 ) { $numbold++; } - else if ( strlen( $arr[$i] ) == 5 ) { $numitalics++; $numbold++; } + if ( strlen( $arr[$i] ) == 2 ) { + $numitalics++; + } elseif ( strlen( $arr[$i] ) == 3 ) { + $numbold++; + } elseif ( strlen( $arr[$i] ) == 5 ) { + $numitalics++; + $numbold++; + } } $i++; } @@ -1163,48 +1156,46 @@ class Parser # that one of the bold ones was meant to be an apostrophe followed # by italics. Which one we cannot know for certain, but it is more # likely to be one that has a single-letter word before it. - if ( ( $numbold % 2 == 1 ) && ( $numitalics % 2 == 1 ) ) - { + if ( ( $numbold % 2 == 1 ) && ( $numitalics % 2 == 1 ) ) { $i = 0; $firstsingleletterword = -1; $firstmultiletterword = -1; $firstspace = -1; - foreach ( $arr as $r ) - { - if ( ( $i % 2 == 1 ) and ( strlen( $r ) == 3 ) ) - { - $x1 = substr ($arr[$i-1], -1); - $x2 = substr ($arr[$i-1], -2, 1); - if ($x1 === ' ') { - if ($firstspace == -1) $firstspace = $i; - } else if ($x2 === ' ') { - if ($firstsingleletterword == -1) $firstsingleletterword = $i; + foreach ( $arr as $r ) { + if ( ( $i % 2 == 1 ) and ( strlen( $r ) == 3 ) ) { + $x1 = substr( $arr[$i-1], -1 ); + $x2 = substr( $arr[$i-1], -2, 1 ); + if ( $x1 === ' ' ) { + if ( $firstspace == -1 ) { + $firstspace = $i; + } + } elseif ( $x2 === ' ') { + if ( $firstsingleletterword == -1 ) { + $firstsingleletterword = $i; + } } else { - if ($firstmultiletterword == -1) $firstmultiletterword = $i; + if ( $firstmultiletterword == -1 ) { + $firstmultiletterword = $i; + } } } $i++; } # If there is a single-letter word, use it! - if ($firstsingleletterword > -1) - { - $arr [ $firstsingleletterword ] = "''"; - $arr [ $firstsingleletterword-1 ] .= "'"; - } - # If not, but there's a multi-letter word, use that one. - else if ($firstmultiletterword > -1) - { - $arr [ $firstmultiletterword ] = "''"; - $arr [ $firstmultiletterword-1 ] .= "'"; - } - # ... otherwise use the first one that has neither. - # (notice that it is possible for all three to be -1 if, for example, - # there is only one pentuple-apostrophe in the line) - else if ($firstspace > -1) - { - $arr [ $firstspace ] = "''"; - $arr [ $firstspace-1 ] .= "'"; + if ( $firstsingleletterword > -1 ) { + $arr[$firstsingleletterword] = "''"; + $arr[$firstsingleletterword-1] .= "'"; + } elseif ( $firstmultiletterword > -1 ) { + # If not, but there's a multi-letter word, use that one. + $arr[$firstmultiletterword] = "''"; + $arr[$firstmultiletterword-1] .= "'"; + } elseif ( $firstspace > -1 ) { + # ... otherwise use the first one that has neither. + # (notice that it is possible for all three to be -1 if, for example, + # there is only one pentuple-apostrophe in the line) + $arr[$firstspace] = "''"; + $arr[$firstspace-1] .= "'"; } } @@ -1213,71 +1204,70 @@ class Parser $buffer = ''; $state = ''; $i = 0; - foreach ($arr as $r) - { - if (($i % 2) == 0) - { - if ($state === 'both') + foreach ( $arr as $r ) { + if ( ( $i % 2 ) == 0 ) { + if ( $state === 'both' ) { $buffer .= $r; - else + } else { $output .= $r; - } - else - { - if (strlen ($r) == 2) - { - if ($state === 'i') - { $output .= ''; $state = ''; } - else if ($state === 'bi') - { $output .= ''; $state = 'b'; } - else if ($state === 'ib') - { $output .= ''; $state = 'b'; } - else if ($state === 'both') - { $output .= ''.$buffer.''; $state = 'b'; } - else # $state can be 'b' or '' - { $output .= ''; $state .= 'i'; } - } - else if (strlen ($r) == 3) - { - if ($state === 'b') - { $output .= ''; $state = ''; } - else if ($state === 'bi') - { $output .= ''; $state = 'i'; } - else if ($state === 'ib') - { $output .= ''; $state = 'i'; } - else if ($state === 'both') - { $output .= ''.$buffer.''; $state = 'i'; } - else # $state can be 'i' or '' - { $output .= ''; $state .= 'b'; } } - else if (strlen ($r) == 5) - { - if ($state === 'b') - { $output .= ''; $state = 'i'; } - else if ($state === 'i') - { $output .= ''; $state = 'b'; } - else if ($state === 'bi') - { $output .= ''; $state = ''; } - else if ($state === 'ib') - { $output .= ''; $state = ''; } - else if ($state === 'both') - { $output .= ''.$buffer.''; $state = ''; } - else # ($state == '') - { $buffer = ''; $state = 'both'; } + } else { + if ( strlen( $r ) == 2 ) { + if ( $state === 'i' ) { + $output .= ''; $state = ''; + } elseif ( $state === 'bi' ) { + $output .= ''; $state = 'b'; + } elseif ( $state === 'ib' ) { + $output .= ''; $state = 'b'; + } elseif ( $state === 'both' ) { + $output .= ''.$buffer.''; $state = 'b'; + } else { # $state can be 'b' or '' + $output .= ''; $state .= 'i'; + } + } elseif ( strlen( $r ) == 3 ) { + if ( $state === 'b' ) { + $output .= ''; $state = ''; + } elseif ( $state === 'bi' ) { + $output .= ''; $state = 'i'; + } elseif ( $state === 'ib' ) { + $output .= ''; $state = 'i'; + } elseif ( $state === 'both' ) { + $output .= ''.$buffer.''; $state = 'i'; + } else { # $state can be 'i' or '' + $output .= ''; $state .= 'b'; + } + } elseif ( strlen( $r ) == 5 ) { + if ( $state === 'b' ) { + $output .= ''; $state = 'i'; + } elseif ( $state === 'i' ) { + $output .= ''; $state = 'b'; + } elseif ( $state === 'bi' ) { + $output .= ''; $state = ''; + } elseif ( $state === 'ib' ) { + $output .= ''; $state = ''; + } elseif ( $state === 'both' ) { + $output .= ''.$buffer.''; $state = ''; + } else { # ($state == '') + $buffer = ''; $state = 'both'; + } } } $i++; } # Now close all remaining tags. Notice that the order is important. - if ($state === 'b' || $state === 'ib') + if ( $state === 'b' || $state === 'ib' ) { $output .= ''; - if ($state === 'i' || $state === 'bi' || $state === 'ib') + } + if ( $state === 'i' || $state === 'bi' || $state === 'ib' ) { $output .= ''; - if ($state === 'bi') + } + if ( $state === 'bi' ) { $output .= ''; + } # There might be lonely ''''', so make sure we have a buffer - if ($state === 'both' && $buffer) + if ( $state === 'both' && $buffer ) { $output .= ''.$buffer.''; + } return $output; } } @@ -1310,9 +1300,9 @@ class Parser # removeHTMLtags()) should not be included in # URLs, per RFC 2396. $m2 = array(); - if (preg_match('/&(lt|gt);/', $url, $m2, PREG_OFFSET_CAPTURE)) { - $text = substr($url, $m2[0][1]) . ' ' . $text; - $url = substr($url, 0, $m2[0][1]); + if ( preg_match( '/&(lt|gt);/', $url, $m2, PREG_OFFSET_CAPTURE ) ) { + $text = substr( $url, $m2[0][1] ) . ' ' . $text; + $url = substr( $url, 0, $m2[0][1] ); } # If the link text is an image URL, replace it with an tag @@ -1325,12 +1315,12 @@ class Parser $dtrail = ''; # Set linktype for CSS - if URL==text, link is essentially free - $linktype = ($text === $url) ? 'free' : 'text'; + $linktype = ( $text === $url ) ? 'free' : 'text'; # No link text, e.g. [http://domain.tld/some.link] if ( $text == '' ) { # Autonumber if allowed. See bug #5918 - if ( strpos( wfUrlProtocols(), substr($protocol, 0, strpos($protocol, ':')) ) !== false ) { + if ( strpos( wfUrlProtocols(), substr( $protocol, 0, strpos( $protocol, ':' ) ) ) !== false ) { $langObj = $this->getFunctionLang(); $text = '[' . $langObj->formatNum( ++$this->mAutonumber ) . ']'; $linktype = 'autonumber'; @@ -1345,7 +1335,7 @@ class Parser list( $dtrail, $trail ) = Linker::splitTrail( $trail ); } - $text = $wgContLang->markNoConversion($text); + $text = $wgContLang->markNoConversion( $text ); $url = Sanitizer::cleanUrl( $url ); @@ -1381,7 +1371,7 @@ class Parser $attribs = array(); global $wgNoFollowLinks, $wgNoFollowNsExceptions; $ns = $this->mTitle->getNamespace(); - if( $wgNoFollowLinks && !in_array($ns, $wgNoFollowNsExceptions) ) { + if ( $wgNoFollowLinks && !in_array( $ns, $wgNoFollowNsExceptions ) ) { $attribs['rel'] = 'nofollow'; global $wgNoFollowDomainExceptions; @@ -1389,8 +1379,7 @@ class Parser $bits = wfParseUrl( $url ); if ( is_array( $bits ) && isset( $bits['host'] ) ) { foreach ( $wgNoFollowDomainExceptions as $domain ) { - if( substr( $bits['host'], -strlen( $domain ) ) - == $domain ) { + if ( substr( $bits['host'], -strlen( $domain ) ) == $domain ) { unset( $attribs['rel'] ); break; } @@ -1447,19 +1436,19 @@ class Parser function maybeMakeExternalImage( $url ) { $sk = $this->mOptions->getSkin(); $imagesfrom = $this->mOptions->getAllowExternalImagesFrom(); - $imagesexception = !empty($imagesfrom); + $imagesexception = !empty( $imagesfrom ); $text = false; # $imagesfrom could be either a single string or an array of strings, parse out the latter - if( $imagesexception && is_array( $imagesfrom ) ) { + if ( $imagesexception && is_array( $imagesfrom ) ) { $imagematch = false; - foreach( $imagesfrom as $match ) { - if( strpos( $url, $match ) === 0 ) { + foreach ( $imagesfrom as $match ) { + if ( strpos( $url, $match ) === 0 ) { $imagematch = true; break; } } - } elseif( $imagesexception ) { - $imagematch = (strpos( $url, $imagesfrom ) === 0); + } elseif ( $imagesexception ) { + $imagematch = ( strpos( $url, $imagesfrom ) === 0 ); } else { $imagematch = false; } @@ -1470,14 +1459,15 @@ class Parser $text = $sk->makeExternalImage( $url ); } } - if( !$text && $this->mOptions->getEnableImageWhitelist() + if ( !$text && $this->mOptions->getEnableImageWhitelist() && preg_match( self::EXT_IMAGE_REGEX, $url ) ) { $whitelist = explode( "\n", wfMsgForContent( 'external_image_whitelist' ) ); - foreach( $whitelist as $entry ) { + foreach ( $whitelist as $entry ) { # Sanitize the regex fragment, make it case-insensitive, ignore blank entries/comments - if( strpos( $entry, '#' ) === 0 || $entry === '' ) + if ( strpos( $entry, '#' ) === 0 || $entry === '' ) { continue; - if( preg_match( '/' . str_replace( '/', '\\/', $entry ) . '/i', $url ) ) { + } + if ( preg_match( '/' . str_replace( '/', '\\/', $entry ) . '/i', $url ) ) { # Image matches a whitelist entry $text = $sk->makeExternalImage( $url ); break; @@ -1523,9 +1513,9 @@ class Parser $sk = $this->mOptions->getSkin(); $holders = new LinkHolderArray( $this ); - #split the entire text string on occurences of [[ + # split the entire text string on occurences of [[ $a = StringUtils::explode( '[[', ' ' . $s ); - #get the first element (all text up to first [[), and remove the space we added + # get the first element (all text up to first [[), and remove the space we added $s = $a->current(); $a->next(); $line = $a->current(); # Workaround for broken ArrayIterator::next() that returns "void" @@ -1539,7 +1529,7 @@ class Parser $e2 = wfMsgForContent( 'linkprefix' ); } - if( is_null( $this->mTitle ) ) { + if ( is_null( $this->mTitle ) ) { wfProfileOut( __METHOD__.'-setup' ); wfProfileOut( __METHOD__ ); throw new MWException( __METHOD__.": \$this->mTitle is null\n" ); @@ -1557,10 +1547,10 @@ class Parser $prefix = ''; } - if($wgContLang->hasVariants()) { - $selflink = $wgContLang->convertLinkToAllVariants($this->mTitle->getPrefixedText()); + if ( $wgContLang->hasVariants() ) { + $selflink = $wgContLang->convertLinkToAllVariants( $this->mTitle->getPrefixedText() ); } else { - $selflink = array($this->mTitle->getPrefixedText()); + $selflink = array( $this->mTitle->getPrefixedText() ); } $useSubpages = $this->areSubpagesAllowed(); wfProfileOut( __METHOD__.'-setup' ); @@ -1584,7 +1574,7 @@ class Parser $prefix=''; } # first link - if($first_prefix) { + if ( $first_prefix ) { $prefix = $first_prefix; $first_prefix = false; } @@ -1600,29 +1590,29 @@ class Parser # [[Image:Foo.jpg|[http://example.com desc]]] <- having three ] in a row fucks up, # the real problem is with the $e1 regex # See bug 1300. - # + # # Still some problems for cases where the ] is meant to be outside punctuation, # and no image is in sight. See bug 2095. - # - if( $text !== '' && + # + if ( $text !== '' && substr( $m[3], 0, 1 ) === ']' && - strpos($text, '[') !== false + strpos( $text, '[' ) !== false ) { $text .= ']'; # so that replaceExternalLinks($text) works later $m[3] = substr( $m[3], 1 ); } # fix up urlencoded title texts - if( strpos( $m[1], '%' ) !== false ) { + if ( strpos( $m[1], '%' ) !== false ) { # Should anchors '#' also be rejected? - $m[1] = str_replace( array('<', '>'), array('<', '>'), urldecode($m[1]) ); + $m[1] = str_replace( array('<', '>'), array('<', '>'), urldecode( $m[1] ) ); } $trail = $m[3]; - } elseif( preg_match($e1_img, $line, $m) ) { # Invalid, but might be an image with a link in its caption + } elseif ( preg_match( $e1_img, $line, $m ) ) { # Invalid, but might be an image with a link in its caption $might_be_img = true; $text = $m[2]; if ( strpos( $m[1], '%' ) !== false ) { - $m[1] = urldecode($m[1]); + $m[1] = urldecode( $m[1] ); } $trail = ""; } else { # Invalid form; output directly @@ -1649,8 +1639,8 @@ class Parser $link = $m[1]; } - $noforce = (substr( $m[1], 0, 1 ) !== ':'); - if (!$noforce) { + $noforce = ( substr( $m[1], 0, 1 ) !== ':' ); + if ( !$noforce ) { # Strip off leading ':' $link = substr( $link, 1 ); } @@ -1670,10 +1660,10 @@ class Parser if ( $might_be_img ) { # if this is actually an invalid link wfProfileIn( __METHOD__."-might_be_img" ); - if ( $ns == NS_FILE && $noforce ) { #but might be an image + if ( $ns == NS_FILE && $noforce ) { # but might be an image $found = false; while ( true ) { - #look at the next 'line' to see if we can close it there + # look at the next 'line' to see if we can close it there $a->next(); $next_line = $a->current(); if ( $next_line === false || $next_line === null ) { @@ -1687,24 +1677,24 @@ class Parser $trail = $m[2]; break; } elseif ( count( $m ) == 2 ) { - #if there's exactly one ]] that's fine, we'll keep looking + # if there's exactly one ]] that's fine, we'll keep looking $text .= "[[{$m[0]}]]{$m[1]}"; } else { - #if $next_line is invalid too, we need look no further + # if $next_line is invalid too, we need look no further $text .= '[[' . $next_line; break; } } if ( !$found ) { # we couldn't find the end of this imageLink, so output it raw - #but don't ignore what might be perfectly normal links in the text we've examined + # but don't ignore what might be perfectly normal links in the text we've examined $holders->merge( $this->replaceInternalLinks2( $text ) ); $s .= "{$prefix}[[$link|$text"; # note: no $trail, because without an end, there *is* no trail wfProfileOut( __METHOD__."-might_be_img" ); continue; } - } else { #it's not an image, so output it raw + } else { # it's not an image, so output it raw $s .= "{$prefix}[[$link|$text"; # note: no $trail, because without an end, there *is* no trail wfProfileOut( __METHOD__."-might_be_img" ); @@ -1714,7 +1704,9 @@ class Parser } $wasblank = ( $text == '' ); - if ( $wasblank ) $text = $link; + if ( $wasblank ) { + $text = $link; + } # Link not escaped by : , create the various objects if ( $noforce ) { @@ -1723,8 +1715,8 @@ class Parser wfProfileIn( __METHOD__."-interwiki" ); if ( $iw && $this->mOptions->getInterwikiMagic() && $nottalk && $wgContLang->getLanguageName( $iw ) ) { $this->mOutput->addLanguageLink( $nt->getFullText() ); - $s = rtrim($s . $prefix); - $s .= trim($trail, "\n") == '' ? '': $prefix . $trail; + $s = rtrim( $s . $prefix ); + $s .= trim( $trail, "\n" ) == '' ? '': $prefix . $trail; wfProfileOut( __METHOD__."-interwiki" ); continue; } @@ -1743,7 +1735,7 @@ class Parser # recursively parse links inside the image caption # actually, this will parse them in any other parameters, too, # but it might be hard to fix that, and it doesn't matter ATM - $text = $this->replaceExternalLinks($text); + $text = $this->replaceExternalLinks( $text ); $holders->merge( $this->replaceInternalLinks2( $text ) ); } # cloak any absolute URLs inside the image markup, so replaceExternalLinks() won't touch them @@ -1759,7 +1751,7 @@ class Parser if ( $ns == NS_CATEGORY ) { wfProfileIn( __METHOD__."-category" ); - $s = rtrim($s . "\n"); # bug 87 + $s = rtrim( $s . "\n" ); # bug 87 if ( $wasblank ) { $sortkey = $this->getDefaultSort(); @@ -1775,7 +1767,7 @@ class Parser * Strip the whitespace Category links produce, see bug 87 * @todo We might want to use trim($tmp, "\n") here. */ - $s .= trim($prefix . $trail, "\n") == '' ? '': $prefix . $trail; + $s .= trim( $prefix . $trail, "\n" ) == '' ? '': $prefix . $trail; wfProfileOut( __METHOD__."-category" ); continue; @@ -1783,8 +1775,8 @@ class Parser } # Self-link checking - if( $nt->getFragment() === '' && $ns != NS_SPECIAL ) { - if( in_array( $nt->getPrefixedText(), $selflink, true ) ) { + if ( $nt->getFragment() === '' && $ns != NS_SPECIAL ) { + if ( in_array( $nt->getPrefixedText(), $selflink, true ) ) { $s .= $prefix . $sk->makeSelfLinkObj( $nt, $text, '', $trail ); continue; } @@ -1792,7 +1784,7 @@ class Parser # NS_MEDIA is a pseudo-namespace for linking directly to a file # FIXME: Should do batch file existence checks, see comment below - if( $ns == NS_MEDIA ) { + if ( $ns == NS_MEDIA ) { wfProfileIn( __METHOD__."-media" ); # Give extensions a chance to select the file revision for us $skip = $time = false; @@ -1812,10 +1804,10 @@ class Parser wfProfileIn( __METHOD__."-always_known" ); # Some titles, such as valid special pages or files in foreign repos, should # be shown as bluelinks even though they're not included in the page table - # + # # FIXME: isAlwaysKnown() can be expensive for file links; we should really do # batch file existence checks for NS_FILE and NS_MEDIA - if( $iw == '' && $nt->isAlwaysKnown() ) { + if ( $iw == '' && $nt->isAlwaysKnown() ) { $this->mOutput->addLink( $nt ); $s .= $this->makeKnownLinkHolder( $nt, $text, '', $trail, $prefix ); } else { @@ -1893,7 +1885,7 @@ class Parser * @return string the full name of the link * @private */ - function maybeDoSubpageLink($target, &$text) { + function maybeDoSubpageLink( $target, &$text ) { return Linker::normalizeSubpageLink( $this->mTitle, $target, $text ); } @@ -1910,42 +1902,57 @@ class Parser $this->mLastSection = ''; return $result; } - # getCommon() returns the length of the longest common substring - # of both arguments, starting at the beginning of both. - # - /* private */ function getCommon( $st1, $st2 ) { + /** + * getCommon() returns the length of the longest common substring + * of both arguments, starting at the beginning of both. + * @private + */ + function getCommon( $st1, $st2 ) { $fl = strlen( $st1 ); $shorter = strlen( $st2 ); - if ( $fl < $shorter ) { $shorter = $fl; } + if ( $fl < $shorter ) { + $shorter = $fl; + } for ( $i = 0; $i < $shorter; ++$i ) { - if ( $st1{$i} != $st2{$i} ) { break; } + if ( $st1{$i} != $st2{$i} ) { + break; + } } return $i; } - # These next three functions open, continue, and close the list - # element appropriate to the prefix character passed into them. - # - /* private */ function openList( $char ) { + /** + * These next three functions open, continue, and close the list + * element appropriate to the prefix character passed into them. + * @private + */ + function openList( $char ) { $result = $this->closeParagraph(); - if ( '*' === $char ) { $result .= '
  • '; } - elseif ( '#' === $char ) { $result .= '
    1. '; } - elseif ( ':' === $char ) { $result .= '
      '; } - elseif ( ';' === $char ) { + if ( '*' === $char ) { + $result .= '
      • '; + } elseif ( '#' === $char ) { + $result .= '
        1. '; + } elseif ( ':' === $char ) { + $result .= '
          '; + } elseif ( ';' === $char ) { $result .= '
          '; $this->mDTopen = true; + } else { + $result = ''; } - else { $result = ''; } return $result; } /* private */ function nextItem( $char ) { - if ( '*' === $char || '#' === $char ) { return '
        2. '; } - elseif ( ':' === $char || ';' === $char ) { + if ( '*' === $char || '#' === $char ) { + return '
        3. '; + } elseif ( ':' === $char || ';' === $char ) { $close = '
      '; - if ( $this->mDTopen ) { $close = ''; } + if ( $this->mDTopen ) { + $close = ''; + } if ( ';' === $char ) { $this->mDTopen = true; return $close . '
      '; @@ -1958,17 +1965,20 @@ class Parser } /* private */ function closeList( $char ) { - if ( '*' === $char ) { $text = '
'; } - elseif ( '#' === $char ) { $text = ''; } - elseif ( ':' === $char ) { + if ( '*' === $char ) { + $text = ''; + } elseif ( '#' === $char ) { + $text = ''; + } elseif ( ':' === $char ) { if ( $this->mDTopen ) { $this->mDTopen = false; $text = ''; } else { $text = ''; } + } else { + return ''; } - else { return ''; } return $text."\n"; } /**#@-*/ @@ -1986,7 +1996,7 @@ class Parser # Parsing through the text line by line. The main thing # happening here is handling of block-level elements p, pre, # and making lists from lines starting with * # : etc. - # + # $textLines = StringUtils::explode( "\n", $text ); $lastPrefix = $output = ''; @@ -2007,8 +2017,8 @@ class Parser // : = dd $lastPrefixLength = strlen( $lastPrefix ); - $preCloseMatch = preg_match('/<\\/pre/i', $oLine ); - $preOpenMatch = preg_match('/
 element, scan for and figure out what prefixes are there.
 			if ( !$this->mInPre ) {
 				# Multiple prefixes may abut each other for nested lists.
@@ -2030,7 +2040,7 @@ class Parser
 			}
 
 			# List generation
-			if( $prefixLength && $lastPrefix === $prefix2 ) {
+			if ( $prefixLength && $lastPrefix === $prefix2 ) {
 				# Same as the last item, so no need to deal with nesting or opening stuff
 				$output .= $this->nextItem( substr( $prefix, -1 ) );
 				$paragraphStack = false;
@@ -2041,12 +2051,12 @@ class Parser
 					# So we check for : in the remainder text to split up the
 					# title and definition, without b0rking links.
 					$term = $t2 = '';
-					if ($this->findColonNoLinks($t, $term, $t2) !== false) {
+					if ( $this->findColonNoLinks( $t, $term, $t2 ) !== false ) {
 						$t = $t2;
 						$output .= $term . $this->nextItem( ':' );
 					}
 				}
-			} elseif( $prefixLength || $lastPrefixLength ) {
+			} elseif ( $prefixLength || $lastPrefixLength ) {
 				// We need to open or close prefixes, or both.
 
 				# Either open or close a level...
@@ -2054,7 +2064,7 @@ class Parser
 				$paragraphStack = false;
 
 				// Close all the prefixes which aren't shared.
-				while( $commonPrefixLength < $lastPrefixLength ) {
+				while ( $commonPrefixLength < $lastPrefixLength ) {
 					$output .= $this->closeList( $lastPrefix[$lastPrefixLength-1] );
 					--$lastPrefixLength;
 				}
@@ -2071,7 +2081,7 @@ class Parser
 
 					if ( ';' === $char ) {
 						# FIXME: This is dupe of code above
-						if ($this->findColonNoLinks($t, $term, $t2) !== false) {
+						if ( $this->findColonNoLinks( $t, $term, $t2 ) !== false ) {
 							$t = $t2;
 							$output .= $term . $this->nextItem( ':' );
 						}
@@ -2082,7 +2092,7 @@ class Parser
 			}
 
 			// If we have no prefixes, go to paragraph mode.
-			if( 0 == $prefixLength ) {
+			if ( 0 == $prefixLength ) {
 				wfProfileIn( __METHOD__."-paragraph" );
 				# No prefix (not in list)--go to paragraph mode
 				// XXX: use a stack for nestable elements like span, table and div
@@ -2102,10 +2112,10 @@ class Parser
 					} else {
 						$inBlockElem = true;
 					}
-				} else if ( !$inBlockElem && !$this->mInPre ) {
-					if ( ' ' == substr( $t, 0, 1 ) and ( $this->mLastSection === 'pre' or trim($t) != '' ) ) {
+				} elseif ( !$inBlockElem && !$this->mInPre ) {
+					if ( ' ' == substr( $t, 0, 1 ) and ( $this->mLastSection === 'pre' || trim( $t ) != '' ) ) {
 						// pre
-						if ($this->mLastSection !== 'pre') {
+						if ( $this->mLastSection !== 'pre' ) {
 							$paragraphStack = false;
 							$output .= $this->closeParagraph().'
';
 							$this->mLastSection = 'pre';
@@ -2113,13 +2123,13 @@ class Parser
 						$t = substr( $t, 1 );
 					} else {
 						// paragraph
-						if ( trim($t) == '' ) {
+						if ( trim( $t ) == '' ) {
 							if ( $paragraphStack ) {
 								$output .= $paragraphStack.'
'; $paragraphStack = false; $this->mLastSection = 'p'; } else { - if ($this->mLastSection !== 'p' ) { + if ( $this->mLastSection !== 'p' ) { $output .= $this->closeParagraph(); $this->mLastSection = ''; $paragraphStack = '

'; @@ -2132,7 +2142,7 @@ class Parser $output .= $paragraphStack; $paragraphStack = false; $this->mLastSection = 'p'; - } else if ($this->mLastSection !== 'p') { + } elseif ( $this->mLastSection !== 'p' ) { $output .= $this->closeParagraph().'

'; $this->mLastSection = 'p'; } @@ -2142,10 +2152,10 @@ class Parser wfProfileOut( __METHOD__."-paragraph" ); } // somewhere above we forget to get out of pre block (bug 785) - if($preCloseMatch && $this->mInPre) { + if ( $preCloseMatch && $this->mInPre ) { $this->mInPre = false; } - if ($paragraphStack === false) { + if ( $paragraphStack === false ) { $output .= $t."\n"; } } @@ -2170,18 +2180,18 @@ class Parser * @param string &$after set to everything after the ':' * return string the position of the ':', or false if none found */ - function findColonNoLinks($str, &$before, &$after) { + function findColonNoLinks( $str, &$before, &$after ) { wfProfileIn( __METHOD__ ); $pos = strpos( $str, ':' ); - if( $pos === false ) { + if ( $pos === false ) { // Nothing to find! wfProfileOut( __METHOD__ ); return false; } $lt = strpos( $str, '<' ); - if( $lt === false || $lt > $pos ) { + if ( $lt === false || $lt > $pos ) { // Easy; no tag nesting to worry about $before = substr( $str, 0, $pos ); $after = substr( $str, $pos+1 ); @@ -2205,7 +2215,7 @@ class Parser $state = self::COLON_STATE_TAGSTART; break; case ":": - if( $stack == 0 ) { + if ( $stack == 0 ) { // We found it! $before = substr( $str, 0, $i ); $after = substr( $str, $i + 1 ); @@ -2217,14 +2227,14 @@ class Parser default: // Skip ahead looking for something interesting $colon = strpos( $str, ':', $i ); - if( $colon === false ) { + if ( $colon === false ) { // Nothing else interesting wfProfileOut( __METHOD__ ); return false; } $lt = strpos( $str, '<', $i ); - if( $stack === 0 ) { - if( $lt === false || $colon < $lt ) { + if ( $stack === 0 ) { + if ( $lt === false || $colon < $lt ) { // We found it! $before = substr( $str, 0, $colon ); $after = substr( $str, $colon + 1 ); @@ -2232,7 +2242,7 @@ class Parser return $i; } } - if( $lt === false ) { + if ( $lt === false ) { // Nothing else interesting to find; abort! // We're nested, but there's no close tags left. Abort! break 2; @@ -2275,9 +2285,9 @@ class Parser break; case 3: // self::COLON_STATE_CLOSETAG: // In a - if( $c === ">" ) { + if ( $c === ">" ) { $stack--; - if( $stack < 0 ) { + if ( $stack < 0 ) { wfDebug( __METHOD__.": Invalid input; too many close tags\n" ); wfProfileOut( __METHOD__ ); return false; @@ -2286,7 +2296,7 @@ class Parser } break; case self::COLON_STATE_TAGSLASH: - if( $c === ">" ) { + if ( $c === ">" ) { // Yes, a self-closed tag $state = self::COLON_STATE_TEXT; } else { @@ -2295,19 +2305,19 @@ class Parser } break; case 5: // self::COLON_STATE_COMMENT: - if( $c === "-" ) { + if ( $c === "-" ) { $state = self::COLON_STATE_COMMENTDASH; } break; case self::COLON_STATE_COMMENTDASH: - if( $c === "-" ) { + if ( $c === "-" ) { $state = self::COLON_STATE_COMMENTDASHDASH; } else { $state = self::COLON_STATE_COMMENT; } break; case self::COLON_STATE_COMMENTDASHDASH: - if( $c === ">" ) { + if ( $c === ">" ) { $state = self::COLON_STATE_TEXT; } else { $state = self::COLON_STATE_COMMENT; @@ -2317,7 +2327,7 @@ class Parser throw new MWException( "State machine error in " . __METHOD__ ); } } - if( $stack > 0 ) { + if ( $stack > 0 ) { wfDebug( __METHOD__.": Invalid input; not enough close tags (stack $stack, state $state)\n" ); return false; } @@ -2436,7 +2446,7 @@ class Parser $value = wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) ); break; case 'talkpagename': - if( $this->mTitle->canTalk() ) { + if ( $this->mTitle->canTalk() ) { $talkPage = $this->mTitle->getTalkPage(); $value = wfEscapeWikiText( $talkPage->getPrefixedText() ); } else { @@ -2444,7 +2454,7 @@ class Parser } break; case 'talkpagenamee': - if( $this->mTitle->canTalk() ) { + if ( $this->mTitle->canTalk() ) { $talkPage = $this->mTitle->getTalkPage(); $value = $talkPage->getPrefixedUrl(); } else { @@ -2509,13 +2519,13 @@ class Parser $value = $this->getRevisionUser(); break; case 'namespace': - $value = str_replace('_',' ',$wgContLang->getNsText( $this->mTitle->getNamespace() ) ); + $value = str_replace( '_',' ',$wgContLang->getNsText( $this->mTitle->getNamespace() ) ); break; case 'namespacee': $value = wfUrlencode( $wgContLang->getNsText( $this->mTitle->getNamespace() ) ); break; case 'talkspace': - $value = $this->mTitle->canTalk() ? str_replace('_',' ',$this->mTitle->getTalkNsText()) : ''; + $value = $this->mTitle->canTalk() ? str_replace( '_',' ',$this->mTitle->getTalkNsText() ) : ''; break; case 'talkspacee': $value = $this->mTitle->canTalk() ? wfUrlencode( $this->mTitle->getTalkNsText() ) : ''; @@ -2582,7 +2592,7 @@ class Parser $value = $wgContLang->formatNum( SiteStats::pages() ); break; case 'numberofadmins': - $value = $wgContLang->formatNum( SiteStats::numberingroup('sysop') ); + $value = $wgContLang->formatNum( SiteStats::numberingroup( 'sysop' ) ); break; case 'numberofedits': $value = $wgContLang->formatNum( SiteStats::edits() ); @@ -2616,10 +2626,11 @@ class Parser return $wgContLanguageCode; default: $ret = null; - if ( wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) ) ) + if ( wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) ) ) { return $ret; - else + } else { return null; + } } if ( $index ) @@ -2665,7 +2676,7 @@ class Parser * * @private */ - function preprocessToDom ( $text, $flags = 0 ) { + function preprocessToDom( $text, $flags = 0 ) { $dom = $this->getPreprocessor()->preprocessToObj( $text, $flags ); return $dom; } @@ -2714,7 +2725,7 @@ class Parser $frame = $this->getPreprocessor()->newFrame(); } elseif ( !( $frame instanceof PPFrame ) ) { wfDebug( __METHOD__." called using plain parameters instead of a PPFrame instance. Creating custom frame.\n" ); - $frame = $this->getPreprocessor()->newCustomFrame($frame); + $frame = $this->getPreprocessor()->newCustomFrame( $frame ); } $dom = $this->preprocessToDom( $text ); @@ -2725,11 +2736,11 @@ class Parser return $text; } - /// Clean up argument array - refactored in 1.9 so parserfunctions can use it, too. + // Clean up argument array - refactored in 1.9 so parserfunctions can use it, too. static function createAssocArgs( $args ) { $assocArgs = array(); $index = 1; - foreach( $args as $arg ) { + foreach ( $args as $arg ) { $eqpos = strpos( $arg, '=' ); if ( $eqpos === false ) { $assocArgs[$index++] = $arg; @@ -2753,14 +2764,20 @@ class Parser * Will warn at most once the user per limitation type * * @param string $limitationType, should be one of: - * 'expensive-parserfunction' (corresponding messages: 'expensive-parserfunction-warning', 'expensive-parserfunction-category') - * 'post-expand-template-argument' (corresponding messages: 'post-expand-template-argument-warning', 'post-expand-template-argument-category') - * 'post-expand-template-inclusion' (corresponding messages: 'post-expand-template-inclusion-warning', 'post-expand-template-inclusion-category') + * 'expensive-parserfunction' (corresponding messages: + * 'expensive-parserfunction-warning', + * 'expensive-parserfunction-category') + * 'post-expand-template-argument' (corresponding messages: + * 'post-expand-template-argument-warning', + * 'post-expand-template-argument-category') + * 'post-expand-template-inclusion' (corresponding messages: + * 'post-expand-template-inclusion-warning', + * 'post-expand-template-inclusion-category') * @params int $current, $max When an explicit limit has been * exceeded, provide the values (optional) */ function limitationWarn( $limitationType, $current=null, $max=null) { - //does no harm if $current and $max are present but are unnecessary for the message + // does no harm if $current and $max are present but are unnecessary for the message $warning = wfMsgExt( "$limitationType-warning", array( 'parsemag', 'escape' ), $current, $max ); $this->mOutput->addWarning( $warning ); $this->addTrackingCategory( "$limitationType-category" ); @@ -2804,7 +2821,7 @@ class Parser $originalTitle = $part1; # $args is a list of argument nodes, starting from index 0, not including $part1 - $args = (null == $piece['parts']) ? array() : $piece['parts']; + $args = ( null == $piece['parts'] ) ? array() : $piece['parts']; wfProfileOut( __METHOD__.'-setup' ); # SUBST @@ -2840,8 +2857,9 @@ class Parser $id = $this->mVariables->matchStartToEnd( $part1 ); if ( $id !== false ) { $text = $this->getVariableValue( $id, $frame ); - if (MagicWord::getCacheTTL($id)>-1) + if ( MagicWord::getCacheTTL( $id ) > -1 ) { $this->mOutput->mContainsOldMagic = true; + } $found = true; } } @@ -2944,21 +2962,23 @@ class Parser # Split the title into page and subpage $subpage = ''; $part1 = $this->maybeDoSubpageLink( $part1, $subpage ); - if ($subpage !== '') { + if ( $subpage !== '' ) { $ns = $this->mTitle->getNamespace(); } $title = Title::newFromText( $part1, $ns ); if ( $title ) { $titleText = $title->getPrefixedText(); # Check for language variants if the template is not found - if($wgContLang->hasVariants() && $title->getArticleID() == 0){ + if ( $wgContLang->hasVariants() && $title->getArticleID() == 0 ) { $wgContLang->findVariantLink( $part1, $title, true ); } # Do recursion depth check $limit = $this->mOptions->getMaxTemplateDepth(); if ( $frame->depth >= $limit ) { $found = true; - $text = '' . wfMsgForContent( 'parser-template-recursion-depth-warning', $limit ) . ''; + $text = '' + . wfMsgForContent( 'parser-template-recursion-depth-warning', $limit ) + . ''; } } } @@ -2967,15 +2987,18 @@ class Parser if ( !$found && $title ) { wfProfileIn( __METHOD__ . '-loadtpl' ); if ( !$title->isExternal() ) { - if ( $title->getNamespace() == NS_SPECIAL && $this->mOptions->getAllowSpecialInclusion() && $this->ot['html'] ) { + if ( $title->getNamespace() == NS_SPECIAL + && $this->mOptions->getAllowSpecialInclusion() + && $this->ot['html'] ) + { $text = SpecialPage::capturePath( $title ); if ( is_string( $text ) ) { $found = true; $isHTML = true; $this->disableCache(); } - } else if ( $wgNonincludableNamespaces && in_array( $title->getNamespace(), $wgNonincludableNamespaces ) ) { - $found = false; //access denied + } elseif ( $wgNonincludableNamespaces && in_array( $title->getNamespace(), $wgNonincludableNamespaces ) ) { + $found = false; // access denied wfDebug( __METHOD__.": template inclusion denied for " . $title->getPrefixedDBkey() ); } else { list( $text, $title ) = $this->getTemplateDom( $title ); @@ -3052,15 +3075,16 @@ class Parser # immediately preceding headings if ( $isHTML ) { $text = "\n\n" . $this->insertStripItem( $text ); - } - # Escape nowiki-style return values - elseif ( $nowiki && ( $this->ot['html'] || $this->ot['pre'] ) ) { + } elseif ( $nowiki && ( $this->ot['html'] || $this->ot['pre'] ) ) { + # Escape nowiki-style return values $text = wfEscapeWikiText( $text ); - } - # Bug 529: if the template begins with a table or block-level - # element, it should be treated as beginning a new line. - # This behaviour is somewhat controversial. - elseif ( is_string( $text ) && !$piece['lineStart'] && preg_match('/^(?:{\\||:|;|#|\*)/', $text)) /*}*/{ + } elseif ( is_string( $text ) + && !$piece['lineStart'] + && preg_match( '/^(?:{\\||:|;|#|\*)/', $text ) ) + { + # Bug 529: if the template begins with a table or block-level + # element, it should be treated as beginning a new line. + # This behaviour is somewhat controversial. $text = "\n" . $text; } @@ -3109,7 +3133,7 @@ class Parser $dom = $this->preprocessToDom( $text, self::PTD_FOR_INCLUSION ); $this->mTplDomCache[ $titleText ] = $dom; - if (! $title->equals($cacheTitle)) { + if ( !$title->equals( $cacheTitle ) ) { $this->mTplRedirCache[$cacheTitle->getPrefixedDBkey()] = array( $title->getNamespace(),$cdb = $title->getDBkey() ); } @@ -3130,11 +3154,11 @@ class Parser $this->mOutput->addTemplate( $dep['title'], $dep['page_id'], $dep['rev_id'] ); } } - return array($text,$finalTitle); + return array( $text, $finalTitle ); } function fetchTemplate( $title ) { - $rv = $this->fetchTemplateAndTitle($title); + $rv = $this->fetchTemplateAndTitle( $title ); return $rv[0]; } @@ -3153,7 +3177,7 @@ class Parser $id = false; // Assume current wfRunHooks( 'BeforeParserFetchTemplateAndtitle', array( $parser, &$title, &$skip, &$id ) ); - if( $skip ) { + if ( $skip ) { $text = false; $deps[] = array( 'title' => $title, @@ -3164,7 +3188,7 @@ class Parser $rev = $id ? Revision::newFromId( $id ) : Revision::newFromTitle( $title ); $rev_id = $rev ? $rev->getId() : 0; // If there is no current revision, there is no page - if( $id === false && !$rev ) { + if ( $id === false && !$rev ) { $linkCache = LinkCache::singleton(); $linkCache->addBadLinkObj( $title ); } @@ -3174,13 +3198,13 @@ class Parser 'page_id' => $title->getArticleID(), 'rev_id' => $rev_id ); - if( $rev ) { + if ( $rev ) { $text = $rev->getText(); - } elseif( $title->getNamespace() == NS_MEDIAWIKI ) { + } elseif ( $title->getNamespace() == NS_MEDIAWIKI ) { global $wgContLang; $message = $wgContLang->lcfirst( $title->getText() ); $text = wfMsgForContentNoTrans( $message ); - if( wfEmptyMsg( $message, $text ) ) { + if ( wfEmptyMsg( $message, $text ) ) { $text = false; break; } @@ -3206,35 +3230,39 @@ class Parser function interwikiTransclude( $title, $action ) { global $wgEnableScaryTranscluding; - if (!$wgEnableScaryTranscluding) + if ( !$wgEnableScaryTranscluding ) { return wfMsg('scarytranscludedisabled'); + } $url = $title->getFullUrl( "action=$action" ); - if (strlen($url) > 255) - return wfMsg('scarytranscludetoolong'); - return $this->fetchScaryTemplateMaybeFromCache($url); + if ( strlen( $url ) > 255 ) { + return wfMsg( 'scarytranscludetoolong' ); + } + return $this->fetchScaryTemplateMaybeFromCache( $url ); } - function fetchScaryTemplateMaybeFromCache($url) { + function fetchScaryTemplateMaybeFromCache( $url ) { global $wgTranscludeCacheExpiry; - $dbr = wfGetDB(DB_SLAVE); + $dbr = wfGetDB( DB_SLAVE ); $tsCond = $dbr->timestamp( time() - $wgTranscludeCacheExpiry ); - $obj = $dbr->selectRow('transcache', array('tc_time', 'tc_contents'), - array('tc_url' => $url, "tc_time >= " . $dbr->addQuotes( $tsCond ) ) ); - if ($obj) { + $obj = $dbr->selectRow( 'transcache', array('tc_time', 'tc_contents' ), + array( 'tc_url' => $url, "tc_time >= " . $dbr->addQuotes( $tsCond ) ) ); + if ( $obj ) { return $obj->tc_contents; } - $text = Http::get($url); - if (!$text) - return wfMsg('scarytranscludefailed', $url); + $text = Http::get( $url ); + if ( !$text ) { + return wfMsg( 'scarytranscludefailed', $url ); + } - $dbw = wfGetDB(DB_MASTER); - $dbw->replace('transcache', array('tc_url'), array( + $dbw = wfGetDB( DB_MASTER ); + $dbw->replace( 'transcache', array('tc_url'), array( 'tc_url' => $url, 'tc_time' => $dbw->timestamp( time() ), - 'tc_contents' => $text)); + 'tc_contents' => $text) + ); return $text; } @@ -3302,7 +3330,7 @@ class Parser $name = $frame->expand( $params['name'] ); $attrText = !isset( $params['attr'] ) ? null : $frame->expand( $params['attr'] ); $content = !isset( $params['inner'] ) ? null : $frame->expand( $params['inner'] ); - $marker = "{$this->mUniqPrefix}-$name-" . sprintf('%08X', $this->mMarkerIndex++) . self::MARKER_SUFFIX; + $marker = "{$this->mUniqPrefix}-$name-" . sprintf( '%08X', $this->mMarkerIndex++ ) . self::MARKER_SUFFIX; $isFunctionTag = isset( $this->mFunctionTagHooks[strtolower($name)] ) && ( $this->ot['html'] || $this->ot['pre'] ); @@ -3318,20 +3346,20 @@ class Parser $attributes = $attributes + $params['attributes']; } - if( isset( $this->mTagHooks[$name] ) ) { + if ( isset( $this->mTagHooks[$name] ) ) { # Workaround for PHP bug 35229 and similar if ( !is_callable( $this->mTagHooks[$name] ) ) { throw new MWException( "Tag hook for $name is not callable\n" ); } $output = call_user_func_array( $this->mTagHooks[$name], array( $content, $attributes, $this, $frame ) ); - } elseif( isset( $this->mFunctionTagHooks[$name] ) ) { + } elseif ( isset( $this->mFunctionTagHooks[$name] ) ) { list( $callback, $flags ) = $this->mFunctionTagHooks[$name]; - if( !is_callable( $callback ) ) + if ( !is_callable( $callback ) ) { throw new MWException( "Tag hook for $name is not callable\n" ); + } - $output = call_user_func_array( $callback, - array( &$this, $frame, $content, $attributes ) ); + $output = call_user_func_array( $callback, array( &$this, $frame, $content, $attributes ) ); } else { $output = 'Invalid tag extension name: ' . htmlspecialchars( $name ) . ''; @@ -3362,7 +3390,7 @@ class Parser } } - if( $markerType === 'none' ) { + if ( $markerType === 'none' ) { return $output; } elseif ( $markerType === 'nowiki' ) { $this->mStripState->nowiki->setPair( $marker, $output ); @@ -3398,7 +3426,7 @@ class Parser function incrementExpensiveFunctionCount() { global $wgExpensiveParserFunctionLimit; $this->mExpensiveFunctionCount++; - if($this->mExpensiveFunctionCount <= $wgExpensiveParserFunctionLimit) { + if ( $this->mExpensiveFunctionCount <= $wgExpensiveParserFunctionLimit ) { return true; } return false; @@ -3413,7 +3441,7 @@ class Parser // The position of __TOC__ needs to be recorded $mw = MagicWord::get( 'toc' ); - if( $mw->match( $text ) ) { + if ( $mw->match( $text ) ) { $this->mShowToc = true; $this->mForceTocPosition = true; @@ -3439,14 +3467,14 @@ class Parser $this->addTrackingCategory( 'hidden-category-category' ); } # (bug 8068) Allow control over whether robots index a page. - # + # # FIXME (bug 14899): __INDEX__ always overrides __NOINDEX__ here! This # is not desirable, the last one on the page should win. - if( isset( $this->mDoubleUnderscores['noindex'] ) && $this->mTitle->canUseNoindex() ) { + if ( isset( $this->mDoubleUnderscores['noindex'] ) && $this->mTitle->canUseNoindex() ) { $this->mOutput->setIndexPolicy( 'noindex' ); $this->addTrackingCategory( 'noindex-category' ); } - if( isset( $this->mDoubleUnderscores['index'] ) && $this->mTitle->canUseNoindex() ){ + if ( isset( $this->mDoubleUnderscores['index'] ) && $this->mTitle->canUseNoindex() ) { $this->mOutput->setIndexPolicy( 'index' ); $this->addTrackingCategory( 'index-category' ); } @@ -3461,11 +3489,13 @@ class Parser * @param $msg String message key * @return Bool whether the addition was successful */ - protected function addTrackingCategory( $msg ){ + protected function addTrackingCategory( $msg ) { $cat = wfMsgForContent( $msg ); # Allow tracking categories to be disabled by setting them to "-" - if( $cat === '-' ) return false; + if ( $cat === '-' ) { + return false; + } $containerCategory = Title::makeTitleSafe( NS_CATEGORY, $cat ); if ( $containerCategory ) { @@ -3499,7 +3529,7 @@ class Parser $showEditLink = $this->mOptions->getEditSection(); // Do not call quickUserCan unless necessary - if( $showEditLink && !$this->mTitle->quickUserCan( 'edit' ) ) { + if ( $showEditLink && !$this->mTitle->quickUserCan( 'edit' ) ) { $showEditLink = 0; } @@ -3516,7 +3546,7 @@ class Parser # if there are fewer than 4 headlines in the article, do not show TOC # unless it's been explicitly enabled. $enoughToc = $this->mShowToc && - (($numMatches >= 4) || $this->mForceTocPosition); + ( ( $numMatches >= 4 ) || $this->mForceTocPosition ); # Allow user to stipulate that a page should have a "new section" # link added via __NEWSECTIONLINK__ @@ -3566,20 +3596,20 @@ class Parser $byteOffset = 0; $tocraw = array(); - foreach( $matches[3] as $headline ) { + foreach ( $matches[3] as $headline ) { $isTemplate = false; $titleText = false; $sectionIndex = false; $numbering = ''; $markerMatches = array(); - if (preg_match("/^$markerRegex/", $headline, $markerMatches)) { + if ( preg_match("/^$markerRegex/", $headline, $markerMatches ) ) { $serial = $markerMatches[1]; list( $titleText, $sectionIndex ) = $this->mHeadings[$serial]; - $isTemplate = ($titleText != $baseTitleText); - $headline = preg_replace("/^$markerRegex/", "", $headline); + $isTemplate = ( $titleText != $baseTitleText ); + $headline = preg_replace( "/^$markerRegex/", "", $headline ); } - if( $toclevel ) { + if ( $toclevel ) { $prevlevel = $level; $prevtoclevel = $toclevel; } @@ -3589,30 +3619,30 @@ class Parser # Increase TOC level $toclevel++; $sublevelCount[$toclevel] = 0; - if( $toclevel<$wgMaxTocLevel ) { + if ( $toclevel<$wgMaxTocLevel ) { $prevtoclevel = $toclevel; $toc .= $sk->tocIndent(); $numVisible++; } - } - elseif ( $level < $prevlevel && $toclevel > 1 ) { + } elseif ( $level < $prevlevel && $toclevel > 1 ) { # Decrease TOC level, find level to jump to - for ($i = $toclevel; $i > 0; $i--) { + for ( $i = $toclevel; $i > 0; $i-- ) { if ( $levelCount[$i] == $level ) { # Found last matching level $toclevel = $i; break; - } - elseif ( $levelCount[$i] < $level ) { + } elseif ( $levelCount[$i] < $level ) { # Found first matching level below current level $toclevel = $i + 1; break; } } - if( $i == 0 ) $toclevel = 1; - if( $toclevel<$wgMaxTocLevel ) { - if($prevtoclevel < $wgMaxTocLevel) { + if ( $i == 0 ) { + $toclevel = 1; + } + if ( $toclevel<$wgMaxTocLevel ) { + if ( $prevtoclevel < $wgMaxTocLevel ) { # Unindent only if the previous toc level was shown :p $toc .= $sk->tocUnindent( $prevtoclevel - $toclevel ); $prevtoclevel = $toclevel; @@ -3620,10 +3650,9 @@ class Parser $toc .= $sk->tocLineEnd(); } } - } - else { + } else { # No change in level, end TOC line - if( $toclevel<$wgMaxTocLevel ) { + if ( $toclevel<$wgMaxTocLevel ) { $toc .= $sk->tocLineEnd(); } } @@ -3634,8 +3663,8 @@ class Parser @$sublevelCount[$toclevel]++; $dot = 0; for( $i = 1; $i <= $toclevel; $i++ ) { - if( !empty( $sublevelCount[$i] ) ) { - if( $dot ) { + if ( !empty( $sublevelCount[$i] ) ) { + if ( $dot ) { $numbering .= '.'; } $numbering .= $wgContLang->formatNum( $sublevelCount[$i] ); @@ -3656,7 +3685,7 @@ class Parser # Strip out HTML (other than plain and : bug 8393) $tocline = preg_replace( array( '#<(?!/?(sup|sub)).*?'.'>#', '#<(/?(sup|sub)).*?'.'>#' ), - array( '', '<$1>'), + array( '', '<$1>' ), $safeHeadline ); $tocline = trim( $tocline ); @@ -3672,7 +3701,7 @@ class Parser if ( $wgHtml5 && $wgExperimentalHtmlIds ) { # For reverse compatibility, provide an id that's # HTML4-compatible, like we used to. - # + # # It may be worth noting, academically, that it's possible for # the legacy anchor to conflict with a non-legacy headline # anchor on the page. In this case likely the "correct" thing @@ -3717,7 +3746,7 @@ class Parser } # Don't number the heading if it is the only one (looks silly) - if( $doNumberHeadings && count( $matches[3] ) > 1) { + if ( $doNumberHeadings && count( $matches[3] ) > 1) { # the two are different if the line contains a link $headline = $numbering . ' ' . $headline; } @@ -3731,9 +3760,9 @@ class Parser if ( $legacyHeadline !== false && $refers[$legacyArrayKey] > 1 ) { $legacyAnchor .= '_' . $refers[$legacyArrayKey]; } - if( $enoughToc && ( !isset($wgMaxTocLevel) || $toclevel<$wgMaxTocLevel ) ) { - $toc .= $sk->tocLine($anchor, $tocline, - $numbering, $toclevel, ($isTemplate ? false : $sectionIndex)); + if ( $enoughToc && ( !isset( $wgMaxTocLevel ) || $toclevel < $wgMaxTocLevel ) ) { + $toc .= $sk->tocLine( $anchor, $tocline, + $numbering, $toclevel, ( $isTemplate ? false : $sectionIndex ) ); } # Add the section to the section tree @@ -3753,20 +3782,20 @@ class Parser 'level' => $level, 'line' => $tocline, 'number' => $numbering, - 'index' => ($isTemplate ? 'T-' : '' ) . $sectionIndex, + 'index' => ( $isTemplate ? 'T-' : '' ) . $sectionIndex, 'fromtitle' => $titleText, 'byteoffset' => ( $isTemplate ? null : $byteOffset ), 'anchor' => $anchor, ); # give headline the correct tag - if( $showEditLink && $sectionIndex !== false ) { - if( $isTemplate ) { + if ( $showEditLink && $sectionIndex !== false ) { + if ( $isTemplate ) { # Put a T flag in the section identifier, to indicate to extractSections() # that sections inside should be counted. - $editlink = $sk->doEditSectionLink(Title::newFromText( $titleText ), "T-$sectionIndex"); + $editlink = $sk->doEditSectionLink( Title::newFromText( $titleText ), "T-$sectionIndex" ); } else { - $editlink = $sk->doEditSectionLink($this->mTitle, $sectionIndex, $headlineHint); + $editlink = $sk->doEditSectionLink( $this->mTitle, $sectionIndex, $headlineHint ); } } else { $editlink = ''; @@ -3781,12 +3810,12 @@ class Parser $this->setOutputType( $oldType ); # Never ever show TOC if no headers - if( $numVisible < 1 ) { + if ( $numVisible < 1 ) { $enoughToc = false; } - if( $enoughToc ) { - if( $prevtoclevel > 0 && $prevtoclevel < $wgMaxTocLevel ) { + if ( $enoughToc ) { + if ( $prevtoclevel > 0 && $prevtoclevel < $wgMaxTocLevel ) { $toc .= $sk->tocUnindent( $prevtoclevel - 1 ); } $toc = $sk->tocList( $toc ); @@ -3802,8 +3831,8 @@ class Parser $blocks = preg_split( '/.*?<\/H[1-6]>/i', $text ); $i = 0; - foreach( $blocks as $block ) { - if( $showEditLink && $headlineCount > 0 && $i == 0 && $block !== "\n" ) { + foreach ( $blocks as $block ) { + if ( $showEditLink && $headlineCount > 0 && $i == 0 && $block !== "\n" ) { # This is the [edit] link that appears for the top block of text when # section editing is enabled @@ -3812,17 +3841,17 @@ class Parser # $full .= $sk->editSectionLink(0); } $full .= $block; - if( $enoughToc && !$i && $isMain && !$this->mForceTocPosition ) { + if ( $enoughToc && !$i && $isMain && !$this->mForceTocPosition ) { # Top anchor now in skin $full = $full.$toc; } - if( !empty( $head[$i] ) ) { + if ( !empty( $head[$i] ) ) { $full .= $head[$i]; } $i++; } - if( $this->mForceTocPosition ) { + if ( $this->mForceTocPosition ) { return str_replace( '', $toc, $full ); } else { return $full; @@ -3852,11 +3881,12 @@ class Parser $titletext = $title->getPrefixedDBkey(); foreach ( $tree1 as $s ) { if ( $targetLevel !== false ) { - if ( $s['level'] <= $targetLevel ) + if ( $s['level'] <= $targetLevel ) { // We've skipped enough $targetLevel = false; - else + } else { continue; + } } if ( $s['index'] != $section || $s['fromtitle'] != $titletext ) { @@ -3866,8 +3896,9 @@ class Parser // Rewrite index, byteoffset and number if ( $s['fromtitle'] == $titletext ) { $s['index'] = $nextIndex++; - if ( $merged ) + if ( $merged ) { $s['byteoffset'] += $len2; + } } $s['number'] = implode( '.', array_map( array( $wgContLang, 'formatnum' ), @@ -3908,15 +3939,17 @@ class Parser * @param $lastLevel int Level of previous TOC entry */ private static function incrementNumbering( &$number, $level, $lastLevel ) { - if ( $level > $lastLevel ) + if ( $level > $lastLevel ) { $number[$level - 1] = 1; - else if ( $level < $lastLevel ) { + } elseif ( $level < $lastLevel ) { foreach ( $number as $key => $unused ) - if ( $key >= $level ) + if ( $key >= $level ) { unset( $number[$key] ); + } $number[$level - 1]++; - } else + } else { $number[$level - 1]++; + } } /** @@ -3956,13 +3989,11 @@ class Parser function pstPass2( $text, $user ) { global $wgContLang, $wgLocaltimezone; - /* Note: This is the timestamp saved as hardcoded wikitext to - * the database, we use $wgContLang here in order to give - * everyone the same signature and use the default one rather - * than the one selected in each user's preferences. - * - * (see also bug 12815) - */ + # Note: This is the timestamp saved as hardcoded wikitext to + # the database, we use $wgContLang here in order to give + # everyone the same signature and use the default one rather + # than the one selected in each user's preferences. + # (see also bug 12815) $ts = $this->mOptions->getTimestamp(); if ( isset( $wgLocaltimezone ) ) { $tz = $wgLocaltimezone; @@ -3976,13 +4007,14 @@ class Parser $ts = date( 'YmdHis', $unixts ); $tzMsg = date( 'T', $unixts ); # might vary on DST changeover! - /* Allow translation of timezones trough wiki. date() can return - * whatever crap the system uses, localised or not, so we cannot - * ship premade translations. - */ + # Allow translation of timezones trough wiki. date() can return + # whatever crap the system uses, localised or not, so we cannot + # ship premade translations. $key = 'timezone-' . strtolower( trim( $tzMsg ) ); $value = wfMsgForContent( $key ); - if ( !wfEmptyMsg( $key, $value ) ) $tzMsg = $value; + if ( !wfEmptyMsg( $key, $value ) ) { + $tzMsg = $value; + } date_default_timezone_set( $oldtz ); @@ -4001,7 +4033,6 @@ class Parser ) ); # Context links: [[|name]] and [[name (context)|]] - # global $wgLegalTitleChars; $tc = "[$wgLegalTitleChars]"; $nc = '[ _0-9A-Za-z\x80-\xff-]'; # Namespaces can use non-ascii! @@ -4051,17 +4082,18 @@ class Parser if ( $nickname === false ) $nickname = $user->getOption( 'nickname' ); - if ( is_null( $fancySig ) ) + if ( is_null( $fancySig ) ) { $fancySig = $user->getBoolOption( 'fancysig' ); + } $nickname = $nickname == null ? $username : $nickname; - if( mb_strlen( $nickname ) > $wgMaxSigChars ) { + if ( mb_strlen( $nickname ) > $wgMaxSigChars ) { $nickname = $username; wfDebug( __METHOD__ . ": $username has overlong signature.\n" ); - } elseif( $fancySig !== false ) { + } elseif ( $fancySig !== false ) { # Sig. might contain markup; validate this - if( $this->validateSig( $nickname ) !== false ) { + if ( $this->validateSig( $nickname ) !== false ) { # Validated; clean up (if needed) and return it return $this->cleanSig( $nickname, true ); } else { @@ -4179,11 +4211,11 @@ class Parser } $executing = true; - wfProfileIn(__METHOD__); + wfProfileIn( __METHOD__ ); $text = $this->preprocess( $text, $wgTitle, $options ); $executing = false; - wfProfileOut(__METHOD__); + wfProfileOut( __METHOD__ ); return $text; } @@ -4206,7 +4238,7 @@ class Parser $tag = strtolower( $tag ); $oldVal = isset( $this->mTagHooks[$tag] ) ? $this->mTagHooks[$tag] : null; $this->mTagHooks[$tag] = $callback; - if( !in_array( $tag, $this->mStripList ) ) { + if ( !in_array( $tag, $this->mStripList ) ) { $this->mStripList[] = $tag; } @@ -4281,7 +4313,7 @@ class Parser # Add to function cache $mw = MagicWord::get( $id ); - if( !$mw ) + if ( !$mw ) throw new MWException( __METHOD__.'() expecting a magic word identifier.' ); $synonyms = $mw->getSynonyms(); @@ -4325,7 +4357,7 @@ class Parser $this->mFunctionTagHooks[$tag] : null; $this->mFunctionTagHooks[$tag] = array( $callback, $flags ); - if( !in_array( $tag, $this->mStripList ) ) { + if ( !in_array( $tag, $this->mStripList ) ) { $this->mStripList[] = $tag; } @@ -4372,24 +4404,24 @@ class Parser $ig->useSkin( $this->mOptions->getSkin() ); $ig->mRevisionId = $this->mRevisionId; - if( isset( $params['showfilename'] ) ) { + if ( isset( $params['showfilename'] ) ) { $ig->setShowFilename( true ); } else { $ig->setShowFilename( false ); } - if( isset( $params['caption'] ) ) { + if ( isset( $params['caption'] ) ) { $caption = $params['caption']; $caption = htmlspecialchars( $caption ); $caption = $this->replaceInternalLinks( $caption ); $ig->setCaptionHtml( $caption ); } - if( isset( $params['perrow'] ) ) { + if ( isset( $params['perrow'] ) ) { $ig->setPerRow( $params['perrow'] ); } - if( isset( $params['widths'] ) ) { + if ( isset( $params['widths'] ) ) { $ig->setWidths( $params['widths'] ); } - if( isset( $params['heights'] ) ) { + if ( isset( $params['heights'] ) ) { $ig->setHeights( $params['heights'] ); } @@ -4406,11 +4438,12 @@ class Parser continue; } - if ( strpos( $matches[0], '%' ) !== false ) + if ( strpos( $matches[0], '%' ) !== false ) { $matches[1] = urldecode( $matches[1] ); + } $tp = Title::newFromText( $matches[1]/*, NS_FILE*/ ); $nt =& $tp; - if( is_null( $nt ) ) { + if ( is_null( $nt ) ) { # Bogus title. Ignore these so we don't bomb out later. continue; } @@ -4527,15 +4560,15 @@ class Parser $caption = ''; $params = array( 'frame' => array(), 'handler' => array(), 'horizAlign' => array(), 'vertAlign' => array() ); - foreach( $parts as $part ) { + foreach ( $parts as $part ) { $part = trim( $part ); list( $magicName, $value ) = $mwArray->matchVariableStartToEnd( $part ); $validated = false; - if( isset( $paramMap[$magicName] ) ) { + if ( isset( $paramMap[$magicName] ) ) { list( $type, $paramName ) = $paramMap[$magicName]; // Special case; width and height come in one variable together - if( $type === 'handler' && $paramName === 'width' ) { + if ( $type === 'handler' && $paramName === 'width' ) { $m = array(); # (bug 13500) In both cases (width/height and width only), # permit trailing "px" for backward compatibility. @@ -4631,13 +4664,13 @@ class Parser # came to also set the caption, ordinary text after the image -- which # makes no sense, because that just repeats the text multiple times in # screen readers. It *also* came to set the title attribute. - # + # # Now that we have an alt attribute, we should not set the alt text to # equal the caption: that's worse than useless, it just repeats the # text. This is the framed/thumbnail case. If there's no caption, we # use the unnamed parameter for alt text as well, just for the time be- # ing, if the unnamed param is set and the alt param is not. - # + # # For the future, we need to figure out if we want to tweak this more, # e.g., introducing a title= parameter for the title; ignoring the un- # named parameter entirely for images without a caption; adding an ex- @@ -4734,7 +4767,9 @@ class Parser /**#@+ * Accessor */ - function getTags() { return array_merge( array_keys($this->mTransparentTagHooks), array_keys( $this->mTagHooks ) ); } + function getTags() { + return array_merge( array_keys( $this->mTransparentTagHooks ), array_keys( $this->mTagHooks ) ); + } /**#@-*/ @@ -4838,7 +4873,7 @@ class Parser // Add two newlines on -- trailing whitespace in $newText is conventionally // stripped by the editor, so we need both newlines to restore the paragraph gap // Only add trailing whitespace if there is newText - if($newText != "") { + if ( $newText != "" ) { $outText .= $newText . "\n\n"; } @@ -4896,7 +4931,7 @@ class Parser // The cryptic '' timezone parameter tells to use the site-default // timezone offset instead of the user settings. - // + // // Since this value will be saved into the parser cache, served // to other users, and potentially even used inside links and such, // it needs to be consistent for all visitors. @@ -4913,7 +4948,7 @@ class Parser function getRevisionUser() { // if this template is subst: the revision id will be blank, // so just use the current user's name - if( $this->mRevisionId ) { + if ( $this->mRevisionId ) { $revision = Revision::newFromId( $this->mRevisionId ); $revuser = $revision->getUserText(); } else { @@ -4940,10 +4975,11 @@ class Parser */ public function getDefaultSort() { global $wgCategoryPrefixedDefaultSortkey; - if( $this->mDefaultSort !== false ) { + if ( $this->mDefaultSort !== false ) { return $this->mDefaultSort; - } elseif ($this->mTitle->getNamespace() == NS_CATEGORY || - !$wgCategoryPrefixedDefaultSortkey) { + } elseif ( $this->mTitle->getNamespace() == NS_CATEGORY || + !$wgCategoryPrefixedDefaultSortkey ) + { return $this->mTitle->getText(); } else { return $this->mTitle->getPrefixedText(); @@ -4999,16 +5035,16 @@ class Parser */ public function stripSectionName( $text ) { # Strip internal link markup - $text = preg_replace('/\[\[:?([^[|]+)\|([^[]+)\]\]/','$2',$text); - $text = preg_replace('/\[\[:?([^[]+)\|?\]\]/','$1',$text); + $text = preg_replace( '/\[\[:?([^[|]+)\|([^[]+)\]\]/', '$2', $text ); + $text = preg_replace( '/\[\[:?([^[]+)\|?\]\]/', '$1', $text ); # Strip external link markup (FIXME: Not Tolerant to blank link text # I.E. [http://www.mediawiki.org] will render as [1] or something depending # on how many empty links there are on the page - need to figure that out. - $text = preg_replace('/\[(?:' . wfUrlProtocols() . ')([^ ]+?) ([^[]+)\]/','$2',$text); + $text = preg_replace( '/\[(?:' . wfUrlProtocols() . ')([^ ]+?) ([^[]+)\]/', '$2', $text ); # Parse wikitext quotes (italics & bold) - $text = $this->doQuotes($text); + $text = $this->doQuotes( $text ); # Strip HTML tags $text = StringUtils::delimiterReplace( '<', '>', '', $text ); @@ -5024,7 +5060,7 @@ class Parser */ function testSrvus( $text, $title, $options, $outputType = self::OT_HTML ) { $this->clearState(); - if ( ! ( $title instanceof Title ) ) { + if ( !$title instanceof Title ) { $title = Title::newFromText( $title ); } $this->mTitle = $title; @@ -5038,14 +5074,14 @@ class Parser function testPst( $text, $title, $options ) { global $wgUser; - if ( ! ( $title instanceof Title ) ) { + if ( !$title instanceof Title ) { $title = Title::newFromText( $title ); } return $this->preSaveTransform( $text, $title, $wgUser, $options ); } function testPreprocess( $text, $title, $options ) { - if ( ! ( $title instanceof Title ) ) { + if ( !$title instanceof Title ) { $title = Title::newFromText( $title ); } return $this->testSrvus( $text, $title, $options, self::OT_PREPROCESS ); @@ -5083,7 +5119,9 @@ class Parser // data in an array. $stripState = new StripState; $pos = 0; - while( ( $start_pos = strpos( $text, $this->mUniqPrefix, $pos ) ) && ( $end_pos = strpos( $text, self::MARKER_SUFFIX, $pos ) ) ) { + while ( ( $start_pos = strpos( $text, $this->mUniqPrefix, $pos ) ) + && ( $end_pos = strpos( $text, self::MARKER_SUFFIX, $pos ) ) ) + { $end_pos += strlen( self::MARKER_SUFFIX ); $marker = substr( $text, $start_pos, $end_pos-$start_pos ); @@ -5108,11 +5146,11 @@ class Parser $pos = 0; // Internal links - while( ( $start_pos = strpos( $text, '' ) ) ); $links['interwiki'][] = $this->mLinkHolders->interwiki[$key]; @@ -5137,8 +5175,9 @@ class Parser } function unserialiseHalfParsedText( $data, $intPrefix = null /* Unique identifying prefix */ ) { - if (!$intPrefix) + if ( !$intPrefix ) { $intPrefix = $this->getRandomString(); + } // First, extract the strip state. $stripState = $data['stripstate']; @@ -5150,8 +5189,8 @@ class Parser $links = $data['linkholder']; // Internal... - foreach( $links['internal'] as $ns => $nsLinks ) { - foreach( $nsLinks as $key => $entry ) { + foreach ( $links['internal'] as $ns => $nsLinks ) { + foreach ( $nsLinks as $key => $entry ) { $newKey = $intPrefix . '-' . $key; $this->mLinkHolders->internals[$ns][$newKey] = $entry; @@ -5160,7 +5199,7 @@ class Parser } // Interwiki... - foreach( $links['interwiki'] as $key => $entry ) { + foreach ( $links['interwiki'] as $key => $entry ) { $newKey = "$intPrefix-$key"; $this->mLinkHolders->interwikis[$newKey] = $entry;