<?php

/**
 * Beauty Store functions and definitions
 *
 * @link https://developer.wordpress.org/themes/basics/theme-functions/
 *
 * @package Beauty Store
 */

function beauty_store_files_setup() {

    if ( ! defined( 'BEAUTY_COSMETIC_STORE_URL' ) ) {
        define( 'BEAUTY_COSMETIC_STORE_URL', esc_url( 'https://www.themagnifico.net/products/cosmetic-store-wordpress-theme', 'beauty-store') );
    }
    if ( ! defined( 'BEAUTY_COSMETIC_STORE_TEXT' ) ) {
        define( 'BEAUTY_COSMETIC_STORE_TEXT', __( 'Beauty Store Pro','beauty-store' ));
    }
    if ( ! defined( 'BEAUTY_COSMETIC_STORE_CONTACT_SUPPORT' ) ) {
        define('BEAUTY_COSMETIC_STORE_CONTACT_SUPPORT',__('https://wordpress.org/support/theme/beauty-store/','beauty-store'));
    }
    if ( ! defined( 'BEAUTY_COSMETIC_STORE_REVIEW' ) ) {
        define('BEAUTY_COSMETIC_STORE_REVIEW',__('https://wordpress.org/support/theme/beauty-store/reviews/','beauty-store'));
    }
}

add_action( 'after_setup_theme', 'beauty_store_files_setup' );

function beauty_store_enqueue_styles() {
    wp_enqueue_style( 'bootstrap-css', get_template_directory_uri() . '/assets/css/bootstrap.css');
    $beauty_store_parentcss = 'beauty-cosmetic-store-style';
    $beauty_store_theme = wp_get_theme(); wp_enqueue_style( $beauty_store_parentcss, get_template_directory_uri() . '/style.css', array(), $beauty_store_theme->parent()->get('Version'));
    wp_enqueue_style( 'beauty-store-style', get_stylesheet_uri(), array( $beauty_store_parentcss ), $beauty_store_theme->get('Version'));

    require get_theme_file_path( '/custom-option.php' );
    wp_add_inline_style( 'beauty-store-style',$beauty_store_theme_css );
    require get_parent_theme_file_path( '/custom-option.php' );
    wp_add_inline_style( 'beauty-cosmetic-store-style',$beauty_cosmetic_store_theme_css );

    wp_enqueue_script( 'comment-reply', '/wp-includes/js/comment-reply.min.js', array(), false, true ); 
}

add_action( 'wp_enqueue_scripts', 'beauty_store_enqueue_styles' );

if ( ! function_exists( 'beauty_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 beauty_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('beauty-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( 'beauty_cosmetic_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' );
        add_action('wp_ajax_beauty_store_dismissable_notice', 'beauty_store_dismissable_notice');
    }
endif;
add_action( 'after_setup_theme', 'beauty_store_setup' );

/**
 * Register widget area.
 *
 * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
 */
function beauty_store_widgets_init() {
        register_sidebar( array(
        'name'          => esc_html__( 'Sidebar', 'beauty-store' ),
        'id'            => 'sidebar',
        'description'   => esc_html__( 'Add widgets here.', 'beauty-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', 'beauty_store_widgets_init' );

function beauty_store_remove_my_action() {
    remove_action( 'remove_menu_page','beauty-cosmetic-store-info' );
    remove_action( 'admin_menu','demo_importer_admin_page' );
    remove_action( 'admin_enqueue_scripts', 'beauty_cosmetic_store_getpage_css' );
    remove_action( 'admin_notices', 'beauty_cosmetic_store_deprecated_hook_admin_notice' );
    remove_action( 'remove_menu_page','beauty-cosmetic-store-info' );
    remove_action( 'admin_menu','beauty_cosmetic_store_demo_importer_admin_page' );
    remove_action( 'admin_notices','beauty_cosmetic_store_deprecated_hook_admin_notice' );
}
add_action( 'after_setup_theme', 'beauty_store_remove_my_action');

function beauty_store_remove_parent_theme_hooks() {
    remove_action('init', 'beauty_store_remove_my_action');
}
add_action('after_setup_theme', 'beauty_store_remove_parent_theme_hooks', 20);


add_action('admin_menu', 'beauty_store_remove_my_theme_page', 999);
function beauty_store_remove_my_theme_page() {
    remove_submenu_page('themes.php','beauty-cosmetic-store-info');
}

/**
 * Get CSS
 */

function beauty_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','beauty_store',
        array('admin_ajax'  =>  admin_url('admin-ajax.php'),'wpnonce'  =>   wp_create_nonce('beauty_store_dismissed_notice_nonce')
        )
    );
    wp_enqueue_script('admin-notice-script');

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

//Admin Notice For Getstart
function beauty_store_ajax_notice_handler() {
    if ( isset( $_POST['type'] ) ) {
        $type = sanitize_text_field( wp_unslash( $_POST['type'] ) );
        update_option( 'dismissed-' . $type, TRUE );
    }
}
add_action( 'wp_ajax_beauty_store_ajax_notice_handler', 'beauty_store_ajax_notice_handler' );

function beauty_store_deprecated_hook_admin_notice() {

     // Check if the notice has been dismissed by the user
    $dismissed = get_user_meta(get_current_user_id(), 'beauty_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 ', 'beauty-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.', 'beauty-store'); ?></p>
                <a class="admin-notice-btn button button-primary button-hero" href="<?php echo esc_url( admin_url( 'themes.php?page=beauty-store-info' )); ?>"><?php esc_html_e( 'Get started', 'beauty-store' ) ?></a>
                <a class="admin-notice-btn button button-primary button-hero" target="_blank" href="<?php echo esc_url( BEAUTY_COSMETIC_STORE_GET_PREMIUM_PRO ); ?>"><?php esc_html_e( 'Get Premium ', 'beauty-store' ) ?></a>
                <a class="admin-notice-btn button button-primary button-hero" target="_blank" href="<?php echo esc_url( BEAUTY_COSMETIC_STORE_BUNDLE_LINK ); ?>"><?php esc_html_e( 'Buy All Themes - 120+ Templates', 'beauty-store' ) ?></a>
                <a class="admin-notice-btn button button-primary button-hero" target="_blank" href="<?php echo esc_url( BEAUTY_COSMETIC_STORE_LIVE_DEMO ); ?>">
                    <span class="dashicons dashicons-admin-links"></span>
                    <?php esc_html_e( 'View Demo', 'beauty-store' ) ?>
                </a>
            </div>
        </div>
    <?php }
}

add_action( 'admin_notices', 'beauty_store_deprecated_hook_admin_notice' );

function beauty_store_switch_theme() {
    delete_user_meta(get_current_user_id(), 'beauty_store_dismissable_notice');
}
add_action('after_switch_theme', 'beauty_store_switch_theme');
function beauty_store_dismissable_notice() {
    check_ajax_referer( 'beauty_store_dismissed_notice_nonce' );
    update_user_meta(get_current_user_id(), 'beauty_store_dismissable_notice', true);
    wp_die();
}

// Demo Content Code

// Ensure WordPress is loaded
if (!defined('ABSPATH')) {
    exit;
}

// Add the AJAX action to trigger theme mods import
add_action('wp_ajax_import_theme_mods', 'beauty_store_demo_importer_ajax_handler');

// Handle the AJAX request
function beauty_store_demo_importer_ajax_handler() {
    check_ajax_referer( 'theme_importer_nonce' );
    if ( ! current_user_can( 'edit_theme_options' ) ) { wp_send_json_error( 'Permission denied.' ); return; }
    // Sample data to import
    $theme_mods_data = array(
        'header_textcolor' => '000000',  // Example: change header text color
        'background_color' => 'ffffff',  // Example: change background color
        'custom_logo'      => 123,       // Example: set a custom logo by attachment ID
        'footer_text'      => 'Custom Footer Text', // Example: custom footer text
    );

    // Call the function to import theme mods
    if (beauty_store_demo_theme_importer($theme_mods_data)) {
        // After importing theme mods, create the menu
        beauty_store_create_demo_menu();
        wp_send_json_success(array(
            'msg' => 'Theme mods imported successfully.',
            'redirect' => home_url()
        ));
    } else {
        wp_send_json_error('Failed to import theme mods.');
    }

    wp_die();
}

// Function to set theme mods
function beauty_store_demo_theme_importer($import_data) {
    if (is_array($import_data)) {
        foreach ($import_data as $mod_name => $mod_value) {
            set_theme_mod($mod_name, $mod_value);
        }
        return true;
    } else {
        return false;
    }
}

// Function to create demo menu
function beauty_store_create_demo_menu() {

    $menu_structure = [

        [
            'title' => 'Home',
            'slug'  => 'home',
            'template' => 'page-template/home-template.php',
        ],
        [
            'title' => 'Shop',
            'slug'  => 'shop',
            'children' => [
                ['title' => 'Marketing', 'slug' => 'marketing'],
            ]
        ],
        [
            'title' => 'Blog',
            'slug'  => 'blog',
        ],
           
        [
            'title' => 'Cheeks',
            'slug'  => 'cheeks',
            'children' => [
                ['title' => 'Marketing', 'slug' => 'marketing'],
            ]
        ],
        [
            'title' => 'Pages',
            'slug'  => 'pages',
            'children' => [
                ['title' => 'Marketing', 'slug' => 'marketing'],
            ]
        ],
        [
            'title' => 'Contact Us',
            'slug'  => 'contact us',
        ],
    ];

    // ----------------------------------------------------
    // Do not modify below this line unless needed
    // ----------------------------------------------------

    $created_pages = [];

    $menu_name = 'Primary Menu';
    $location  = 'primary';
    $menu = wp_get_nav_menu_object($menu_name);

    $menu_id = (!$menu) ? wp_create_nav_menu($menu_name) : $menu->term_id;

    $create_page_and_menu = function($item, $parent_menu_id = 0, $parent_page_id = 0) 
        use (&$create_page_and_menu, &$created_pages, $menu_id) {

        $pages = get_posts( array( 'post_type' => 'page', 'title' => $item['title'], 'post_status' => 'publish', 'numberposts' => 1 ) );
            $page = ! empty( $pages ) ? $pages[0] : null;

        if (!$page) {
            $page_id = wp_insert_post([
                'post_title'   => $item['title'],
                'post_type'    => 'page',
                'post_status'  => 'publish',
                'post_name'    => $item['slug'],
                'post_parent'  => $parent_page_id,
                'post_content' => !empty($item['content']) ? $item['content'] : '',
            ]);

            if (!empty($item['template'])) {
                update_post_meta($page_id, '_wp_page_template', $item['template']);
            }

        } else {
            $page_id = $page->ID;
        }

        $created_pages[$item['title']] = $page_id;

        $menu_item_id = wp_update_nav_menu_item($menu_id, 0, [
            'menu-item-title'     => $item['title'],
            'menu-item-object'    => 'page',
            'menu-item-object-id' => $page_id,
            'menu-item-type'      => 'post_type',
            'menu-item-parent-id' => $parent_menu_id,
            'menu-item-status'    => 'publish'
        ]);

        if (!empty($item['children'])) {
            foreach ($item['children'] as $child) {
                $create_page_and_menu($child, $menu_item_id, $page_id);
            }
        }
    };

    foreach ($menu_structure as $item) {
        $create_page_and_menu($item);
    }

    if (!empty($created_pages['Home'])) {
        update_option('page_on_front', $created_pages['Home']);
        update_option('show_on_front', 'page');
    }

    if (!empty($created_pages['Blog'])) {
        update_option('page_for_posts', $created_pages['Blog']);
    }

    $locations = get_theme_mod('nav_menu_locations');
    $locations[$location] = $menu_id;
    set_theme_mod('nav_menu_locations', $locations);

    //Popular Categories
    if (class_exists('WooCommerce')) {

        // Define category with name, slug, description
        $categories = [
            [
                'name' => 'Hair Care',
                'slug' => 'hair-care',
                'image' => 'category/cat1.png' // Must be in your theme/demo importer images folder
            ],
            [
                'name' => 'Skin Care',
                'slug' => 'skin-care',
                'image' => 'category/cat2.png'
            ],
            [
                'name' => 'Lipstick',
                'slug' => 'lipstick',
                'image' => 'category/cat3.png'
            ],
            [
                'name' => 'Face Pack',
                'slug' => 'face-pack',
                'image' => 'category/cat4.png'
            ],
            [
                'name' => 'Blusher',
                'slug' => 'blusher',
                'image' => 'category/cat5.png'
            ],
            [
                'name' => 'Natural',
                'slug' => 'natural',
                'image' => 'category/cat6.png'
            ],
            [
                'name' => 'Body Care',
                'slug' => 'body-care',
                'image' => 'category/cat7.png'
            ],
            [
                'name' => 'Cheeks',
                'slug' => 'cheeks',
                'image' => 'category/cat8.png'
            ],
            [
                'name' => 'Eyes',
                'slug' => 'eyes',
                'image' => 'category/cat9.png'
            ],
            [
                'name' => 'Nails',
                'slug' => 'nails',
                'image' => 'category/cat10.png'
            ]
        ];

        foreach ($categories as $cat) {
            // Create the product category
            $result = wp_insert_term(
                $cat['name'],
                'product_cat',
                [
                    'slug' => $cat['slug'],
                    'description' => $cat['description'],
                ]
            );

            // Only proceed if category was inserted without error
            if (!is_wp_error($result)) {
                $term_id = $result['term_id'];

                // Upload the image and get attachment ID
                $image_path = get_template_directory() . '/assets/img/' . $cat['image'];
                $upload = wp_upload_bits($cat['image'], null, file_get_contents($image_path));
                
                if (!$upload['error']) {
                    $attachment = [
                        'post_mime_type' => 'image/jpeg',
                        'post_title' => sanitize_file_name($cat['image']),
                        'post_content' => '',
                        'post_status' => 'inherit'
                    ];

                    $attach_id = wp_insert_attachment($attachment, $upload['file']);
                    require_once(ABSPATH . 'wp-admin/includes/image.php');
                    $attach_data = wp_generate_attachment_metadata($attach_id, $upload['file']);
                    wp_update_attachment_metadata($attach_id, $attach_data);

                    // Assign image to category
                    update_term_meta($term_id, 'thumbnail_id', $attach_id);
                }
            }
        }
    }

    
    //Top Header
    set_theme_mod( 'beauty_cosmetic_store_facebook_icon', 'fab fa-facebook-f' );
    set_theme_mod( 'beauty_cosmetic_store_facebook_url', 'www.facebook.com' );
    set_theme_mod( 'beauty_cosmetic_store_twitter_icon', 'fab fa-twitter' );
    set_theme_mod( 'beauty_cosmetic_store_twitter_url', 'www.twitter.com' );
    set_theme_mod( 'beauty_cosmetic_store_intagram_icon', 'fab fa-instagram' );
    set_theme_mod( 'beauty_cosmetic_store_intagram_url', 'www.instagram.com' );
    set_theme_mod( 'beauty_cosmetic_store_linkedin_icon', 'fab fa-linkedin-in' );
    set_theme_mod( 'beauty_cosmetic_store_linkedin_url', 'www.linkedin.com' );
    set_theme_mod( 'beauty_cosmetic_store_pintrest_icon', 'fab fa-pinterest-p' );
    set_theme_mod( 'beauty_cosmetic_store_pintrest_url', 'www.pinterest.com' );
    set_theme_mod( 'beauty_cosmetic_store_topbar_text', 'Enjoy Free Shipping For Orders Over $30!' );
    set_theme_mod( 'beauty_cosmetic_store_topbar_text_button_url', '#' );
    set_theme_mod( 'beauty_cosmetic_store_phone_text', 'Hotline 24/7' );
    set_theme_mod( 'beauty_cosmetic_store_phone_number', '(025) 3686 25 16' );
    set_theme_mod( 'beauty_cosmetic_store_header_sell_button', 'Sell on swoo' );
    set_theme_mod( 'beauty_cosmetic_store_header_sell_button_url', '#' );
    set_theme_mod( 'beauty_cosmetic_store_header_tracking_button', 'Order Tracking' );
    set_theme_mod( 'beauty_cosmetic_store_header_tracking_button_url', '#' );
    set_theme_mod( 'beauty_cosmetic_store_header_recent_view_button', 'Recently Viewed' );
    set_theme_mod( 'beauty_cosmetic_store_header_recent_view_url', '#' );
    set_theme_mod( 'beauty_cosmetic_store_topbar1_wishlist_url', '#' );

    //Slider
    set_theme_mod( 'beauty_cosmetic_store_activities_section_setting', true );
    set_theme_mod( 'beauty_cosmetic_store_services_heading', 'Popular Categories' );

    //Slider
    set_theme_mod( 'beauty_cosmetic_store_slider_section_setting', true );

    for($i=1;$i<=3;$i++){
         $title = 'Free Shipping Beauty';
         $content = 'Shop Top Quality Haircare, Makeup, Skincare, Nailcare &amp; Much More.';
            // Create post object
         $my_post = array(
         'post_title'    => wp_strip_all_tags( $title ),
         'post_content'  => $content,
         'post_status'   => 'publish',
         'post_type'     => 'page',
         );

         // Insert the post into the database
         $post_id = wp_insert_post( $my_post );

         if ($post_id) {
            // Set the theme mod for the slider page
            set_theme_mod('beauty_cosmetic_store_top_slider_page' . $i, $post_id);

            $image_url = get_theme_file_uri().'/assets/img/slider.png';

            $image_id = media_sideload_image($image_url, $post_id, null, 'id');

                if (!is_wp_error($image_id)) {
                    // Set the downloaded image as the post's featured image
                    set_post_thumbnail($post_id, $image_id);
                }
        }
    }

    set_theme_mod( 'beauty_cosmetic_store_image_box_1_image', get_theme_file_uri().'/assets/img/box1.png' );
    set_theme_mod( 'beauty_cosmetic_store_contact_image_box_1_heading', 'Beauty & Care' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_1_content', 'From $299' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_1_button_url', '#' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_2_image', get_template_directory_uri().'/assets/img/box2.png' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_2_heading', 'Get Your 50% Off' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_2_content', 'Nourish your skin with toxin-free cosmetic products.' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_2_button_url', '#' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_3_image', get_template_directory_uri().'/assets/img/box3.png' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_3_heading', 'Check This Out' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_3_content', '$169' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_4_image', get_template_directory_uri().'/assets/img/box4.png' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_4_heading', 'Body Lotion' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_4_content' ,'$39' );
    set_theme_mod( 'beauty_cosmetic_store_image_box_4_button_url' ,'#' );
    
}
// Enqueue necessary scripts
add_action('admin_enqueue_scripts', 'beauty_store_demo_importer_enqueue_scripts');

function beauty_store_demo_importer_enqueue_scripts() {
    wp_enqueue_script(
        'demo-theme-importer',
        get_template_directory_uri() . '/assets/js/theme-importer.js', // Path to your JS file
        array('jquery'),
        null,
        true
    );

    wp_enqueue_style('demo-importer-style', get_template_directory_uri() . '/assets/css/importer.css', array(), '');

    // Localize script to pass AJAX URL to JS
    wp_localize_script(
        'demo-theme-importer',
        'demoImporter',
        array(
            'ajax_url' => admin_url('admin-ajax.php'),
            'nonce'    => wp_create_nonce('theme_importer_nonce')
        )
    );
}