/home/awneajlw/work.codestechvista.com/wp-content/plugins/ignavo-core/ignavo-core.php
<?php
/**
* Plugin Name: Ignavo Core
* Description: Premium & Advanced Essential Elements for Elementor
* Plugin URI:  http://themeforest.net/user/KlbTheme
* Version:     1.0.4
* Author:      KlbTheme
* Author URI:  http://themeforest.net/user/KlbTheme
*/


/*
* Exit if accessed directly.
*/

if ( ! defined( 'ABSPATH' ) ) exit;

final class Ignavo_Elementor_Addons
{
    /**
    * Plugin Version
    *
    * @since 1.0
    *
    * @var string The plugin version.
    */
    const VERSION = '1.0.0';

    /**
    * Minimum Elementor Version
    *
    * @since 1.0
    *
    * @var string Minimum Elementor version required to run the plugin.
    */
    const MINIMUM_ELEMENTOR_VERSION = '2.0.0';

    /**
    * Minimum PHP Version
    *
    * @since 1.0
    *
    * @var string Minimum PHP version required to run the plugin.
    */
    const MINIMUM_PHP_VERSION = '7.0';

    /**
    * Instance
    *
    * @since 1.0
    *
    * @access private
    * @static
    *
    * @var Ignavo_Elementor_Addons The single instance of the class.
    */
    private static $_instance = null;

    /**
    * Instance
    *
    * Ensures only one instance of the class is loaded or can be loaded.
    *
    * @since 1.0
    *
    * @access public
    * @static
    *
    * @return Ignavo_Elementor_Addons An instance of the class.
    */
    public static function instance()
    {

        if ( is_null( self::$_instance ) ) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    /**
    * Constructor
    *
    * @since 1.0
    *
    * @access public
    */
    public function __construct()
    {
        add_action( 'init', [ $this, 'i18n' ] );
        add_action( 'plugins_loaded', [ $this, 'init' ] );
    }

    /**
    * Load Textdomain
    *
    * Load plugin localization files.
    *
    * Fired by `init` action hook.
    *
    * @since 1.0
    *
    * @access public
    */
    public function i18n()
    {
		// Check if Elementor is installed and activated
        if ( ! did_action( 'elementor/loaded' ) ) {
            add_action( 'admin_notices', [ $this, 'ignavo_admin_notice_missing_main_plugin' ] );
            return;
        }
		
        load_plugin_textdomain( 'ignavo-core' );
		
		/* Customizer Kirki */
        require_once( __DIR__ . '/inc/customizer.php' );
    }
	
   /**
    * Initialize the plugin
    *
    * Load the plugin only after Elementor (and other plugins) are loaded.
    * Checks for basic plugin requirements, if one check fail don't continue,
    * if all check have passed load the files required to run the plugin.
    *
    * Fired by `plugins_loaded` action hook.
    *
    * @since 1.0
    *
    * @access public
    */
    public function init()
    {
        // Check if Elementor is installed and activated
        if ( ! did_action( 'elementor/loaded' ) ) {
            add_action( 'admin_notices', [ $this, 'ignavo_admin_notice_missing_main_plugin' ] );
            return;
        }
        // Check for required Elementor version
        if ( ! version_compare( ELEMENTOR_VERSION, self::MINIMUM_ELEMENTOR_VERSION, '>=' ) ) {
            add_action( 'admin_notices', [ $this, 'ignavo_admin_notice_minimum_elementor_version' ] );
            return;
        }
        // Check for required PHP version
        if ( version_compare( PHP_VERSION, self::MINIMUM_PHP_VERSION, '<' ) ) {
            add_action( 'admin_notices', [ $this, 'ignavo_admin_notice_minimum_php_version' ] );
            return;
        }
		
		// Categories registered
        add_action( 'elementor/elements/categories_registered', [ $this, 'ignavo_add_widget_category' ] );

		/* Init Include */
        require_once( __DIR__ . '/init.php' );

        /* Style php */
        require_once( __DIR__ . '/inc/style.php' );
		
		/* Aq Resizer Image Resize */
        require_once( __DIR__ . '/inc/aq_resizer.php' );
		
		/* Breadcrumb */
        require_once( __DIR__ . '/inc/breadcrumb.php' );

		/* Newsletter */
		if(get_theme_mod('ignavo_newsletter_popup_toggle',0) == 1){
			require_once( __DIR__ . '/inc/newsletter-popup/newsletter-main.php' );
		}

		/* GDPR */
		if(get_theme_mod('ignavo_gdpr_toggle',0) == 1){
			require_once( __DIR__ . '/inc/gdpr/gdpr-main.php' );
		}
		
		/* KLB Attribute Search Filter */
		require_once( __DIR__ . '/inc/klb-attribute-search/klb-attribute-search.php' );
		
		/* Post view for popular posts widget */
        require_once( __DIR__ . '/inc/post_view.php' );

        /* Popular Posts Widget */
        require_once( __DIR__ . '/widgets/widget-popular-posts.php' );

		/* Search Filter */
        require_once( __DIR__ . '/widgets/widget-search-filter.php' );
		
		/* Social Media */
        require_once( __DIR__ . '/widgets/widget-social-media.php' );
		
		/* WooCommerce Filter */
        require_once( __DIR__ . '/woocommerce-filter/woocommerce-filter.php' );
		
		/* Location Taxonomy */
		if(get_theme_mod('ignavo_location_filter',0) == 1){
			require_once( __DIR__ . '/taxonomy/location_taxonomy.php' );
		}
		
		/* Maintenance */
		if(get_theme_mod('ignavo_maintenance_toggle', 0) == 1 || ignavo_ft() == 'maintenance'){
			require_once( __DIR__ . '/inc/maintenance/maintenance.php' );
		}
		
		/* Menu Item Icon */
		require_once( __DIR__ . '/inc/menu-item-icon/menu-item-icon.php' );
		
		/* Menu Endpoints - Mega Menu*/
		require_once( __DIR__ . '/inc/menu-endpoints/menu-endpoints.php' );
		
        /* Custom plugin helper functions */
        require_once( __DIR__ . '/elementor/classes/class-helpers-functions.php' );
		
        /* Custom plugin helper functions */
        require_once( __DIR__ . '/elementor/classes/class-customizing-page-settings.php' );

        // Register Widget Styles
        add_action( 'elementor/frontend/after_enqueue_styles', [ $this, 'widget_styles' ] );
		
        // Register Widget Scripts
        add_action( 'elementor/frontend/after_enqueue_scripts', [ $this, 'widget_scripts' ] );
		
		// Register Widget Editor Style
		add_action( 'elementor/editor/after_enqueue_styles', [ $this, 'widget_editor_style' ] );

        // Register Widget Editor Scripts
        add_action( 'elementor/editor/after_enqueue_scripts', [ $this, 'widget_editor_scripts' ] );
		
        // Widgets registered
        add_action( 'elementor/widgets/register', [ $this, 'init_widgets' ] );
    }
	
    /**
    * Register Widgets Category
    *
    */
    public function ignavo_add_widget_category( $elements_manager )
    {
        $elements_manager->add_category( 'ignavo', ['title' => esc_html__( 'Ignavo Core', 'ignavo-core' )]);
    }	
	
    /**
    * Init Widgets
    *
    * Include widgets files and register them
    *
    * @since 1.0
    *
    * @access public
    */
    public function init_widgets()
    {	
		
		// Home Slider
		require_once( __DIR__ . '/elementor/widgets/ignavo-home-slider.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Home_Slider_Widget() );
		
		// Home Slider 2
		require_once( __DIR__ . '/elementor/widgets/ignavo-home-slider2.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Home_Slider2_Widget() );
		
		// Client Carousel
		require_once( __DIR__ . '/elementor/widgets/ignavo-client-carousel.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Client_Carousel_Widget() );
		
		// Icon Box 
		require_once( __DIR__ . '/elementor/widgets/ignavo-icon-box.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Icon_Box_Widget() );
		
		// Icon Slider 
		require_once( __DIR__ . '/elementor/widgets/ignavo-icon-slider.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Icon_Slider_Widget() );
		
		// Product Categories
		require_once( __DIR__ . '/elementor/widgets/ignavo-product-categories.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Product_Categories_Widget() );
		
		// Product Carousel
		require_once( __DIR__ . '/elementor/widgets/ignavo-product-carousel.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Product_Carousel_Widget() );
		
		// Product Carousel 2
		require_once( __DIR__ . '/elementor/widgets/ignavo-product-carousel2.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Product_Carousel2_Widget() );
		
		// Product Search 
		require_once( __DIR__ . '/elementor/widgets/ignavo-product-search.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Product_Search_Widget() );
		
		// Product Search 2
		require_once( __DIR__ . '/elementor/widgets/ignavo-product-search2.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Product_Search2_Widget() );
		
		// Testimonial Carousel
		require_once( __DIR__ . '/elementor/widgets/ignavo-testimonial-carousel.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Testimonial_Carousel_Widget() );
		
		// Banner Box
		require_once( __DIR__ . '/elementor/widgets/ignavo-banner-box.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Banner_Box_Widget() );
		
		// Banner Box 2
		require_once( __DIR__ . '/elementor/widgets/ignavo-banner-box2.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Banner_Box2_Widget() );
		
		// Text Banner
		require_once( __DIR__ . '/elementor/widgets/ignavo-text-banner.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Text_Banner_Widget() );
		
		// Text Banner 2
		require_once( __DIR__ . '/elementor/widgets/ignavo-text-banner2.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Text_Banner2_Widget() );
		
		// Product Tab Carousel
		require_once( __DIR__ . '/elementor/widgets/ignavo-product-tab-carousel.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Product_Tab_Carousel_Widget() );
		
		// Latest Blog
		require_once( __DIR__ . '/elementor/widgets/ignavo-latest-blog.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Latest_Blog_Widget() );
		
		// Product List
		require_once( __DIR__ . '/elementor/widgets/ignavo-product-list.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Product_List_Widget() );
		
		// Product Grid
		require_once( __DIR__ . '/elementor/widgets/ignavo-product-grid.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Product_Grid_Widget() );
		
		// Custom Title
		require_once( __DIR__ . '/elementor/widgets/ignavo-custom-title.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Custom_Title_Widget() );
		
		// Special Product 
		require_once( __DIR__ . '/elementor/widgets/ignavo-featured-product.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Featured_Product_Widget() );
		
		// Product Banner 
		require_once( __DIR__ . '/elementor/widgets/ignavo-product-banner.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Product_Banner_Widget() );
		
		// Product Banner 2
		require_once( __DIR__ . '/elementor/widgets/ignavo-product-banner2.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Product_Banner2_Widget() );
		
		// Page Banner 
		require_once( __DIR__ . '/elementor/widgets/ignavo-page-banner.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Page_Banner_Widget() );
		
		// Address Box 
		require_once( __DIR__ . '/elementor/widgets/ignavo-address-box.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Address_Box_Widget() );
		
		// Contact Form 7
		require_once( __DIR__ . '/elementor/widgets/ignavo-contact-form-7.php' );
		\Elementor\Plugin::instance()->widgets_manager->register( new \Elementor\Ignavo_Contact_Form_7_Widget() );
		
	}
	
	
    /**
    * Admin notice
    *
    * Warning when the site doesn't have Elementor installed or activated.
    *
    * @since 1.0
    *
    * @access public
    */
    public function ignavo_admin_notice_missing_main_plugin()
    {
        if ( isset( $_GET['activate'] ) ) {
            unset( $_GET['activate'] );
        }
        $message = sprintf(
            /* translators: 1: Plugin name 2: Elementor */
            esc_html__( '%1$s requires %2$s to be installed and activated.', 'ignavo-core' ),
            '<strong>' . esc_html__( 'Ignavo Core', 'ignavo-core' ) . '</strong>',
            '<strong>' . esc_html__( 'Elementor', 'ignavo-core' ) . '</strong>'
        );
        printf( '<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', $message );
    }

    /**
    * Admin notice
    *
    * Warning when the site doesn't have a minimum required Elementor version.
    *
    * @since 1.0
    *
    * @access public
    */
    public function ignavo_admin_notice_minimum_elementor_version()
    {
        if ( isset( $_GET['activate'] ) ) {
            unset( $_GET['activate'] );
        }
        $message = sprintf(
            /* translators: 1: Plugin name 2: Elementor 3: Required Elementor version */
            esc_html__( '%1$s requires %2$s version %3$s or greater.', 'ignavo-core' ),
            '<strong>' . esc_html__( 'Ignavo Core', 'ignavo-core' ) . '</strong>',
            '<strong>' . esc_html__( 'Elementor', 'ignavo-core' ) . '</strong>',
             self::MINIMUM_ELEMENTOR_VERSION
        );
        printf( '<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', $message );
    }

    /**
    * Admin notice
    *
    * Warning when the site doesn't have a minimum required PHP version.
    *
    * @since 1.0
    *
    * @access public
    */
    public function ignavo_admin_notice_minimum_php_version()
    {
        if ( isset( $_GET['activate'] ) ) {
            unset( $_GET['activate'] );
        }
        $message = sprintf(
            /* translators: 1: Plugin name 2: PHP 3: Required PHP version */
            esc_html__( '%1$s requires %2$s version %3$s or greater.', 'ignavo-core' ),
            '<strong>' . esc_html__( 'Ignavo Core', 'ignavo-core' ) . '</strong>',
            '<strong>' . esc_html__( 'PHP', 'ignavo-core' ) . '</strong>',
             self::MINIMUM_PHP_VERSION
        );
        printf( '<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', $message );
    }
	
    public function widget_styles()
    {
    }

    public function widget_scripts()
    {


		if (is_admin ()){
			wp_enqueue_media ();
			wp_enqueue_script( 'widget-image', plugins_url( 'js/widget-image.js', __FILE__ ));
		}

        // custom-scripts
		if ( is_rtl() ) {
			wp_enqueue_script( 'ignavo-core-custom-scripts-rtl', plugins_url( 'elementor/custom-scripts-rtl.js', __FILE__ ), true );
		} else {
			wp_enqueue_script( 'ignavo-core-custom-scripts', plugins_url( 'elementor/custom-scripts.js', __FILE__ ), true );
		}
    }
	
    public function widget_editor_style(){
		wp_enqueue_style( 'klb-editor-style', plugins_url( 'elementor/editor-style.css', __FILE__ ), true );
    }

    public function widget_editor_scripts(){
		
		wp_enqueue_script( 'klb-editor-scripts', plugins_url( 'elementor/editor-scripts.js', __FILE__ ), true );

    }


} 
Ignavo_Elementor_Addons::instance();