Change php extract() to explicit code

Avoid php magic and make var settings more visible

Change-Id: I223874fd871104b0ac6a80d7f39c6dd997d0551d
This commit is contained in:
Umherirrender 2017-12-07 22:16:47 +01:00
parent 3c11855351
commit 3d560be428
4 changed files with 117 additions and 20 deletions

View file

@ -3108,10 +3108,29 @@ class Parser {
throw $ex;
}
# The interface for parser functions allows for extracting
# flags into the local scope. Extract any forwarded flags
# here.
extract( $result );
// Extract any forwarded flags
if ( isset( $result['found'] ) ) {
$found = $result['found'];
}
if ( array_key_exists( 'text', $result ) ) {
// a string or null
$text = $result['text'];
}
if ( isset( $result['nowiki'] ) ) {
$nowiki = $result['nowiki'];
}
if ( isset( $result['isHTML'] ) ) {
$isHTML = $result['isHTML'];
}
if ( isset( $result['forceRawInterwiki'] ) ) {
$forceRawInterwiki = $result['forceRawInterwiki'];
}
if ( isset( $result['isChildObj'] ) ) {
$isChildObj = $result['isChildObj'];
}
if ( isset( $result['isLocalObj'] ) ) {
$isLocalObj = $result['isLocalObj'];
}
}
}
@ -3862,11 +3881,12 @@ class Parser {
}
if ( is_array( $output ) ) {
# Extract flags to local scope (to override $markerType)
// Extract flags
$flags = $output;
$output = $flags[0];
unset( $flags[0] );
extract( $flags );
if ( isset( $flags['markerType'] ) ) {
$markerType = $flags['markerType'];
}
}
} else {
if ( is_null( $attrText ) ) {

View file

@ -559,8 +559,16 @@ class Preprocessor_DOM extends Preprocessor {
'count' => $count ];
$stack->push( $piece );
$accum =& $stack->getAccum();
$flags = $stack->getFlags();
extract( $flags );
$stackFlags = $stack->getFlags();
if ( isset( $stackFlags['findEquals'] ) ) {
$findEquals = $stackFlags['findEquals'];
}
if ( isset( $stackFlags['findPipe'] ) ) {
$findPipe = $stackFlags['findPipe'];
}
if ( isset( $stackFlags['inHeading'] ) ) {
$inHeading = $stackFlags['inHeading'];
}
$i += $count;
}
} elseif ( $found == 'line-end' ) {
@ -610,8 +618,16 @@ class Preprocessor_DOM extends Preprocessor {
// Unwind the stack
$stack->pop();
$accum =& $stack->getAccum();
$flags = $stack->getFlags();
extract( $flags );
$stackFlags = $stack->getFlags();
if ( isset( $stackFlags['findEquals'] ) ) {
$findEquals = $stackFlags['findEquals'];
}
if ( isset( $stackFlags['findPipe'] ) ) {
$findPipe = $stackFlags['findPipe'];
}
if ( isset( $stackFlags['inHeading'] ) ) {
$inHeading = $stackFlags['inHeading'];
}
// Append the result to the enclosing accumulator
$accum .= $element;
@ -640,8 +656,16 @@ class Preprocessor_DOM extends Preprocessor {
$stack->push( $piece );
$accum =& $stack->getAccum();
$flags = $stack->getFlags();
extract( $flags );
$stackFlags = $stack->getFlags();
if ( isset( $stackFlags['findEquals'] ) ) {
$findEquals = $stackFlags['findEquals'];
}
if ( isset( $stackFlags['findPipe'] ) ) {
$findPipe = $stackFlags['findPipe'];
}
if ( isset( $stackFlags['inHeading'] ) ) {
$inHeading = $stackFlags['inHeading'];
}
} else {
# Add literal brace(s)
$accum .= htmlspecialchars( str_repeat( $curChar, $count ) );
@ -748,8 +772,16 @@ class Preprocessor_DOM extends Preprocessor {
$accum .= $s;
}
}
$flags = $stack->getFlags();
extract( $flags );
$stackFlags = $stack->getFlags();
if ( isset( $stackFlags['findEquals'] ) ) {
$findEquals = $stackFlags['findEquals'];
}
if ( isset( $stackFlags['findPipe'] ) ) {
$findPipe = $stackFlags['findPipe'];
}
if ( isset( $stackFlags['inHeading'] ) ) {
$inHeading = $stackFlags['inHeading'];
}
# Add XML element to the enclosing accumulator
$accum .= $element;

View file

@ -497,7 +497,16 @@ class Preprocessor_Hash extends Preprocessor {
'count' => $count ];
$stack->push( $piece );
$accum =& $stack->getAccum();
extract( $stack->getFlags() );
$stackFlags = $stack->getFlags();
if ( isset( $stackFlags['findEquals'] ) ) {
$findEquals = $stackFlags['findEquals'];
}
if ( isset( $stackFlags['findPipe'] ) ) {
$findPipe = $stackFlags['findPipe'];
}
if ( isset( $stackFlags['inHeading'] ) ) {
$inHeading = $stackFlags['inHeading'];
}
$i += $count;
}
} elseif ( $found == 'line-end' ) {
@ -554,7 +563,16 @@ class Preprocessor_Hash extends Preprocessor {
// Unwind the stack
$stack->pop();
$accum =& $stack->getAccum();
extract( $stack->getFlags() );
$stackFlags = $stack->getFlags();
if ( isset( $stackFlags['findEquals'] ) ) {
$findEquals = $stackFlags['findEquals'];
}
if ( isset( $stackFlags['findPipe'] ) ) {
$findPipe = $stackFlags['findPipe'];
}
if ( isset( $stackFlags['inHeading'] ) ) {
$inHeading = $stackFlags['inHeading'];
}
// Append the result to the enclosing accumulator
array_splice( $accum, count( $accum ), 0, $element );
@ -584,7 +602,16 @@ class Preprocessor_Hash extends Preprocessor {
$stack->push( $piece );
$accum =& $stack->getAccum();
extract( $stack->getFlags() );
$stackFlags = $stack->getFlags();
if ( isset( $stackFlags['findEquals'] ) ) {
$findEquals = $stackFlags['findEquals'];
}
if ( isset( $stackFlags['findPipe'] ) ) {
$findPipe = $stackFlags['findPipe'];
}
if ( isset( $stackFlags['inHeading'] ) ) {
$inHeading = $stackFlags['inHeading'];
}
} else {
# Add literal brace(s)
self::addLiteral( $accum, str_repeat( $curChar, $count ) );
@ -695,7 +722,16 @@ class Preprocessor_Hash extends Preprocessor {
}
}
extract( $stack->getFlags() );
$stackFlags = $stack->getFlags();
if ( isset( $stackFlags['findEquals'] ) ) {
$findEquals = $stackFlags['findEquals'];
}
if ( isset( $stackFlags['findPipe'] ) ) {
$findPipe = $stackFlags['findPipe'];
}
if ( isset( $stackFlags['inHeading'] ) ) {
$inHeading = $stackFlags['inHeading'];
}
# Add XML element to the enclosing accumulator
array_splice( $accum, count( $accum ), 0, $element );

View file

@ -477,7 +477,16 @@ class Sanitizer {
public static function removeHTMLtags( $text, $processCallback = null,
$args = [], $extratags = [], $removetags = [], $warnCallback = null
) {
extract( self::getRecognizedTagData( $extratags, $removetags ) );
$tagData = self::getRecognizedTagData( $extratags, $removetags );
$htmlpairs = $tagData['htmlpairs'];
$htmlsingle = $tagData['htmlsingle'];
$htmlsingleonly = $tagData['htmlsingleonly'];
$htmlnest = $tagData['htmlnest'];
$tabletags = $tagData['tabletags'];
$htmllist = $tagData['htmllist'];
$listtags = $tagData['listtags'];
$htmlsingleallowed = $tagData['htmlsingleallowed'];
$htmlelements = $tagData['htmlelements'];
# Remove HTML comments
$text = self::removeHTMLcomments( $text );