<?php
/**
 * Electronics Equipment functions and definitions
 *
 * @link https://developer.wordpress.org/themes/basics/theme-functions/
 *
 * @package Electronics Equipment
 */

include get_theme_file_path( 'vendor/wptrt/autoload/src/Electronics_Equipment_Loader.php' );

$electronics_equipment_loader = new \WPTRT\Autoload\Electronics_Equipment_Loader();

$electronics_equipment_loader->electronics_equipment_add( 'WPTRT\\Customize\\Section', get_theme_file_path( 'vendor/wptrt/customize-section-button/src' ) );

$electronics_equipment_loader->electronics_equipment_register();

if ( ! function_exists( 'electronics_equipment_setup' ) ) :

	function electronics_equipment_setup() {

		/*
		 * Enable support for Post Formats.
		 *
		 * See: https://codex.wordpress.org/Post_Formats
		*/
		add_theme_support( 'post-formats', array('image','video','gallery','audio',) );

		load_theme_textdomain( 'electronics-equipment', get_template_directory() . '/languages' );
		add_theme_support( 'woocommerce' );
		add_theme_support( "responsive-embeds" );
		add_theme_support( "align-wide" );
		add_theme_support( "wp-block-styles" );
		add_theme_support( 'automatic-feed-links' );
		add_theme_support( 'title-tag' );
		add_theme_support( 'post-thumbnails' );
        add_image_size('electronics-equipment-featured-header-image', 2000, 660, true);

        register_nav_menus( array(
            'primary' => esc_html__( 'Primary','electronics-equipment' ),
        ) );

		add_theme_support( 'html5', array(
			'search-form',
			'comment-form',
			'comment-list',
			'gallery',
			'caption',
		) );

		add_theme_support( 'custom-background', apply_filters( 'electronics_equipment_custom_background_args', array(
			'default-color' => 'f7ebe5',
			'default-image' => '',
		) ) );

		add_theme_support( 'customize-selective-refresh-widgets' );

		add_theme_support( 'custom-logo', array(
			'height'      => 200,
			'width'       => 200,
			'flex-width'  => true,
		) );

		add_editor_style( array( '/editor-style.css' ) );

		/**
		* Customizer additions.
		*/
		require get_template_directory() . '/inc/customizer.php';

	}
endif;
add_action( 'after_setup_theme', 'electronics_equipment_setup' );

function electronics_equipment_content_width() {
	$GLOBALS['content_width'] = apply_filters( 'electronics_equipment_content_width', 1170 );
}
add_action( 'after_setup_theme', 'electronics_equipment_content_width', 0 );

/**
 * Register widget area.
 *
 * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
 */
function electronics_equipment_widgets_init() {
	register_sidebar( array(
		'name'          => esc_html__( 'Sidebar', 'electronics-equipment' ),
		'id'            => 'sidebar',
		'description'   => esc_html__( 'Add widgets here.', 'electronics-equipment' ),
        'before_widget' => '<section id="%1$s" class="widget %2$s">',
		'after_widget'  => '</section>',
		'before_title'  => '<h5 class="widget-title">',
		'after_title'   => '</h5>',
	) );

	register_sidebar( array(
		'name'          => esc_html__( 'Sidebar 1', 'electronics-equipment' ),
		'id'            => 'sidebar1',
		'description'   => esc_html__( 'Add widgets here.', 'electronics-equipment' ),
        'before_widget' => '<section id="%1$s" class="widget %2$s">',
		'after_widget'  => '</section>',
		'before_title'  => '<h5 class="widget-title">',
		'after_title'   => '</h5>',
	) );

	register_sidebar( array(
		'name'          => esc_html__( 'Sidebar 2', 'electronics-equipment' ),
		'id'            => 'sidebar2',
		'description'   => esc_html__( 'Add widgets here.', 'electronics-equipment' ),
        'before_widget' => '<section id="%1$s" class="widget %2$s">',
		'after_widget'  => '</section>',
		'before_title'  => '<h5 class="widget-title">',
		'after_title'   => '</h5>',
	) );

	register_sidebar( array(
		'name'          => esc_html__( 'Header Sidebar', 'electronics-equipment' ),
		'id'            => 'header-sidebar',
		'description'   => esc_html__( 'Add widgets here which can be seen on topbar toggle sidebar.', 'electronics-equipment' ),
        'before_widget' => '<section id="%1$s" class="widget %2$s">',
		'after_widget'  => '</section>',
		'before_title'  => '<h5 class="widget-title">',
		'after_title'   => '</h5>',
	) );

	register_sidebar( array(
		'name'          => esc_html__( 'Footer Column 1', 'electronics-equipment' ),
		'id'            => 'electronics-equipment-footer1',
		'description'   => '',
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget'  => '</aside>',
		'before_title'  => '<h5 class="footer-column-widget-title">',
		'after_title'   => '</h5>',
	) );

	register_sidebar( array(
		'name'          => esc_html__( 'Footer Column 2', 'electronics-equipment' ),
		'id'            => 'electronics-equipment-footer2',
		'description'   => '',
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget'  => '</aside>',
		'before_title'  => '<h5 class="footer-column-widget-title">',
		'after_title'   => '</h5>',
	) );

	register_sidebar( array(
		'name'          => esc_html__( 'Footer Column 3', 'electronics-equipment' ),
		'id'            => 'electronics-equipment-footer3',
		'description'   => '',
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget'  => '</aside>',
		'before_title'  => '<h5 class="footer-column-widget-title">',
		'after_title'   => '</h5>',
	) );
}
add_action( 'widgets_init', 'electronics_equipment_widgets_init' );

/**
 * Enqueue scripts and styles.
 */
function electronics_equipment_scripts() {

	require_once get_theme_file_path( 'inc/wptt-webfont-loader.php' );

	wp_enqueue_style(
		'protest-strike',
		wptt_get_webfont_url( 'https://fonts.googleapis.com/css2?family=Protest+Strike&display=swap' ),
		array(),
		'1.0'
	);
	
	wp_enqueue_style(
		'inter',
		wptt_get_webfont_url( 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap' ),
		array(),
		'1.0'
	);

	wp_enqueue_style(
		'preahvihear',
		wptt_get_webfont_url( 'https://fonts.googleapis.com/css2?family=Preahvihear&display=swap' ),
		array(),
		'1.0'
	);

	wp_enqueue_style( 'electronics-equipment-block-editor-style', get_theme_file_uri('/assets/css/block-editor-style.css') );

	// load bootstrap css
    wp_enqueue_style( 'bootstrap-css', get_template_directory_uri() . '/assets/css/bootstrap.css');

    wp_enqueue_style( 'owl-carousel-css', get_template_directory_uri() . '/assets/css/owl-carousel.css');

	wp_enqueue_style( 'electronics-equipment-style', get_stylesheet_uri() );
	require get_parent_theme_file_path( '/custom-option.php' );
	wp_add_inline_style( 'electronics-equipment-style',$electronics_equipment_theme_css );

	// fontawesome
	wp_enqueue_style( 'fontawesome-style', get_template_directory_uri() .'/assets/css/fontawesome/css/all.css' );

    wp_enqueue_script( 'bootstrap-js', get_template_directory_uri() . '/assets/js/bootstrap.bundle.min.js', array(), '5.3.3', true );

    wp_enqueue_script('owl-carousel-js', get_template_directory_uri() . '/assets/js/owl-carousel.js', array('jquery'), '', true );

    wp_enqueue_script('electronics-equipment-theme-js', get_template_directory_uri() . '/assets/js/theme-script.js', array('jquery', 'bootstrap-js', 'owl-carousel-js'), '', true );

    // Pass WooCommerce cart count for AJAX fragment updates
    if ( function_exists( 'WC' ) ) {
        add_filter( 'woocommerce_add_to_cart_fragments', 'electronics_equipment_cart_count_fragment' );
        wp_localize_script( 'electronics-equipment-theme-js', 'electronicsequipmentData', array(
            'cartUrl' => esc_url( function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : home_url( '/cart/' ) ),
        ) );
    }

	if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
		wp_enqueue_script( 'comment-reply' );
	}
}
add_action( 'wp_enqueue_scripts', 'electronics_equipment_scripts' );

/**
 * Load WooCommerce frontend scripts (wc-add-to-cart, AJAX params) on the home template.
 */
function electronics_equipment_is_home_template_woocommerce( $is_wc ) {
    if ( is_page_template( 'page-template/home-template.php' ) ) {
        return true;
    }
    return $is_wc;
}
add_filter( 'is_woocommerce', 'electronics_equipment_is_home_template_woocommerce' );

/**
 * WooCommerce cart count fragment – updates topbar-cart-count via AJAX.
 */
if ( ! function_exists( 'electronics_equipment_cart_count_fragment' ) ) {
    function electronics_equipment_cart_count_fragment( $fragments ) {
        if ( ! function_exists( 'WC' ) || ! WC()->cart ) {
            return $fragments;
        }
        $count = WC()->cart->get_cart_contents_count();
        $fragments['.topbar-cart-count'] = '<span class="topbar-cart-count">' . esc_html( $count ) . '</span>';
        return $fragments;
    }
}

function electronics_equipment_preloader() {

	$electronics_equipment_theme_color_css = '';
	$electronics_equipment_preloader_bg_color = get_theme_mod('electronics_equipment_preloader_bg_color');
	$electronics_equipment_preloader_dot_1_color = get_theme_mod('electronics_equipment_preloader_dot_1_color');
	$electronics_equipment_preloader_dot_2_color = get_theme_mod('electronics_equipment_preloader_dot_2_color');
	$electronics_equipment_preloader2_dot_color = get_theme_mod('electronics_equipment_preloader2_dot_color');
	$electronics_equipment_logo_max_height = get_theme_mod('electronics_equipment_logo_max_height');
  	$electronics_equipment_scroll_bg_color = get_theme_mod('electronics_equipment_scroll_bg_color');
	$electronics_equipment_scroll_color = get_theme_mod('electronics_equipment_scroll_color');
	$electronics_equipment_scroll_font_size = get_theme_mod('electronics_equipment_scroll_font_size');
	$electronics_equipment_scroll_border_radius = get_theme_mod('electronics_equipment_scroll_border_radius');
    $electronics_equipment_related_product_display_setting = get_theme_mod('electronics_equipment_related_product_display_setting', true);

  	if(get_theme_mod('electronics_equipment_logo_max_height') == '') {
		$electronics_equipment_logo_max_height = '200';
	}

	if(get_theme_mod('electronics_equipment_preloader_dot_1_color') == '') {
		$electronics_equipment_preloader_dot_1_color = '#ffffff';
	}
	if(get_theme_mod('electronics_equipment_preloader_dot_2_color') == '') {
		$electronics_equipment_preloader_dot_2_color = '#222222';
	}

	// Start CSS build
	$electronics_equipment_theme_color_css = '';

	
	if (!$electronics_equipment_related_product_display_setting) {
	    $electronics_equipment_theme_color_css .= '
	        .related.products,
	        .related h2 {
	            display: none !important;
	        }
	    ';
	}

	$electronics_equipment_theme_color_css .= '
		.custom-logo-link img{
			max-height: '.esc_attr($electronics_equipment_logo_max_height).'px;
	 	}
		.loading, .loading2{
			background-color: '.esc_attr($electronics_equipment_preloader_bg_color).';
		}
		@keyframes loading {
		  0%,
		  100% {
		  	transform: translatey(-2.5rem);
		    background-color: '.esc_attr($electronics_equipment_preloader_dot_1_color).';
		  }
		  50% {
		  	transform: translatey(2.5rem);
		    background-color: '.esc_attr($electronics_equipment_preloader_dot_2_color).';
		  }
		}
		.load hr {
			background-color: '.esc_attr($electronics_equipment_preloader2_dot_color).';
		}
		a#button{
			background-color: '.esc_attr($electronics_equipment_scroll_bg_color).';
			color: '.esc_attr($electronics_equipment_scroll_color).' !important;
			font-size: '.esc_attr($electronics_equipment_scroll_font_size).'px;
			border-radius: '.esc_attr($electronics_equipment_scroll_border_radius).'%;
		}
	';
    wp_add_inline_style( 'electronics-equipment-style',$electronics_equipment_theme_color_css );

}
add_action( 'wp_enqueue_scripts', 'electronics_equipment_preloader' );

/**
 * Custom template tags for this theme.
 */
require get_template_directory() . '/inc/template-tags.php';

/**
 * Implement the Custom Header feature.
 */
require get_template_directory() . '/inc/custom-header.php';

/**
 * Functions which enhance the theme by hooking into WordPress.
 */
require get_template_directory() . '/inc/template-functions.php';

/**
* TGM
*/
require get_template_directory() . '/inc/tgm.php';



function electronics_equipment_sanitize_select( $input, $setting ){
    $input = sanitize_key($input);
    $choices = $setting->manager->get_control( $setting->id )->choices;
    return ( array_key_exists( $input, $choices ) ? $input : $setting->default );
}

function electronics_equipment_sanitize_checkbox( $input ) {
  // Boolean check
  return ( ( isset( $input ) && true == $input ) ? true : false );
}

/*radio button sanitization*/
function electronics_equipment_sanitize_choices( $input, $setting ) {
    global $wp_customize;
    $control = $wp_customize->get_control( $setting->id );
    if ( array_key_exists( $input, $control->choices ) ) {
        return $input;
    } else {
        return $setting->default;
    }
}

function electronics_equipment_sanitize_number_range( $number, $setting ) {
	
	// Ensure input is an absolute integer.
	$number = absint( $number );
	
	// Get the input attributes associated with the setting.
	$atts = $setting->manager->get_control( $setting->id )->input_attrs;
	
	// Get minimum number in the range.
	$min = ( isset( $atts['min'] ) ? $atts['min'] : $number );
	
	// Get maximum number in the range.
	$max = ( isset( $atts['max'] ) ? $atts['max'] : $number );
	
	// Get step.
	$step = ( isset( $atts['step'] ) ? $atts['step'] : 1 );
	
	// If the number is within the valid range, return it; otherwise, return the default
	return ( $min <= $number && $number <= $max && is_int( $number / $step ) ? $number : $setting->default );
}

function electronics_equipment_sanitize_number_absint( $number, $setting ) {
	// Ensure $number is an absolute integer (whole number, zero or greater).
	$number = absint( $number );

	// If the input is an absolute integer, return it; otherwise, return the default
	return ( $number ? $number : $setting->default );
}

/** * Posts pagination. */
if ( ! function_exists( 'electronics_equipment_blog_posts_pagination' ) ) {
	function electronics_equipment_blog_posts_pagination() {
		$pagination_type = get_theme_mod( 'electronics_equipment_blog_pagination_type', 'blog-nav-numbers' );
		if ( $pagination_type == 'blog-nav-numbers' ) {
			the_posts_pagination();
		} else {
			the_posts_navigation();
		}
	}
}

// Change number or products per row to 3
add_filter('loop_shop_columns', 'electronics_equipment_loop_columns');
if (!function_exists('electronics_equipment_loop_columns')) {
	function electronics_equipment_loop_columns() {
		$columns = get_theme_mod( 'electronics_equipment_products_per_row', 3 );
		return $columns; // 3 products per row
	}
}

function electronics_equipment_preloader1(){
	if(get_theme_mod('electronics_equipment_preloader_type', 'Preloader 1') == 'Preloader 1' ) {
		return true;
	}
	return false;
}

function electronics_equipment_preloader2(){
	if(get_theme_mod('electronics_equipment_preloader_type', 'Preloader 1') == 'Preloader 2' ) {
		return true;
	}
	return false;
}

//Change number of products that are displayed per page (shop page)
add_filter( 'loop_shop_per_page', 'electronics_equipment_shop_per_page', 9 );
function electronics_equipment_shop_per_page( $cols ) {
  	$cols = get_theme_mod( 'electronics_equipment_product_per_page', 9 );
	return $cols;
}

// Filter to change the number of related products displayed
add_filter( 'woocommerce_output_related_products_args', 'electronics_equipment_products_args' );
function electronics_equipment_products_args( $args ) {
    $args['posts_per_page'] = get_theme_mod( 'custom_related_products_number', 6 );
    $args['columns'] = get_theme_mod( 'custom_related_products_number_per_row', 3 );
    return $args;
}

function electronics_equipment_get_page_id_by_title($electronics_equipment_pagename){

    $electronics_equipment_query_args = array(
        'post_type' => 'page',
        'posts_per_page' => 1,
        'post_status' => 'publish',
        'title' => $electronics_equipment_pagename
    );
    $electronics_equipment_page_query = new WP_Query( $electronics_equipment_query_args );

    $electronics_equipment_page_id = '1';
    if (isset($electronics_equipment_page_query->post->ID)) {
        $electronics_equipment_page_id = $electronics_equipment_page_query->post->ID;
    }

    return $electronics_equipment_page_id;
}

function electronics_equipment_remove_customize_register() {
    global $wp_customize;

    $wp_customize->remove_setting( 'pro_version_footer_setting' );
    $wp_customize->remove_control( 'pro_version_footer_setting' );

}
add_action( 'customize_register', 'electronics_equipment_remove_customize_register', 11 );

if ( class_exists( 'WP_Customize_Control' ) ) {
	// Image Toggle Radio Buttpon
	class Electronics_Equipment_Image_Radio_Control extends WP_Customize_Control {

	    public function render_content() {
	 
	        if (empty($this->choices))
	            return;
	 
	        $electronics_equipment_name = '_customize-radio-' . $this->id;
	        ?>
	        <span class="customize-control-title"><?php echo esc_html($this->label); ?></span>
	        <ul class="controls" id='electronics-equipment-img-container'>
	            <?php
	            foreach ($this->choices as $electronics_equipment_value => $electronics_equipment_label) :
	                $electronics_equipment_class = ($this->value() == $electronics_equipment_value) ? 'electronics-equipment-radio-img-selected electronics-equipment-radio-img-img' : 'electronics-equipment-radio-img-img';
	                ?>
	                <li style="display: inline;">
	                    <label>
	                        <input <?php $this->link(); ?>style = 'display:none' type="radio" value="<?php echo esc_attr($electronics_equipment_value); ?>" name="<?php echo esc_attr($electronics_equipment_name); ?>" <?php
	                          	$this->link();
	                          	checked($this->value(), $electronics_equipment_value);
	                          	?> />
	                        <img src='<?php echo esc_url($electronics_equipment_label); ?>' class='<?php echo esc_attr($electronics_equipment_class); ?>' />
	                    </label>
	                </li>
	                <?php
	            endforeach;
	            ?>
	        </ul>
	        <?php
	    } 
	}
}
