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

function boutique_garment_store_files_setup() {
    
    define( 'FREE_MNSSP_API_URL', 'https://license.themagnifico.net/api/general/' );

    if ( ! defined( 'DIGITAL_STOREFRONT_URL' ) ) {
        define( 'DIGITAL_STOREFRONT_URL', esc_url( 'https://www.themagnifico.net/products/garment-wordpress-theme', 'boutique-garment-store') );
    }
    if ( ! defined( 'DIGITAL_STOREFRONT_TEXT' ) ) {
        define( 'DIGITAL_STOREFRONT_TEXT', __( 'Boutique Store Pro','boutique-garment-store' ));
    }
    if ( ! defined( 'DIGITAL_STOREFRONT_CONTACT_SUPPORT' ) ) {
        define('DIGITAL_STOREFRONT_CONTACT_SUPPORT',__('https://wordpress.org/support/theme/boutique-garment-store/','boutique-garment-store'));
    }
    if ( ! defined( 'DIGITAL_STOREFRONT_REVIEW' ) ) {
        define('DIGITAL_STOREFRONT_REVIEW',__('https://wordpress.org/support/theme/boutique-garment-store/reviews/#new-post','boutique-garment-store'));
    }
    if ( ! defined( 'DIGITAL_STOREFRONT_LIVE_DEMO' ) ) {
        define('DIGITAL_STOREFRONT_LIVE_DEMO',__('https://demo.themagnifico.net/boutique-garment-store/','boutique-garment-store'));
    }
    if ( ! defined( 'DIGITAL_STOREFRONT_GET_PREMIUM_PRO' ) ) {
        define('DIGITAL_STOREFRONT_GET_PREMIUM_PRO',__('https://www.themagnifico.net/products/garment-wordpress-theme','boutique-garment-store'));
    }
    if ( ! defined( 'DIGITAL_STOREFRONT_PRO_DOC' ) ) {
        define('DIGITAL_STOREFRONT_PRO_DOC',__('https://demo.themagnifico.net/eard/wathiqa/boutique-garment-store-doc/','boutique-garment-store'));
    }
    if ( ! defined( 'DIGITAL_STOREFRONT_BUY_TEXT' ) ) {
        define( 'DIGITAL_STOREFRONT_BUY_TEXT', __( 'Buy Boutique Store Pro','boutique-garment-store' ));
    }
    if ( ! defined( 'DIGITAL_STOREFRONT_FREE_DOC' ) ) {
        define('DIGITAL_STOREFRONT_FREE_DOC',__('https://demo.themagnifico.net/eard/wathiqa/boutique-garment-store-free-doc/','boutique-garment-store'));
    }
    if ( ! defined( 'DIGITAL_STOREFRONT_BUNDLE_LINK' ) ) {
        define('DIGITAL_STOREFRONT_BUNDLE_LINK',__('https://www.themagnifico.net/products/wordpress-theme-bundle','boutique-garment-store'));
    }

}

add_action( 'after_setup_theme', 'boutique_garment_store_files_setup' );

function boutique_garment_store_enqueue_styles() {
    
    $parentcss = 'digital-storefront-style';
    $theme = wp_get_theme(); wp_enqueue_style( $parentcss, get_template_directory_uri() . '/style.css', array(), $theme->parent()->get('Version'));
    wp_enqueue_style( 'boutique-garment-store-style', get_stylesheet_uri(), array( $parentcss ), $theme->get('Version'));

    require get_theme_file_path( '/custom-option.php' );
    wp_add_inline_style( 'boutique-garment-store-style',$digital_storefront_theme_css );
    require get_parent_theme_file_path( '/custom-option.php' );
    wp_add_inline_style( 'digital-storefront-style',$digital_storefront_theme_css );

    wp_enqueue_script( 'comment-reply', '/wp-includes/js/comment-reply.min.js', array(), false, true );  
    
    wp_enqueue_style( 'flatly-css', esc_url(get_template_directory_uri()) . '/assets/css/flatly.css');
}

add_action( 'wp_enqueue_scripts', 'boutique_garment_store_enqueue_styles' );
function boutique_garment_store_admin_scripts() {
    // demo CSS
    wp_enqueue_style( 'boutique-garment-store-demo-css', get_theme_file_uri( 'assets/css/demo.css' ) );
}
add_action( 'admin_enqueue_scripts', 'boutique_garment_store_admin_scripts' );

function boutique_garment_store_customize_register($wp_customize){ 

// Pro Version
    class Boutique_Garment_Store_Pro_Version extends WP_Customize_Control {
        public $type = 'pro_options';

        public function render_content() {
            echo '<span>For More <strong>'. esc_html( $this->label ) .'</strong>?</span>';
            echo '<a href="'. esc_url($this->description) .'" target="_blank">';
                echo '<span class="dashicons dashicons-info"></span>';
                echo '<strong> '. esc_html( DIGITAL_STOREFRONT_BUY_TEXT,'boutique-garment-store' ) .'<strong></a>';
            echo '</a>';
        }
    }

    // Custom Controls
    function Boutique_Garment_Store_sanitize_custom_control( $input ) {
        return $input;
    }

    //Product
    $wp_customize->add_section('boutique_garment_store_new_product',array(
        'title' => esc_html__('New Arrival Product','boutique-garment-store'),
        'description' => esc_html__('Here you have to select product category which will display perticular new arrival product in the home page.','boutique-garment-store')
    ));

    $wp_customize->add_setting('boutique_garment_store_new_product_title',array(
        'default' => '',
        'sanitize_callback' => 'sanitize_text_field'
    ));
    $wp_customize->add_control('boutique_garment_store_new_product_title',array(
        'label' => esc_html__('Title','boutique-garment-store'),
        'section' => 'boutique_garment_store_new_product',
        'setting' => 'boutique_garment_store_new_product_title',
        'type'  => 'text'
    ));

    $wp_customize->add_setting('boutique_garment_store_new_product_text',array(
        'default' => '',
        'sanitize_callback' => 'sanitize_text_field'
    ));
    $wp_customize->add_control('boutique_garment_store_new_product_text',array(
        'label' => esc_html__('Text','boutique-garment-store'),
        'section' => 'boutique_garment_store_new_product',
        'setting' => 'boutique_garment_store_new_product_text',
        'type'  => 'text'
    ));

    $wp_customize->add_setting('boutique_garment_store_new_product_number',array(
        'default' => '',
        'sanitize_callback' => 'absint'
    )); 
    $wp_customize->add_control('boutique_garment_store_new_product_number',array(
        'label' => esc_html__('No of Product','boutique-garment-store'),
        'section' => 'boutique_garment_store_new_product',
        'setting' => 'boutique_garment_store_new_product_number',
        'type'  => 'number'
    ));

    $args = array(
       'type'                     => 'product',
        'child_of'                 => 0,
        'parent'                   => '',
        'orderby'                  => 'term_group',
        'order'                    => 'ASC',
        'hide_empty'               => false,
        'hierarchical'             => 1,
        'number'                   => '',
        'taxonomy'                 => 'product_cat',
        'pad_counts'               => false
    );
    $categories = get_categories( $args );
    $cats = array();
    $i = 0;
    foreach($categories as $category){
        if($i==0){
            $default = $category->slug;
            $i++;
        } 
        $cats[$category->slug] = $category->name;
    }
    $wp_customize->add_setting('boutique_garment_store_new_product_category',array(
        'sanitize_callback' => 'boutique_garment_store_sanitize_select',
    ));
    $wp_customize->add_control('boutique_garment_store_new_product_category',array(
        'type'    => 'select',
        'choices' => $cats,
        'label' => __('Select Product Category','boutique-garment-store'),
        'section' => 'boutique_garment_store_new_product',
    ));
    // Pro Version
    $wp_customize->add_setting( 'pro_version_product_pro_option', array(
        'sanitize_callback' => 'Boutique_Garment_Store_sanitize_custom_control'
    ));
    $wp_customize->add_control( new Boutique_Garment_Store_Pro_Version ( $wp_customize,'pro_version_product_pro_option', array(
        'section'     => 'boutique_garment_store_new_product',
        'type'        => 'pro_options',
        'label'       => esc_html__( 'Customizer Options', 'boutique-garment-store' ),
        'description' => esc_url( DIGITAL_STOREFRONT_URL ),
        'priority'    => 100
    )));
}
add_action('customize_register', 'boutique_garment_store_customize_register');

if ( ! function_exists( 'boutique_garment_store_setup' ) ) :
    /**
     * Sets up theme defaults and registers support for various WordPress features.
     *
     * Note that this function is hooked into the after_setup_theme hook, which
     * runs before the init hook. The init hook is too late for some features, such
     * as indicating support for post thumbnails.
     */
    function boutique_garment_store_setup() {

        add_theme_support( 'responsive-embeds' );

        // Add default posts and comments RSS feed links to head.
        add_theme_support( 'automatic-feed-links' );

        /*
         * 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' );

        /*
         * Enable support for Post Thumbnails on posts and pages.
         *
         * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
         */
        add_theme_support( 'post-thumbnails' );

        add_image_size('boutique-garment-store-featured-header-image', 2000, 660, true);

        /*
         * Switch default core markup for search form, comment form, and comments
         * to output valid HTML5.
         * to output valid HTML5.
         */
        add_theme_support( 'html5', array(
            'search-form',
            'comment-form',
            'comment-list',
            'gallery',
            'caption',
        ) );

        // Set up the WordPress core custom background feature.
        add_theme_support( 'custom-background', apply_filters( 'boutique_garment_store_custom_background_args', array(
            'default-color' => '',
            'default-image' => '',
        ) ) );

        /**
         * Add support for core custom logo.
         *
         * @link https://codex.wordpress.org/Theme_Logo
         */
        add_theme_support( 'custom-logo', array(
            'height'      => 50,
            'width'       => 50,
            'flex-width'  => true,
        ) );

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

        add_theme_support( 'align-wide' );

        add_theme_support( 'wp-block-styles' );
    }
endif;
add_action( 'after_setup_theme', 'boutique_garment_store_setup' );

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

function boutique_garment_store_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 boutique_garment_store_remove_my_action() {
    remove_action( 'remove_menu_page','digital-storefront-info' );
    remove_action( 'admin_menu','demo_importer_admin_page' );
    remove_action( 'admin_notices','digital_storefront_deprecated_hook_admin_notice' );
}
add_action( 'init', 'boutique_garment_store_remove_my_action');

add_action('admin_menu', 'remove_my_theme_page', 999);
function remove_my_theme_page() {
    remove_submenu_page('themes.php','digital-storefront-info');
}

/**
 * Get CSS
 */

function boutique_garment_store_getpage_css($hook) {
    wp_register_script( 'admin-notice-script', get_stylesheet_directory_uri() . '/inc/admin/js/admin-notice-script.js', array( 'jquery' ) );
    wp_localize_script('admin-notice-script','boutique_garment_store',
        array('admin_ajax'  =>  admin_url('admin-ajax.php'),'wpnonce'  =>   wp_create_nonce('boutique_garment_store_dismissed_notice_nonce')
        )
    );
    wp_enqueue_script('admin-notice-script');

    wp_localize_script( 'admin-notice-script', 'boutique_garment_store_ajax_object',
        array( 'ajax_url' => admin_url( 'admin-ajax.php' ) )
    );
    if ( 'appearance_page_boutique-garment-store-info' != $hook ) {
        return;
    }
}
add_action( 'admin_enqueue_scripts', 'boutique_garment_store_getpage_css' );

//Admin Notice For Getstart
function boutique_garment_store_ajax_notice_handler() {
	check_ajax_referer( 'boutique_garment_store_dismissed_notice_nonce', 'wpnonce' );
    if ( isset( $_POST['type'] ) ) {
        $type = sanitize_text_field( wp_unslash( $_POST['type'] ) );
        update_option( 'dismissed-' . $type, TRUE );
	wp_die();
}
}

function boutique_garment_store_deprecated_hook_admin_notice() {

     // Check if the notice has been dismissed by the user
    $dismissed = get_user_meta(get_current_user_id(), 'boutique_garment_store_dismissable_notice', true);

    // Exclude the notice from being shown on the "Theme Importer" page
    $current_screen = get_current_screen();
    if ($current_screen && $current_screen->id === 'appearance_page_theme-importer') {
        return; // Don't show the notice on this page
    }

    if (!$dismissed) {  
        ?>
        <div class="updated notice notice-success is-dismissible notice-get-started-class" data-notice="get_started" style="background: #f7f9f9; padding: 20px 10px; display: flex;">
            <div class="tm-admin-image">
                <img style="width: 100%;max-width: 320px;line-height: 40px;display: inline-block;vertical-align: top;border: 2px solid #ddd;border-radius: 4px;" src="<?php echo esc_url(get_stylesheet_directory_uri()) .'/screenshot.png'; ?>" />
            </div>
            <div class="tm-admin-content" style="padding-left: 30px; align-self: center">
                <h2 style="font-weight: 600;line-height: 1.3; margin: 0px;"><?php esc_html_e('Thank You For Choosing ', 'boutique-garment-store'); ?><?php echo esc_html( wp_get_theme() ); ?></h2>
                <p style="color: #3c434a; font-weight: 400; margin-bottom: 30px;"><?php esc_html_e('Get Started With Theme By Clicking On Getting Started.', 'boutique-garment-store'); ?></p>
                <a class="admin-notice-btn button button-primary button-hero" href="<?php echo esc_url( admin_url( 'themes.php?page=boutique-garment-store-info.php' )); ?>"><?php esc_html_e( 'Get started', 'boutique-garment-store' ) ?></a>
                <a class="admin-notice-btn button button-primary button-hero" target="_blank" href="<?php echo esc_url( DIGITAL_STOREFRONT_FREE_DOC ); ?>"><?php esc_html_e( 'Documentation', 'boutique-garment-store' ) ?></a>
	        	<a class="admin-notice-btn button button-primary button-hero" target="_blank" href="<?php echo esc_url( DIGITAL_STOREFRONT_BUNDLE_LINK ); ?>"><?php esc_html_e( 'Buy All Themes - 130+ Templates', 'boutique-garment-store' ) ?></a>
                <a class="admin-notice-btn button button-primary button-hero" target="_blank" href="<?php echo esc_url( DIGITAL_STOREFRONT_LIVE_DEMO ); ?>">
	        	<span class="dashicons dashicons-admin-links"></span>
	        	<?php esc_html_e( 'View Demo', 'boutique-garment-store' ) ?></a>
	        	</span>
            </div>
        </div>
    <?php }
}

add_action( 'admin_notices', 'boutique_garment_store_deprecated_hook_admin_notice' );

function boutique_garment_store_switch_theme() {
    delete_user_meta(get_current_user_id(), 'boutique_garment_store_dismissable_notice');
}
add_action('after_switch_theme', 'boutique_garment_store_switch_theme');
function boutique_garment_store_dismissable_notice() {
	check_ajax_referer( 'boutique_garment_store_dismissed_notice_nonce', 'wpnonce' );
    update_user_meta(get_current_user_id(), 'boutique_garment_store_dismissable_notice', true);
    wp_die();
}
