Current File : /home/kelaby89/www/wp/wp-content/plugins/happy-elementor-addons/base.php |
<?php
/**
* Plugin base class
*
* @package Happy_Addons
*/
namespace Happy_Addons\Elementor;
use Elementor\Controls_Manager;
use Elementor\Elements_Manager;
defined( 'ABSPATH' ) || die();
class Base {
private static $instance = null;
public $appsero = null;
public static function instance() {
if ( is_null( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
private function __construct() {
$this->run_autoload();
}
public function init() {
$this->include_files();
// Register custom category
add_action( 'elementor/elements/categories_registered', [ $this, 'add_category' ] );
// Register custom controls
add_action( 'elementor/controls/controls_registered', [ $this, 'register_controls' ] );
add_action( 'init', [ $this, 'include_on_init' ] );
add_action( 'init', [ $this, 'i18n' ] );
$this->init_appsero_tracking();
do_action( 'happyaddons_loaded' );
}
public function i18n() {
load_plugin_textdomain( 'happy-elementor-addons', false, dirname( plugin_basename( __FILE__ ) ) . '/i18n' );
}
/**
* Initialize the tracker
*
* @return void
*/
protected function init_appsero_tracking() {
if ( ! class_exists( 'Happy_Addons\Appsero\Client' ) ) {
include_once HAPPY_ADDONS_DIR_PATH . 'vendor/appsero/src/Client.php';
}
$this->appsero = new \Happy_Addons\Appsero\Client(
'70b96801-94cc-4501-a005-8f9a4e20e152',
'Happy Elementor Addons',
HAPPY_ADDONS__FILE__
);
$this->appsero->set_textdomain( 'happy-elementor-addons' );
// Active insights
$this->appsero->insights()
->add_plugin_data()
->add_extra([
'pro_installed' => ha_has_pro() ? 'Yes' : 'No',
'pro_version' => ha_has_pro() ? HAPPY_ADDONS_PRO_VERSION : '',
])
->init();
}
public function include_files() {
include_once( HAPPY_ADDONS_DIR_PATH . 'inc/functions-forms.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/ajax-handler.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/icons-manager.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/widgets-manager.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/assets-manager.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/cache-manager.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/widgets-cache.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/assets-cache.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/wpml-manager.php' );
if ( is_admin() ) {
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/updater.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/dashboard.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/attention-seeker.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/select2-handler.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/dashboard-widgets.php' );
}
if ( is_user_logged_in() ) {
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/library-manager.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/library-source.php' );
}
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/api-handler.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/conditions-cache.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/theme-builder.php' );
// include_once( HAPPY_ADDONS_DIR_PATH . 'classes/condition-manager.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/builder-compatibility/astra.php');
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/builder-compatibility/bbtheme.php');
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/builder-compatibility/generatepress.php');
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/builder-compatibility/genesis.php');
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/builder-compatibility/my-listing.php');
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/builder-compatibility/oceanwp.php');
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/builder-compatibility/twenty-nineteen.php');
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/builder-compatibility/theme-support.php');
}
public function include_on_init() {
Condition_Manager::instance();
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/extensions-manager.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'classes/credentials-manager.php' );
}
/**
* Add custom category.
*
* @param $elements_manager
*/
public function add_category( Elements_Manager $elements_manager ) {
$elements_manager->add_category(
'happy_addons_category',
[
'title' => __( 'Happy Addons', 'happy-elementor-addons' ),
'icon' => 'fa fa-smile-o',
]
);
}
/**
* Register controls
*
* @param Controls_Manager $controls_Manager
*/
public function register_controls( Controls_Manager $controls_Manager ) {
include_once( HAPPY_ADDONS_DIR_PATH . 'controls/foreground.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'controls/select2.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'controls/widget-list.php' );
include_once( HAPPY_ADDONS_DIR_PATH . 'controls/text-stroke.php' );
$Foreground = __NAMESPACE__ . '\Controls\Group_Control_Foreground';
$controls_Manager->add_group_control( $Foreground::get_type(), new $Foreground() );
$Select2 = __NAMESPACE__ . '\Controls\Select2';
$Widget_List = __NAMESPACE__ . '\Controls\Widget_List';
ha_elementor()->controls_manager->register( new $Select2() );
ha_elementor()->controls_manager->register( new $Widget_List() );
$Text_Stroke = __NAMESPACE__ . '\Controls\Group_Control_Text_Stroke';
$controls_Manager->add_group_control( $Text_Stroke::get_type(), new $Text_Stroke() );
}
protected function autoload( $class_name ) {
if ( 0 !== strpos( $class_name, __NAMESPACE__ ) ) {
return;
}
if( 'Happy_Addons\Elementor\Condition_Manager' == $class_name ) {
$file_name = strtolower(
str_replace(
[ __NAMESPACE__ . '\\', '_', '\\' ], // replace namespace, underscrore & backslash
[ '', '-', '/' ],
$class_name
)
);
$file = HAPPY_ADDONS_DIR_PATH . 'classes/' . $file_name . '.php';
if ( ! class_exists( $class_name ) && is_readable( $file ) ) {
include_once $file;
}
}
}
public function run_autoload() {
spl_autoload_register( [ $this, 'autoload' ] );
}
}