compatibility
6 years ago
templates
6 years ago
class-addons-category.php
6 years ago
class-addons-integration.php
6 years ago
class-beta-testers.php
6 years ago
class-helper-functions.php
6 years ago
elementor-helper.php
6 years ago
plugin.php
6 years ago
class-addons-integration.php
420 lines
| 1 | <?php |
| 2 | |
| 3 | namespace PremiumAddons; |
| 4 | |
| 5 | use PremiumAddons\Admin\Settings\Maps; |
| 6 | use PremiumAddons\Admin\Settings\Modules_Settings; |
| 7 | |
| 8 | if( ! defined( 'ABSPATH' ) ) exit(); |
| 9 | |
| 10 | class Addons_Integration { |
| 11 | |
| 12 | //Class instance |
| 13 | private static $instance = null; |
| 14 | |
| 15 | //Modules Keys |
| 16 | private static $modules = null; |
| 17 | |
| 18 | //`premium_Template_Tags` Instance |
| 19 | protected $templateInstance; |
| 20 | |
| 21 | |
| 22 | //Maps Keys |
| 23 | private static $maps = null; |
| 24 | |
| 25 | |
| 26 | /** |
| 27 | * Initialize integration hooks |
| 28 | * |
| 29 | * @return void |
| 30 | */ |
| 31 | public function __construct() { |
| 32 | |
| 33 | self::$modules = Modules_Settings::get_enabled_keys(); |
| 34 | |
| 35 | self::$maps = Maps::get_enabled_keys(); |
| 36 | |
| 37 | $this->templateInstance = Includes\premium_Template_Tags::getInstance(); |
| 38 | |
| 39 | add_action( 'elementor/editor/before_enqueue_styles', array( $this, 'premium_font_setup' ) ); |
| 40 | |
| 41 | add_action( 'elementor/widgets/widgets_registered', array( $this, 'widgets_area' ) ); |
| 42 | |
| 43 | add_action( 'elementor/editor/before_enqueue_scripts', array( $this,'enqueue_editor_scripts') ); |
| 44 | |
| 45 | add_action( 'elementor/preview/enqueue_styles', array( $this, 'enqueue_preview_styles' ) ); |
| 46 | |
| 47 | add_action( 'elementor/frontend/after_register_styles', array( $this, 'register_frontend_styles' ) ); |
| 48 | |
| 49 | add_action( 'elementor/frontend/after_register_scripts', array( $this, 'register_frontend_scripts' ) ); |
| 50 | |
| 51 | add_action( 'wp_ajax_get_elementor_template_content', array( $this, 'get_template_content' ) ); |
| 52 | |
| 53 | } |
| 54 | |
| 55 | /** |
| 56 | * Loads plugin icons font |
| 57 | * @since 1.0.0 |
| 58 | * @access public |
| 59 | * @return void |
| 60 | */ |
| 61 | public function premium_font_setup() { |
| 62 | |
| 63 | wp_enqueue_style( |
| 64 | 'premium-addons-font', |
| 65 | PREMIUM_ADDONS_URL . 'assets/editor/css/style.css', |
| 66 | array(), |
| 67 | PREMIUM_ADDONS_VERSION |
| 68 | ); |
| 69 | |
| 70 | $badge_text = \PremiumAddons\Helper_Functions::get_badge(); |
| 71 | |
| 72 | $dynamic_css = sprintf( '[class^="pa-"]::after, [class*=" pa-"]::after { content: "%s"; }', $badge_text ) ; |
| 73 | |
| 74 | wp_add_inline_style( 'premium-addons-font', $dynamic_css ); |
| 75 | |
| 76 | } |
| 77 | |
| 78 | /** |
| 79 | * Register Frontend CSS files |
| 80 | * @since 2.9.0 |
| 81 | * @access public |
| 82 | */ |
| 83 | public function register_frontend_styles() { |
| 84 | |
| 85 | wp_register_style( |
| 86 | 'pa-prettyphoto', |
| 87 | PREMIUM_ADDONS_URL . 'assets/frontend/css/prettyphoto.css', |
| 88 | array(), |
| 89 | PREMIUM_ADDONS_VERSION, |
| 90 | 'all' |
| 91 | ); |
| 92 | |
| 93 | wp_register_style( |
| 94 | 'premium-addons', |
| 95 | PREMIUM_ADDONS_URL . 'assets/frontend/css/premium-addons.css', |
| 96 | array(), |
| 97 | PREMIUM_ADDONS_VERSION, |
| 98 | 'all' |
| 99 | ); |
| 100 | |
| 101 | } |
| 102 | |
| 103 | /** |
| 104 | * Enqueue Preview CSS files |
| 105 | * |
| 106 | * @since 2.9.0 |
| 107 | * @access public |
| 108 | * |
| 109 | */ |
| 110 | public function enqueue_preview_styles() { |
| 111 | |
| 112 | wp_enqueue_style('pa-prettyphoto'); |
| 113 | |
| 114 | wp_enqueue_style('premium-addons'); |
| 115 | |
| 116 | } |
| 117 | |
| 118 | /** |
| 119 | * Load widgets require function |
| 120 | * |
| 121 | * @since 1.0.0 |
| 122 | * @access public |
| 123 | * |
| 124 | */ |
| 125 | public function widgets_area() { |
| 126 | $this->widgets_register(); |
| 127 | } |
| 128 | |
| 129 | /** |
| 130 | * Requires widgets files |
| 131 | * |
| 132 | * @since 1.0.0 |
| 133 | * @access private |
| 134 | */ |
| 135 | private function widgets_register() { |
| 136 | |
| 137 | $check_component_active = self::$modules; |
| 138 | |
| 139 | foreach ( glob( PREMIUM_ADDONS_PATH . 'widgets/' . '*.php' ) as $file ) { |
| 140 | |
| 141 | $slug = basename( $file, '.php' ); |
| 142 | |
| 143 | $enabled = isset( $check_component_active[ $slug ] ) ? $check_component_active[ $slug ] : ''; |
| 144 | |
| 145 | if ( filter_var( $enabled, FILTER_VALIDATE_BOOLEAN ) || ! $check_component_active ) { |
| 146 | $this->register_addon( $file ); |
| 147 | } |
| 148 | } |
| 149 | |
| 150 | } |
| 151 | |
| 152 | /** |
| 153 | * Registers required JS files |
| 154 | * |
| 155 | * @since 1.0.0 |
| 156 | * @access public |
| 157 | */ |
| 158 | public function register_frontend_scripts() { |
| 159 | |
| 160 | $maps_settings = self::$maps; |
| 161 | |
| 162 | $locale = isset ( $maps_settings['premium-map-locale'] ) ? $maps_settings['premium-map-locale'] : "en"; |
| 163 | |
| 164 | wp_register_script( |
| 165 | 'premium-addons-js', |
| 166 | PREMIUM_ADDONS_URL . 'assets/frontend/js/premium-addons.js', |
| 167 | array('jquery'), |
| 168 | PREMIUM_ADDONS_VERSION, |
| 169 | true |
| 170 | ); |
| 171 | |
| 172 | $data = array( |
| 173 | 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ) |
| 174 | ); |
| 175 | |
| 176 | wp_localize_script( 'premium-addons-js', 'PremiumSettings', $data ); |
| 177 | |
| 178 | wp_register_script( |
| 179 | 'prettyPhoto-js', |
| 180 | PREMIUM_ADDONS_URL . 'assets/frontend/js/lib/prettyPhoto.js', |
| 181 | array('jquery'), |
| 182 | PREMIUM_ADDONS_VERSION, |
| 183 | true |
| 184 | ); |
| 185 | |
| 186 | wp_register_script( |
| 187 | 'vticker-js', |
| 188 | PREMIUM_ADDONS_URL . 'assets/frontend/js/lib/Vticker.js', |
| 189 | array('jquery'), |
| 190 | PREMIUM_ADDONS_VERSION, |
| 191 | true |
| 192 | ); |
| 193 | wp_register_script( |
| 194 | 'typed-js', |
| 195 | PREMIUM_ADDONS_URL . 'assets/frontend/js/lib/typedmin.js', |
| 196 | array('jquery'), |
| 197 | PREMIUM_ADDONS_VERSION, |
| 198 | true |
| 199 | ); |
| 200 | |
| 201 | wp_register_script( |
| 202 | 'count-down-timer-js', |
| 203 | PREMIUM_ADDONS_URL . 'assets/frontend/js/lib/jquerycountdown.js', |
| 204 | array('jquery'), |
| 205 | PREMIUM_ADDONS_VERSION, |
| 206 | true |
| 207 | ); |
| 208 | |
| 209 | wp_register_script( |
| 210 | 'isotope-js', |
| 211 | PREMIUM_ADDONS_URL . 'assets/frontend/js/lib/isotope.js', |
| 212 | array('jquery'), |
| 213 | PREMIUM_ADDONS_VERSION, |
| 214 | true |
| 215 | ); |
| 216 | |
| 217 | wp_register_script( |
| 218 | 'modal-js', |
| 219 | PREMIUM_ADDONS_URL . 'assets/frontend/js/lib/modal.js', |
| 220 | array('jquery'), |
| 221 | PREMIUM_ADDONS_VERSION, |
| 222 | true |
| 223 | ); |
| 224 | |
| 225 | if( $maps_settings['premium-map-cluster'] ) { |
| 226 | wp_register_script( |
| 227 | 'google-maps-cluster', |
| 228 | 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js', |
| 229 | array(), |
| 230 | PREMIUM_ADDONS_VERSION, |
| 231 | false |
| 232 | ); |
| 233 | } |
| 234 | |
| 235 | if( $maps_settings['premium-map-disable-api'] && '1' != $maps_settings['premium-map-api'] ) { |
| 236 | $api = sprintf ( 'https://maps.googleapis.com/maps/api/js?key=%1$s&language=%2$s', $maps_settings['premium-map-api'], $locale ); |
| 237 | wp_register_script( |
| 238 | 'premium-maps-api-js', |
| 239 | $api, |
| 240 | array(), |
| 241 | PREMIUM_ADDONS_VERSION, |
| 242 | false |
| 243 | ); |
| 244 | } |
| 245 | |
| 246 | wp_register_script( |
| 247 | 'premium-maps-js', |
| 248 | PREMIUM_ADDONS_URL . 'assets/frontend/js/premium-maps.js', |
| 249 | array( 'jquery', 'premium-maps-api-js' ), |
| 250 | PREMIUM_ADDONS_VERSION, |
| 251 | true |
| 252 | ); |
| 253 | |
| 254 | wp_register_script( |
| 255 | 'vscroll-js', |
| 256 | PREMIUM_ADDONS_URL . 'assets/frontend/js/premium-vscroll.js', |
| 257 | array('jquery'), |
| 258 | PREMIUM_ADDONS_VERSION, |
| 259 | true |
| 260 | ); |
| 261 | |
| 262 | wp_register_script( |
| 263 | 'slimscroll-js', |
| 264 | PREMIUM_ADDONS_URL . 'assets/frontend/js/lib/jquery.slimscroll.js', |
| 265 | array('jquery'), |
| 266 | PREMIUM_ADDONS_VERSION, |
| 267 | true |
| 268 | ); |
| 269 | |
| 270 | wp_register_script( |
| 271 | 'iscroll-js', |
| 272 | PREMIUM_ADDONS_URL . 'assets/frontend/js/lib/iscroll.js', |
| 273 | array('jquery'), |
| 274 | PREMIUM_ADDONS_VERSION, |
| 275 | true |
| 276 | ); |
| 277 | |
| 278 | } |
| 279 | |
| 280 | /* |
| 281 | * Enqueue editor scripts |
| 282 | * |
| 283 | * @since 3.2.5 |
| 284 | * @access public |
| 285 | */ |
| 286 | public function enqueue_editor_scripts() { |
| 287 | |
| 288 | $map_enabled = isset( self::$modules['premium-maps'] ) ? self::$modules['premium-maps'] : 1; |
| 289 | |
| 290 | if( $map_enabled ) { |
| 291 | |
| 292 | $premium_maps_api = self::$maps['premium-map-api']; |
| 293 | |
| 294 | $locale = isset ( self::$maps['premium-map-locale'] ) ? self::$maps['premium-map-locale'] : "en"; |
| 295 | |
| 296 | $premium_maps_disable_api = self::$maps['premium-map-disable-api']; |
| 297 | |
| 298 | if ( $premium_maps_disable_api && '1' != $premium_maps_api ) { |
| 299 | $api = sprintf ( 'https://maps.googleapis.com/maps/api/js?key=%1$s&language=%2$s', $premium_maps_api, $locale ); |
| 300 | wp_enqueue_script( |
| 301 | 'premium-maps-api-js', |
| 302 | $api, |
| 303 | array(), |
| 304 | PREMIUM_ADDONS_VERSION, |
| 305 | false |
| 306 | ); |
| 307 | |
| 308 | } |
| 309 | |
| 310 | wp_enqueue_script( |
| 311 | 'premium-maps-address', |
| 312 | PREMIUM_ADDONS_URL . 'assets/editor/js/premium-maps-address.js', |
| 313 | array( 'jquery' ), |
| 314 | PREMIUM_ADDONS_VERSION, |
| 315 | true |
| 316 | ); |
| 317 | |
| 318 | } |
| 319 | |
| 320 | } |
| 321 | |
| 322 | /* |
| 323 | * Get Template Content |
| 324 | * |
| 325 | * Get Elementor template HTML content. |
| 326 | * |
| 327 | * @since 3.2.6 |
| 328 | * @access public |
| 329 | * |
| 330 | */ |
| 331 | public function get_template_content() { |
| 332 | |
| 333 | $template = $_GET['templateID']; |
| 334 | |
| 335 | if( ! isset( $template ) ) { |
| 336 | return; |
| 337 | } |
| 338 | |
| 339 | $template_content = $this->templateInstance->get_template_content( $template ); |
| 340 | |
| 341 | if ( empty ( $template_content ) || ! isset( $template_content ) ) { |
| 342 | wp_send_json_error(); |
| 343 | } |
| 344 | |
| 345 | $data = array( |
| 346 | 'template_content' => $template_content |
| 347 | ); |
| 348 | |
| 349 | wp_send_json_success( $data ); |
| 350 | |
| 351 | } |
| 352 | |
| 353 | /** |
| 354 | * |
| 355 | * Register addon by file name. |
| 356 | * |
| 357 | * @access public |
| 358 | * |
| 359 | * @param string $file File name. |
| 360 | * @param object $widgets_manager Widgets manager instance. |
| 361 | * |
| 362 | * @return void |
| 363 | */ |
| 364 | public function register_addon( $file ) { |
| 365 | |
| 366 | $widget_manager = \Elementor\Plugin::instance()->widgets_manager; |
| 367 | |
| 368 | $base = basename( str_replace( '.php', '', $file ) ); |
| 369 | $class = ucwords( str_replace( '-', ' ', $base ) ); |
| 370 | $class = str_replace( ' ', '_', $class ); |
| 371 | $class = sprintf( 'PremiumAddons\Widgets\%s', $class ); |
| 372 | |
| 373 | if( 'PremiumAddons\Widgets\Premium_Contactform' != $class ) { |
| 374 | require $file; |
| 375 | } else { |
| 376 | if( function_exists('wpcf7') ) { |
| 377 | require $file; |
| 378 | } |
| 379 | } |
| 380 | |
| 381 | if ( 'PremiumAddons\Widgets\Premium_Blog' == $class ) { |
| 382 | require_once ( PREMIUM_ADDONS_PATH . 'widgets/dep/queries.php' ); |
| 383 | } |
| 384 | |
| 385 | if ( class_exists( $class ) ) { |
| 386 | $widget_manager->register_widget_type( new $class ); |
| 387 | } |
| 388 | } |
| 389 | |
| 390 | /** |
| 391 | * |
| 392 | * Creates and returns an instance of the class |
| 393 | * |
| 394 | * @since 1.0.0 |
| 395 | * @access public |
| 396 | * |
| 397 | * @return object |
| 398 | * |
| 399 | */ |
| 400 | public static function get_instance() { |
| 401 | if( self::$instance == null ) { |
| 402 | self::$instance = new self; |
| 403 | } |
| 404 | return self::$instance; |
| 405 | } |
| 406 | } |
| 407 | |
| 408 | |
| 409 | if ( ! function_exists( 'premium_addons_integration' ) ) { |
| 410 | |
| 411 | /** |
| 412 | * Returns an instance of the plugin class. |
| 413 | * @since 1.0.0 |
| 414 | * @return object |
| 415 | */ |
| 416 | function premium_addons_integration() { |
| 417 | return Addons_Integration::get_instance(); |
| 418 | } |
| 419 | } |
| 420 | premium_addons_integration(); |