Archived
Updates
This commit is contained in:
1 parent
70d2335bba
commit
7428b67da5
1086 files changed
+94145
-59082
No files matched your search
+101
-76
@@ -88,6 +88,14 @@ if ( ! CUSTOM_TAGS ) {
|
||||
'lang' => true,
|
||||
'xml:lang' => true,
|
||||
),
|
||||
'audio' => array(
|
||||
'autoplay' => true,
|
||||
'controls' => true,
|
||||
'loop' => true,
|
||||
'muted' => true,
|
||||
'preload' => true,
|
||||
'src' => true,
|
||||
),
|
||||
'b' => array(),
|
||||
'big' => array(),
|
||||
'blockquote' => array(
|
||||
@@ -119,6 +127,14 @@ if ( ! CUSTOM_TAGS ) {
|
||||
'valign' => true,
|
||||
'width' => true,
|
||||
),
|
||||
'colgroup' => array(
|
||||
'align' => true,
|
||||
'char' => true,
|
||||
'charoff' => true,
|
||||
'span' => true,
|
||||
'valign' => true,
|
||||
'width' => true,
|
||||
),
|
||||
'del' => array(
|
||||
'datetime' => true,
|
||||
),
|
||||
@@ -364,6 +380,13 @@ if ( ! CUSTOM_TAGS ) {
|
||||
'charoff' => true,
|
||||
'valign' => true,
|
||||
),
|
||||
'track' => array(
|
||||
'default' => true,
|
||||
'kind' => true,
|
||||
'label' => true,
|
||||
'src' => true,
|
||||
'srclang' => true,
|
||||
),
|
||||
'tt' => array(),
|
||||
'u' => array(),
|
||||
'ul' => array(
|
||||
@@ -374,6 +397,17 @@ if ( ! CUSTOM_TAGS ) {
|
||||
'type' => true,
|
||||
),
|
||||
'var' => array(),
|
||||
'video' => array(
|
||||
'autoplay' => true,
|
||||
'controls' => true,
|
||||
'height' => true,
|
||||
'loop' => true,
|
||||
'muted' => true,
|
||||
'poster' => true,
|
||||
'preload' => true,
|
||||
'src' => true,
|
||||
'width' => true,
|
||||
),
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -407,6 +441,7 @@ if ( ! CUSTOM_TAGS ) {
|
||||
'q' => array(
|
||||
'cite' => true,
|
||||
),
|
||||
's' => array(),
|
||||
'strike' => array(),
|
||||
'strong' => array(),
|
||||
);
|
||||
@@ -522,22 +557,22 @@ function wp_kses_allowed_html( $context = '' ) {
|
||||
case 'post':
|
||||
/** This filter is documented in wp-includes/kses.php */
|
||||
return apply_filters( 'wp_kses_allowed_html', $allowedposttags, $context );
|
||||
break;
|
||||
|
||||
case 'user_description':
|
||||
case 'pre_user_description':
|
||||
$tags = $allowedtags;
|
||||
$tags['a']['rel'] = true;
|
||||
/** This filter is documented in wp-includes/kses.php */
|
||||
return apply_filters( 'wp_kses_allowed_html', $tags, $context );
|
||||
break;
|
||||
|
||||
case 'strip':
|
||||
/** This filter is documented in wp-includes/kses.php */
|
||||
return apply_filters( 'wp_kses_allowed_html', array(), $context );
|
||||
break;
|
||||
|
||||
case 'entities':
|
||||
/** This filter is documented in wp-includes/kses.php */
|
||||
return apply_filters( 'wp_kses_allowed_html', $allowedentitynames, $context);
|
||||
break;
|
||||
|
||||
case 'data':
|
||||
default:
|
||||
/** This filter is documented in wp-includes/kses.php */
|
||||
@@ -627,7 +662,6 @@ function _wp_kses_split_callback( $match ) {
|
||||
*
|
||||
* @access private
|
||||
* @since 1.0.0
|
||||
* @uses wp_kses_attr()
|
||||
*
|
||||
* @param string $string Content to filter
|
||||
* @param array $allowed_html Allowed HTML elements
|
||||
@@ -639,7 +673,7 @@ function wp_kses_split2($string, $allowed_html, $allowed_protocols) {
|
||||
|
||||
if (substr($string, 0, 1) != '<')
|
||||
return '>';
|
||||
# It matched a ">" character
|
||||
// It matched a ">" character
|
||||
|
||||
if ( '<!--' == substr( $string, 0, 4 ) ) {
|
||||
$string = str_replace( array('<!--', '-->'), '', $string );
|
||||
@@ -653,11 +687,11 @@ function wp_kses_split2($string, $allowed_html, $allowed_protocols) {
|
||||
$string = preg_replace('/-$/', '', $string);
|
||||
return "<!--{$string}-->";
|
||||
}
|
||||
# Allow HTML comments
|
||||
// Allow HTML comments
|
||||
|
||||
if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9]+)([^>]*)>?$%', $string, $matches))
|
||||
return '';
|
||||
# It's seriously malformed
|
||||
// It's seriously malformed
|
||||
|
||||
$slash = trim($matches[1]);
|
||||
$elem = $matches[2];
|
||||
@@ -668,11 +702,11 @@ function wp_kses_split2($string, $allowed_html, $allowed_protocols) {
|
||||
|
||||
if ( ! isset($allowed_html[strtolower($elem)]) )
|
||||
return '';
|
||||
# They are using a not allowed HTML element
|
||||
// They are using a not allowed HTML element
|
||||
|
||||
if ($slash != '')
|
||||
return "</$elem>";
|
||||
# No attributes are allowed for closing elements
|
||||
// No attributes are allowed for closing elements
|
||||
|
||||
return wp_kses_attr( $elem, $attrlist, $allowed_html, $allowed_protocols );
|
||||
}
|
||||
@@ -695,7 +729,7 @@ function wp_kses_split2($string, $allowed_html, $allowed_protocols) {
|
||||
* @return string Sanitized HTML element
|
||||
*/
|
||||
function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
|
||||
# Is there a closing XHTML slash at the end of the attributes?
|
||||
// Is there a closing XHTML slash at the end of the attributes?
|
||||
|
||||
if ( ! is_array( $allowed_html ) )
|
||||
$allowed_html = wp_kses_allowed_html( $allowed_html );
|
||||
@@ -704,25 +738,25 @@ function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
|
||||
if (preg_match('%\s*/\s*$%', $attr))
|
||||
$xhtml_slash = ' /';
|
||||
|
||||
# Are any attributes allowed at all for this element?
|
||||
// Are any attributes allowed at all for this element?
|
||||
if ( ! isset($allowed_html[strtolower($element)]) || count($allowed_html[strtolower($element)]) == 0 )
|
||||
return "<$element$xhtml_slash>";
|
||||
|
||||
# Split it
|
||||
// Split it
|
||||
$attrarr = wp_kses_hair($attr, $allowed_protocols);
|
||||
|
||||
# Go through $attrarr, and save the allowed attributes for this element
|
||||
# in $attr2
|
||||
// Go through $attrarr, and save the allowed attributes for this element
|
||||
// in $attr2
|
||||
$attr2 = '';
|
||||
|
||||
$allowed_attr = $allowed_html[strtolower($element)];
|
||||
foreach ($attrarr as $arreach) {
|
||||
if ( ! isset( $allowed_attr[strtolower($arreach['name'])] ) )
|
||||
continue; # the attribute is not allowed
|
||||
continue; // the attribute is not allowed
|
||||
|
||||
$current = $allowed_attr[strtolower($arreach['name'])];
|
||||
if ( $current == '' )
|
||||
continue; # the attribute is not allowed
|
||||
continue; // the attribute is not allowed
|
||||
|
||||
if ( strtolower( $arreach['name'] ) == 'style' ) {
|
||||
$orig_value = $arreach['value'];
|
||||
@@ -737,10 +771,10 @@ function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
|
||||
|
||||
if ( ! is_array($current) ) {
|
||||
$attr2 .= ' '.$arreach['whole'];
|
||||
# there are no checks
|
||||
// there are no checks
|
||||
|
||||
} else {
|
||||
# there are some checks
|
||||
// there are some checks
|
||||
$ok = true;
|
||||
foreach ($current as $currkey => $currval) {
|
||||
if ( ! wp_kses_check_attr_val($arreach['value'], $arreach['vless'], $currkey, $currval) ) {
|
||||
@@ -750,11 +784,11 @@ function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) {
|
||||
}
|
||||
|
||||
if ( $ok )
|
||||
$attr2 .= ' '.$arreach['whole']; # it passed them
|
||||
} # if !is_array($current)
|
||||
} # foreach
|
||||
$attr2 .= ' '.$arreach['whole']; // it passed them
|
||||
} // if !is_array($current)
|
||||
} // foreach
|
||||
|
||||
# Remove any "<" or ">" characters
|
||||
// Remove any "<" or ">" characters
|
||||
$attr2 = preg_replace('/[<>]/', '', $attr2);
|
||||
|
||||
return "<$element$attr2$xhtml_slash>";
|
||||
@@ -783,13 +817,13 @@ function wp_kses_hair($attr, $allowed_protocols) {
|
||||
$attrname = '';
|
||||
$uris = array('xmlns', 'profile', 'href', 'src', 'cite', 'classid', 'codebase', 'data', 'usemap', 'longdesc', 'action');
|
||||
|
||||
# Loop through the whole attribute list
|
||||
// Loop through the whole attribute list
|
||||
|
||||
while (strlen($attr) != 0) {
|
||||
$working = 0; # Was the last operation successful?
|
||||
$working = 0; // Was the last operation successful?
|
||||
|
||||
switch ($mode) {
|
||||
case 0 : # attribute name, href for instance
|
||||
case 0 : // attribute name, href for instance
|
||||
|
||||
if ( preg_match('/^([-a-zA-Z:]+)/', $attr, $match ) ) {
|
||||
$attrname = $match[1];
|
||||
@@ -799,9 +833,9 @@ function wp_kses_hair($attr, $allowed_protocols) {
|
||||
|
||||
break;
|
||||
|
||||
case 1 : # equals sign or valueless ("selected")
|
||||
case 1 : // equals sign or valueless ("selected")
|
||||
|
||||
if (preg_match('/^\s*=\s*/', $attr)) # equals sign
|
||||
if (preg_match('/^\s*=\s*/', $attr)) // equals sign
|
||||
{
|
||||
$working = 1;
|
||||
$mode = 2;
|
||||
@@ -809,7 +843,7 @@ function wp_kses_hair($attr, $allowed_protocols) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (preg_match('/^\s+/', $attr)) # valueless
|
||||
if (preg_match('/^\s+/', $attr)) // valueless
|
||||
{
|
||||
$working = 1;
|
||||
$mode = 0;
|
||||
@@ -821,10 +855,10 @@ function wp_kses_hair($attr, $allowed_protocols) {
|
||||
|
||||
break;
|
||||
|
||||
case 2 : # attribute value, a URL after href= for instance
|
||||
case 2 : // attribute value, a URL after href= for instance
|
||||
|
||||
if (preg_match('%^"([^"]*)"(\s+|/?$)%', $attr, $match))
|
||||
# "value"
|
||||
// "value"
|
||||
{
|
||||
$thisval = $match[1];
|
||||
if ( in_array(strtolower($attrname), $uris) )
|
||||
@@ -840,7 +874,7 @@ function wp_kses_hair($attr, $allowed_protocols) {
|
||||
}
|
||||
|
||||
if (preg_match("%^'([^']*)'(\s+|/?$)%", $attr, $match))
|
||||
# 'value'
|
||||
// 'value'
|
||||
{
|
||||
$thisval = $match[1];
|
||||
if ( in_array(strtolower($attrname), $uris) )
|
||||
@@ -856,7 +890,7 @@ function wp_kses_hair($attr, $allowed_protocols) {
|
||||
}
|
||||
|
||||
if (preg_match("%^([^\s\"']+)(\s+|/?$)%", $attr, $match))
|
||||
# value
|
||||
// value
|
||||
{
|
||||
$thisval = $match[1];
|
||||
if ( in_array(strtolower($attrname), $uris) )
|
||||
@@ -865,25 +899,25 @@ function wp_kses_hair($attr, $allowed_protocols) {
|
||||
if(false === array_key_exists($attrname, $attrarr)) {
|
||||
$attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n');
|
||||
}
|
||||
# We add quotes to conform to W3C's HTML spec.
|
||||
// We add quotes to conform to W3C's HTML spec.
|
||||
$working = 1;
|
||||
$mode = 0;
|
||||
$attr = preg_replace("%^[^\s\"']+(\s+|$)%", '', $attr);
|
||||
}
|
||||
|
||||
break;
|
||||
} # switch
|
||||
} // switch
|
||||
|
||||
if ($working == 0) # not well formed, remove and try again
|
||||
if ($working == 0) // not well formed, remove and try again
|
||||
{
|
||||
$attr = wp_kses_html_error($attr);
|
||||
$mode = 0;
|
||||
}
|
||||
} # while
|
||||
} // while
|
||||
|
||||
if ($mode == 1 && false === array_key_exists($attrname, $attrarr))
|
||||
# special case, for when the attribute list ends with a valueless
|
||||
# attribute like "selected"
|
||||
// special case, for when the attribute list ends with a valueless
|
||||
// attribute like "selected"
|
||||
$attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y');
|
||||
|
||||
return $attrarr;
|
||||
@@ -908,28 +942,28 @@ function wp_kses_check_attr_val($value, $vless, $checkname, $checkvalue) {
|
||||
|
||||
switch (strtolower($checkname)) {
|
||||
case 'maxlen' :
|
||||
# The maxlen check makes sure that the attribute value has a length not
|
||||
# greater than the given value. This can be used to avoid Buffer Overflows
|
||||
# in WWW clients and various Internet servers.
|
||||
// The maxlen check makes sure that the attribute value has a length not
|
||||
// greater than the given value. This can be used to avoid Buffer Overflows
|
||||
// in WWW clients and various Internet servers.
|
||||
|
||||
if (strlen($value) > $checkvalue)
|
||||
$ok = false;
|
||||
break;
|
||||
|
||||
case 'minlen' :
|
||||
# The minlen check makes sure that the attribute value has a length not
|
||||
# smaller than the given value.
|
||||
// The minlen check makes sure that the attribute value has a length not
|
||||
// smaller than the given value.
|
||||
|
||||
if (strlen($value) < $checkvalue)
|
||||
$ok = false;
|
||||
break;
|
||||
|
||||
case 'maxval' :
|
||||
# The maxval check does two things: it checks that the attribute value is
|
||||
# an integer from 0 and up, without an excessive amount of zeroes or
|
||||
# whitespace (to avoid Buffer Overflows). It also checks that the attribute
|
||||
# value is not greater than the given value.
|
||||
# This check can be used to avoid Denial of Service attacks.
|
||||
// The maxval check does two things: it checks that the attribute value is
|
||||
// an integer from 0 and up, without an excessive amount of zeroes or
|
||||
// whitespace (to avoid Buffer Overflows). It also checks that the attribute
|
||||
// value is not greater than the given value.
|
||||
// This check can be used to avoid Denial of Service attacks.
|
||||
|
||||
if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value))
|
||||
$ok = false;
|
||||
@@ -938,8 +972,8 @@ function wp_kses_check_attr_val($value, $vless, $checkname, $checkvalue) {
|
||||
break;
|
||||
|
||||
case 'minval' :
|
||||
# The minval check makes sure that the attribute value is a positive integer,
|
||||
# and that it is not smaller than the given value.
|
||||
// The minval check makes sure that the attribute value is a positive integer,
|
||||
// and that it is not smaller than the given value.
|
||||
|
||||
if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value))
|
||||
$ok = false;
|
||||
@@ -948,15 +982,15 @@ function wp_kses_check_attr_val($value, $vless, $checkname, $checkvalue) {
|
||||
break;
|
||||
|
||||
case 'valueless' :
|
||||
# The valueless check makes sure if the attribute has a value
|
||||
# (like <a href="blah">) or not (<option selected>). If the given value
|
||||
# is a "y" or a "Y", the attribute must not have a value.
|
||||
# If the given value is an "n" or an "N", the attribute must have one.
|
||||
// The valueless check makes sure if the attribute has a value
|
||||
// (like <a href="blah">) or not (<option selected>). If the given value
|
||||
// is a "y" or a "Y", the attribute must not have a value.
|
||||
// If the given value is an "n" or an "N", the attribute must have one.
|
||||
|
||||
if (strtolower($checkvalue) != $vless)
|
||||
$ok = false;
|
||||
break;
|
||||
} # switch
|
||||
} // switch
|
||||
|
||||
return $ok;
|
||||
}
|
||||
@@ -1041,8 +1075,8 @@ function wp_kses_array_lc($inarray) {
|
||||
foreach ( (array) $inval as $inkey2 => $inval2) {
|
||||
$outkey2 = strtolower($inkey2);
|
||||
$outarray[$outkey][$outkey2] = $inval2;
|
||||
} # foreach $inval
|
||||
} # foreach $inarray
|
||||
} // foreach $inval
|
||||
} // foreach $inarray
|
||||
|
||||
return $outarray;
|
||||
}
|
||||
@@ -1139,8 +1173,8 @@ function wp_kses_bad_protocol_once2( $string, $allowed_protocols ) {
|
||||
/**
|
||||
* Converts and fixes HTML entities.
|
||||
*
|
||||
* This function normalizes HTML entities. It will convert "AT&T" to the correct
|
||||
* "AT&T", ":" to ":", "&#XYZZY;" to "&#XYZZY;" and so on.
|
||||
* This function normalizes HTML entities. It will convert `AT&T` to the correct
|
||||
* `AT&T`, `:` to `:`, `&#XYZZY;` to `&#XYZZY;` and so on.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
@@ -1148,11 +1182,11 @@ function wp_kses_bad_protocol_once2( $string, $allowed_protocols ) {
|
||||
* @return string Content with normalized entities
|
||||
*/
|
||||
function wp_kses_normalize_entities($string) {
|
||||
# Disarm all entities by converting & to &
|
||||
// Disarm all entities by converting & to &
|
||||
|
||||
$string = str_replace('&', '&', $string);
|
||||
|
||||
# Change back the allowed entities in our entity whitelist
|
||||
// Change back the allowed entities in our entity whitelist
|
||||
|
||||
$string = preg_replace_callback('/&([A-Za-z]{2,8}[0-9]{0,2});/', 'wp_kses_named_entities', $string);
|
||||
$string = preg_replace_callback('/&#(0*[0-9]{1,7});/', 'wp_kses_normalize_entities2', $string);
|
||||
@@ -1185,8 +1219,8 @@ function wp_kses_named_entities($matches) {
|
||||
/**
|
||||
* Callback for wp_kses_normalize_entities() regular expression.
|
||||
*
|
||||
* This function helps wp_kses_normalize_entities() to only accept 16-bit values
|
||||
* and nothing more for &#number; entities.
|
||||
* This function helps {@see wp_kses_normalize_entities()} to only accept 16-bit
|
||||
* values and nothing more for `&#number;` entities.
|
||||
*
|
||||
* @access private
|
||||
* @since 1.0.0
|
||||
@@ -1244,9 +1278,9 @@ function valid_unicode($i) {
|
||||
/**
|
||||
* Convert all entities to their character counterparts.
|
||||
*
|
||||
* This function decodes numeric HTML entities (A and A). It doesn't do
|
||||
* anything with other entities like ä, but we don't need them in the URL
|
||||
* protocol whitelisting system anyway.
|
||||
* This function decodes numeric HTML entities (`A` and `A`).
|
||||
* It doesn't do anything with other entities like ä, but we don't
|
||||
* need them in the URL protocol whitelisting system anyway.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*
|
||||
@@ -1284,7 +1318,6 @@ function _wp_kses_decode_entities_chr_hexdec( $match ) {
|
||||
* Sanitize content with allowed HTML Kses rules.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @uses $allowedtags
|
||||
*
|
||||
* @param string $data Content to filter, expected to be escaped with slashes
|
||||
* @return string Filtered content
|
||||
@@ -1297,7 +1330,6 @@ function wp_filter_kses( $data ) {
|
||||
* Sanitize content with allowed HTML Kses rules.
|
||||
*
|
||||
* @since 2.9.0
|
||||
* @uses $allowedtags
|
||||
*
|
||||
* @param string $data Content to filter, expected to not be escaped
|
||||
* @return string Filtered content
|
||||
@@ -1358,7 +1390,6 @@ function wp_filter_nohtml_kses( $data ) {
|
||||
* 'excerpt_save_pre', and 'content_filtered_save_pre' hooks.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @uses add_filter() See description for what functions are added to what hooks.
|
||||
*/
|
||||
function kses_init_filters() {
|
||||
// Normal filtering
|
||||
@@ -1413,9 +1444,6 @@ function kses_remove_filters() {
|
||||
* to have Kses filter the content. If the user does not have unfiltered_html
|
||||
* capability, then Kses filters are added.
|
||||
*
|
||||
* @uses kses_remove_filters() Removes the Kses filters
|
||||
* @uses kses_init_filters() Adds the Kses filters back if the user
|
||||
* does not have unfiltered HTML capability.
|
||||
* @since 2.0.0
|
||||
*/
|
||||
function kses_init() {
|
||||
@@ -1425,9 +1453,6 @@ function kses_init() {
|
||||
kses_init_filters();
|
||||
}
|
||||
|
||||
add_action('init', 'kses_init');
|
||||
add_action('set_current_user', 'kses_init');
|
||||
|
||||
/**
|
||||
* Inline CSS filter
|
||||
*
|
||||
|
||||
Reference in new issue
Block a user