<?php
/**
* Custom Functions.
*
* @package Maizzy
*/

if( !function_exists( 'maizzy_sanitize_sidebar_option' ) ) :

    // Sidebar Option Sanitize.
    function maizzy_sanitize_sidebar_option( $maizzy_input ){

        $maizzy_metabox_options = array( 'global-sidebar','left-sidebar','right-sidebar','no-sidebar' );
        if( in_array( $maizzy_input,$maizzy_metabox_options ) ){

            return $maizzy_input;

        }

        return;

    }

endif;

if( !function_exists( 'maizzy_sanitize_single_pagination_layout' ) ) :

    // Sidebar Option Sanitize.
    function maizzy_sanitize_single_pagination_layout( $maizzy_input ){

        $maizzy_single_pagination = array( 'no-navigation','norma-navigation','ajax-next-post-load' );
        if( in_array( $maizzy_input,$maizzy_single_pagination ) ){

            return $maizzy_input;

        }

        return;

    }

endif;

if( !function_exists( 'maizzy_sanitize_archive_layout' ) ) :

    // Sidebar Option Sanitize.
    function maizzy_sanitize_archive_layout( $maizzy_input ){

        $maizzy_archive_option = array( 'default','full','grid','masonry' );
        if( in_array( $maizzy_input,$maizzy_archive_option ) ){

            return $maizzy_input;

        }

        return;

    }

endif;

if( !function_exists( 'maizzy_sanitize_header_layout' ) ) :

    // Sidebar Option Sanitize.
    function maizzy_sanitize_header_layout( $maizzy_input ){

        $maizzy_header_options = array( 'layout-1','layout-2','layout-3' );
        if( in_array( $maizzy_input,$maizzy_header_options ) ){

            return $maizzy_input;

        }

        return;

    }

endif;

if( !function_exists( 'maizzy_sanitize_single_post_layout' ) ) :

    // Single Layout Option Sanitize.
    function maizzy_sanitize_single_post_layout( $maizzy_input ){

        $maizzy_single_layout = array( 'layout-1','layout-2' );
        if( in_array( $maizzy_input,$maizzy_single_layout ) ){

            return $maizzy_input;

        }

        return;

    }

endif;

if ( ! function_exists( 'maizzy_sanitize_checkbox' ) ) :

	/**
	 * Sanitize checkbox.
	 */
	function maizzy_sanitize_checkbox( $maizzy_checked ) {

		return ( ( isset( $maizzy_checked ) && true === $maizzy_checked ) ? true : false );

	}

endif;


if ( ! function_exists( 'maizzy_sanitize_select' ) ) :

    /**
     * Sanitize select.
     */
    function maizzy_sanitize_select( $maizzy_input, $maizzy_setting ) {

        // Ensure input is a slug.
        $maizzy_input = sanitize_text_field( $maizzy_input );

        // Get list of choices from the control associated with the setting.
        $choices = $maizzy_setting->manager->get_control( $maizzy_setting->id )->choices;

        // If the input is a valid key, return it; otherwise, return the default.
        return ( array_key_exists( $maizzy_input, $choices ) ? $maizzy_input : $maizzy_setting->default );

    }

endif;

if ( ! function_exists( 'maizzy_sanitize_repeater' ) ) :
    
    /**
    * Sanitise Repeater Field
    */
    function maizzy_sanitize_repeater($input){
        $input_decoded = json_decode( $input, true );
        
        if(!empty($input_decoded)) {

            foreach ($input_decoded as $boxes => $box ){

                foreach ($box as $key => $value){

                    if( $key == 'category_color' ){

                        $input_decoded[$boxes][$key] = sanitize_hex_color( $value );

                    }else{

                        $input_decoded[$boxes][$key] = sanitize_text_field( $value );

                    }
                    
                }

            }
           
            return json_encode($input_decoded);

        }

        return $input;
    }
endif;


if ( ! function_exists( 'maizzy_sanitize_number_range' ) ) :

    /**
     * Sanitize number range.
     *
     * @since 1.0.0
     *
     * @see absint() https://developer.wordpress.org/reference/functions/absint/
     *
     * @param int                  $input Number to check within the numeric range defined by the setting.
     * @param WP_Customize_Setting $setting WP_Customize_Setting instance.
     * @return int|string The number, if it is zero or greater and falls within the defined range; otherwise, the setting default.
     */
    function maizzy_sanitize_number_range( $input, $setting ) {

        // Ensure input is an absolute integer.
        $input = absint( $input );

        // Get the input attributes associated with the setting.
        $atts = $setting->manager->get_control( $setting->id )->input_attrs;

        // Get min.
        $min = ( isset( $atts['min'] ) ? $atts['min'] : $input );

        // Get max.
        $max = ( isset( $atts['max'] ) ? $atts['max'] : $input );

        // Get Step.
        $step = ( isset( $atts['step'] ) ? $atts['step'] : 1 );

        // If the input is within the valid range, return it; otherwise, return the default.
        return ( $min <= $input && $input <= $max && is_int( $input / $step ) ? $input : $setting->default );

    }

endif;
