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

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

$Grocery_Marketplace_Loader = new \WPTRT\Autoload\Grocery_Marketplace_Loader();

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

$Grocery_Marketplace_Loader->grocery_marketplace_register();

if ( ! function_exists( 'grocery_marketplace_setup' ) ) :

	function grocery_marketplace_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( 'grocery-marketplace', 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('grocery-marketplace-featured-header-image', 2000, 660, true);

        register_nav_menus( array(
            'primary' => esc_html__( 'Primary','grocery-marketplace' ),
        ) );

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

		add_theme_support( 'custom-background', apply_filters( 'grocery_marketplace_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' ) );
		add_action( 'wp_ajax_grocery_marketplace_dismissable_notice', 'grocery_marketplace_dismissable_notice' );
		add_action( 'wp_ajax_tm-check-plugin-exists', 'tm_check_plugin_exists' );
		add_action( 'wp_ajax_tm_install_and_activate_plugin', 'tm_install_and_activate_plugin' );
	}
endif;
add_action( 'after_setup_theme', 'grocery_marketplace_setup' );

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


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

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

	wp_enqueue_style(
		'josefin-sans',
		grocery_marketplace_wptt_get_webfont_url('https://fonts.googleapis.com/css2?family=Josefin+Sans:ital,wght@0,100..700;1,100..700&display=swap'),  //    font-family: "Josefin Sans", sans-serif;
		array(),
		'1.0'
	);

	wp_enqueue_style(
		'poppins',
		grocery_marketplace_wptt_get_webfont_url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'),  //    font-family: "Poppins", sans-serif;
		array(),
		'1.0'
	);

	wp_enqueue_style( 'grocery-marketplace-block-editor-style', get_theme_file_uri('/assets/css/block-editor-style.css') );
	wp_enqueue_style( 'owl.carousel-css', get_template_directory_uri() . '/assets/css/owl.carousel.css');

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

	wp_enqueue_style( 'grocery-marketplace-style', get_stylesheet_uri() );
	require get_parent_theme_file_path( '/custom-option.php' );
	wp_add_inline_style( 'grocery-marketplace-style',$grocery_marketplace_theme_css );

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

    wp_enqueue_script('grocery-marketplace-theme-js', get_template_directory_uri() . '/assets/js/theme-script.js', array('jquery'), '', true );

    wp_enqueue_script( 'bootstrap', get_template_directory_uri() . '/assets/js/bootstrap.js',array('jquery'),'',true);

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

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

/**
 * Enqueue Preloader.
 */
function grocery_marketplace_preloader() {

  $grocery_marketplace_theme_color_css = '';
  $grocery_marketplace_preloader_bg_color = get_theme_mod('grocery_marketplace_preloader_bg_color');
  $grocery_marketplace_preloader_dot_1_color = get_theme_mod('grocery_marketplace_preloader_dot_1_color');
  $grocery_marketplace_preloader_dot_2_color = get_theme_mod('grocery_marketplace_preloader_dot_2_color');
  $grocery_marketplace_preloader2_dot_color = get_theme_mod('grocery_marketplace_preloader2_dot_color');
  $grocery_marketplace_logo_max_height = get_theme_mod('grocery_marketplace_logo_max_height');
  $grocery_marketplace_scroll_bg_color = get_theme_mod('grocery_marketplace_scroll_bg_color');
  $grocery_marketplace_scroll_color = get_theme_mod('grocery_marketplace_scroll_color');
  $grocery_marketplace_scroll_font_size = get_theme_mod('grocery_marketplace_scroll_font_size');
  $grocery_marketplace_scroll_border_radius = get_theme_mod('grocery_marketplace_scroll_border_radius');
  $grocery_marketplace_related_product_display_setting = get_theme_mod('grocery_marketplace_related_product_display_setting', true);

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

	if(get_theme_mod('grocery_marketplace_preloader_bg_color') == '') {
		$grocery_marketplace_preloader_bg_color = '#0C7735';
	}
	if(get_theme_mod('grocery_marketplace_preloader_dot_1_color') == '') {
		$grocery_marketplace_preloader_dot_1_color = '#ffffff';
	}
	if(get_theme_mod('grocery_marketplace_preloader_dot_2_color') == '') {
		$grocery_marketplace_preloader_dot_2_color = '#222222';
	}

	// Start CSS build
	$grocery_marketplace_theme_color_css = '';

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

	$grocery_marketplace_theme_color_css .= '
		.custom-logo-link img{
			max-height: '.esc_attr($grocery_marketplace_logo_max_height).'px;
	 	}
		.loading{
			background-color: '.esc_attr($grocery_marketplace_preloader_bg_color).';
		 }
		 @keyframes loading {
		  0%,
		  100% {
		  	transform: translatey(-2.5rem);
		    background-color: '.esc_attr($grocery_marketplace_preloader_dot_1_color).';
		  }
		  50% {
		  	transform: translatey(2.5rem);
		    background-color: '.esc_attr($grocery_marketplace_preloader_dot_2_color).';
		  }
		}
		.load hr {
			background-color: '.esc_attr($grocery_marketplace_preloader2_dot_color).';
		}
		a#button{
			background-color: '.esc_attr($grocery_marketplace_scroll_bg_color).';
			color: '.esc_attr($grocery_marketplace_scroll_color).' !important;
			font-size: '.esc_attr($grocery_marketplace_scroll_font_size).'px;
			border-radius: '.esc_attr($grocery_marketplace_scroll_border_radius).'%;
		}
	';
    wp_add_inline_style( 'grocery-marketplace-style',$grocery_marketplace_theme_color_css );

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

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

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

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

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

// Filter to change the number of related products displayed
add_filter( 'woocommerce_output_related_products_args', 'grocery_marketplace_products_args' );
function grocery_marketplace_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 grocery_marketplace_get_page_id_by_title($grocery_marketplace_pagename){
    $args = array(
        'post_type' => 'page',
        'posts_per_page' => 1,
        'post_status' => 'publish',
        'title' => $grocery_marketplace_pagename
    );
    $query = new WP_Query( $args );

    $page_id = '1';
    if (isset($query->post->ID)) {
        $page_id = $query->post->ID;
    }

    return $page_id;
}

/*dropdown page sanitization*/
function grocery_marketplace_sanitize_dropdown_pages( $page_id, $setting ) {
	$page_id = absint( $page_id );
	return ( 'publish' == get_post_status( $page_id ) ? $page_id : $setting->default );
}

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

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


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

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

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

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

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

/**
 * Menu
 */

require get_template_directory() . '/inc/class-navigation-menu.php';



// add_action( 'grocery_marketplace_navigation_action','grocery_marketplace_single_post_navigation',30 );
if( !function_exists('grocery_marketplace_content_offcanvas') ):

    // Offcanvas Contents
    function grocery_marketplace_content_offcanvas(){ ?>

        <div id="offcanvas-menu">
            <div class="offcanvas-wraper">
                <div class="close-offcanvas-menu">
                    <div class="offcanvas-close">
                        <a href="javascript:void(0)" class="skip-link-menu-start"></a>
                        <button type="button" class="button-offcanvas-close">
                            <span class="offcanvas-close-label">
                                <i class="fas fa-times"></i>
                            </span>
                        </button>
                    </div>
                </div>
                <div id="primary-nav-offcanvas" class="offcanvas-item offcanvas-main-navigation">
                    <nav class="primary-menu-wrapper" aria-label="<?php esc_attr_e('Horizontal', 'grocery-marketplace'); ?>" role="navigation">
                        <ul class="primary-menu theme-menu">
                            <?php
                            if (has_nav_menu('primary')) {
                                wp_nav_menu(
                                    array(
                                        'container' => '',
                                        'items_wrap' => '%3$s',
                                        'theme_location' => 'primary',
                                        'show_toggles' => true,
                                    )
                                );
                            }else{

                                wp_list_pages(
                                    array(
                                        'match_menu_classes' => true,
                                        'show_sub_menu_icons' => true,
                                        'title_li' => false,
                                        'show_toggles' => true,
                                        'walker' => new grocery_marketplace_Menu_Page(),
                                    )
                                );
                            }
                            ?>
                        </ul>
                    </nav><!-- .primary-menu-wrapper -->
                </div>
                <a href="javascript:void(0)" class="skip-link-menu-end"></a>
            </div>
        </div>

    <?php
    }

endif;

add_action( 'grocery_marketplace_before_footer_content_action','grocery_marketplace_content_offcanvas',30 );


if ( ! function_exists( 'grocery_marketplace_sub_menu_toggle_button' ) ) :

    function grocery_marketplace_sub_menu_toggle_button( $args, $item, $depth ) {

        // Add sub menu toggles to the main menu with toggles
        if ( $args->theme_location == 'primary' && isset( $args->show_toggles ) ) {
            
            // Wrap the menu item link contents in a div, used for positioning
            $args->before = '<div class="submenu-wrapper">';
            $args->after  = '';

            // Add a toggle to items with children
            if ( in_array( 'menu-item-has-children', $item->classes ) ) {

                $toggle_target_string = '.menu-item.menu-item-' . $item->ID . ' > .sub-menu';

                // Add the sub menu toggle with Font Awesome icon
                $args->after .= '<button type="button" class="theme-aria-button submenu-toggle" data-toggle-target="' . esc_attr( $toggle_target_string ) . '" data-toggle-type="slidetoggle" data-toggle-duration="250" aria-expanded="false"><span class="btn__content" tabindex="-1"><span class="screen-reader-text">' . esc_html__( 'Show sub menu', 'grocery-marketplace' ) . '</span><i class="fas fa-chevron-down"></i></span></button>';

            }

            // Close the wrapper
            $args->after .= '</div><!-- .submenu-wrapper -->';

        } elseif ( $args->theme_location == 'primary' ) {

            if ( in_array( 'menu-item-has-children', $item->classes ) ) {

                $args->before = '<div class="link-icon-wrapper">';
                $args->after  = '<i class="fas fa-chevron-down"></i></div>';

            } else {

                $args->before = '';
                $args->after  = '';

            }

        }

        return $args;

    }

endif;

add_filter( 'nav_menu_item_args', 'grocery_marketplace_sub_menu_toggle_button', 10, 3 );

if ( ! function_exists( 'grocery_marketplace_file_link_setup' ) ) :

	function grocery_marketplace_file_link_setup() {

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

		if ( ! defined( 'GROCERY_MARKETPLACE_CONTACT_SUPPORT' ) ) {
			define('GROCERY_MARKETPLACE_CONTACT_SUPPORT',__('https://wordpress.org/support/theme/grocery-marketplace/','grocery-marketplace'));
		}
		if ( ! defined( 'GROCERY_MARKETPLACE_REVIEW' ) ) {
			define('GROCERY_MARKETPLACE_REVIEW',__('https://wordpress.org/support/theme/grocery-marketplace/reviews/','grocery-marketplace'));
		}
		if ( ! defined( 'GROCERY_MARKETPLACE_LIVE_DEMO' ) ) {
			define('GROCERY_MARKETPLACE_LIVE_DEMO',__('https://demo.themagnifico.net/grocery-marketplace/','grocery-marketplace'));
		}
		if ( ! defined( 'GROCERY_MARKETPLACE_GET_PREMIUM_PRO' ) ) {
			define('GROCERY_MARKETPLACE_GET_PREMIUM_PRO',__('https://www.themagnifico.net/products/marketplace-wordpress-theme','grocery-marketplace'));
		}
		if ( ! defined( 'GROCERY_MARKETPLACE_PRO_DOC' ) ) {
			define('GROCERY_MARKETPLACE_PRO_DOC',__('https://demo.themagnifico.net/eard/wathiqa/lms-education-study-pro-doc/','grocery-marketplace'));
		}
		if ( ! defined( 'GROCERY_MARKETPLACE_FREE_DOC' ) ) {
			define('GROCERY_MARKETPLACE_FREE_DOC',__('https://demo.themagnifico.net/eard/wathiqa/grocery-marketplace-free-doc/','grocery-marketplace'));
		}
		if ( ! defined( 'GROCERY_MARKETPLACE_BUNDLE_LINK' ) ) {
			define('GROCERY_MARKETPLACE_BUNDLE_LINK',__('https://www.themagnifico.net/products/wordpress-theme-bundle','grocery-marketplace'));
		}
	}
endif;
add_action( 'after_setup_theme', 'grocery_marketplace_file_link_setup' );

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

function tm_install_and_activate_plugin() {

	if ( ! isset( $_POST['_ajax_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['_ajax_nonce'] ) ), 'theme_importer_nonce' ) ) {
		wp_send_json_error( 'Invalid nonce.' );
		wp_die();
	}

	if ( ! current_user_can( 'install_plugins' ) ) {
		wp_send_json_error( 'Insufficient permissions.' );
		wp_die();
	}

	$post_plugin_details = isset( $_POST['plugin_details'] ) ? $_POST['plugin_details'] : array();
	$plugin_text_domain = isset( $post_plugin_details['plugin_text_domain'] ) ? sanitize_text_field( wp_unslash( $post_plugin_details['plugin_text_domain'] ) ) : '';
	$plugin_main_file		=	isset( $post_plugin_details['plugin_main_file'] ) ? sanitize_text_field( wp_unslash( $post_plugin_details['plugin_main_file'] ) ) : '';
	$plugin_url					=	isset( $post_plugin_details['plugin_url'] ) ? esc_url_raw( wp_unslash( $post_plugin_details['plugin_url'] ) ) : '';

	$plugin = array(
		'text_domain'	=> $plugin_text_domain,
		'path' 				=> $plugin_url,
		'install' 		=> $plugin_text_domain . '/' . $plugin_main_file
	);

	require_once ABSPATH . 'wp-admin/includes/plugin.php';

	wp_cache_flush();

	$plugin_path = plugin_basename( trim( $plugin['install'] ) );


	$activate_plugin = activate_plugin( $plugin_path );

	// activate_plugin() returns WP_Error on failure, null on success
	if ( is_wp_error( $activate_plugin ) ) {
		wp_send_json_error( $activate_plugin->get_error_message() );
		wp_die();
	}

	$msg = 'installed';

	$response = array( 'status' => true, 'msg' => $msg );
	wp_send_json( $response );
	exit;
}

function tm_check_plugin_exists() {
		if ( ! isset( $_POST['_ajax_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['_ajax_nonce'] ) ), 'theme_importer_nonce' ) ) {
			wp_send_json_error( 'Invalid nonce.' );
			wp_die();
		}
		if ( ! current_user_can( 'install_plugins' ) ) {
			wp_send_json_error( 'Insufficient permissions.' );
			wp_die();
		}
		$plugin_text_domain = isset( $_POST['plugin_text_domain'] ) ? sanitize_text_field( wp_unslash( $_POST['plugin_text_domain'] ) ) : '';
		$main_plugin_file 	= isset( $_POST['main_plugin_file'] ) ? sanitize_text_field( wp_unslash( $_POST['main_plugin_file'] ) ) : '';
		$plugin_path = $plugin_text_domain . '/' . $main_plugin_file;

		require_once ABSPATH . 'wp-admin/includes/plugin.php';

		$get_plugins					= get_plugins();
		$is_plugin_installed	= false;
		$activation_status 		= false;
		if ( isset( $get_plugins[$plugin_path] ) ) {
		$is_plugin_installed = true;

		$activation_status = is_plugin_active( $plugin_path );
		}
		wp_send_json_success(
		array(
		'install_status'  =>	$is_plugin_installed,
			'active_status'		=>	$activation_status,
			'plugin_path'			=>	$plugin_path,
			'plugin_slug'			=>	$plugin_text_domain
		)
		);
}

/**
 * Get CSS
 */

function grocery_marketplace_getpage_css($hook) {
	wp_register_script( 'admin-notice-script', get_template_directory_uri() . '/inc/admin/js/admin-notice-script.js', array( 'jquery' ) );
   	wp_localize_script('admin-notice-script','grocery_marketplace',
		array('admin_ajax'	=>	admin_url('admin-ajax.php'),'wpnonce'  =>	wp_create_nonce('grocery_marketplace_dismissed_notice_nonce')
		)
	);
	wp_enqueue_script('admin-notice-script');

    wp_localize_script( 'admin-notice-script', 'grocery_marketplace_ajax_object',
        array( 'ajax_url' => admin_url( 'admin-ajax.php' ) )
    );
	if ( 'appearance_page_grocery-marketplace-info' != $hook ) {
		return;
	}
}
add_action( 'admin_enqueue_scripts', 'grocery_marketplace_getpage_css' );

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

function grocery_marketplace_deprecated_hook_admin_notice() {

    $grocery_marketplace_dismissed = get_user_meta(get_current_user_id(), 'grocery_marketplace_dismissable_notice', true);
    if ( !$grocery_marketplace_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 ', 'grocery-marketplace'); ?><?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.', 'grocery-marketplace'); ?></p>
	        	<a class="admin-notice-btn button button-primary button-hero"
				href="<?php echo esc_url( admin_url( 'themes.php?page=' . wp_get_theme()->get_template() . '-info' ) ); ?>">
					<?php esc_html_e( 'Get Started', 'grocery-marketplace' ); ?>
				</a>
	        	<a class="admin-notice-btn button button-primary button-hero" target="_blank" href="<?php echo esc_url( GROCERY_MARKETPLACE_GET_PREMIUM_PRO ); ?>"><?php esc_html_e( 'Get Premium ', 'grocery-marketplace' ) ?></a>
	        	<a class="admin-notice-btn button button-primary button-hero" target="_blank" href="<?php echo esc_url( GROCERY_MARKETPLACE_BUNDLE_LINK ); ?>"><?php esc_html_e( 'Buy All Themes - 130+ Templates', 'grocery-marketplace' ) ?></a>
				<a class="admin-notice-btn button button-primary button-hero" target="_blank" href="<?php echo esc_url( GROCERY_MARKETPLACE_LIVE_DEMO ); ?>"><span class="dashicons dashicons-admin-links"></span><?php esc_html_e( 'View Demo', 'grocery-marketplace' ) ?>
	        	</a>
	        	</span>
	    	</div>
        </div>
    <?php }
}

add_action( 'admin_notices', 'grocery_marketplace_deprecated_hook_admin_notice' );

function grocery_marketplace_switch_theme() {
    delete_user_meta(get_current_user_id(), 'grocery_marketplace_dismissable_notice');
}
add_action('after_switch_theme', 'grocery_marketplace_switch_theme');
function grocery_marketplace_dismissable_notice() {
    update_user_meta(get_current_user_id(), 'grocery_marketplace_dismissable_notice', true);
    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', 'grocery_marketplace_demo_importer_ajax_handler');

// Handle the AJAX request
function grocery_marketplace_demo_importer_ajax_handler() {
    // 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 (grocery_marketplace_demo_theme_importer($theme_mods_data)) {
        // After importing theme mods, create the menu
        grocery_marketplace_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 grocery_marketplace_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 grocery_marketplace_create_demo_menu() {

    	 // Define menu with page hierarchy
	    $menu_structure = [
	        [
	            'title' => 'Home',
	            'slug'  => 'home',
	            'template' => 'page-template/home-template.php',
	        ],
	        [
	            'title' => 'About',
	            'slug'  => 'about',
	        ],
	        [
	            'title' => 'Services',
	            'slug'  => 'services',
	            'children' => [
	                ['title' => 'Web Design', 'slug' => 'web-design'],
	                ['title' => 'Marketing', 'slug' => 'marketing'],
	            ]
	        ],
	        [
	            'title' => 'Blog',
	            'slug'  => 'blog',
	        ],
	        [
	            'title' => 'Contact',
	            'slug'  => 'contact',
	        ],
	    ];

	    $created_pages = [];

	    // Create menus if not exist
	    $menu_name = 'Primary Menu';
	    $location  = 'primary';
	    $menu = wp_get_nav_menu_object($menu_name);

	    if (!$menu) {
	        $menu_id = wp_create_nav_menu($menu_name);
	    } else {
	        $menu_id = $menu->term_id;
	    }

	    // Recursive function to create pages + menu items
	    $create_page_and_menu = function($item, $parent_menu_id = 0, $parent_page_id = 0) use (&$create_page_and_menu, &$created_pages, $menu_id) {

	        // Create page if not exists
	        $existing_pages = get_posts( array(
	        	'post_type'      => 'page',
	        	'title'          => $item['title'],
	        	'posts_per_page' => 1,
	        	'no_found_rows'  => true,
	        	'fields'         => 'ids',
	        ) );
	        $page = ! empty( $existing_pages ) ? get_post( $existing_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,
	            ]);

	            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;

	        // Add to menu
	        $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 has children → repeat
	        if (!empty($item['children'])) {
	            foreach ($item['children'] as $child) {
	                $create_page_and_menu($child, $menu_item_id, $page_id);
	            }
	        }
	    };

	    // Loop through menu structure to generate everything
	    foreach ($menu_structure as $item) {
	        $create_page_and_menu($item);
	    }

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

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

	    // Assign menu to theme location
	    $locations = get_theme_mod('nav_menu_locations');
	    $locations[$location] = $menu_id;
	    set_theme_mod('nav_menu_locations', $locations);

    //Top Header

    set_theme_mod( 'grocery_marketplace_topbar_text', 'Good luck with shopping. Call us free 24/7: (555) 172-244-7888' );
    set_theme_mod( 'grocery_marketplace_header_phone_text', 'mer Support' );
    set_theme_mod( 'grocery_marketplace_header_phone_number', '(123) 456-7890' );







	//Slider
    set_theme_mod( 'grocery_marketplace_activities_section_setting', true );
    set_theme_mod( 'grocery_marketplace_slider_short_heading', 'Fresh and Healthy' );
    set_theme_mod( 'grocery_marketplace_slider_free_delivery_heading', 'With Free Delivery' );
    set_theme_mod( 'grocery_marketplace_slider_button_text', 'Shop Now' );
    set_theme_mod( 'grocery_marketplace_slider_offer_heading', '50% Off' );

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

   	require_once ABSPATH . 'wp-admin/includes/file.php';
	require_once ABSPATH . 'wp-admin/includes/media.php';
	require_once ABSPATH . 'wp-admin/includes/image.php';

   	for($i=1;$i<=3;$i++){
         $title = 'Vegetables';
         $content = 'Lorem Ipsum';
            // 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('grocery_marketplace_top_slider_page' . $i, $post_id);

	        $image_url = get_theme_file_path().'/assets/img/banner.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( 'grocery_marketplace_best_sells_section_heading', 'Trending Product' );
    set_theme_mod( 'grocery_marketplace_tab_number', '3' );
	


    set_theme_mod( 'grocery_marketplace_slideproduct_tab1title1', 'New' );
    set_theme_mod( 'grocery_marketplace_slideproduct_tab1title2', 'BestSeller' );
    set_theme_mod( 'grocery_marketplace_slideproduct_tab1title3', 'On Sale' );
	



	$product_category = array(
		'Featured' => array(
			'Cucumber 500 G (Approx. 2000-2500 G)',
			'Potato Per Kg',
			'Sweet Corn 1 Pc',
			'Avocado Premium Imported 6 Pc',
		),
	);
	
	$k = 1;
	
	foreach ( $product_category as $product_cats => $products_name ) {
	
		// Create Product Category
		$content = 'This is sample product category';
	
		$parent_category = wp_insert_term(
			$product_cats,
			'product_cat',
			array(
				'description' => $content,
				'slug' => sanitize_title($product_cats)
			)
		);
	
		if ( is_wp_error( $parent_category ) ) {
			$existing_term = get_term_by( 'slug', sanitize_title( $product_cats ), 'product_cat' );
			$category_id   = $existing_term ? $existing_term->term_id : 0;
		} else {
			$category_id = $parent_category['term_id'];
		}
	
		// Review Text
		$review_text = array(
			'Nice product',
			'Good Quality Product',
			'Nice Product. Must buy It.',
			'I like this Product',
			'Nice Product',
		);
	
		// Create Products
		foreach ( $products_name as $product_title ) {
	
			$content = 'Lorem Ipsum has been the industrys standard dummy text ever since the 1500 when an unknown printer took a galley of type and scrambled it to make a type specimen book.';
	
			$my_post = array(
				'post_title'   => wp_strip_all_tags($product_title),
				'post_content' => $content,
				'post_status'  => 'publish',
				'post_type'    => 'product'
			);
	
			$post_id = wp_insert_post($my_post);
	
			// Assign Category
			wp_set_object_terms($post_id, $category_id, 'product_cat');
	
			// Product Prices
			update_post_meta($post_id, '_regular_price', '500');
			update_post_meta($post_id, '_sale_price', '450');
			update_post_meta($post_id, '_price', '450');
	
			// ---------------- Reviews ----------------
			for ($c = 0; $c <= 4; $c++) {
	
				$comment_id = wp_insert_comment(array(
					'comment_post_ID'      => $post_id,
					'comment_author'       => get_the_author_meta('display_name'),
					'comment_author_email' => get_the_author_meta('user_email'),
					'comment_content'      => $review_text[$c],
					'comment_parent'       => 0,
					'user_id'              => get_current_user_id(),
					'comment_date'         => current_time('mysql'),
					'comment_approved'     => 1,
				));
	
				update_comment_meta($comment_id, 'rating', 3);
			}
	
			// ---------------- Product Image ----------------
			$image_url  = get_template_directory() . '/assets/img/product' . $k . '.png';
			$image_name = 'product' . $k . '.png';
	
			$upload_dir = wp_upload_dir();
			$image_data = file_get_contents($image_url);
	
			if ($image_data) {
	
				$unique_file_name = wp_unique_filename($upload_dir['path'], $image_name);
				$filename = basename($unique_file_name);
	
				if (wp_mkdir_p($upload_dir['path'])) {
					$file = $upload_dir['path'] . '/' . $filename;
				} else {
					$file = $upload_dir['basedir'] . '/' . $filename;
				}
	
				file_put_contents($file, $image_data);
	
				$wp_filetype = wp_check_filetype($filename, null);
	
				$attachment = array(
					'post_mime_type' => $wp_filetype['type'],
					'post_title'     => sanitize_file_name($filename),
					'post_content'   => '',
					'post_status'    => 'inherit',
					'post_type'      => 'attachment'
				);
	
				$attach_id = wp_insert_attachment($attachment, $file, $post_id);

				$attach_data = wp_generate_attachment_metadata($attach_id, $file);
				wp_update_attachment_metadata($attach_id, $attach_data);
	
				set_post_thumbnail($post_id, $attach_id);
			}
	
			$k++; // Move counter here so each product gets different image
		}
	}


   
   
}
// Enqueue necessary scripts
add_action('admin_enqueue_scripts', 'grocery_marketplace_demo_importer_enqueue_scripts');

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

/**
 * Theme Info.
 */
function Grocer_Marketplace_Theme_Info_load() {
	require get_theme_file_path( '/inc/theme-installation/theme-installation.php' );
}
add_action( 'init', 'Grocer_Marketplace_Theme_Info_load' );

// Getstart Function


function free_mnssp_get_filtered_products($cursor = '', $search = '', $collection = 'pro') {
    $endpoint_url = FREE_MNSSP_API_URL . 'getFilteredProducts';

    $remote_post_data = array(
        'collectionHandle' => $collection,
        'productHandle' => $search,
        'paginationParams' => array(
            "first" => 12,
            "afterCursor" => $cursor,
            "beforeCursor" => "",
            "reverse" => true
        )
    );

    $body = wp_json_encode($remote_post_data);

    $options = [
        'body' => $body,
        'headers' => [
            'Content-Type' => 'application/json'
        ]
    ];
    $response = wp_remote_post($endpoint_url, $options);

    if (!is_wp_error($response)) {
        $response_body = wp_remote_retrieve_body($response);
        $response_body = json_decode($response_body);

        if (isset($response_body->data) && !empty($response_body->data)) {
            if (isset($response_body->data->products) && !empty($response_body->data->products)) {
                return  array(
                    'products' => $response_body->data->products,
                    'pagination' => $response_body->data->pageInfo
                );
            }
        }
        return [];
    }
    
    return [];
}

function free_mnssp_get_filtered_products_ajax() {
    $cursor = isset($_POST['cursor']) ? sanitize_text_field(wp_unslash($_POST['cursor'])) : '';
    $search = isset($_POST['search']) ? sanitize_text_field(wp_unslash($_POST['search'])) : '';
    $collection = isset($_POST['collection']) ? sanitize_text_field(wp_unslash($_POST['collection'])) : 'pro';

    check_ajax_referer('free_mnssp_create_pagination_nonce_action', 'mnssp_pagination_nonce');

    $get_filtered_products = free_mnssp_get_filtered_products($cursor, $search, $collection);
    ob_start();
    if (isset($get_filtered_products['products']) && !empty($get_filtered_products['products'])) {
        foreach ( $get_filtered_products['products'] as $product ) {

            $product_obj = $product->node;
            
            if (isset($product_obj->inCollection) && !$product_obj->inCollection) {
                continue;
            }

            $product_obj = $product->node;

            $demo_url = isset($product->node->metafield->value) ? $product->node->metafield->value : '';
            $product_url = isset($product->node->onlineStoreUrl) ? $product->node->onlineStoreUrl : '';
            $image_src = isset($product->node->images->edges[0]->node->src) ? $product->node->images->edges[0]->node->src : '';
            $price = isset($product->node->variants->edges[0]->node->price) ? '$' . $product->node->variants->edges[0]->node->price : ''; ?>

            <div class="mnssp-grid-item">
                <div class="mnssp-image-wrap">
                    <img src="<?php echo esc_url($image_src); ?>" alt="<?php echo esc_attr($product_obj->title); ?>">
                    <div class="mnssp-image-overlay">
                        <a class="mnssp-demo-url mnssp-btn" href="<?php echo esc_attr($demo_url); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html('Demo'); ?></a>
                        <a class="mnssp-buy-now mnssp-btn" href="<?php echo esc_attr($product_url); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html('Buy Now'); ?></a>
                    </div>
                </div>
                <footer>
                    <h3><?php echo esc_html($product_obj->title); ?></h3>
                </footer>
                <div class="mnssp-grid-item-price">Price: <?php echo esc_html($price); ?></div>
            </div>
        <?php }
    }
    $output = ob_get_clean();

    $pagination = isset($get_filtered_products['pagination']) ?  $get_filtered_products['pagination'] : [];
    wp_send_json(array(
        'content' => $output,
        'pagination' => $pagination
    ));
}

add_action('wp_ajax_free_mnssp_get_filtered_products', 'free_mnssp_get_filtered_products_ajax');
add_action('wp_ajax_nopriv_free_mnssp_get_filtered_products', 'free_mnssp_get_filtered_products_ajax');

function free_mnssp_get_collections() {
    
    $endpoint_url = FREE_MNSSP_API_URL . 'getCollections';

    $options = [
        'body' => [],
        'headers' => [
            'Content-Type' => 'application/json'
        ]
    ];
    $response = wp_remote_post($endpoint_url, $options);

    if (!is_wp_error($response)) {
        $response_body = wp_remote_retrieve_body($response);
        $response_body = json_decode($response_body);

        if (isset($response_body->data) && !empty($response_body->data)) {
           return  $response_body->data;
        }
        return  [];
    }

    return  [];
}