Current File : /home/bravrvjk/hpgt.org/wp-content/plugins/wpr-addons-pro//plugin.php
<?php
namespace WprAddonsPro;
use Elementor\Utils;
use Elementor\Controls_Manager;
use WprAddonsPro\Includes\DynamicTags;
if ( ! defined( 'ABSPATH' ) ) { exit; } // Exit if accessed directly
/**
* Main class plugin
*/
class Plugin {
/**
* @var Plugin
*/
private static $_instance;
/**
* @var Manager
*/
private $_modules_manager;
/**
* @var array
*/
private $_localize_settings = [];
/**
* @return string
*/
public function get_version() {
return WPR_ADDONS_PRO_VERSION;
}
/**
* Throw error on object clone
*
* The whole idea of the singleton design pattern is that there is a single
* object therefore, we don't want the object to be cloned.
*
* @since 1.0
* @return void
*/
public function __clone() {
// Cloning instances of the class is forbidden
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'wpr-addons' ), '1.0' );
}
/**
* Disable unserializing of the class
*
* @since 1.0
* @return void
*/
public function __wakeup() {
// Unserializing instances of the class is forbidden
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'wpr-addons' ), '1.0' );
}
/**
* @return Plugin
*/
public static function instance() {
if ( is_null( self::$_instance ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
public function autoload( $class ) {
if ( 0 !== strpos( $class, __NAMESPACE__ ) ) {
return;
}
$filename = strtolower(
preg_replace(
[ '/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/' ],
[ '', '$1-$2', '-', DIRECTORY_SEPARATOR ],
$class
)
);
$filename = WPR_ADDONS_PRO_PATH . $filename . '.php';
if ( is_readable( $filename ) ) {
include( $filename );
}
}
public function get_localize_settings() {
return $this->_localize_settings;
}
public function add_localize_settings( $setting_key, $setting_value = null ) {
if ( is_array( $setting_key ) ) {
$this->_localize_settings = array_replace_recursive( $this->_localize_settings, $setting_key );
return;
}
if ( ! is_array( $setting_value ) || ! isset( $this->_localize_settings[ $setting_key ] ) || ! is_array( $this->_localize_settings[ $setting_key ] ) ) {
$this->_localize_settings[ $setting_key ] = $setting_value;
return;
}
$this->_localize_settings[ $setting_key ] = array_replace_recursive( $this->_localize_settings[ $setting_key ], $setting_value );
}
public function script_suffix() {
// $dir = is_rtl() ? '-rtl' : '';
return defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
}
public function enqueue_panel_styles() {
wp_enqueue_style(
'wpr-addons-pro-library-editor-css',
WPR_ADDONS_PRO_URL . 'assets/css/editor' . $this->script_suffix() . '.css',
[],
Plugin::instance()->get_version()
);
$plugin_name = get_option('wpr_wl_plugin_name');
$element_icon_css = '';
if ( !empty($plugin_name) ) {
$element_icon_css .= '.elementor-panel .wpr-icon:after {content: "'. substr($plugin_name, 0, 1) .'";}';
$element_icon_css .= '.elementor-control-type-section[class*=elementor-control-wpr_section_]:after {content: "'. substr($plugin_name, 0, 1) .'";}';
}
wp_add_inline_style('wpr-addons-pro-library-editor-css', $element_icon_css);
}
private function _includes() {
// Modules Manager
require WPR_ADDONS_PRO_PATH . 'includes/modules-manager.php';
// Custom Controls
require WPR_ADDONS_PRO_PATH . 'includes/controls/wpr-control-animations-pro.php';
// Particles
if ( 'on' === get_option('wpr-particles-toggle', 'on') ) {
require WPR_ADDONS_PRO_PATH . 'extensions/wpr-particles-pro.php';
}
// Parallax
if ( 'on' === get_option('wpr-parallax-background', 'on') || 'on' === get_option('wpr-parallax-multi-layer', 'on') ) {
require WPR_ADDONS_PRO_PATH . 'extensions/wpr-parallax-pro.php';
}
// Admin Files
if ( is_admin() ) {
if ( wpr_fs()->is_plan( 'expert' ) && defined('WPR_ADDONS_PRO_VERSION') ) {
require WPR_ADDONS_PRO_PATH . 'admin/white-label.php';
}
require WPR_ADDONS_PRO_PATH . 'admin/plugin-settings.php';
if ( wpr_fs()->can_use_premium_code() && defined('WPR_ADDONS_PRO_VERSION') ) {
require WPR_ADDONS_PRO_PATH . 'admin/form-submissions.php';
}
}
// Dynamic Tags
if ( wpr_fs()->is_plan( 'expert' ) && defined('WPR_ADDONS_PRO_VERSION') ) {
require WPR_ADDONS_PRO_PATH . 'includes/dynamic-tags/module.php';
// Sticky
if ( 'on' === get_option('wpr-sticky-section', 'on') ) {
require WPR_ADDONS_PRO_PATH . 'extensions/wpr-sticky-section-pro.php';
}
}
}
public function acf_settings_path( $path ) {
$path = WPR_ADDONS_PRO_PATH . 'plugins/acf/';
return $path;
}
public function acf_settings_dir( $dir ) {
$dir = WPR_ADDONS_PRO_URL . 'plugins/acf/';
return $dir;
}
public function switch_to_preview_query() {
if ( 'wpr_templates' === get_post_type( get_the_ID() ) ) {
$document = \Elementor\Plugin::instance()->documents->get_doc_or_auto_save( get_the_ID() );
\Elementor\Plugin::instance()->db->switch_to_query( $document->get_document_query_args() );
}
}
public function restore_current_query() {
\Elementor\Plugin::instance()->db->restore_current_query();
}
public function elementor_init() {
// Modules Manager
$this->_modules_manager = new Manager();
// Dynamic Tags
if ( wpr_fs()->is_plan( 'expert' ) && defined('WPR_ADDONS_PRO_VERSION') ) {
new Wpr_Dynamic_Tags_Module();
}
}
protected function add_actions() {
add_action( 'elementor/init', [ $this, 'elementor_init' ], 100 );
// Editor CSS/JS
add_action( 'elementor/editor/after_enqueue_styles', [ $this, 'enqueue_panel_styles' ], 989 );
// Integrate ACF & Dynamic Tags
if ( wpr_fs()->is_plan( 'expert' ) && defined('WPR_ADDONS_PRO_VERSION') ) {
add_filter( 'acf/settings/path', [$this, 'acf_settings_path'] );
add_filter( 'acf/settings/dir', [$this, 'acf_settings_dir'] );
include_once WPR_ADDONS_PRO_PATH . 'plugins/acf/acf.php';
// Enable WordPress Custom Fields
add_filter( 'acf/settings/remove_wp_meta_box', '__return_false' );
// Dynamic Tags Query
add_action( 'elementor/dynamic_tags/before_render', [ $this, 'switch_to_preview_query' ] );
add_action( 'elementor/dynamic_tags/after_render', [ $this, 'restore_current_query' ] );
}
}
/**
* Plugin constructor.
*/
private function __construct() {
spl_autoload_register( [ $this, 'autoload' ] );
$this->_includes();
$this->add_actions();
}
}
Plugin::instance();