From 69c17f9c1942fd0d6a5ea941636e87723b8a6fe2 Mon Sep 17 00:00:00 2001 From: Zach van Rijn Date: Wed, 21 Jul 2021 16:19:29 -0500 Subject: dos2unix on all .php files, begin paring down admin page and site branding. --- .../class-astra-customizer-sanitizes.php | 1364 ++++++++++---------- 1 file changed, 682 insertions(+), 682 deletions(-) (limited to 'inc/customizer/class-astra-customizer-sanitizes.php') diff --git a/inc/customizer/class-astra-customizer-sanitizes.php b/inc/customizer/class-astra-customizer-sanitizes.php index a95787b..53e884d 100644 --- a/inc/customizer/class-astra-customizer-sanitizes.php +++ b/inc/customizer/class-astra-customizer-sanitizes.php @@ -1,682 +1,682 @@ -manager->get_control( $setting->id )->input_attrs ) ) { - $input_attrs = $setting->manager->get_control( $setting->id )->input_attrs; - } - - if ( isset( $input_attrs ) ) { - - $input_attrs['min'] = isset( $input_attrs['min'] ) ? $input_attrs['min'] : 0; - $input_attrs['step'] = isset( $input_attrs['step'] ) ? $input_attrs['step'] : 1; - - if ( isset( $input_attrs['max'] ) && $val > $input_attrs['max'] ) { - $val = $input_attrs['max']; - } elseif ( $val < $input_attrs['min'] ) { - $val = $input_attrs['min']; - } - - $dv = (float) $val / $input_attrs['step']; - - $dv = round( $dv ); - - $val = $dv * $input_attrs['step']; - - $val = number_format( (float) $val, 2, '.', '' ); - if ( $val == (int) $val ) { - $val = (int) $val; - } - } - - return is_numeric( $val ) ? $val : 0; - } - - /** - * Sanitize Integer - * - * @param number $val Customizer setting input number. - * @return number Return number. - */ - public static function sanitize_number_n_blank( $val ) { - return is_numeric( $val ) ? $val : ''; - } - - /** - * Sanitize Spacing - * - * @param number $val Customizer setting input number. - * @return number Return number. - * @since 1.0.6 - */ - public static function sanitize_spacing( $val ) { - - foreach ( $val as $key => $value ) { - $val[ $key ] = ( is_numeric( $val[ $key ] ) && $val[ $key ] >= 0 ) ? $val[ $key ] : ''; - } - - return $val; - } - - /** - * Sanitize link - * - * @param array $val Customizer setting link. - * @return array Return array. - * @since 2.3.0 - */ - public static function sanitize_link( $val ) { - - $link = array(); - - $link['url'] = esc_url_raw( $val['url'] ); - $link['new_tab'] = esc_attr( $val['new_tab'] ); - $link['link_rel'] = esc_attr( $val['link_rel'] ); - - return $link; - } - - /** - * Sanitize responsive Spacing - * - * @param number $val Customizer setting input number. - * @return number Return number. - * @since 1.2.1 - */ - public static function sanitize_responsive_spacing( $val ) { - - $spacing = array( - 'desktop' => array( - 'top' => '', - 'right' => '', - 'bottom' => '', - 'left' => '', - ), - 'tablet' => array( - 'top' => '', - 'right' => '', - 'bottom' => '', - 'left' => '', - ), - 'mobile' => array( - 'top' => '', - 'right' => '', - 'bottom' => '', - 'left' => '', - ), - 'desktop-unit' => 'px', - 'tablet-unit' => 'px', - 'mobile-unit' => 'px', - ); - - if ( isset( $val['desktop'] ) ) { - $spacing['desktop'] = array_map( 'self::check_numberic_values', $val['desktop'] ); - - $spacing['tablet'] = array_map( 'self::check_numberic_values', $val['tablet'] ); - - $spacing['mobile'] = array_map( 'self::check_numberic_values', $val['mobile'] ); - - if ( isset( $val['desktop-unit'] ) ) { - $spacing['desktop-unit'] = $val['desktop-unit']; - } - - if ( isset( $val['tablet-unit'] ) ) { - $spacing['tablet-unit'] = $val['tablet-unit']; - } - - if ( isset( $val['mobile-unit'] ) ) { - $spacing['mobile-unit'] = $val['mobile-unit']; - } - - return $spacing; - - } else { - foreach ( $val as $key => $value ) { - $val[ $key ] = is_numeric( $val[ $key ] ) ? $val[ $key ] : ''; - } - return $val; - } - - } - - /** - * Check numeric values. - * - * @param int|string $value Value of variable. - * @return string|int Return empty if $value is not integer. - * - * @since 2.5.4 - */ - public static function check_numberic_values( $value ) { - return ( is_numeric( $value ) ) ? $value : ''; - } - - /** - * Sanitize Responsive Slider - * - * @param array|number $val Customizer setting input number. - * @param object $setting Setting Onject. - * @return array Return number. - */ - public static function sanitize_responsive_slider( $val, $setting ) { - - $input_attrs = array(); - if ( isset( $setting->manager->get_control( $setting->id )->input_attrs ) ) { - $input_attrs = $setting->manager->get_control( $setting->id )->input_attrs; - } - - $responsive = array( - 'desktop' => '', - 'tablet' => '', - 'mobile' => '', - ); - if ( is_array( $val ) ) { - $responsive['desktop'] = is_numeric( $val['desktop'] ) ? $val['desktop'] : ''; - $responsive['tablet'] = is_numeric( $val['tablet'] ) ? $val['tablet'] : ''; - $responsive['mobile'] = is_numeric( $val['mobile'] ) ? $val['mobile'] : ''; - } else { - $responsive['desktop'] = is_numeric( $val ) ? $val : ''; - } - - foreach ( $responsive as $key => $value ) { - $value = isset( $input_attrs['min'] ) && ( ! empty( $value ) ) && ( $input_attrs['min'] > $value ) ? $input_attrs['min'] : $value; - $value = isset( $input_attrs['max'] ) && ( ! empty( $value ) ) && ( $input_attrs['max'] < $value ) ? $input_attrs['max'] : $value; - $responsive[ $key ] = $value; - } - - return $responsive; - } - - /** - * Sanitize Responsive Typography - * - * @param array|number $val Customizer setting input number. - * @return array Return number. - */ - public static function sanitize_responsive_typo( $val ) { - - $responsive = array( - 'desktop' => '', - 'tablet' => '', - 'mobile' => '', - 'desktop-unit' => '', - 'tablet-unit' => '', - 'mobile-unit' => '', - ); - if ( is_array( $val ) ) { - $responsive['desktop'] = ( isset( $val['desktop'] ) && is_numeric( $val['desktop'] ) ) ? $val['desktop'] : ''; - $responsive['tablet'] = ( isset( $val['tablet'] ) && is_numeric( $val['tablet'] ) ) ? $val['tablet'] : ''; - $responsive['mobile'] = ( isset( $val['mobile'] ) && is_numeric( $val['mobile'] ) ) ? $val['mobile'] : ''; - $responsive['desktop-unit'] = ( isset( $val['desktop-unit'] ) && in_array( $val['desktop-unit'], array( '', 'px', 'em', 'rem', '%' ) ) ) ? $val['desktop-unit'] : 'px'; - $responsive['tablet-unit'] = ( isset( $val['tablet-unit'] ) && in_array( $val['tablet-unit'], array( '', 'px', 'em', 'rem', '%' ) ) ) ? $val['tablet-unit'] : 'px'; - $responsive['mobile-unit'] = ( isset( $val['mobile-unit'] ) && in_array( $val['mobile-unit'], array( '', 'px', 'em', 'rem', '%' ) ) ) ? $val['mobile-unit'] : 'px'; - } else { - $responsive['desktop'] = is_numeric( $val ) ? $val : ''; - } - return $responsive; - } - - /** - * Validate Email - * - * @param object $validity setting input validity. - * @param string $value setting input value. - * @return object Return the validity object. - */ - public static function validate_email( $validity, $value ) { - if ( ! is_email( $value ) ) { - $validity->add( 'required', __( 'Enter valid email address!', 'astra' ) ); - } - return $validity; - } - - /** - * Validate Sidebar Content Width - * - * @param number $value Sidebar content width. - * @return number Sidebar content width value. - */ - public static function validate_sidebar_content_width( $value ) { - $value = intval( $value ); - if ( $value > 50 ) { - $value = 50; - } elseif ( $value < 15 ) { - $value = 15; - } - return $value; - } - - /** - * Validate Site width - * - * @param number $value Site width. - * @return number Site width value. - */ - public static function validate_site_width( $value ) { - $value = intval( $value ); - if ( 1920 < $value ) { - $value = 1920; - } elseif ( 768 > $value ) { - $value = 768; - } - return $value; - } - - /** - * Validate Site padding - * - * @param number $value Site padding. - * @return number Site padding value. - */ - public static function validate_site_padding( $value ) { - $value = intval( $value ); - if ( 200 < $value ) { - $value = 200; - } elseif ( 1 > $value ) { - $value = 1; - } - return $value; - } - - /** - * Validate Site margin - * - * @param number $value Site margin. - * @return number Site margin value. - */ - public static function validate_site_margin( $value ) { - $value = intval( $value ); - if ( 600 < $value ) { - $value = 600; - } elseif ( 0 > $value ) { - $value = 0; - } - return $value; - } - - /** - * Sanitize checkbox - * - * @param number $input setting input. - * @return number setting input value. - */ - public static function sanitize_checkbox( $input ) { - if ( $input ) { - $output = '1'; - } else { - $output = false; - } - return $output; - } - - /** - * Sanitize HEX color - * - * @param string $color setting input. - * @return string setting input value. - */ - public static function sanitize_hex_color( $color ) { - - if ( '' === $color ) { - return ''; - } - - // 3 or 6 hex digits, or the empty string. - if ( preg_match( '|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) { - return $color; - } - - return ''; - } - - /** - * Sanitize Alpha color - * - * @param string $color setting input. - * @return string setting input value. - */ - public static function sanitize_alpha_color( $color ) { - - if ( '' === $color ) { - return ''; - } - - if ( false === strpos( $color, 'rgba' ) ) { - /* Hex sanitize */ - return self::sanitize_hex_color( $color ); - } - - /* rgba sanitize */ - $color = str_replace( ' ', '', $color ); - sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha ); - return 'rgba(' . $red . ',' . $green . ',' . $blue . ',' . $alpha . ')'; - } - - /** - * Sanitize html - * - * @param string $input setting input. - * @return mixed setting input value. - */ - public static function sanitize_html( $input ) { - return wp_kses_post( $input ); - } - - /** - * Sanitize Select choices - * - * @param string $input setting input. - * @param object $setting setting object. - * @return mixed setting input value. - */ - public static function sanitize_multi_choices( $input, $setting ) { - - // Get list of choices from the control - // associated with the setting. - $choices = $setting->manager->get_control( $setting->id )->choices; - $input_keys = $input; - - foreach ( $input_keys as $key => $value ) { - if ( ! array_key_exists( $value, $choices ) ) { - unset( $input[ $key ] ); - } - } - - // If the input is a valid key, return it; - // otherwise, return the default. - return ( is_array( $input ) ? $input : $setting->default ); - } - - /** - * Sanitize Select choices - * - * @param string $input setting input. - * @param object $setting setting object. - * @return mixed setting input value. - */ - public static function sanitize_choices( $input, $setting ) { - - // Ensure input is a slug. - $input = sanitize_key( $input ); - - // Get list of choices from the control - // associated with the setting. - $choices = $setting->manager->get_control( $setting->id )->choices; - - // If the input is a valid key, return it; - // otherwise, return the default. - return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); - } - - /** - * Sanitize Font weight - * - * @param mixed $input setting input. - * @return mixed setting input value. - */ - public static function sanitize_font_weight( $input ) { - - $valid = array( - 'normal', - 'bold', - '100', - '200', - '300', - '400', - '500', - '600', - '700', - '800', - '900', - ); - - if ( in_array( $input, $valid ) ) { - return $input; - } else { - return 'normal'; - } - } - - /** - * Sanitize Font variant - * - * @param mixed $input setting input. - * @return mixed setting input value. - */ - public static function sanitize_font_variant( $input ) { - - if ( is_array( $input ) ) { - $input = implode( ',', $input ); - } - return sanitize_text_field( $input ); - } - - /** - * Sanitize Background Obj - * - * @param mixed $bg_obj setting input. - * @return array setting input value. - */ - public static function sanitize_background_obj( $bg_obj ) { - - $out_bg_obj = array( - 'background-color' => '', - 'background-image' => '', - 'background-repeat' => 'repeat', - 'background-position' => 'center center', - 'background-size' => 'auto', - 'background-attachment' => 'scroll', - 'background-media' => '', - 'background-type' => '', - ); - - if ( is_array( $bg_obj ) ) { - - foreach ( $out_bg_obj as $key => $value ) { - - if ( isset( $bg_obj[ $key ] ) ) { - - if ( 'background-image' === $key ) { - $out_bg_obj[ $key ] = esc_url_raw( $bg_obj[ $key ] ); - } else { - $out_bg_obj[ $key ] = esc_attr( $bg_obj[ $key ] ); - } - } - } - } - - return $out_bg_obj; - } - - /** - * Sanitize Border Typography - * - * @since 1.4.0 - * @param array|number $val Customizer setting input number. - * @return array Return number. - */ - public static function sanitize_border( $val ) { - - $border = array( - 'top' => '', - 'right' => '', - 'bottom' => '', - 'left' => '', - ); - if ( is_array( $val ) ) { - $border['top'] = is_numeric( $val['top'] ) ? $val['top'] : ''; - $border['right'] = is_numeric( $val['right'] ) ? $val['right'] : ''; - $border['bottom'] = is_numeric( $val['bottom'] ) ? $val['bottom'] : ''; - $border['left'] = is_numeric( $val['left'] ) ? $val['left'] : ''; - } - return $border; - } - - /** - * Sanitize Customizer Link param. - * - * @param Array $val array( - * linked : Linked Customizer Section, - * link_text : Link Text. - * ). - * - * @since 1.6.0 - * - * @return Array - */ - public static function sanitize_customizer_links( $val ) { - $val['linked'] = sanitize_text_field( $val['linked'] ); - $val['link_text'] = esc_html( $val['link_text'] ); - $val['link_type'] = esc_html( $val['link_type'] ); - - return $val; - } - - /** - * Sanitize Responsive Background Image - * - * @param array $bg_obj Background object. - * @return array Background object. - */ - public static function sanitize_responsive_background( $bg_obj ) { - - // Default Responsive Background Image. - $defaults = array( - 'desktop' => array( - 'background-color' => '', - 'background-image' => '', - 'background-repeat' => 'repeat', - 'background-position' => 'center center', - 'background-size' => 'auto', - 'background-attachment' => 'scroll', - 'background-media' => '', - 'background-type' => '', - ), - 'tablet' => array( - 'background-color' => '', - 'background-image' => '', - 'background-repeat' => 'repeat', - 'background-position' => 'center center', - 'background-size' => 'auto', - 'background-attachment' => 'scroll', - 'background-media' => '', - 'background-type' => '', - ), - 'mobile' => array( - 'background-color' => '', - 'background-image' => '', - 'background-repeat' => 'repeat', - 'background-position' => 'center center', - 'background-size' => 'auto', - 'background-attachment' => 'scroll', - 'background-media' => '', - 'background-type' => '', - ), - ); - - // Merge responsive background object and default object into $out_bg_obj array. - $out_bg_obj = wp_parse_args( $bg_obj, $defaults ); - - foreach ( $out_bg_obj as $device => $bg ) { - foreach ( $bg as $key => $value ) { - if ( 'background-image' === $key ) { - $out_bg_obj[ $device ] [ $key ] = esc_url_raw( $value ); - } - if ( 'background-media' === $key ) { - $out_bg_obj[ $device ] [ $key ] = floatval( $value ); - } else { - $out_bg_obj[ $device ] [ $key ] = esc_attr( $value ); - } - } - } - return $out_bg_obj; - } - - /** - * Sanitize Toggle Control param. - * - * @param bool $val for True|False. - * - * @since 3.1.0 - * - * @return bool True|False - */ - public static function sanitize_toggle_control( $val ) { - // returns true if checkbox is checked. - return ( isset( $val ) && is_bool( $val ) ? $val : '' ); - } - } -} - -/** - * Kicking this off by calling 'get_instance()' method - */ -Astra_Customizer_Sanitizes::get_instance(); +manager->get_control( $setting->id )->input_attrs ) ) { + $input_attrs = $setting->manager->get_control( $setting->id )->input_attrs; + } + + if ( isset( $input_attrs ) ) { + + $input_attrs['min'] = isset( $input_attrs['min'] ) ? $input_attrs['min'] : 0; + $input_attrs['step'] = isset( $input_attrs['step'] ) ? $input_attrs['step'] : 1; + + if ( isset( $input_attrs['max'] ) && $val > $input_attrs['max'] ) { + $val = $input_attrs['max']; + } elseif ( $val < $input_attrs['min'] ) { + $val = $input_attrs['min']; + } + + $dv = (float) $val / $input_attrs['step']; + + $dv = round( $dv ); + + $val = $dv * $input_attrs['step']; + + $val = number_format( (float) $val, 2, '.', '' ); + if ( $val == (int) $val ) { + $val = (int) $val; + } + } + + return is_numeric( $val ) ? $val : 0; + } + + /** + * Sanitize Integer + * + * @param number $val Customizer setting input number. + * @return number Return number. + */ + public static function sanitize_number_n_blank( $val ) { + return is_numeric( $val ) ? $val : ''; + } + + /** + * Sanitize Spacing + * + * @param number $val Customizer setting input number. + * @return number Return number. + * @since 1.0.6 + */ + public static function sanitize_spacing( $val ) { + + foreach ( $val as $key => $value ) { + $val[ $key ] = ( is_numeric( $val[ $key ] ) && $val[ $key ] >= 0 ) ? $val[ $key ] : ''; + } + + return $val; + } + + /** + * Sanitize link + * + * @param array $val Customizer setting link. + * @return array Return array. + * @since 2.3.0 + */ + public static function sanitize_link( $val ) { + + $link = array(); + + $link['url'] = esc_url_raw( $val['url'] ); + $link['new_tab'] = esc_attr( $val['new_tab'] ); + $link['link_rel'] = esc_attr( $val['link_rel'] ); + + return $link; + } + + /** + * Sanitize responsive Spacing + * + * @param number $val Customizer setting input number. + * @return number Return number. + * @since 1.2.1 + */ + public static function sanitize_responsive_spacing( $val ) { + + $spacing = array( + 'desktop' => array( + 'top' => '', + 'right' => '', + 'bottom' => '', + 'left' => '', + ), + 'tablet' => array( + 'top' => '', + 'right' => '', + 'bottom' => '', + 'left' => '', + ), + 'mobile' => array( + 'top' => '', + 'right' => '', + 'bottom' => '', + 'left' => '', + ), + 'desktop-unit' => 'px', + 'tablet-unit' => 'px', + 'mobile-unit' => 'px', + ); + + if ( isset( $val['desktop'] ) ) { + $spacing['desktop'] = array_map( 'self::check_numberic_values', $val['desktop'] ); + + $spacing['tablet'] = array_map( 'self::check_numberic_values', $val['tablet'] ); + + $spacing['mobile'] = array_map( 'self::check_numberic_values', $val['mobile'] ); + + if ( isset( $val['desktop-unit'] ) ) { + $spacing['desktop-unit'] = $val['desktop-unit']; + } + + if ( isset( $val['tablet-unit'] ) ) { + $spacing['tablet-unit'] = $val['tablet-unit']; + } + + if ( isset( $val['mobile-unit'] ) ) { + $spacing['mobile-unit'] = $val['mobile-unit']; + } + + return $spacing; + + } else { + foreach ( $val as $key => $value ) { + $val[ $key ] = is_numeric( $val[ $key ] ) ? $val[ $key ] : ''; + } + return $val; + } + + } + + /** + * Check numeric values. + * + * @param int|string $value Value of variable. + * @return string|int Return empty if $value is not integer. + * + * @since 2.5.4 + */ + public static function check_numberic_values( $value ) { + return ( is_numeric( $value ) ) ? $value : ''; + } + + /** + * Sanitize Responsive Slider + * + * @param array|number $val Customizer setting input number. + * @param object $setting Setting Onject. + * @return array Return number. + */ + public static function sanitize_responsive_slider( $val, $setting ) { + + $input_attrs = array(); + if ( isset( $setting->manager->get_control( $setting->id )->input_attrs ) ) { + $input_attrs = $setting->manager->get_control( $setting->id )->input_attrs; + } + + $responsive = array( + 'desktop' => '', + 'tablet' => '', + 'mobile' => '', + ); + if ( is_array( $val ) ) { + $responsive['desktop'] = is_numeric( $val['desktop'] ) ? $val['desktop'] : ''; + $responsive['tablet'] = is_numeric( $val['tablet'] ) ? $val['tablet'] : ''; + $responsive['mobile'] = is_numeric( $val['mobile'] ) ? $val['mobile'] : ''; + } else { + $responsive['desktop'] = is_numeric( $val ) ? $val : ''; + } + + foreach ( $responsive as $key => $value ) { + $value = isset( $input_attrs['min'] ) && ( ! empty( $value ) ) && ( $input_attrs['min'] > $value ) ? $input_attrs['min'] : $value; + $value = isset( $input_attrs['max'] ) && ( ! empty( $value ) ) && ( $input_attrs['max'] < $value ) ? $input_attrs['max'] : $value; + $responsive[ $key ] = $value; + } + + return $responsive; + } + + /** + * Sanitize Responsive Typography + * + * @param array|number $val Customizer setting input number. + * @return array Return number. + */ + public static function sanitize_responsive_typo( $val ) { + + $responsive = array( + 'desktop' => '', + 'tablet' => '', + 'mobile' => '', + 'desktop-unit' => '', + 'tablet-unit' => '', + 'mobile-unit' => '', + ); + if ( is_array( $val ) ) { + $responsive['desktop'] = ( isset( $val['desktop'] ) && is_numeric( $val['desktop'] ) ) ? $val['desktop'] : ''; + $responsive['tablet'] = ( isset( $val['tablet'] ) && is_numeric( $val['tablet'] ) ) ? $val['tablet'] : ''; + $responsive['mobile'] = ( isset( $val['mobile'] ) && is_numeric( $val['mobile'] ) ) ? $val['mobile'] : ''; + $responsive['desktop-unit'] = ( isset( $val['desktop-unit'] ) && in_array( $val['desktop-unit'], array( '', 'px', 'em', 'rem', '%' ) ) ) ? $val['desktop-unit'] : 'px'; + $responsive['tablet-unit'] = ( isset( $val['tablet-unit'] ) && in_array( $val['tablet-unit'], array( '', 'px', 'em', 'rem', '%' ) ) ) ? $val['tablet-unit'] : 'px'; + $responsive['mobile-unit'] = ( isset( $val['mobile-unit'] ) && in_array( $val['mobile-unit'], array( '', 'px', 'em', 'rem', '%' ) ) ) ? $val['mobile-unit'] : 'px'; + } else { + $responsive['desktop'] = is_numeric( $val ) ? $val : ''; + } + return $responsive; + } + + /** + * Validate Email + * + * @param object $validity setting input validity. + * @param string $value setting input value. + * @return object Return the validity object. + */ + public static function validate_email( $validity, $value ) { + if ( ! is_email( $value ) ) { + $validity->add( 'required', __( 'Enter valid email address!', 'astra' ) ); + } + return $validity; + } + + /** + * Validate Sidebar Content Width + * + * @param number $value Sidebar content width. + * @return number Sidebar content width value. + */ + public static function validate_sidebar_content_width( $value ) { + $value = intval( $value ); + if ( $value > 50 ) { + $value = 50; + } elseif ( $value < 15 ) { + $value = 15; + } + return $value; + } + + /** + * Validate Site width + * + * @param number $value Site width. + * @return number Site width value. + */ + public static function validate_site_width( $value ) { + $value = intval( $value ); + if ( 1920 < $value ) { + $value = 1920; + } elseif ( 768 > $value ) { + $value = 768; + } + return $value; + } + + /** + * Validate Site padding + * + * @param number $value Site padding. + * @return number Site padding value. + */ + public static function validate_site_padding( $value ) { + $value = intval( $value ); + if ( 200 < $value ) { + $value = 200; + } elseif ( 1 > $value ) { + $value = 1; + } + return $value; + } + + /** + * Validate Site margin + * + * @param number $value Site margin. + * @return number Site margin value. + */ + public static function validate_site_margin( $value ) { + $value = intval( $value ); + if ( 600 < $value ) { + $value = 600; + } elseif ( 0 > $value ) { + $value = 0; + } + return $value; + } + + /** + * Sanitize checkbox + * + * @param number $input setting input. + * @return number setting input value. + */ + public static function sanitize_checkbox( $input ) { + if ( $input ) { + $output = '1'; + } else { + $output = false; + } + return $output; + } + + /** + * Sanitize HEX color + * + * @param string $color setting input. + * @return string setting input value. + */ + public static function sanitize_hex_color( $color ) { + + if ( '' === $color ) { + return ''; + } + + // 3 or 6 hex digits, or the empty string. + if ( preg_match( '|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) { + return $color; + } + + return ''; + } + + /** + * Sanitize Alpha color + * + * @param string $color setting input. + * @return string setting input value. + */ + public static function sanitize_alpha_color( $color ) { + + if ( '' === $color ) { + return ''; + } + + if ( false === strpos( $color, 'rgba' ) ) { + /* Hex sanitize */ + return self::sanitize_hex_color( $color ); + } + + /* rgba sanitize */ + $color = str_replace( ' ', '', $color ); + sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha ); + return 'rgba(' . $red . ',' . $green . ',' . $blue . ',' . $alpha . ')'; + } + + /** + * Sanitize html + * + * @param string $input setting input. + * @return mixed setting input value. + */ + public static function sanitize_html( $input ) { + return wp_kses_post( $input ); + } + + /** + * Sanitize Select choices + * + * @param string $input setting input. + * @param object $setting setting object. + * @return mixed setting input value. + */ + public static function sanitize_multi_choices( $input, $setting ) { + + // Get list of choices from the control + // associated with the setting. + $choices = $setting->manager->get_control( $setting->id )->choices; + $input_keys = $input; + + foreach ( $input_keys as $key => $value ) { + if ( ! array_key_exists( $value, $choices ) ) { + unset( $input[ $key ] ); + } + } + + // If the input is a valid key, return it; + // otherwise, return the default. + return ( is_array( $input ) ? $input : $setting->default ); + } + + /** + * Sanitize Select choices + * + * @param string $input setting input. + * @param object $setting setting object. + * @return mixed setting input value. + */ + public static function sanitize_choices( $input, $setting ) { + + // Ensure input is a slug. + $input = sanitize_key( $input ); + + // Get list of choices from the control + // associated with the setting. + $choices = $setting->manager->get_control( $setting->id )->choices; + + // If the input is a valid key, return it; + // otherwise, return the default. + return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); + } + + /** + * Sanitize Font weight + * + * @param mixed $input setting input. + * @return mixed setting input value. + */ + public static function sanitize_font_weight( $input ) { + + $valid = array( + 'normal', + 'bold', + '100', + '200', + '300', + '400', + '500', + '600', + '700', + '800', + '900', + ); + + if ( in_array( $input, $valid ) ) { + return $input; + } else { + return 'normal'; + } + } + + /** + * Sanitize Font variant + * + * @param mixed $input setting input. + * @return mixed setting input value. + */ + public static function sanitize_font_variant( $input ) { + + if ( is_array( $input ) ) { + $input = implode( ',', $input ); + } + return sanitize_text_field( $input ); + } + + /** + * Sanitize Background Obj + * + * @param mixed $bg_obj setting input. + * @return array setting input value. + */ + public static function sanitize_background_obj( $bg_obj ) { + + $out_bg_obj = array( + 'background-color' => '', + 'background-image' => '', + 'background-repeat' => 'repeat', + 'background-position' => 'center center', + 'background-size' => 'auto', + 'background-attachment' => 'scroll', + 'background-media' => '', + 'background-type' => '', + ); + + if ( is_array( $bg_obj ) ) { + + foreach ( $out_bg_obj as $key => $value ) { + + if ( isset( $bg_obj[ $key ] ) ) { + + if ( 'background-image' === $key ) { + $out_bg_obj[ $key ] = esc_url_raw( $bg_obj[ $key ] ); + } else { + $out_bg_obj[ $key ] = esc_attr( $bg_obj[ $key ] ); + } + } + } + } + + return $out_bg_obj; + } + + /** + * Sanitize Border Typography + * + * @since 1.4.0 + * @param array|number $val Customizer setting input number. + * @return array Return number. + */ + public static function sanitize_border( $val ) { + + $border = array( + 'top' => '', + 'right' => '', + 'bottom' => '', + 'left' => '', + ); + if ( is_array( $val ) ) { + $border['top'] = is_numeric( $val['top'] ) ? $val['top'] : ''; + $border['right'] = is_numeric( $val['right'] ) ? $val['right'] : ''; + $border['bottom'] = is_numeric( $val['bottom'] ) ? $val['bottom'] : ''; + $border['left'] = is_numeric( $val['left'] ) ? $val['left'] : ''; + } + return $border; + } + + /** + * Sanitize Customizer Link param. + * + * @param Array $val array( + * linked : Linked Customizer Section, + * link_text : Link Text. + * ). + * + * @since 1.6.0 + * + * @return Array + */ + public static function sanitize_customizer_links( $val ) { + $val['linked'] = sanitize_text_field( $val['linked'] ); + $val['link_text'] = esc_html( $val['link_text'] ); + $val['link_type'] = esc_html( $val['link_type'] ); + + return $val; + } + + /** + * Sanitize Responsive Background Image + * + * @param array $bg_obj Background object. + * @return array Background object. + */ + public static function sanitize_responsive_background( $bg_obj ) { + + // Default Responsive Background Image. + $defaults = array( + 'desktop' => array( + 'background-color' => '', + 'background-image' => '', + 'background-repeat' => 'repeat', + 'background-position' => 'center center', + 'background-size' => 'auto', + 'background-attachment' => 'scroll', + 'background-media' => '', + 'background-type' => '', + ), + 'tablet' => array( + 'background-color' => '', + 'background-image' => '', + 'background-repeat' => 'repeat', + 'background-position' => 'center center', + 'background-size' => 'auto', + 'background-attachment' => 'scroll', + 'background-media' => '', + 'background-type' => '', + ), + 'mobile' => array( + 'background-color' => '', + 'background-image' => '', + 'background-repeat' => 'repeat', + 'background-position' => 'center center', + 'background-size' => 'auto', + 'background-attachment' => 'scroll', + 'background-media' => '', + 'background-type' => '', + ), + ); + + // Merge responsive background object and default object into $out_bg_obj array. + $out_bg_obj = wp_parse_args( $bg_obj, $defaults ); + + foreach ( $out_bg_obj as $device => $bg ) { + foreach ( $bg as $key => $value ) { + if ( 'background-image' === $key ) { + $out_bg_obj[ $device ] [ $key ] = esc_url_raw( $value ); + } + if ( 'background-media' === $key ) { + $out_bg_obj[ $device ] [ $key ] = floatval( $value ); + } else { + $out_bg_obj[ $device ] [ $key ] = esc_attr( $value ); + } + } + } + return $out_bg_obj; + } + + /** + * Sanitize Toggle Control param. + * + * @param bool $val for True|False. + * + * @since 3.1.0 + * + * @return bool True|False + */ + public static function sanitize_toggle_control( $val ) { + // returns true if checkbox is checked. + return ( isset( $val ) && is_bool( $val ) ? $val : '' ); + } + } +} + +/** + * Kicking this off by calling 'get_instance()' method + */ +Astra_Customizer_Sanitizes::get_instance(); -- cgit v1.2.3-70-g09d2