s[ $currency_code ] ) ) {
$the_text = function_exists('alg_format_currency_switcher') ? alg_format_currency_switcher( $currencies[ $currency_code ], $currency_code, false ) : '';
$the_link = '
' . $the_text . '';
if ( $currency_code != $selected_currency ) {
$currency_list[] = $the_link;
} else {
$first_link = $the_link;
$selected_currency_name = $the_text;
}
}
}
if ( '' != $first_link ) {
$currency_list = array_merge( array( $first_link ), $currency_list );
}
if ( ! empty( $currency_list ) && ! empty( $selected_currency_name ) ) {
$currency_dd = sprintf(
'%s' .
'',
$selected_currency_name,
implode( "\n\t", $currency_list )
);
}
}
return $currency_dd;
}
endif;
if ( ! function_exists( 'martfury_product_video' ) ) :
function martfury_product_video() {
global $product;
$video_image = get_post_meta( $product->get_id(), 'video_thumbnail', true );
$video_url = get_post_meta( $product->get_id(), 'video_url', true );
$video_first = get_post_meta( $product->get_id(), 'video_position', true );
$video_width = 1024;
$video_height = 768;
$video_html = '';
if ( $video_image ) {
$video_thumb = wp_get_attachment_image_src( $video_image, apply_filters( 'single_product_small_thumbnail_size', 'shop_thumbnail' ) );
$video_thumb = $video_thumb[0];
// If URL: show oEmbed HTML
if ( filter_var( $video_url, FILTER_VALIDATE_URL ) ) {
$atts = array(
'width' => $video_width,
'height' => $video_height
);
if ( $oembed = @wp_oembed_get( $video_url, $atts ) ) {
$video_html = $oembed;
} else {
$atts = array(
'src' => $video_url,
'width' => $video_width,
'height' => $video_height
);
$video_html = wp_video_shortcode( $atts );
}
}
if ( $video_html ) {
$vid_html = '' . $video_html . '
';
if ( $video_first == '2' ) {
$vid_html .= '';
}
$video_wrapper = sprintf( '%s
', $vid_html );
$video_html = '' . $video_wrapper . '
';
}
}
return $video_html;
}
endif;
/**
* Wrapper function to deal with backwards compatibility.
*/
if ( ! function_exists( 'martfury_body_open' ) ) {
function martfury_body_open() {
if ( function_exists( 'wp_body_open' ) ) {
wp_body_open();
} else {
do_action( 'wp_body_open' );
}
}
}
if ( ! function_exists( 'martfury_cartflows_template' ) ) {
function martfury_cartflows_template() {
if ( ! class_exists( 'Cartflows_Loader' ) || ! function_exists('_get_wcf_step_id')) {
return false;
}
$page_template = get_post_meta( _get_wcf_step_id(), '_wp_page_template', true );
if( !$page_template || $page_template == 'default' ) {
return false;
}
return true;
}
}
/**
* Sanitize SVG code.
*
* @since 1.0.0
*
* @param string $svg SVG code.
*
* @return string
*/
function martfury_sanitize_svg( $svg ) {
$allowed = array();
$whitelist = array(
'a' => array(
'class',
'clip-path',
'clip-rule',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'id',
'mask',
'opacity',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'transform',
'href',
'xlink:href',
'xlink:title',
),
'circle' => array(
'class',
'clip-path',
'clip-rule',
'cx',
'cy',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'id',
'mask',
'opacity',
'r',
'requiredFeatures',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'transform',
),
'clipPath' => array( 'class', 'clipPathUnits', 'id' ),
'defs' => array(),
'style' => array( 'type' ),
'desc' => array(),
'ellipse' => array(
'class',
'clip-path',
'clip-rule',
'cx',
'cy',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'id',
'mask',
'opacity',
'requiredFeatures',
'rx',
'ry',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'transform',
),
'feGaussianBlur' => array(
'class',
'color-interpolation-filters',
'id',
'requiredFeatures',
'stdDeviation'
),
'filter' => array(
'class',
'color-interpolation-filters',
'filterRes',
'filterUnits',
'height',
'id',
'primitiveUnits',
'requiredFeatures',
'width',
'x',
'xlink:href',
'y',
),
'foreignObject' => array(
'class',
'font-size',
'height',
'id',
'opacity',
'requiredFeatures',
'style',
'transform',
'width',
'x',
'y',
),
'g' => array(
'class',
'clip-path',
'clip-rule',
'id',
'display',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'mask',
'opacity',
'requiredFeatures',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'transform',
'font-family',
'font-size',
'font-style',
'font-weight',
'text-anchor',
),
'image' => array(
'class',
'clip-path',
'clip-rule',
'filter',
'height',
'id',
'mask',
'opacity',
'requiredFeatures',
'style',
'systemLanguage',
'transform',
'width',
'x',
'xlink:href',
'xlink:title',
'y',
),
'line' => array(
'class',
'clip-path',
'clip-rule',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'id',
'marker-end',
'marker-mid',
'marker-start',
'mask',
'opacity',
'requiredFeatures',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'transform',
'x1',
'x2',
'y1',
'y2',
),
'linearGradient' => array(
'class',
'id',
'gradientTransform',
'gradientUnits',
'requiredFeatures',
'spreadMethod',
'systemLanguage',
'x1',
'x2',
'xlink:href',
'y1',
'y2',
),
'marker' => array(
'id',
'class',
'markerHeight',
'markerUnits',
'markerWidth',
'orient',
'preserveAspectRatio',
'refX',
'refY',
'systemLanguage',
'viewBox',
),
'mask' => array(
'class',
'height',
'id',
'maskContentUnits',
'maskUnits',
'width',
'x',
'y'
),
'metadata' => array( 'class', 'id' ),
'path' => array(
'class',
'clip-path',
'clip-rule',
'd',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'id',
'marker-end',
'marker-mid',
'marker-start',
'mask',
'opacity',
'requiredFeatures',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'transform',
),
'pattern' => array(
'class',
'height',
'id',
'patternContentUnits',
'patternTransform',
'patternUnits',
'requiredFeatures',
'style',
'systemLanguage',
'viewBox',
'width',
'x',
'xlink:href',
'y',
),
'polygon' => array(
'class',
'clip-path',
'clip-rule',
'id',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'id',
'class',
'marker-end',
'marker-mid',
'marker-start',
'mask',
'opacity',
'points',
'requiredFeatures',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'transform',
),
'polyline' => array(
'class',
'clip-path',
'clip-rule',
'id',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'marker-end',
'marker-mid',
'marker-start',
'mask',
'opacity',
'points',
'requiredFeatures',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'transform',
),
'radialGradient' => array(
'class',
'cx',
'cy',
'fx',
'fy',
'gradientTransform',
'gradientUnits',
'id',
'r',
'requiredFeatures',
'spreadMethod',
'systemLanguage',
'xlink:href',
),
'rect' => array(
'class',
'clip-path',
'clip-rule',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'height',
'id',
'mask',
'opacity',
'requiredFeatures',
'rx',
'ry',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'transform',
'width',
'x',
'y',
),
'stop' => array(
'class',
'id',
'offset',
'requiredFeatures',
'stop-color',
'stop-opacity',
'style',
'systemLanguage',
),
'svg' => array(
'class',
'clip-path',
'clip-rule',
'filter',
'id',
'mask',
'preserveaspectRatio',
'requiredfeatures',
'style',
'systemlanguage',
'viewbox',
'fill',
'fill-opacity',
'fill-rule',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'width',
'height',
'xmlns',
'xmlns:se',
'xmlns:xlink',
'x',
'y',
'enable-background',
),
'switch' => array( 'class', 'id', 'requiredFeatures', 'systemLanguage' ),
'symbol' => array(
'class',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'font-family',
'font-size',
'font-style',
'font-weight',
'id',
'opacity',
'preserveAspectRatio',
'requiredFeatures',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'transform',
'viewBox',
),
'text' => array(
'class',
'clip-path',
'clip-rule',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'font-family',
'font-size',
'font-style',
'font-weight',
'id',
'mask',
'opacity',
'requiredFeatures',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'text-anchor',
'transform',
'x',
'xml:space',
'y',
),
'textPath' => array(
'class',
'id',
'method',
'requiredFeatures',
'spacing',
'startOffset',
'style',
'systemLanguage',
'transform',
'xlink:href',
),
'title' => array(),
'tspan' => array(
'class',
'clip-path',
'clip-rule',
'dx',
'dy',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'font-family',
'font-size',
'font-style',
'font-weight',
'id',
'mask',
'opacity',
'requiredFeatures',
'rotate',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'systemLanguage',
'text-anchor',
'textLength',
'transform',
'x',
'xml:space',
'y',
),
'use' => array(
'class',
'clip-path',
'clip-rule',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'height',
'id',
'mask',
'stroke',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke-width',
'style',
'transform',
'width',
'x',
'xlink:href',
'y',
),
);
foreach ( $whitelist as $tag => $attributes ) {
$allowed[ $tag ] = array();
foreach ( $attributes as $attribute ) {
$allowed[ $tag ][ $attribute ] = true;
}
}
return wp_kses( $svg, $allowed );
}