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

if (!defined('BLOGAURA_VERSION')) {
    // Replace the version number of the theme on each release.
    define('BLOGAURA_VERSION', '1.0.3');
}

/**
 * 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 blogaura_setup()
{
    /*
     * Make theme available for translation.
     * Translations can be filed in the /languages/ directory.
     * If you're building a theme based on BlogAura, use a find and replace
     * to change 'blogaura' to the name of your theme in all the template files.
     */
    load_theme_textdomain('blogaura', get_template_directory() . '/languages');

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


    /**
     * Register navigation menus uses wp_nav_menu in five places.
     *
     * @since BlogAura BlogAura 1.0.0
     */
    function blogaura_menus()
    {

        $locations = array(
            'primary' => __('Desktop Horizontal Menu', 'blogaura'),
            'expanded' => __('Desktop Expanded Menu', 'blogaura'),
            'mobile' => __('Mobile Menu', 'blogaura'),
            'footer' => __('Footer Menu', 'blogaura'),
            'social' => __('Social Menu', 'blogaura'),
        );

        register_nav_menus($locations);
    }

    add_action('init', 'blogaura_menus');


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

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

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

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

    add_theme_support('align-wide');
    add_theme_support('responsive-embeds');
    add_theme_support('wp-block-styles');
}

add_action('after_setup_theme', 'blogaura_setup');

/**
 * Set the content width in pixels, based on the theme's design and stylesheet.
 *
 * Priority 0 to make it available to lower priority callbacks.
 *
 * @global int $content_width
 */
function blogaura_content_width()
{
    $GLOBALS['content_width'] = apply_filters('blogaura_content_width', 640);
}

add_action('after_setup_theme', 'blogaura_content_width', 0);

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

    $min = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';

    $fonts_url = blogaura_load_fonts_url();
    if ($fonts_url) {

        require_once get_theme_file_path('assets/webfont/class-theme-webfont-loader.php');
        wp_enqueue_style(
            'blogaura-load-google-fonts',
            wptt_get_webfont_url($fonts_url),
            array(),
            BLOGAURA_VERSION
        );
    }


    wp_enqueue_style('swiper', get_template_directory_uri() . '/assets/css/swiper-bundle' . $min . '.css');
    wp_enqueue_style('aos', get_template_directory_uri() . '/assets/css/aos' . $min . '.css');

    wp_enqueue_style('blogaura-style', get_stylesheet_uri(), array(), BLOGAURA_VERSION);
    wp_style_add_data('blogaura-style', 'rtl', 'replace');

    wp_add_inline_style('blogaura-style', blogaura_get_inline_css());

    wp_enqueue_script('blogaura-navigation', get_template_directory_uri() . '/assets/js/navigation' . $min . '.js', array(), BLOGAURA_VERSION, true);

    // Scripts
    $dependencies = array(
        'swiper',
        'aos',
    );

    wp_enqueue_script(
        'swiper',
        get_template_directory_uri() . '/assets/js/swiper-bundle' . $min . '.js',
        array(),
        BLOGAURA_VERSION,
        true
    );

    wp_enqueue_script(
        'aos',
        get_template_directory_uri() . '/assets/js/aos' . $min . '.js',
        array(),
        BLOGAURA_VERSION,
        true
    );

    wp_enqueue_script(
        'blogaura-script',
        get_template_directory_uri() . '/assets/js/script' . $min . '.js',
        $dependencies,
        BLOGAURA_VERSION,
        true
    );
    //Ajax Load Posts Scripts
    wp_enqueue_script('blogaura-load-posts', get_template_directory_uri() . '/template-parts/pagination/pagination.js', array(), BLOGAURA_VERSION, true);

    // Localized variables.
    global $wp_query;
    wp_localize_script(
        'blogaura-load-posts',
        'BlogAuraVars',
        array(
            'load_post_nonce_wp' => wp_create_nonce('blogaura-load-posts-nonce'),
            'ajaxurl' => admin_url('admin-ajax.php'),
            'query_vars' => wp_json_encode($wp_query->query_vars),
            'query_vars_hash' => wp_hash(wp_json_encode($wp_query->query_vars)),
        )
    );

    if (is_singular() && (comments_open() || get_comments_number())) {

        $suffix = is_rtl() ? '-rtl' : '';

        wp_enqueue_style(
            'blogaura-comments',
            get_template_directory_uri() . "/assets/css/comments{$suffix}{$min}.css",
            array(),
            BLOGAURA_VERSION
        );
    }


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

add_action('wp_enqueue_scripts', 'blogaura_scripts');

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

/**
 * Implement the Custom Header feature.
 */
require get_template_directory() . '/inc/custom-header.php';
/**
 * Implement the Dynamic Style.
 */
require get_template_directory() . '/inc/dynamic-style.php';
require get_template_directory() . '/template-parts/pagination/pagination-option.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';

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

// Custom page walker.
require get_template_directory() . '/classes/class-walker-page.php';


// Handle SVG icons.
require get_template_directory() . '/classes/class-svg-icons.php';
require get_template_directory() . '/inc/svg-icons.php';

//widget-initialization.
require get_template_directory() . '/inc/admin/widgets/widget-init.php';

// category-meta-box
require get_template_directory() . '/inc/admin/meta-box/category-meta-box.php';

// single-meta-box
require get_template_directory() . '/inc/admin/meta-box/meta-box.php';


/**
 * Calling in the admin area for the Welcome Page as well as for the new theme notice too.
 */
if (is_admin()) {
    require get_template_directory() . '/inc/admin/dashboard/class-admin.php';
    require get_template_directory() . '/inc/admin/dashboard/class-dashboard.php';
    require get_template_directory() . '/inc/admin/dashboard/class-welcome-notice.php';
    require get_template_directory() . '/inc/admin/dashboard/class-theme-review-notice.php';
}

require get_template_directory() . '/inc/admin/dashboard/class-changelog-parser.php';

/**
 * Enqueue scripts and styles.
 */
function blogaura_preloader_scripts()
{
    $preloader_style = blogaura_get_option('blogaura_preloader_style');
    wp_enqueue_style('blogaura-preloader', get_template_directory_uri() . '/assets/css/preloader-' . $preloader_style . '.css');

}

add_action('wp_enqueue_scripts', 'blogaura_preloader_scripts');

function blogaura_is_plugin_installed($plugin_path)
{
    $plugins = get_plugins();
    return isset($plugins[$plugin_path]);
}


/**
 * Load Jetpack compatibility file.
 */
if (defined('JETPACK__VERSION')) {
    require get_template_directory() . '/inc/compatibility/jetpack/jetpack.php';
}

/** Add the WooCommerce plugin support */
if (class_exists('WooCommerce')) {
    require get_template_directory() . '/inc/compatibility/woocommerce/woocommerce.php';
}

/** Add the Elementor compatibility file */
if (defined('ELEMENTOR_VERSION')) {
    require get_template_directory() . '/inc/compatibility/elementor/elementor.php';
    require get_template_directory() . '/inc/compatibility/elementor/elementor-functions.php';
}