SpecialVersion: Handle Closures in $wgHooks nicer
[lhc/web/wiklou.git] / includes / Sanitizer.php
index 8256db9..387f24f 100644 (file)
@@ -374,7 +374,6 @@ class Sanitizer {
                // are changed (like in the screwed up test system) we will re-initialise the settings.
                $globalContext = implode( '-', compact( 'wgAllowMicrodataAttributes', 'wgAllowImageTag' ) );
                if ( !$staticInitialised || $staticInitialised != $globalContext ) {
-
                        $htmlpairsStatic = array( # Tags that must be closed
                                'b', 'bdi', 'del', 'i', 'ins', 'u', 'font', 'big', 'small', 'sub', 'sup', 'h1',
                                'h2', 'h3', 'h4', 'h5', 'h6', 'cite', 'code', 'em', 's',
@@ -488,9 +487,9 @@ class Sanitizer {
                                                $badtag = true;
                                        } elseif ( $slash ) {
                                                # Closing a tag... is it the one we just opened?
-                                               wfSuppressWarnings();
+                                               MediaWiki\suppressWarnings();
                                                $ot = array_pop( $tagstack );
-                                               wfRestoreWarnings();
+                                               MediaWiki\restoreWarnings();
 
                                                if ( $ot != $t ) {
                                                        if ( isset( $htmlsingleallowed[$ot] ) ) {
@@ -498,32 +497,32 @@ class Sanitizer {
                                                                # and see if we find a match below them
                                                                $optstack = array();
                                                                array_push( $optstack, $ot );
-                                                               wfSuppressWarnings();
+                                                               MediaWiki\suppressWarnings();
                                                                $ot = array_pop( $tagstack );
-                                                               wfRestoreWarnings();
+                                                               MediaWiki\restoreWarnings();
                                                                while ( $ot != $t && isset( $htmlsingleallowed[$ot] ) ) {
                                                                        array_push( $optstack, $ot );
-                                                                       wfSuppressWarnings();
+                                                                       MediaWiki\suppressWarnings();
                                                                        $ot = array_pop( $tagstack );
-                                                                       wfRestoreWarnings();
+                                                                       MediaWiki\restoreWarnings();
                                                                }
                                                                if ( $t != $ot ) {
                                                                        # No match. Push the optional elements back again
                                                                        $badtag = true;
-                                                                       wfSuppressWarnings();
+                                                                       MediaWiki\suppressWarnings();
                                                                        $ot = array_pop( $optstack );
-                                                                       wfRestoreWarnings();
+                                                                       MediaWiki\restoreWarnings();
                                                                        while ( $ot ) {
                                                                                array_push( $tagstack, $ot );
-                                                                               wfSuppressWarnings();
+                                                                               MediaWiki\suppressWarnings();
                                                                                $ot = array_pop( $optstack );
-                                                                               wfRestoreWarnings();
+                                                                               MediaWiki\restoreWarnings();
                                                                        }
                                                                }
                                                        } else {
-                                                               wfSuppressWarnings();
+                                                               MediaWiki\suppressWarnings();
                                                                array_push( $tagstack, $ot );
-                                                               wfRestoreWarnings();
+                                                               MediaWiki\restoreWarnings();
 
                                                                # <li> can be nested in <ul> or <ol>, skip those cases:
                                                                if ( !isset( $htmllist[$ot] ) || !isset( $listtags[$t] ) ) {
@@ -754,7 +753,7 @@ class Sanitizer {
                        }
 
                        # Allow any attribute beginning with "data-"
-                       if ( !preg_match( '/^data-/i', $attribute ) && !isset( $whitelist[$attribute] ) ) {
+                       if ( !preg_match( '/^data-(?!ooui)/i', $attribute ) && !isset( $whitelist[$attribute] ) ) {
                                continue;
                        }
 
@@ -1277,9 +1276,10 @@ class Sanitizer {
                        # Double-quoted
                        return $set[3];
                } elseif ( !isset( $set[2] ) ) {
-                       # In XHTML, attributes must have a value.
-                       # For 'reduced' form, return explicitly the attribute name here.
-                       return $set[1];
+                       # In XHTML, attributes must have a value so return an empty string.
+                       # See "Empty attribute syntax",
+                       # http://www.w3.org/TR/html5/syntax.html#syntax-attribute-name
+                       return "";
                } else {
                        throw new MWException( "Tag conditions not met. This should never happen and is a bug." );
                }