private function process_style($string) { // Filter properties $string = safecss_filter_attr(esc_html($string)); if (!$string) { return array(); } // Normalize order $styles = array_map('trim', explode(';', $string)); sort($styles); $processed_styles = array(); // Normalize whitespace and filter rules foreach ($styles as $index => $rule) { $arr2 = array_map('trim', explode(':', $rule, 2)); if (2 !== count($arr2)) { continue; } list($property, $value) = $this->filter_style($arr2[0], $arr2[1]); if (empty($property) || empty($value)) { continue; } $processed_styles[$index] = $property . ':' . $value; } return $processed_styles; }
/** * Determine whether an attribute is allowed. * * @since 4.2.3 * * @param string $name The attribute name. Returns empty string when not allowed. * @param string $value The attribute value. Returns a filtered value. * @param string $whole The name=value input. Returns filtered input. * @param string $vless 'y' when attribute like "enabled", otherwise 'n'. * @param string $element The name of the element to which this attribute belongs. * @param array $allowed_html The full list of allowed elements and attributes. * @return bool Is the attribute allowed? */ function wp_kses_attr_check(&$name, &$value, &$whole, $vless, $element, $allowed_html) { $allowed_attr = $allowed_html[strtolower($element)]; $name_low = strtolower($name); if (!isset($allowed_attr[$name_low]) || '' == $allowed_attr[$name_low]) { $name = $value = $whole = ''; return false; } if ('style' == $name_low) { $new_value = safecss_filter_attr($value); if (empty($new_value)) { $name = $value = $whole = ''; return false; } $whole = str_replace($value, $new_value, $whole); $value = $new_value; } if (is_array($allowed_attr[$name_low])) { // there are some checks foreach ($allowed_attr[$name_low] as $currkey => $currval) { if (!wp_kses_check_attr_val($value, $vless, $currkey, $currval)) { $name = $value = $whole = ''; return false; } } } return true; }
/** * Removes all attributes, if none are allowed for this element. * * If some are allowed it calls wp_kses_hair() to split them further, and then * it builds up new HTML code from the data that kses_hair() returns. It also * removes "<" and ">" characters, if there are any left. One more thing it does * is to check if the tag has a closing XHTML slash, and if it does, it puts one * in the returned code as well. * * @since 1.0.0 * * @param string $element HTML element/tag * @param string $attr HTML attributes from HTML element to closing HTML element tag * @param array $allowed_html Allowed HTML elements * @param array $allowed_protocols Allowed protocols to keep * @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? $xhtml_slash = ''; if (preg_match('%\\s*/\\s*$%', $attr)) { $xhtml_slash = ' /'; } # 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 $attrarr = wp_kses_hair($attr, $allowed_protocols); # 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 $current = $allowed_attr[strtolower($arreach['name'])]; if ($current == '') { continue; } # the attribute is not allowed if (!is_array($current)) { $attr2 .= ' ' . $arreach['whole']; # there are no checks } else { # there are some checks $ok = true; foreach ($current as $currkey => $currval) { if (!wp_kses_check_attr_val($arreach['value'], $arreach['vless'], $currkey, $currval)) { $ok = false; break; } } if (strtolower($arreach['name']) == 'style') { $orig_value = $arreach['value']; $value = safecss_filter_attr($orig_value); if (empty($value)) { continue; } $arreach['value'] = $value; $arreach['whole'] = str_replace($orig_value, $value, $arreach['whole']); } if ($ok) { $attr2 .= ' ' . $arreach['whole']; } # it passed them } # if !is_array($current) } # foreach # Remove any "<" or ">" characters $attr2 = preg_replace('/[<>]/', '', $attr2); return "<{$element}{$attr2}{$xhtml_slash}>"; }
function sprite($sprite = '', $title = '', $args = []) { // Setup default arguments $args = wp_parse_args($args, ['desc' => '', 'class' => [], 'style' => '', 'prefix' => 'sprite', 'url' => '']); // Generate a unique ID and initialize ARIA $id = uniqid(); $desc = $style = $aria = ''; // Check for title and description, wrap them both in the appropriate markup, and set ARIA attributes if ($title) { $title = sprintf('<title id="title-%1$s">%2$s</title>', $id, esc_html(strip_tags($title))); $aria .= 'title-' . $id; } if ($args['desc']) { $desc = sprintf('<desc id="desc-%1$s">%2$s</desc>', $id, esc_html(strip_tags($args['desc']))); $aria .= ' desc-' . $id; } if ($args['style']) { $style = sprintf(' style="%s"', safecss_filter_attr($args['style'])); } // Sanitize inline styles: https://wordpress.stackexchange.com/questions/173526/why-is-wp-kses-not-keeping-style-attributes-as-expected if ($aria) { $aria = sprintf(' aria-labelledby="%s"', trim($aria)); } // Put it all together return apply_filters('ubik_svg_sprite', sprintf('<svg%s%s%srole="img">%s%s<use xlink:href="%s#%s"></use></svg>', sprite_class($sprite, $args['class'], $args['prefix']), $style, $aria, $title, $desc, $args['url'], esc_attr($sprite))); }
function raindrops_default_colors_clone($name = 'dark', $option_name = false, $default = false) { $raindrops_images_path = get_stylesheet_directory_uri() . '/images/'; // Sidebar Image $navigation_title_img = raindrops_warehouse_clone('raindrops_heading_image'); $navigation_title_img_uri = esc_url($raindrops_images_path . $navigation_title_img); switch ($name) { case "w3standard": $custom_dark_bg = apply_filters('raindrops_w3_default_bg_dark', raindrops_colors_clone('3', 'background')); $custom_light_bg = apply_filters('raindrops_w3_default_bg_light', raindrops_colors_clone('1', 'background')); $custom_color = apply_filters('raindrops_w3_default_color', raindrops_colors_clone('1', 'color')); $custom_link_color = apply_filters('raindrops_w3_default_link_color', raindrops_colors_clone('1', 'color')); $custom_footer_link_color = apply_filters('raindrops_w3_default_footer_link_color', raindrops_colors_clone('1', 'color')); $raindrops_footer_color_default = apply_filters('raindrops_w3_default_footer_color', '#000'); $raindrops_header_color_default = apply_filters('raindrops_w3_default_header_color', '#000'); break; case "dark": /** * dark */ $custom_dark_bg = apply_filters('raindrops_dark_default_bg_dark', raindrops_colors_clone('-1', 'background')); $custom_light_bg = apply_filters('raindrops_dark_default_bg_light', raindrops_colors_clone('-4', 'background')); $custom_color = apply_filters('raindrops_dark_default_color', raindrops_colors_clone('-3', 'color')); $custom_link_color = apply_filters('raindrops_dark_default_link_color', raindrops_colors_clone('-3', 'color')); $custom_footer_link_color = apply_filters('raindrops_dark_default_footer_link_color', raindrops_colors_clone('-3', 'color')); $raindrops_footer_color_default = apply_filters('raindrops_dark_default_footer_color', '#fff'); $raindrops_header_color_default = apply_filters('raindrops_dark_default_header_color', '#fff'); break; case "light": /** * light */ $custom_dark_bg = apply_filters('raindrops_light_default_bg_dark', raindrops_colors_clone('5', 'background')); $custom_light_bg = apply_filters('raindrops_light_default_bg_light', raindrops_colors_clone('3', 'background')); $custom_color = apply_filters('raindrops_light_default_color', raindrops_colors_clone('3', 'color')); $custom_link_color = apply_filters('raindrops_light_default_link_color', raindrops_colors_clone('3', 'color')); $custom_footer_link_color = apply_filters('raindrops_light_default_footer_link_color', raindrops_colors_clone('3', 'color')); $raindrops_footer_color_default = apply_filters('raindrops_light_default_footer_color', '#333'); $raindrops_header_color_default = apply_filters('raindrops_light_default_header_color', '#333'); break; default: $custom_dark_bg = apply_filters('raindrops_color_type_default_bg_dark', raindrops_colors_clone('3', 'background')); $custom_light_bg = apply_filters('raindrops_color_type_default_bg_light', raindrops_colors_clone('1', 'background')); $custom_color = apply_filters('raindrops_color_type_default_color', raindrops_colors_clone('3', 'color')); $custom_link_color = apply_filters('raindrops_color_type_default_link_color', raindrops_colors_clone('3', 'color')); $custom_footer_link_color = apply_filters('raindrops_color_type_default_footer_link_color', raindrops_colors_clone('1', 'color')); $raindrops_footer_color_default = apply_filters('raindrops_color_type_default_footer_color', '#000'); $raindrops_header_color_default = apply_filters('raindrops_color_type_default_header_color', '#000'); break; } if (!empty($option_name)) { if ('raindrops_background_color' == $option_name || 'custom_dark_bg' == $option_name) { return $custom_dark_bg; } if ('custom_light_bg' == $option_name) { return $custom_light_bg; } if ('raindrops_default_fonts_color' == $option_name || 'custom_color' == $option_name || 'default-text-color') { return $custom_color; } if ('raindrops_header_color' == $option_name) { $raindrops_header_color = raindrops_warehouse_clone('raindrops_default_fonts_color'); if (false == $default && isset($raindrops_header_color) && !empty($raindrops_header_color)) { return $raindrops_header_color; } else { return $raindrops_header_color_default; } } if ('raindrops_footer_color' == $option_name) { $raindrops_footer_color = raindrops_warehouse_clone('raindrops_footer_color'); if (false == $default && isset($raindrops_footer_color) && !empty($raindrops_footer_color)) { return $raindrops_footer_color; } else { return $raindrops_footer_color_default; } } if ('raindrops_footer_link_color' == $option_name) { return $custom_footer_link_color; } if ('raindrops_hyperlink_color' == $option_name) { return $custom_link_color; } if ('raindrops_header_image_filter_color' == $option_name) { return $custom_light_bg; } if ('h2_w3standard_background' == $option_name) { $style = "background:" . raindrops_colors_clone(5, 'background') . ' '; $style .= "url( {$navigation_title_img_uri} );"; $style .= "color:" . raindrops_colors_clone(4, 'color') . ';'; return safecss_filter_attr($style); } if ('h2_dark_background' == $option_name) { $style = "background:" . raindrops_colors_clone(-3, 'background') . ' '; $style .= "url( {$navigation_title_img_uri} );"; $style .= "color:" . raindrops_colors_clone(-3, 'color') . ';'; return safecss_filter_attr($style); } if ('h2_light_background' == $option_name) { $style = "background:" . raindrops_colors_clone(4, 'background') . ' '; $style .= "url( {$navigation_title_img_uri} );"; $style .= "color:" . raindrops_colors_clone(4, 'color') . ';'; return safecss_filter_attr($style); } } return false; }