<?php
/**
 * Pixel Hair Spa functions and definitions
 *
 * @package Pixel Hair Spa
 */

if ( ! function_exists( 'pixel_hair_spa_setup' ) ) :
	function pixel_hair_spa_setup() {
		
		// Add default posts and comments RSS feed links to head.
		add_theme_support( 'automatic-feed-links' );

		add_theme_support( 'woocommerce' );

		load_theme_textdomain( 'pixel-hair-spa', get_template_directory() . '/languages' );

		/*
		 * Let WordPress manage the document title.
		 * By adding theme support, we declare that this theme does not use a
		 * hard-coded <title> tag in the document head, and expect WordPress to
		 * provide it for us.
		 */
		add_theme_support( 'title-tag' );

		/*
		 * Post thumbnail support should be enabled for pages and posts.
		 */
		add_theme_support( 'post-thumbnails' );

		// This theme uses wp_nav_menu() in one location.
		register_nav_menus( array(
			'menu-1' => esc_html__( 'Primary', 'pixel-hair-spa' ),
			'menu-2' => esc_html__( 'Footer', 'pixel-hair-spa' ),
		) );

		/*
		 * To produce valid HTML5, change the default core markup for the comments, search form, and search form.
		 */
		add_theme_support( 'html5', array(
			'search-form',
			'comment-form',
			'comment-list',
			'gallery',
			'caption',
		) );
		
		/**
		 * Add support for core custom logo.
		 *
		 * @link https://codex.wordpress.org/Theme_Logo
		 */
		add_theme_support( 'custom-logo', array(
			'width'       => 270,
			'height'      => 80,
			'flex-height' => true,
			'flex-width'  => true,
		) );

		// Add theme support for selective refresh for widgets.
		add_theme_support( 'customize-selective-refresh-widgets' );

		// Add custom image size.
		add_image_size( 'pixel-hair-spa-1920-550', 1920, 550, true );
		add_image_size( 'pixel-hair-spa-1370-550', 1370, 550, true );
		add_image_size( 'pixel-hair-spa-590-310', 590, 310, true );
		add_image_size( 'pixel-hair-spa-420-380', 420, 380, true );
		add_image_size( 'pixel-hair-spa-420-300', 420, 300, true );
		add_image_size( 'pixel-hair-spa-420-200', 420, 200, true );
		add_image_size( 'pixel-hair-spa-290-150', 290, 150, true );
		add_image_size( 'pixel-hair-spa-80-60', 80, 60, true );
		
		add_theme_support( 'align-wide' );
		add_theme_support( 'wp-block-styles' );

        add_theme_support( 'custom-background', apply_filters( 'pixel_hair_spa_custom_background', array(
            'default-color' => 'ffffff',
            'default-image' => '',
        )));
        
        add_theme_support( 'responsive-embeds' );

		add_theme_support('custom-header', array(
			'default-image'      => '',
			'width'              => 1920,
			'height'             => 200,
			'flex-height'        => true,
			'flex-width'         => true,
			'uploads'            => true,
		));

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

		define('PIXEL_HAIR_SPA_BUY_NOW',__('https://www.themepixels.net/products/hair-spa-wordpress-theme/','pixel-hair-spa'));
		define('PIXEL_HAIR_SPA_LIVE_DEMO',__('https://www.themepixels.net/demo-site/pixel-hair-spa/','pixel-hair-spa'));
		define('PIXEL_HAIR_SPA_FREE_DOC',__('https://www.themepixels.net/docs/pixel-hair-spa-free/','pixel-hair-spa'));
		define('PIXEL_HAIR_SPA_BUNDLE',__('https://www.themepixels.net/products/wp-theme-bundle/','pixel-hair-spa'));
		define('PIXEL_HAIR_SPA_THEME_SUPPORT',__('https://wordpress.org/support/theme/pixel-hair-spa','pixel-hair-spa'));

		/**
		* FREE DEMO CONTENT.
		*/
		require get_template_directory() . '/inc/free-demo-content/pixel_hair_spa_config_file.php';

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

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

	wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/assets/bootstrap/css/bootstrap.min.css' );
	if ( is_rtl() ){
		wp_enqueue_style( 'bootstrap-rtl', get_template_directory_uri() . '/assets/bootstrap/css/rtl/bootstrap.min.css' );

		wp_enqueue_style( 'pixel-hair-spa-rtl-style', get_template_directory_uri() . '/rtl.css' );
	}

	// Theme stylesheet.
	wp_enqueue_style( 'pixel-hair-spa-style', get_stylesheet_uri() );
	require get_parent_theme_file_path( '/extra-pixel-customize.php' );
	wp_add_inline_style( 'pixel-hair-spa-style',$pixel_hair_spa_pix_theme_css );

	wp_enqueue_style( 'pixel-hair-spa-style', get_stylesheet_uri() );
	
	wp_enqueue_style( 'fontawesome', get_template_directory_uri() . '/assets/font-awesome/css/all.min.css' );
	
	wp_enqueue_style( 'owl.carousel.css', get_template_directory_uri() . '/assets/css/owl.carousel.css' );
	wp_enqueue_style( 'roboto-google-font', 'https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap', false );

	$scripts = array(
		array(
			'id'     => 'bootstrap',
			'url'    => get_template_directory_uri() . '/assets/bootstrap/js/bootstrap.min.js',
			'footer' => true
		),
		array(
			'id'     => 'owl.carousel.js',
			'url'    => get_template_directory_uri() . '/assets/js/owl.carousel.js',
			'footer' => true
		),
		array(
			'id'     => 'pixel-hair-spa-custom',
			'url'    => get_template_directory_uri() . '/assets/js/custom.js',
			'footer' => true
		)
	);

	pixel_hair_spa_add_scripts( $scripts );

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

// Change number or products per row to 6
	add_filter('loop_shop_columns', 'pixel_hair_spa_loop_columns');
	if (!function_exists('pixel_hair_spa_loop_columns')) {
		function pixel_hair_spa_loop_columns() {
			$pixel_hair_spa_columns = get_theme_mod( 'pixel_hair_spa_per_columns', 3 );
			return $pixel_hair_spa_columns;
		}
	}

	//Change number of products that are displayed per page (shop page)
	add_filter( 'loop_shop_per_page', 'pixel_hair_spa_per_page', 10 );
	function pixel_hair_spa_per_page( $pixel_hair_spa_cols ) {
	  	$pixel_hair_spa_cols = get_theme_mod( 'pixel_hair_spa_product_per_page', 10 );
		return $pixel_hair_spa_cols;
	}

	function pixel_hair_spa_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 );
	}


function pixel_hair_spa_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 pixel_hair_spa_sanitize_checkbox( $input ) {
    // Boolean check
    return ( ( isset( $input ) && true == $input ) ? true : false );
}

/*radio button sanitization*/
function pixel_hair_spa_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;
    }
}


/**
* Add script
* 
* @since Pixel Hair Spa 1.0.0
*/
function pixel_hair_spa_add_scripts( $scripts ){
	foreach ( $scripts as $key => $value ) {
		wp_enqueue_script( $value['id'] , $value['url'] , array( 'jquery', 'jquery-masonry' ), 0.8, $value['footer'] );
	}
}

/**
 * Sanitizes Image Upload.
 *
 * @param string $input potentially dangerous data.
 */
function pixel_hair_spa_sanitize_image( $input ) {
	$filetype = wp_check_filetype( $input );
	if ( $filetype['ext'] && wp_ext2type( $filetype['ext'] ) === 'image' ) {
		return esc_url( $input );
	}
	return '';
}

// Sanitization function to ensure it's an integer within the range
function pixel_hair_spa_sanitize_number( $input ) {
    $input = absint( $input ); // Convert to a non-negative integer
    return ( $input >= 1 && $input <= 6 ) ? $input : 1; // Return input if within range, or default to 1
}

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

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

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

/**
 * Dynamic CSS.
 */
require get_template_directory() . '/inc/customizer/loader.php';

/**
* GET START.
*/
require get_template_directory() . '/themeinfo/pixel_hair_spa_themeinfo_page.php';

/**
 * Typography Fonts
 */
require get_template_directory() . '/inc/typography-settings/typography-fonts.php';

// NOTICE FUNCTION
function pixel_hair_spa_activation_notice() {
    if (get_option('pixel_hair_spa_notice_dismissed')) {
        return;
    }

    if (isset($_GET['page']) && $_GET['page'] === 'pixel-hair-spa-themeinfo-page') {
        return;
    }
    ?>
    <div class="updated notice notice-theme-info-class is-dismissible" data-notice="theme_info">
        <div class="pixel-hair-spa-theme-info-notice clearfix">
            <div class="pixel-hair-spa-theme-notice-content">
								<div class="notice-content">
					<div class="inner-notice-contetn">
						<h2 class="pixel-hair-spa-notice-h2">
							<?php
							printf(
								/* translators: 1: Theme name */
								esc_html__('Hello! Thank you for choosing our %1$s!', 'pixel-hair-spa'), '<strong>' . esc_html(wp_get_theme()->get('Name')) . '</strong>'
							);
							?>
						</h2>

						<p class="pixel-hair-spa-notice-p">
							<?php
							printf(
								/* translators: 1: Theme name */
								esc_html__('%1$s has been successfully installed and is ready for use. The links below will help you get started.', 'pixel-hair-spa'), '<strong>' . esc_html(wp_get_theme()->get('Name')) . '</strong>'
							);
							?>
						</p>
					</div>
					<div class="inner-notice-buttons">
						<a class="pixel-hair-spa-btn-theme-info button button-primary" target="_blank" href="<?php echo esc_url(admin_url('themes.php?page=pixel-hair-spa-themeinfo-page')); ?>" id="pixel-hair-spa-themeinfo-button"> <?php esc_html_e('Pixel Hair Spa Theme Information', 'pixel-hair-spa') ?></a>
						
						<a class="pixel-hair-spa-btn-theme-info button button-primary buy-noww" target="_blank" href="<?php echo esc_url(PIXEL_HAIR_SPA_BUY_NOW); ?>" id="pixel-hair-spa-bundle-button"> <?php esc_html_e('Buy Now', 'pixel-hair-spa') ?></a>
						<a class="pixel-hair-spa-btn-theme-info button button-primary bundlee" target="_blank" href="<?php echo esc_url(PIXEL_HAIR_SPA_BUNDLE); ?>" id="pixel-hair-spa-bundle-button"> <?php esc_html_e('Get All Themes', 'pixel-hair-spa') ?></a>
						<a class="pixel-hair-spa-btn-theme-info button button-primary live-demoo" target="_blank" href="<?php echo esc_url(PIXEL_HAIR_SPA_LIVE_DEMO); ?>" id="pixel-hair-spa-bundle-button"> <?php esc_html_e('Live Demo', 'pixel-hair-spa') ?></a>
					</div>
				</div>
				<div class="notice-image">
					<img src="<?php echo esc_url( get_stylesheet_directory_uri() . '/assets/images/bundle-img.png' ); ?>" alt="<?php esc_attr_e( 'Theme Screenshot', 'pixel-hair-spa' ); ?>">
				</div>
            </div>
        </div>
    </div>
    <?php
}

add_action('admin_notices', 'pixel_hair_spa_activation_notice');

add_action('wp_ajax_pixel_hair_spa_dismiss_notice', 'pixel_hair_spa_dismiss_notice');

function pixel_hair_spa_notice_status() {
    delete_option('pixel_hair_spa_notice_dismissed');
}
add_action('after_switch_theme', 'pixel_hair_spa_notice_status');

function pixel_hair_spa_dismiss_notice() {
    update_option('pixel_hair_spa_notice_dismissed', true);
    wp_send_json_success();
}

function pixel_hair_spa_admin_enqueue_scripts(){
	wp_enqueue_style('pixel-hair-spa-admin-style', esc_url( get_template_directory_uri() ) . '/assets/css/pixel-hair-spa-notice.css');
	wp_enqueue_script('pixel-hair-spa-dismiss-notice-script', get_stylesheet_directory_uri() . '/assets/js/pixel-hair-spa-notice.js', array('jquery'), null, true);
}
add_action( 'admin_enqueue_scripts', 'pixel_hair_spa_admin_enqueue_scripts' );

function pixel_hair_spa_remove_customize_register() {
    global $wp_customize;

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

}

add_action( 'customize_register', 'pixel_hair_spa_remove_customize_register', 11 );