/home/millions/www/wp-content/themes/bizcor/inc/customizer/sanitize.php
<?php
/**
* Sanitize Checkbox
*
* @param $input
* @return void
*/
if ( !function_exists( 'bizcor_sanitize_checkbox' ) ) {
function bizcor_sanitize_checkbox( $input ) {
if ( $input == 1 ) {
return 1;
} else {
return 0;
}
}
}
/**
* Sanitize CSS Code
*
* @param $string
* @return string
*/
function bizcor_sanitize_css($string) {
$string = preg_replace( '@<(script|style)[^>]*?>.*?</\\1>@si', '', $string );
$string = strip_tags($string);
return trim( $string );
}
/**
* Sanitize Alpha Color Code
*
* @param $color
* @return string
*/
function bizcor_sanitize_color_alpha( $color ){
$color = str_replace( '#', '', $color );
if ( '' === $color ){
return '';
}
// 3 or 6 hex digits, or the empty string.
if ( preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', '#' . $color ) ) {
// convert to rgb
$colour = $color;
if ( strlen( $colour ) == 6 ) {
list( $r, $g, $b ) = array( $colour[0] . $colour[1], $colour[2] . $colour[3], $colour[4] . $colour[5] );
} elseif ( strlen( $colour ) == 3 ) {
list( $r, $g, $b ) = array( $colour[0] . $colour[0], $colour[1] . $colour[1], $colour[2] . $colour[2] );
} else {
return false;
}
$r = hexdec( $r );
$g = hexdec( $g );
$b = hexdec( $b );
return 'rgba('.join( ',', array( 'r' => $r, 'g' => $g, 'b' => $b, 'a' => 1 ) ).')';
}
return strpos( trim( $color ), 'rgb' ) !== false ? $color : false;
}
/**
* Sanitize File Upload URL
*
* @param $file_url
* @return string
*/
function bizcor_sanitize_file_url( $file_url ) {
$output = '';
$filetype = wp_check_filetype( $file_url );
if ( $filetype["ext"] ) {
$output = esc_url( $file_url );
}
return $output;
}
/**
* Conditional to show more hero settings
*
* @param $control
* @return bool
*/
function bizcor_hero_fullscreen_callback ( $control ) {
if ( $control->manager->get_setting('bizcor_hero_fullscreen')->value() == '' ) {
return true;
} else {
return false;
}
}
/**
* Sanitize Select Dropdown Settings
*
* @param $input, $setting
* @return string
*/
function bizcor_sanitize_select( $input, $setting ){
//input must be a slug: lowercase alphanumeric characters, dashes and underscores are allowed only
$input = sanitize_key($input);
//get the list of possible select options
$choices = $setting->manager->get_control( $setting->id )->choices;
//return input if valid or return default option
return ( array_key_exists( $input, $choices ) ? $input : $setting->default );
}
/**
* Sanitize Number Settings
*
* @param $input
* @return integer
*/
function bizcor_sanitize_number( $input ) {
return balanceTags( $input );
}
/**
* Sanitize Hex Color Code
*
* @param $color
* @return string
*/
function bizcor_sanitize_hex_color( $color ) {
if ( $color === '' ) {
return '';
}
if ( preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) {
return $color;
}
return null;
}
/**
* Sanitize Text Setting
*
* @param $string
* @return string
*/
function bizcor_sanitize_text( $string ) {
return wp_kses_post( balanceTags( $string ) );
}
/**
* Sanitize HTML Setting
*
* @param $string
* @return string
*/
function bizcor_sanitize_html_input( $string ) {
return wp_kses_allowed_html( $string );
}
/**
* Conditional settings for the page templates
*
* @param $string
* @return bool
*/
function bizcor_showon_frontpage() {
return is_page_template( 'template-homepage.php' );
return true;
}
/**
* Conditional settings for the upgrade to pro features
*
* @param $validity, $value
* @return string
*/
function bizcor_gallery_source_validate( $validity, $value ){
if ( ! class_exists( 'Bizcor_Pro' ) ) {
if ( $value != 'page' ) {
$validity->add('notice', sprintf( esc_html__('Upgrade to %1s to unlock this feature.', 'bizcor' ), '<a target="_blank" href="https://www.britetechs.com/themes/bizcor-pro/?utm_source=theme_customizer&utm_medium=text_link&utm_campaign=bizcor_customizer#gallery">Bizcor Pro</a>') );
}
}
return $validity;
}
/**
* Sanitize repeater data
*
* @param $input
* @param $setting object $wp_customize
* @return bool|mixed|string|void
*/
function bizcor_sanitize_repeatable_data_field( $input , $setting ){
$control = $setting->manager->get_control( $setting->id );
$fields = $control->fields;
if ( is_string( $input ) ) {
$input = json_decode( wp_unslash( $input ) , true );
}
$data = wp_parse_args( $input, array() );
if ( ! is_array( $data ) ) {
return false;
}
if ( ! isset( $data['_items'] ) ) {
return false;
}
$data = $data['_items'];
foreach( $data as $i => $item_data ){
foreach( $item_data as $id => $value ){
if ( isset( $fields[ $id ] ) ){
switch( strtolower( $fields[ $id ]['type'] ) ) {
case 'text':
$data[ $i ][ $id ] = sanitize_text_field( $value );
break;
case 'textarea':
$data[ $i ][ $id ] = wp_kses_post( $value );
break;
case 'editor':
$data[ $i ][ $id ] = wp_kses_post( $value );
break;
case 'color':
$data[ $i ][ $id ] = sanitize_hex_color_no_hash( $value );
break;
case 'coloralpha':
$data[ $i ][ $id ] = bizcor_sanitize_color_alpha( $value );
break;
case 'checkbox':
$data[ $i ][ $id ] = bizcor_sanitize_checkbox( $value );
break;
case 'select':
$data[ $i ][ $id ] = '';
if ( is_array( $fields[ $id ]['options'] ) && ! empty( $fields[ $id ]['options'] ) ){
// if is multiple choices
if ( is_array( $value ) ) {
foreach ( $value as $k => $v ) {
if ( isset( $fields[ $id ]['options'][ $v ] ) ) {
$value [ $k ] = $v;
}
}
$data[ $i ][ $id ] = $value;
}else { // is single choice
if ( isset( $fields[ $id ]['options'][ $value ] ) ) {
$data[ $i ][ $id ] = $value;
}
}
}
break;
case 'radio':
$data[ $i ][ $id ] = sanitize_text_field( $value );
break;
case 'media':
$value = wp_parse_args( $value,
array(
'url' => '',
'id'=> false
)
);
$value['id'] = absint( $value['id'] );
$data[ $i ][ $id ]['url'] = sanitize_text_field( $value['url'] );
if ( $url = wp_get_attachment_url( $value['id'] ) ) {
$data[ $i ][ $id ]['id'] = $value['id'];
$data[ $i ][ $id ]['url'] = $url;
} else {
$data[ $i ][ $id ]['id'] = '';
}
break;
default:
$data[ $i ][ $id ] = wp_kses_post( $value );
}
}else {
$data[ $i ][ $id ] = wp_kses_post( $value );
}
if ( count( $data[ $i ] ) != count( $fields ) ) {
foreach ( $fields as $k => $f ){
if ( ! isset( $data[ $i ][ $k ] ) ) {
$data[ $i ][ $k ] = '';
}
}
}
}
}
return $data;
}
function bizcor_upgrade_pro_msg(){
return wp_kses_post( __('Upgrade to <a target="_blank" href="https://www.britetechs.com/free-bizcor-wordpress-theme/">Bizcor Pro</a> to be able to add more items and unlock other premium features!','bizcor'));
}
function bizcor_sanitize_array( $input ) {
$output = $input;
if ( ! is_array( $input ) ) {
$output = explode( ',', $input );
}
if ( ! empty( $output ) ) {
return array_map( 'sanitize_text_field', $output );
}
return array();
}