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

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

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

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

$AI_Services_Loader->ai_services_register();

if ( ! function_exists( 'ai_services_setup' ) ) :

	function ai_services_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( 'ai-services', 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('ai-services-featured-header-image', 2000, 660, true);

        register_nav_menus( array(
            'primary' => esc_html__( 'Primary','ai-services' ),
        ) );

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

		add_theme_support( 'custom-background', apply_filters( 'ai_services_custom_background_args', array(
			'default-color' => '#040019',
			'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_ai_services_dismissable_notice', 'ai_services_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', 'ai_services_setup' );

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


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

	register_sidebar( array(
		'name'          => esc_html__( 'Footer Column 4', 'ai-services' ),
		'id'            => 'ai-services-footer4',
		'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', 'ai_services_widgets_init' );

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

	// Enqueue Google Fonts
	// Archivo Font - used for body text
	wp_enqueue_style(
		'google-fonts-archivo',
		'https://fonts.googleapis.com/css2?family=Archivo:ital,wght@0,100..900;1,100..900&display=swap',
		array(),
		null
	);

	// Inter Font - used for body text
	wp_enqueue_style(
		'google-fonts-inter',
		'https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap',
		array(),
		null
	);

	wp_enqueue_style( 'ai-services-block-editor-style', get_theme_file_uri('/assets/css/block-editor-style.css') );

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

	wp_enqueue_style( 'ai-services-style', get_stylesheet_uri() );
	require get_parent_theme_file_path( '/custom-option.php' );
	wp_add_inline_style( 'ai-services-style',$ai_services_theme_css );

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

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

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

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

/**
 * Add font preload and preconnect for better performance.
 */
function ai_services_font_preload() { ?>
	<link rel="preconnect" href="https://fonts.googleapis.com">
	<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
	<link rel="dns-prefetch" href="https://fonts.googleapis.com">
	<link rel="dns-prefetch" href="https://fonts.gstatic.com">
	<?php
}
add_action( 'wp_head', 'ai_services_font_preload', 1 );

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

  $ai_services_theme_color_css = '';
  $ai_services_preloader_bg_color = get_theme_mod('ai_services_preloader_bg_color');
  $ai_services_preloader_dot_1_color = get_theme_mod('ai_services_preloader_dot_1_color');
  $ai_services_preloader_dot_2_color = get_theme_mod('ai_services_preloader_dot_2_color');
  $ai_services_preloader2_dot_color = get_theme_mod('ai_services_preloader2_dot_color');
  $ai_services_logo_max_height = get_theme_mod('ai_services_logo_max_height');
  $ai_services_scroll_bg_color = get_theme_mod('ai_services_scroll_bg_color');
  $ai_services_scroll_color = get_theme_mod('ai_services_scroll_color');
  $ai_services_scroll_font_size = get_theme_mod('ai_services_scroll_font_size');
  $ai_services_scroll_border_radius = get_theme_mod('ai_services_scroll_border_radius');
  $ai_services_related_product_display_setting = get_theme_mod('ai_services_related_product_display_setting', true);

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

	if(get_theme_mod('ai_services_preloader_bg_color') == '') {
		$ai_services_preloader_bg_color = '#7D59FB';
	}
	if(get_theme_mod('ai_services_preloader_dot_1_color') == '') {
		$ai_services_preloader_dot_1_color = '#ffffff';
	}
	if(get_theme_mod('ai_services_preloader_dot_2_color') == '') {
		$ai_services_preloader_dot_2_color = '#222222';
	}

	// Start CSS build
	$ai_services_theme_color_css = '';

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

	$ai_services_theme_color_css .= '
		.custom-logo-link img{
			max-height: '.esc_attr($ai_services_logo_max_height).'px;
	 	}
		.loading{
			background-color: '.esc_attr($ai_services_preloader_bg_color).';
		 }
		 @keyframes loading {
		  0%,
		  100% {
		  	transform: translatey(-2.5rem);
		    background-color: '.esc_attr($ai_services_preloader_dot_1_color).';
		  }
		  50% {
		  	transform: translatey(2.5rem);
		    background-color: '.esc_attr($ai_services_preloader_dot_2_color).';
		  }
		}
		.load hr {
			background-color: '.esc_attr($ai_services_preloader2_dot_color).';
		}
		a#button{
			background-color: '.esc_attr($ai_services_scroll_bg_color).';
			color: '.esc_attr($ai_services_scroll_color).' !important;
			font-size: '.esc_attr($ai_services_scroll_font_size).'px;
			border-radius: '.esc_attr($ai_services_scroll_border_radius).'%;
		}
	';
    wp_add_inline_style( 'ai-services-style',$ai_services_theme_color_css );

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

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

/*radio button sanitization*/
function ai_services_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 ai_services_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 ai_services_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', 'ai_services_loop_columns');
if (!function_exists('ai_services_loop_columns')) {
	function ai_services_loop_columns() {
		$columns = get_theme_mod( 'ai_services_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', 'ai_services_shop_per_page', 9 );
function ai_services_shop_per_page( $cols ) {
  	$cols = get_theme_mod( 'ai_services_product_per_page', 9 );
	return $cols;
}

// Filter to change the number of related products displayed
add_filter( 'woocommerce_output_related_products_args', 'ai_services_products_args' );
function ai_services_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;
}

if ( class_exists( 'WP_Customize_Control' ) ) {
	// Image Toggle Radio Buttpon
	class AI_Services_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='ai-services-img-container'>
	            <?php
	            foreach ($this->choices as $value => $label) :
	                $class = ($this->value() == $value) ? 'ai-services-radio-img-selected ai-services-radio-img-img' : 'ai-services-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
	    } 
	}
}


if ( ! function_exists( 'ai_services_file_link_setup' ) ) :

	function ai_services_file_link_setup() {

		if ( ! defined( 'FREE_MNSSP_API_URL' ) ) {
			define( 'FREE_MNSSP_API_URL', 'https://license.themagnifico.net/api/general/' );
		}

		if ( ! defined( 'AI_SERVICES_CONTACT_SUPPORT' ) ) {
			define('AI_SERVICES_CONTACT_SUPPORT',__('https://wordpress.org/support/theme/ai-services/','ai-services'));
		}
		if ( ! defined( 'AI_SERVICES_REVIEW' ) ) {
			define('AI_SERVICES_REVIEW',__('https://wordpress.org/support/theme/ai-services/reviews/#new-post','ai-services'));
		}
		if ( ! defined( 'AI_SERVICES_LIVE_DEMO' ) ) {
			define('AI_SERVICES_LIVE_DEMO',__('https://demo.themagnifico.net/ai-services/','ai-services'));
		}
		if ( ! defined( 'AI_SERVICES_GET_PREMIUM_PRO' ) ) {
			define('AI_SERVICES_GET_PREMIUM_PRO',__('https://www.themagnifico.net/products/agentic-ai-wordpress-theme','ai-services'));
		}
		if ( ! defined( 'AI_SERVICES_PRO_DOC' ) ) {
			define('AI_SERVICES_PRO_DOC',__('https://demo.themagnifico.net/eard/wathiqa/ai-services-pro-doc/','ai-services'));
		}
		if ( ! defined( 'AI_SERVICES_FREE_DOC' ) ) {
			define('AI_SERVICES_FREE_DOC',__('https://demo.themagnifico.net/eard/wathiqa/ai-services-free-doc/','ai-services'));
		}
		if ( ! defined( 'AI_SERVICES_BUNDLE_LINK' ) ) {
			define('AI_SERVICES_BUNDLE_LINK',__('https://www.themagnifico.net/products/wordpress-theme-bundle','ai-services'));
		}

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

/**
 * Plugin install / activation AJAX helpers used by the demo importer.
 */
function tm_install_and_activate_plugin() {

	$post_plugin_details = $_POST['plugin_details'];
	$plugin_text_domain = $post_plugin_details['plugin_text_domain'];
	$plugin_main_file		=	$post_plugin_details['plugin_main_file'];
	$plugin_url					=	$post_plugin_details['plugin_url'];

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

	wp_cache_flush();

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

	$activate_plugin = activate_plugin( $plugin_path );

	if($activate_plugin) {

		echo $activate_plugin;

	} else {
		echo $activate_plugin;
	}

	$msg = 'installed';

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

function tm_check_plugin_exists() {

	check_ajax_referer( 'theme_importer_nonce' );

	if ( ! current_user_can( 'activate_plugins' ) ) {
		wp_send_json_error( array( 'install_status' => false, 'active_status' => false ) );
		return;
	}

	$plugin_text_domain = isset( $_POST['plugin_text_domain'] ) ? sanitize_key( wp_unslash( $_POST['plugin_text_domain'] ) ) : '';
	$main_plugin_file   = isset( $_POST['main_plugin_file'] ) ? sanitize_file_name( wp_unslash( $_POST['main_plugin_file'] ) ) : '';
	$plugin_path        = $plugin_text_domain . '/' . $main_plugin_file;

	$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 Started admin notice.
 */
function ai_services_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','ai_services',
		array('admin_ajax'	=>	admin_url('admin-ajax.php'),'wpnonce'  =>	wp_create_nonce('ai_services_dismissed_notice_nonce')
		)
	);
	wp_enqueue_script('admin-notice-script');

    wp_localize_script( 'admin-notice-script', 'ai_services_ajax_object',
        array( 'ajax_url' => admin_url( 'admin-ajax.php' ) )
    );
	if ( 'appearance_page_ai-services-info' != $hook ) {
		return;
	}
}
add_action( 'admin_enqueue_scripts', 'ai_services_getpage_css' );

function ai_services_ajax_notice_handler() {
	check_ajax_referer( 'ai_services_dismissed_notice_nonce', 'wpnonce' );
    if ( isset( $_POST['type'] ) ) {
        $type = sanitize_text_field( wp_unslash( $_POST['type'] ) );
        update_option( 'dismissed-' . $type, TRUE );
    }
	wp_die();
}
add_action( 'wp_ajax_ai_services_dismissed_notice_handler', 'ai_services_ajax_notice_handler' );

function ai_services_deprecated_hook_admin_notice() {

    $ai_services_dismissed = get_user_meta(get_current_user_id(), 'ai_services_dismissable_notice', true);
    if ( !$ai_services_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 ', 'ai-services'); ?><?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.', 'ai-services'); ?></p>
	        	<a class="admin-notice-btn button button-primary button-hero" href="<?php echo esc_url( admin_url( 'themes.php?page=ai-services-info' )); ?>"><?php esc_html_e( 'Get started', 'ai-services' ) ?></a>
	        	<a class="admin-notice-btn button button-primary button-hero notice-pro-btn" target="_blank" href="<?php echo esc_url( AI_SERVICES_GET_PREMIUM_PRO ); ?>"><?php esc_html_e( 'Get Premium ', 'ai-services' ) ?></a>
	        	<a class="admin-notice-btn button button-primary button-hero notice-bundle-btn" target="_blank" href="<?php echo esc_url( AI_SERVICES_BUNDLE_LINK ); ?>"><?php esc_html_e( 'Buy All Themes - 130+ Templates', 'ai-services' ) ?></a>
	        	<span style="padding-top: 15px; display: inline-block; padding-left: 8px;">
	        	<span class="dashicons dashicons-admin-links"></span>
	        	<a class="admin-notice-btn"	 target="_blank" href="<?php echo esc_url( AI_SERVICES_LIVE_DEMO ); ?>"><?php esc_html_e( 'View Demo', 'ai-services' ) ?></a>
	        	</span>
	    	</div>
        </div>
    <?php }
}
add_action( 'admin_notices', 'ai_services_deprecated_hook_admin_notice' );

function ai_services_switch_theme() {
    delete_user_meta(get_current_user_id(), 'ai_services_dismissable_notice');
}
add_action('after_switch_theme', 'ai_services_switch_theme');

function ai_services_dismissable_notice() {
	check_ajax_referer( 'ai_services_dismissed_notice_nonce', 'wpnonce' );
    update_user_meta(get_current_user_id(), 'ai_services_dismissable_notice', true);
    wp_die();
}

// Demo Content Code

add_action('wp_ajax_import_theme_mods', 'ai_services_demo_importer_ajax_handler');

function ai_services_demo_importer_ajax_handler() {

    check_ajax_referer( 'theme_importer_nonce' );

    if ( ! current_user_can( 'edit_theme_options' ) ) {
        wp_send_json_error( 'Permission denied.' );
        return;
    }

    if (ai_services_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 create demo pages, menu and theme mods for the AI Services demo.
function ai_services_create_demo_menu() {

    $menu_structure = [
        [
            'title' => 'Home',
            'slug'  => 'home',
            'template' => 'page-template/home-template.php',
        ],
        [
            'title' => 'About Us',
            'slug'  => 'about',
            'content' => "<p>We are a team of AI engineers, data scientists, and automation specialists helping businesses put artificial intelligence to work. From machine learning models to intelligent chatbots and workflow automation, we design AI systems that are practical, scalable, and easy to integrate into your existing operations. Our mission is to make advanced AI accessible to companies of every size, turning complex data into clear, actionable outcomes.</p>"
        ],
        [
            'title' => 'Services',
            'slug'  => 'services',
            'content' => "<p>Our AI services cover the full lifecycle of intelligent automation: custom machine learning model development, natural language processing, computer vision, predictive analytics, and AI-powered chatbots. We also offer AI strategy consulting, data pipeline engineering, and ongoing model monitoring so your solutions keep improving after launch. Whether you need a proof of concept or a production-ready AI platform, our team can help you get there.</p>"
        ],
        [
            'title' => 'Case Studies',
            'slug'  => 'case-studies',
            'content' => "<p>Explore how organizations across retail, finance, healthcare, and logistics have used our AI solutions to automate repetitive work, forecast demand, personalize customer experiences, and uncover insights hidden in their data. Each project starts with a clear business goal and ends with a measurable improvement in efficiency, accuracy, or revenue.</p>"
        ],
        [
            'title' => 'Blog',
            'slug'  => 'blog',
        ],
        [
            'title' => 'Contact Us',
            'slug'  => 'contact',
            'content' => "<p>Ready to explore what AI can do for your business? Reach out to our team for a free consultation and we'll help you identify the automation and machine learning opportunities that will have the biggest impact on your operations.</p>"
        ],
    ];

    // ----------------------------------------------------
    // 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' => 'all',
            '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);

    // Header button
    set_theme_mod( 'ai_services_header_btn_text', 'Book a Demo' );
    set_theme_mod( 'ai_services_header_btn_url', '#' );

    // Banner
    set_theme_mod( 'ai_services_top_slider_setting', true );
    set_theme_mod( 'ai_services_slider_short_heading', 'AI-Powered Solutions' );
    set_theme_mod( 'ai_services_banner_circle_heading', 'AI' );
    set_theme_mod( 'ai_services_banner_heading', 'Smarter Automation for Your Business' );
    set_theme_mod( 'ai_services_banner_content', 'We build intelligent AI systems that automate workflows, uncover insights, and accelerate growth for modern teams.' );
    set_theme_mod( 'ai_services_slider_button_text_2', 'Get Started' );
    set_theme_mod( 'ai_services_slider_button_text_2_url', '#' );

    // Features section
    set_theme_mod( 'ai_services_features_section_setting', true );
    set_theme_mod( 'ai_services_features_sub_heading', 'Our Features' );
    set_theme_mod( 'ai_services_features_main_heading', 'Powerfull Features for Intelligent Automation' );
    set_theme_mod( 'ai_services_features_post_count', 3 );
    set_theme_mod( 'ai_services_feature_icon1', 'fa-solid fa-robot' );
    set_theme_mod( 'ai_services_feature_icon2', 'fa-solid fa-chart-line' );
    set_theme_mod( 'ai_services_feature_icon3', 'fa-solid fa-brain' );
    set_theme_mod( 'ai_services_features_btn_text', 'Learn More' );

    // Create a category and demo posts for the "Select Category to display Features" section
    $ai_services_features_posts = array(
        array(
            'title'   => 'AI Chatbot Development',
            'content' => 'We design and deploy intelligent chatbots that handle customer support, lead qualification, and everyday queries around the clock.',
        ),
        array(
            'title'   => 'Machine Learning Models',
            'content' => 'Our team builds custom machine learning models that turn your raw data into accurate predictions and smarter decisions.',
        ),
        array(
            'title'   => 'Process Automation',
            'content' => 'We automate repetitive workflows with AI-driven tools, freeing your team to focus on higher-value work.',
        ),
    );

    $ai_services_features_category_id = wp_create_category( 'Our Services' );

    if ( ! is_wp_error( $ai_services_features_category_id ) ) {

        foreach ( $ai_services_features_posts as $ai_services_features_post ) {

            $ai_services_existing_posts = get_posts( array(
                'post_type'   => 'post',
                'title'       => $ai_services_features_post['title'],
                'post_status' => 'all',
                'numberposts' => 1,
            ) );

            if ( empty( $ai_services_existing_posts ) ) {
                wp_insert_post( array(
                    'post_title'    => wp_strip_all_tags( $ai_services_features_post['title'] ),
                    'post_content'  => $ai_services_features_post['content'],
                    'post_status'   => 'publish',
                    'post_type'     => 'post',
                    'post_category' => array( $ai_services_features_category_id ),
                ) );
            }
        }

        $ai_services_features_category = get_category( $ai_services_features_category_id );
        set_theme_mod( 'ai_services_features_category', $ai_services_features_category->slug );
    }

    // Task section
    set_theme_mod( 'ai_services_task_section_setting', true );
    set_theme_mod( 'ai_services_task_heading', 'Why Choose Our AI Solutions' );
    set_theme_mod( 'ai_services_task_content', 'From custom machine learning models to intelligent chatbots, we deliver scalable AI solutions tailored to your business needs.' );
    set_theme_mod( 'ai_services_task_list_text1', 'Custom AI Model Development' );
    set_theme_mod( 'ai_services_task_list_text2', 'Intelligent Process Automation' );
    set_theme_mod( 'ai_services_task_list_text3', 'Predictive Data Analytics' );
    set_theme_mod( 'ai_services_task_list_text4', '24/7 AI Chatbot Support' );

    return true;
}

// Enqueue necessary scripts
add_action('admin_enqueue_scripts', 'ai_services_demo_importer_enqueue_scripts');

function ai_services_demo_importer_enqueue_scripts() {
    wp_enqueue_script(
        'demo-theme-importer',
        get_template_directory_uri() . '/assets/js/theme-importer.js',
        array('jquery'),
        null,
        true
    );

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

    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 AI_Services_Theme_Info_load() {
	require get_theme_file_path( '/inc/theme-installation/theme-installation.php' );
}
add_action( 'init', 'AI_Services_Theme_Info_load' );

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  [];
}

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( 'ai_services_navigation_action','ai_services_single_post_navigation',30 );
if( !function_exists('ai_services_content_offcanvas') ):

    // Offcanvas Contents
    function ai_services_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', 'ai-services'); ?>" 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 AI_Services_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( 'ai_services_before_footer_content_action','ai_services_content_offcanvas',30 );


if ( ! function_exists( 'ai_services_sub_menu_toggle_button' ) ) :

    function ai_services_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', 'ai-services' ) . '</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', 'ai_services_sub_menu_toggle_button', 10, 3 );