File "bdevs-element.php"

Full Path: /home/leadltht/fastlinkinternet.com/admin/wp-content/wp-content/plugins/bdevs-element/bdevs-element.php
File size: 9.06 KB
MIME-type: text/x-php
Charset: utf-8

<?php

/**
 * Plugin Name: Bdevs Element
 * Description: Bdevs Element is most userful widgets features for Elementor Page Builder.
 * Plugin URI:  http://bdevs.net
 * Version:     1.0.7
 * Author:      Nasir Uddin Mandal
 * Author URI:  http://bdevs.net
 * Text Domain: bdevs-element
 * Domain Path: /languages/
 */

if (!defined('ABSPATH')) {
	exit; // Exit if accessed directly.
}

define('BDEVSEL_VERSION', '1.0.7');
define('BDEVSEL__FILE__', __FILE__);
define('BDEVSEL_DIR_PATH', plugin_dir_path(BDEVSEL__FILE__));
define('BDEVSEL_DIR_URL', plugin_dir_url(BDEVSEL__FILE__));
define('BDEVSEL_ASSETS', trailingslashit(BDEVSEL_DIR_URL . 'assets'));

define('BDEVSEL_WISHLIST_ACTIVED', in_array('yith-woocommerce-wishlist/init.php', apply_filters('active_plugins', get_option('active_plugins'))));

if (!defined('BDEVSEL_WOOCOMMERCE_ACTIVED')) {
	define('BDEVSEL_WOOCOMMERCE_ACTIVED', in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins'))));
}

use \Elementor\Controls_Manager;
use \Elementor\Elements_Manager;

/**
 * Main Bdevs Element Class
 *
 * The main class that initiates and runs the plugin.
 *
 * @since 1.0.0
 */
final class BdevsElement
{

	/**
	 * Plugin Version
	 *s
	 * @since 1.0.0
	 *
	 * @var string The plugin version.
	 */
	const VERSION = '1.0.0';

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

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

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


	/**
	 * Instance of Elemenntor Frontend class.
	 *
	 * @var \Elementor\Frontend()
	 */
	public static $elementor_instance;

	/**
	 * Instance
	 *
	 * Ensures only one instance of the class is loaded or can be loaded.
	 *
	 * @since 1.0.0
	 *
	 * @access public
	 * @static
	 *
	 * @return BdevsElementor 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.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.0
	 *
	 * @access public
	 */
	public function i18n()
	{
		// Load textdomain
		load_plugin_textdomain('bdevs-element', false, basename(dirname(__FILE__)) . '/languages/');
	}


	/**
	 * 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.0
	 *
	 * @access public
	 */
	public function init()
	{

		//helper
		//require_once BDEVSEL_DIR_PATH . 'includes/helper.php';


		// Included all files.
		require_once BDEVSEL_DIR_PATH . 'autoload.php';
		require_once BDEVSEL_DIR_PATH . 'includes/helper-function.php';

		\BdevsElement\BDevs_El_Assets::init();
		\BdevsElement\BDevs_El_Select2_Handler::init();
		\BdevsElement\BDevs_El_Icons::init();


		// Check if Elementor installed and activated
		if (!did_action('elementor/loaded')) {
			add_action('admin_notices', [$this, '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, '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, 'admin_notice_minimum_php_version']);
			return;
		}

		if (defined('ELEMENTOR_VERSION') && is_callable('Elementor\Plugin::instance')) {

			self::$elementor_instance = \Elementor\Plugin::instance();

			add_action('elementor/init', [$this, 'add_elementor_category'], 1);

			// Add Plugin actions
			add_action('elementor/frontend/after_register_scripts', [$this, 'register_frontend_scripts'], 10);

			// Register Widget Styles
			add_action('elementor/frontend/after_enqueue_styles', [$this, 'register_frontend_styles']);

			add_action('elementor/widgets/register', [$this, 'init_widgets']);

			// Register custom controls
			add_action('elementor/controls/controls_registered', [$this, 'register_controls']);
		}
	}

	/**
	 * Admin notice
	 *
	 * Warning when the site doesn't have Elementor installed or activated.
	 *
	 * @since 1.0.0
	 *
	 * @access public
	 */
	public function 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.', 'bdevs-element'),
			'<strong>' . esc_html__('Bdevs Element', 'bdevs-element') . '</strong>',
			'<strong>' . esc_html__('Elementor', 'bdevs-element') . '</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.0
	 *
	 * @access public
	 */
	public function 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.', 'bdevs-element'),
			'<strong>' . esc_html__('Bdevs Element', 'bdevs-element') . '</strong>',
			'<strong>' . esc_html__('Elementor', 'bdevs-element') . '</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.0
	 *
	 * @access public
	 */
	public function 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.', 'bdevs-element'),
			'<strong>' . esc_html__('Bdevs Element', 'bdevs-element') . '</strong>',
			'<strong>' . esc_html__('PHP', 'bdevs-element') . '</strong>',
			self::MINIMUM_PHP_VERSION
		);

		printf('<div class="notice notice-warning is-dismissible"><p>%1$s</p></div>', $message);
	}

	/**
	 * Add Elementor category.
	 */
	public function add_elementor_category()
	{
		self::$elementor_instance->elements_manager->add_category(
			'bdevs-element',
			array(
				'title' => __('Bdevs Element', 'bdevs-element'),
				'icon'  => 'fa fa-plug',
			)
		);
	}

	/**
	 * Register Frontend Scripts
	 *
	 */
	public function register_frontend_scripts()
	{
		wp_register_script('bdevs-element', plugin_dir_url(__FILE__) . 'assets/js/bdevs-element.js', array('jquery'), self::VERSION);
	}

	/**
	 * Register Frontend styles
	 *
	 */
	public function register_frontend_styles()
	{
		wp_register_style('bdevs-element', plugin_dir_url(__FILE__) . 'assets/css/bdevs-element.css', self::VERSION);
	}


	/**
	 * Init Widgets
	 *
	 * Include widgets files and register them
	 *
	 * @since 1.0.0
	 */
	public function init_widgets()
	{
		// Include Widget files
		$_widget_list = BdevsElement\Helper::get_widgets();
		foreach ($_widget_list as $widget_key => $data) {
			self::register_widget($widget_key);
		}
	}

	protected static function register_widget($widget_key)
	{
		// Register widget
		$widget_class = '\BdevsElement\Widget\\' . ucwords(str_replace('-', '_', $widget_key));
		if (class_exists($widget_class)) {
			self::$elementor_instance->widgets_manager->register(new $widget_class);
		}
	}

	/**
	 * Register controls
	 *
	 * @param Controls_Manager $controls_Manager
	 */
	public function register_controls(Controls_Manager $controls_Manager)
	{
		$select2 = '\BdevsElement\BDevs_El_Select2';
		//add select2 to register control
		self::$elementor_instance->controls_manager->register_control($select2::TYPE, new $select2());
	}

	/**
	 * Prints the Elementor Page content.
	 */
	public static function get_content($id = 0)
	{
		if (class_exists('\ElementorPro\Plugin')) {
			echo do_shortcode('[elementor-template id="' . $id . '"]');
		} else {
			echo self::$elementor_instance->frontend->get_builder_content_for_display($id);
		}
	}
}

BdevsElement::instance();