芝麻web文件管理V1.00
编辑当前文件:/home/royashxg/www/wp-content/plugins/premium-addons-for-elementor/includes/addons-integration.php
template_instance = Premium_Template_Tags::getInstance(); add_action( 'elementor/editor/before_enqueue_styles', array( $this, 'enqueue_editor_styles' ) ); add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'load_live_editor_modal' ) ); add_action( 'elementor/editor/after_enqueue_scripts', array( $this, 'live_editor_enqueue' ) ); add_action( 'wp_ajax_handle_live_editor', array( $this, 'handle_live_editor' ) ); add_action( 'wp_ajax_check_temp_validity', array( $this, 'check_temp_validity' ) ); add_action( 'wp_ajax_update_template_title', array( $this, 'update_template_title' ) ); add_action( 'wp_ajax_get_pinterest_token', array( $this, 'get_pinterest_token' ) ); add_action( 'wp_ajax_get_pinterest_boards', array( $this, 'get_pinterest_boards' ) ); add_action( 'wp_ajax_insert_cf_form', array( $this, 'insert_cf_form' ) ); add_action( 'wp_ajax_get_tiktok_token', array( $this, 'get_tiktok_token' ) ); add_action( 'elementor/editor/before_enqueue_scripts', array( $this, 'enqueue_editor_scripts' ) ); add_action( 'elementor/preview/enqueue_styles', array( $this, 'enqueue_preview_styles' ) ); add_action( 'elementor/frontend/after_register_styles', array( $this, 'register_frontend_styles' ) ); add_action( 'elementor/frontend/after_register_scripts', array( $this, 'register_frontend_scripts' ) ); add_action( 'wp_ajax_get_elementor_template_content', array( $this, 'get_template_content' ) ); if ( defined( 'ELEMENTOR_VERSION' ) ) { add_action( 'elementor/controls/register', array( $this, 'init_pa_controls' ) ); add_action( 'elementor/widgets/register', array( $this, 'widgets_area' ) ); } add_action( 'elementor/editor/after_enqueue_scripts', array( $this, 'after_enqueue_scripts' ) ); $this->load_pa_extensions(); $cross_enabled = isset( self::$modules['premium-cross-domain'] ) ? self::$modules['premium-cross-domain'] : 1; if ( $cross_enabled ) { add_action( 'elementor/editor/before_enqueue_scripts', array( $this, 'enqueue_editor_cp_scripts' ), 99 ); add_action( 'elementor/editor/init', array( $this, 'load_cp_module' ) ); } } /** * Live Editor Enqueue. * * @access public * @since 4.8.10 */ public function live_editor_enqueue() { wp_enqueue_script( 'live-editor', PREMIUM_ADDONS_URL . 'assets/editor/js/live-editor.js', array( 'elementor-editor', 'jquery' ), PREMIUM_ADDONS_VERSION, true ); $live_editor_data = array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'nonce' => wp_create_nonce( 'pa-live-editor' ), ); wp_localize_script( 'live-editor', 'liveEditor', $live_editor_data ); } /** * Update Template Title. * * @access public * @since 4.8.10 */ public function update_template_title() { check_ajax_referer( 'pa-live-editor', 'security' ); if ( ! isset( $_POST['title'] ) || ! isset( $_POST['id'] ) ) { wp_send_json_error( 'Post has no title.' ); } if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( 'Insufficient user permission' ); } $res = wp_update_post( array( 'ID' => sanitize_text_field( wp_unslash( $_POST['id'] ) ), 'post_title' => sanitize_text_field( wp_unslash( $_POST['title'] ) ), ) ); wp_send_json_success( $res ); } /** * Check Temp Validity. * * Checks if the template is valid ( has content) or not, * And DELETE the post if it's invalid. * * @access public * @since 4.9.1 */ public function check_temp_validity() { check_ajax_referer( 'pa-live-editor', 'security' ); if ( ! isset( $_POST['templateID'] ) ) { wp_send_json_error( 'template ID is not set' ); } if ( ! current_user_can( 'manage_options' ) ) { wp_send_json_error( 'Insufficient user permission' ); } $temp_id = isset( $_POST['templateID'] ) ? sanitize_text_field( wp_unslash( $_POST['templateID'] ) ) : ''; $temp_type = isset( $_POST['tempType'] ) ? sanitize_text_field( wp_unslash( $_POST['tempType'] ) ) : ''; if ( 'loop' === $temp_type ) { /** @var LoopDocument $document */ $template_content = PluginPro::elementor()->documents->get( $temp_id ); } else { $template_content = $this->template_instance->get_template_content( $temp_id, true ); } if ( empty( $template_content ) || ! isset( $template_content ) ) { $res = wp_delete_post( $temp_id, true ); if ( ! is_wp_error( $res ) ) { $res = 'Template Deleted.'; } } else { $res = 'Template Has Content.'; } wp_send_json_success( $res ); } /** * Handle Live Editor Modal. * * @access public * @since 4.8.10 */ public function handle_live_editor() { check_ajax_referer( 'pa-live-editor', 'security' ); if ( ! isset( $_POST['key'] ) ) { wp_send_json_error(); } $post_name = 'pa-dynamic-temp-' . sanitize_text_field( wp_unslash( $_POST['key'] ) ); $temp_type = isset( $_POST['type'] ) ? sanitize_text_field( wp_unslash( $_POST['type'] ) ) : false; $meta_input = array( '_elementor_edit_mode' => 'builder', '_elementor_template_type' => 'page', '_wp_page_template' => 'elementor_canvas', ); if ( 'loop' === $temp_type ) { $meta_input = array( '_elementor_edit_mode' => 'builder', '_elementor_template_type' => 'loop-item', ); } elseif ( 'grid' === $temp_type ) { $meta_input = array( '_elementor_edit_mode' => 'builder', '_elementor_template_type' => 'premium-grid', ); } $post_title = ''; $args = array( 'post_type' => 'elementor_library', 'name' => $post_name, 'post_status' => 'publish', 'update_post_term_cache' => false, 'update_post_meta_cache' => false, 'posts_per_page' => 1, ); $post = get_posts( $args ); if ( empty( $post ) ) { // create a new one. $key = sanitize_text_field( wp_unslash( $_POST['key'] ) ); $post_title = 'PA Template | #' . substr( md5( $key ), 0, 4 ); $params = array( 'post_content' => '', 'post_type' => 'elementor_library', 'post_title' => $post_title, 'post_name' => $post_name, 'post_status' => 'publish', 'meta_input' => $meta_input, ); $post_id = wp_insert_post( $params ); } else { // edit post. $post_id = $post[0]->ID; $post_title = $post[0]->post_title; } $edit_url = get_admin_url() . '/post.php?post=' . $post_id . '&action=elementor'; $result = array( 'url' => $edit_url, 'id' => $post_id, 'title' => $post_title, ); wp_send_json_success( $result ); } /** * Load Live Editor Modal. * Puts live editor popup html into the editor. * * @access public * @since 4.8.10 */ public function load_live_editor_modal() { ob_start(); include_once PREMIUM_ADDONS_PATH . 'includes/live-editor-modal.php'; $output = ob_get_contents(); ob_end_clean(); echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } /** * After Enquque Scripts * * Loads editor scripts for our controls. * * @access public * @return void */ public function after_enqueue_scripts() { wp_enqueue_script( 'pa-eq-editor', PREMIUM_ADDONS_URL . 'assets/editor/js/editor.js', array( 'elementor-editor', 'jquery' ), PREMIUM_ADDONS_VERSION, true ); $modules = array( self::$modules['premium-blog'], self::$modules['pa-display-conditions'], self::$modules['premium-smart-post-listing'], self::$modules['premium-post-ticker'], self::$modules['premium-notifications'], self::$modules['premium-tcloud'], self::$modules['premium-pinterest-feed'], ); $localize_settings = in_array( true, $modules, true ); if ( $localize_settings ) { wp_localize_script( 'pa-eq-editor', 'PremiumSettings', array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'nonce' => wp_create_nonce( 'pa-blog-widget-nonce' ), 'unused_nonce' => wp_create_nonce( 'pa-disable-unused' ), ) ); } $time_limit = ini_get( 'max_execution_time' ); if ( $time_limit < 400 ) { $link = Helper_Functions::get_campaign_link( 'https://premiumaddons.com/docs/fix-elementor-editor-panel-loading-issues/', 'editor-page', 'wp-editor', 'panel-issues' ); $disable_unused_url = add_query_arg( array( 'page' => 'premium-addons', 'pa-action' => 'unused', '#tab' => 'elements', ), esc_url( admin_url( 'admin.php' ) ) ); wp_localize_script( 'pa-eq-editor', 'PremiumEditorLinks', array( $link, $disable_unused_url ) ); } wp_localize_script( 'pa-eq-editor', 'PremiumPanelSettings', array( 'papro_installed' => Helper_Functions::check_papro_version(), // 'papro_widgets' => Admin_Helper::get_pro_elements(), ) ); $pinterest_enabled = isset( self::$modules['premium-pinterest-feed'] ) ? self::$modules['premium-pinterest-feed'] : 1; $tiktok_enabled = isset( self::$modules['premium-tiktok-feed'] ) ? self::$modules['premium-tiktok-feed'] : 1; $cf_enabled = isset( self::$modules['premium-contactform'] ) ? self::$modules['premium-contactform'] : 1; if ( $cf_enabled || $pinterest_enabled || $tiktok_enabled ) { $data = array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'nonce' => wp_create_nonce( 'pa-editor' ), ); wp_enqueue_script( 'pa-editor-handler', PREMIUM_ADDONS_URL . 'assets/editor/js/editor-handler.js', array( 'elementor-editor' ), PREMIUM_ADDONS_VERSION, true ); wp_localize_script( 'pa-editor-handler', 'paEditorSettings', $data ); } } /** * Loads plugin icons font * * @since 1.0.0 * @access public * @return void */ public function enqueue_editor_styles() { $theme = Helper_Functions::get_elementor_ui_theme(); wp_enqueue_style( 'pa-editor', PREMIUM_ADDONS_URL . 'assets/editor/css/style.css', array(), PREMIUM_ADDONS_VERSION ); // Enqueue required style for Elementor dark UI Theme. if ( 'dark' === $theme ) { wp_add_inline_style( 'pa-editor', '.elementor-panel .elementor-control-section_pa_docs .elementor-panel-heading-title.elementor-panel-heading-title, .elementor-control-raw-html.editor-pa-doc a { color: #e0e1e3 !important; } [class^="pa-"]::after, [class*=" pa-"]::after { color: #aaa; opacity: 1 !important; } .premium-promotion-dialog .premium-promotion-btn { background-color: #202124 !important }' ); } $badge_text = Helper_Functions::get_badge(); $dynamic_css = sprintf( '#elementor-panel [class^="pa-"]::after, #elementor-panel [class*=" pa-"]::after { content: "%s"; }', $badge_text ); wp_add_inline_style( 'pa-editor', $dynamic_css ); } /** * Register Frontend CSS files * * @since 2.9.0 * @access public */ public function register_frontend_styles() { $dir = Helper_Functions::get_styles_dir(); $suffix = Helper_Functions::get_assets_suffix(); $is_rtl = is_rtl() ? '-rtl' : ''; wp_register_style( 'font-awesome-5-all', ELEMENTOR_ASSETS_URL . 'lib/font-awesome/css/all.min.css', false, PREMIUM_ADDONS_VERSION ); wp_register_style( 'pa-flipster', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/flipster' . $suffix . '.css', false, PREMIUM_ADDONS_VERSION ); wp_register_style( 'pa-prettyphoto', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/prettyphoto' . $is_rtl . $suffix . '.css', array(), PREMIUM_ADDONS_VERSION, 'all' ); wp_register_style( 'pa-slick', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/slick' . $is_rtl . $suffix . '.css', array(), PREMIUM_ADDONS_VERSION, 'all' ); wp_register_style( 'pa-world-clock', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-world-clock' . $suffix . '.css', array(), PREMIUM_ADDONS_VERSION, 'all' ); wp_register_style( 'tooltipster', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/tooltipster.min.css', array(), PREMIUM_ADDONS_VERSION, 'all' ); wp_register_style( 'pa-gTooltips', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-global-tooltips' . $suffix . '.css', array(), PREMIUM_ADDONS_VERSION, 'all' ); wp_register_style( 'pa-shape-divider', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-shape-divider' . $suffix . '.css', array(), PREMIUM_ADDONS_VERSION, 'all' ); $assets_gen_enabled = isset( self::$modules['premium-assets-generator'] ) && self::$modules['premium-assets-generator'] ? true : false; $type = get_post_type(); // If dynamic assets is disabled. if ( ! $assets_gen_enabled || ( 'page' !== $type && 'post' !== $type ) ) { $this->enqueue_old_styles( $dir, $is_rtl, $suffix ); } else { $css_path = '/pa-frontend' . $is_rtl . '-' . Assets_Manager::$post_id . $suffix . '.css'; if ( Assets_Manager::$is_updated && file_exists( PREMIUM_ASSETS_PATH . $css_path ) ) { wp_enqueue_style( 'pa-frontend', PREMIUM_ASSETS_URL . $css_path, array(), time(), 'all' ); } $pa_elements = get_option( 'pa_elements_' . Assets_Manager::$post_id, array() ); // If the assets are not updated, or they are updated but the dynamic CSS file has not been loaded for any reason. if ( 'empty' === self::$css_content || ! Assets_Manager::$is_updated || ( ! empty( $pa_elements ) && ! wp_style_is( 'pa-frontend', 'enqueued' ) ) ) { $this->enqueue_old_styles( $dir, $is_rtl, $suffix ); } } } /** * Register Old Styles * * @since 4.9.0 * @access public * * @param string $directory style directory. * @param string $is_rtl page direction. * @param string $suffix file suffix. */ public function enqueue_old_styles( $directory, $is_rtl, $suffix ) { wp_enqueue_style( 'premium-addons', PREMIUM_ADDONS_URL . 'assets/frontend/' . $directory . '/premium-addons' . $is_rtl . $suffix . '.css', array(), PREMIUM_ADDONS_VERSION, 'all' ); } /** * Registers required JS files * * @since 1.0.0 * @access public */ public function register_frontend_scripts() { $maps_settings = self::$maps; $dir = Helper_Functions::get_scripts_dir(); $suffix = Helper_Functions::get_assets_suffix(); $locale = isset( $maps_settings['premium-map-locale'] ) ? $maps_settings['premium-map-locale'] : 'en'; $assets_gen_enabled = isset( self::$modules['premium-assets-generator'] ) && self::$modules['premium-assets-generator'] ? true : false; $type = get_post_type(); if ( $assets_gen_enabled && ( 'page' === $type || 'post' === $type ) ) { // If the elemens are cached and ready to generate. if ( Assets_Manager::$is_updated ) { Assets_Manager::generate_asset_file( 'js' ); self::$css_content = Assets_Manager::generate_asset_file( 'css' ); } $js_path = '/pa-frontend-' . Assets_Manager::$post_id . $suffix . '.js'; if ( file_exists( PREMIUM_ASSETS_PATH . $js_path ) ) { wp_enqueue_script( 'pa-frontend', PREMIUM_ASSETS_URL . $js_path, array( 'jquery' ), time(), true ); wp_localize_script( 'pa-frontend', 'PremiumSettings', array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'nonce' => wp_create_nonce( 'pa-blog-widget-nonce' ), ) ); if ( class_exists( 'woocommerce' ) ) { wp_localize_script( 'pa-frontend', 'PremiumWooSettings', array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'products_nonce' => wp_create_nonce( 'pa-woo-products-nonce' ), 'qv_nonce' => wp_create_nonce( 'pa-woo-qv-nonce' ), 'cta_nonce' => wp_create_nonce( 'pa-woo-cta-nonce' ), 'woo_cart_url' => get_permalink( wc_get_page_id( 'cart' ) ), 'view_cart' => __( 'View cart', 'woocommerce' ), 'mini_cart_nonce' => wp_create_nonce( 'pa-mini-cart-nonce' ), ) ); } } } // If the assets are not ready, or file does not exist for any reson. if ( ! wp_script_is( 'pa-frontend', 'enqueued' ) || 'empty' === self::$css_content ) { $this->register_old_scripts( $dir, $suffix ); } // if ( !wp_script_is( 'wc-cart-fragments', 'enqueued' ) && wp_script_is( 'wc-cart-fragments', 'registered' ) ) { // Enqueue the wc-cart-fragments script // wp_enqueue_script( 'wc-cart-fragments' ); // } wp_register_script( 'tiktok-embed', 'https://www.tiktok.com/embed.js', array(), false, true ); wp_register_script( 'pa-scrolldir', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/pa-scrolldir' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'prettyPhoto-js', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/prettyPhoto' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'tooltipster-bundle', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/tooltipster' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-vticker', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/vticker' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-typed', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/typed' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-countdown', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/jquery-countdown' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'isotope-js', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/isotope' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-modal', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/modal' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-maps', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-maps' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-vscroll', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-vscroll' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-slimscroll', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/jquery-slimscroll' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-iscroll', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/iscroll' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-tilt', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/universal-tilt' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'lottie-js', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/lottie' . $suffix . '.js', array( 'jquery', ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-tweenmax', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/TweenMax' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-headroom', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/headroom' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION ); wp_register_script( 'pa-menu', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-nav-menu' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); if ( $maps_settings['premium-map-cluster'] ) { wp_register_script( 'pa-maps-cluster', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/markerclusterer' . $suffix . '.js', array(), '1.0.1', false ); } if ( $maps_settings['premium-map-disable-api'] && '1' !== $maps_settings['premium-map-api'] ) { $api = sprintf( 'https://maps.googleapis.com/maps/api/js?key=%1$s&callback=initMap&language=%2$s', $maps_settings['premium-map-api'], $locale ); wp_register_script( 'pa-maps-api', $api, array(), PREMIUM_ADDONS_VERSION, true ); } wp_register_script( 'pa-slick', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/slick' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-flipster', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/flipster' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION ); wp_register_script( 'pa-anime', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/anime' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-feffects', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-floating-effects' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-gTooltips', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-global-tooltips' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-shape-divider', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-shape-divider' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_localize_script( 'pa-gTooltips', 'PremiumSettings', array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'nonce' => wp_create_nonce( 'pa-blog-widget-nonce' ), ) ); wp_localize_script( 'premium-addons', 'PremiumSettings', array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'nonce' => wp_create_nonce( 'pa-blog-widget-nonce' ), ) ); wp_register_script( 'pa-eq-height', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-eq-height' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-dis-conditions', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-dis-conditions' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-gsap', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/pa-gsap' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-motionpath', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/motionpath' . $suffix . '.js', array( 'jquery', ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-fontawesome-all', PREMIUM_ADDONS_URL . 'assets/frontend/min-js/fontawesome-all.min.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-scrolltrigger', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/scrollTrigger' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-notifications', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-notifications' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-luxon', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/luxon' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'mousewheel-js', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/jquery-mousewheel' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'pa-wrapper-link', PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-wrapper-link' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); // Localize jQuery with required data for Global Add-ons. if ( self::$modules['premium-floating-effects'] ) { wp_localize_script( 'pa-feffects', 'PremiumFESettings', array( 'papro_installed' => Helper_Functions::check_papro_version(), ) ); } // Localize jQuery with required data for Global Add-ons. if ( self::$modules['premium-countdown'] ) { wp_localize_script( 'pa-countdown', 'premiumCountDownStrings', array( 'singule' => array( __( 'Year', 'premium-addons-for-elementor' ), __( 'Month', 'premium-addons-for-elementor' ), __( 'Week', 'premium-addons-for-elementor' ), __( 'Day', 'premium-addons-for-elementor' ), __( 'Hour', 'premium-addons-for-elementor' ), __( 'Minute', 'premium-addons-for-elementor' ), __( 'Second', 'premium-addons-for-elementor' ), ), 'plural' => array( __( 'Years', 'premium-addons-for-elementor' ), __( 'Months', 'premium-addons-for-elementor' ), __( 'Weeks', 'premium-addons-for-elementor' ), __( 'Days', 'premium-addons-for-elementor' ), __( 'Hours', 'premium-addons-for-elementor' ), __( 'Minutes', 'premium-addons-for-elementor' ), __( 'Seconds', 'premium-addons-for-elementor' ), ), ) ); } } /** * Register Old Scripts * * @since 4.9.0 * @access public * * @param string $directory script directory. * @param string $suffix file suffix. */ public function register_old_scripts( $directory, $suffix ) { wp_register_script( 'premium-addons', PREMIUM_ADDONS_URL . 'assets/frontend/' . $directory . '/premium-addons' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); // We need to make sure premium-woocommerce.js will not be loaded twice if assets are generated. if ( class_exists( 'woocommerce' ) ) { wp_register_script( 'premium-woocommerce', PREMIUM_ADDONS_URL . 'assets/frontend/' . $directory . '/premium-woo-products' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'premium-woo-cats', PREMIUM_ADDONS_URL . 'assets/frontend/' . $directory . '/premium-woo-categories' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'premium-mini-cart', PREMIUM_ADDONS_URL . 'assets/frontend/' . $directory . '/premium-mini-cart' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'premium-woo-cart', PREMIUM_ADDONS_URL . 'assets/frontend/' . $directory . '/premium-woo-cart' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_register_script( 'premium-woo-cta', PREMIUM_ADDONS_URL . 'assets/frontend/' . $directory . '/premium-woo-cta' . $suffix . '.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); wp_localize_script( 'premium-woo-cta', 'PremiumWooSettings', array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'cta_nonce' => wp_create_nonce( 'pa-woo-cta-nonce' ), 'view_cart' => __( 'View cart', 'woocommerce' ), 'mini_cart_nonce' => wp_create_nonce( 'pa-mini-cart-nonce' ), ) ); wp_localize_script( 'premium-mini-cart', 'PremiumWooSettings', array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'cta_nonce' => wp_create_nonce( 'pa-woo-cta-nonce' ), 'view_cart' => __( 'View cart', 'woocommerce' ), 'mini_cart_nonce' => wp_create_nonce( 'pa-mini-cart-nonce' ), ) ); wp_localize_script( 'premium-woocommerce', 'PremiumWooSettings', array( 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ), 'products_nonce' => wp_create_nonce( 'pa-woo-products-nonce' ), 'qv_nonce' => wp_create_nonce( 'pa-woo-qv-nonce' ), 'cta_nonce' => wp_create_nonce( 'pa-woo-cta-nonce' ), 'woo_cart_url' => get_permalink( wc_get_page_id( 'cart' ) ), 'view_cart' => __( 'View cart', 'woocommerce' ), 'mini_cart_nonce' => wp_create_nonce( 'pa-mini-cart-nonce' ), ) ); } } /** * Enqueue Preview CSS files * * @since 2.9.0 * @access public */ public function enqueue_preview_styles() { $custom_css = ' .e-preview--show-hidden-elements[data-elementor-device-mode="mobile"] .elementor-edit-area-active .elementor-hidden-mobile.premium-addons-element { display: none; } .e-preview--show-hidden-elements[data-elementor-device-mode="tablet"] .elementor-edit-area-active .elementor-hidden-tablet.premium-addons-element { display: none; } .e-preview--show-hidden-elements[data-elementor-device-mode="mobile_extra"] .elementor-edit-area-active .elementor-hidden-mobile_extra.premium-addons-element { display: none; } .e-preview--show-hidden-elements[data-elementor-device-mode="tablet_extra"] .elementor-edit-area-active .elementor-hidden-tablet_extra.premium-addons-element { display: none; } .e-preview--show-hidden-elements[data-elementor-device-mode="widescreen"] .elementor-edit-area-active .elementor-hidden-widescreen.premium-addons-element { display: none; } .e-preview--show-hidden-elements[data-elementor-device-mode="desktop"] .elementor-edit-area-active .elementor-hidden-desktop.premium-addons-element { display: none; }'; wp_enqueue_style( 'pa-prettyphoto' ); wp_enqueue_style( 'premium-addons' ); wp_add_inline_style( 'premium-addons', $custom_css ); wp_enqueue_style( 'pa-slick' ); } /** * Load widgets require function * * @since 1.0.0 * @access public */ public function widgets_area( $widgets_manager ) { $enabled_elements = self::$modules; foreach ( glob( PREMIUM_ADDONS_PATH . 'widgets/*.php' ) as $file ) { $slug = basename( $file, '.php' ); // Fixes the conflict between Lottie widget/addon keys. if ( 'premium-lottie' === $slug ) { // Check if Lottie widget switcher value was saved before. $saved_options = get_option( 'pa_save_settings' ); $slug = 'premium-lottie-widget'; } $enabled = isset( $enabled_elements[ $slug ] ) ? $enabled_elements[ $slug ] : ''; if ( filter_var( $enabled, FILTER_VALIDATE_BOOLEAN ) || ! $enabled_elements ) { $base = basename( str_replace( '.php', '', $file ) ); $class = ucwords( str_replace( '-', ' ', $base ) ); $class = str_replace( ' ', '_', $class ); $class = sprintf( 'PremiumAddons\Widgets\%s', $class ); $this->load_widget_files( $file, $class ); if ( class_exists( $class, false ) ) { $widgets_manager->register( new $class() ); } } } } public function load_widget_files( $file, $class ) { if ( 'PremiumAddons\Widgets\Premium_Contactform' !== $class ) { require $file; } elseif ( function_exists( 'wpcf7' ) ) { require $file; } if ( 'PremiumAddons\Widgets\Premium_Videobox' === $class || 'PremiumAddons\Widgets\Premium_Weather' === $class ) { require_once PREMIUM_ADDONS_PATH . 'widgets/dep/urlopen.php'; } if ( 'PremiumAddons\Widgets\Premium_Weather' === $class ) { require_once PREMIUM_ADDONS_PATH . 'widgets/dep/pa-weather-handler.php'; } if ( in_array( $class, array( 'PremiumAddons\Widgets\Premium_Pinterest_Feed', 'PremiumAddons\Widgets\Premium_Tiktok_Feed' ), true ) ) { require_once PREMIUM_ADDONS_PATH . 'includes/pa-display-conditions/mobile-detector.php'; if ( 'PremiumAddons\Widgets\Premium_Pinterest_Feed' == $class ) { require_once PREMIUM_ADDONS_PATH . 'widgets/dep/pa-pins-handler.php'; } if ( 'PremiumAddons\Widgets\Premium_Tiktok_Feed' == $class ) { require_once PREMIUM_ADDONS_PATH . 'widgets/dep/pa-tiktok-handler.php'; } } } /** * Enqueue editor scripts * * @since 3.2.5 * @access public */ public function enqueue_editor_scripts() { $map_enabled = isset( self::$modules['premium-maps'] ) ? self::$modules['premium-maps'] : 1; if ( $map_enabled ) { $premium_maps_api = self::$maps['premium-map-api']; $locale = isset( self::$maps['premium-map-locale'] ) ? self::$maps['premium-map-locale'] : 'en'; $disable_api = self::$maps['premium-map-disable-api']; if ( $disable_api && '1' !== $premium_maps_api ) { $api = sprintf( 'https://maps.googleapis.com/maps/api/js?key=%1$s&language=%2$s', $premium_maps_api, $locale ); wp_enqueue_script( 'pa-maps-api', $api, array(), PREMIUM_ADDONS_VERSION, false ); } wp_enqueue_script( 'pa-maps-finder', PREMIUM_ADDONS_URL . 'assets/editor/js/pa-maps-finder.js', array( 'jquery' ), PREMIUM_ADDONS_VERSION, true ); } } /** * Get Pinterest account token for Pinterest Feed widget * * @since 4.10.2 * @access public * * @return void */ public function get_pinterest_token() { check_ajax_referer( 'pa-editor', 'security' ); $api_url = 'https://appfb.premiumaddons.com/wp-json/fbapp/v2/pinterest'; $response = wp_remote_get( $api_url, array( 'timeout' => 60, 'sslverify' => false, ) ); $body = wp_remote_retrieve_body( $response ); $body = json_decode( $body, true ); // $transient_name = 'pa_pinterest_token_' . $body; // $expire_time = 29 * DAY_IN_SECONDS; // set_transient( $transient_name, true, $expire_time ); wp_send_json_success( $body ); } /** * Get Pinterest account token for Pinterest Feed widget * * @since 4.10.2 * @access public * * @return void */ public function get_pinterest_boards() { check_ajax_referer( 'pa-blog-widget-nonce', 'nonce' ); if ( ! isset( $_GET['token'] ) ) { wp_send_json_error(); } $token = sanitize_text_field( wp_unslash( $_GET['token'] ) ); $transient_name = 'pa_pinterest_boards_' . substr( $token, 0, 15 ); $body = get_transient( $transient_name ); if ( false === $body ) { $api_url = 'https://api.pinterest.com/v5/boards?page_size=60'; $response = wp_remote_get( $api_url, array( 'headers' => array( 'Authorization' => 'Bearer ' . $token, ), ) ); $body = wp_remote_retrieve_body( $response ); $body = json_decode( $body, true ); set_transient( $transient_name, $body, 30 * MINUTE_IN_SECONDS ); } $boards = array(); foreach ( $body['items'] as $index => $board ) { $boards[ $board['id'] ] = $board['name']; } wp_send_json_success( wp_json_encode( $boards ) ); } /** * Get Pinterest account token for Pinterest Feed widget * * @since 4.10.2 * @access public * * @return void */ public function get_tiktok_token() { check_ajax_referer( 'pa-editor', 'security' ); $api_url = 'https://appfb.premiumaddons.com/wp-json/fbapp/v2/tiktok'; $response = wp_remote_get( $api_url, array( 'timeout' => 60, 'sslverify' => false, ) ); $body = wp_remote_retrieve_body( $response ); $body = json_decode( $body, true ); // $transient_name = 'pa_tiktok_token_' . $body; // $expire_time = 29 * DAY_IN_SECONDS; // set_transient( $transient_name, true, $expire_time ); wp_send_json_success( $body ); } /** * Insert Contact Form 7 Form * * @since 4.10.2 * @access public * * @return void */ public function insert_cf_form() { check_ajax_referer( 'pa-editor', 'security' ); if ( ! isset( $_GET['preset'] ) ) { wp_send_json_error(); } $preset = sanitize_text_field( wp_unslash( $_GET['preset'] ) ); $current_user = wp_get_current_user(); $props = array( 'form' => Helper_Functions::get_cf_form_body( $preset ), 'mail' => array( 'active' => 1, 'subject' => '[_site_title] "[your-subject]"', 'sender' => '[_site_title]', 'recipient' => '[_site_admin_email]', 'body' => 'From: [your-name] [your-email]' . PHP_EOL . 'Subject: [your-subject]' . PHP_EOL . PHP_EOL . 'Message Body:' . PHP_EOL . '[your-message]' . PHP_EOL . PHP_EOL . '--' . PHP_EOL . 'This e-mail was sent from a contact form on [_site_title] ([_site_url])', 'additional_headers' => 'Reply-To: [your-email]', 'attachments' => '', 'use_html' => '', 'exclude_blank' => '', ), 'mail_2' => array( 'active' => '', 'subject' => '[_site_title] "[your-subject]"', 'sender' => '[_site_title]', 'recipient' => '[your-email]', 'body' => 'Message Body:' . PHP_EOL . '[your-message]' . PHP_EOL . PHP_EOL . '--' . PHP_EOL . 'This e-mail was sent from a contact form on [_site_title] ([_site_url])', 'additional_headers' => 'Reply-To: [_site_admin_email]', 'attachments' => '', 'use_html' => '', 'exclude_blank' => '', ), 'messages' => array( 'mail_sent_ok' => 'Thank you for your message. It has been sent.', 'mail_sent_ng' => 'There was an error trying to send your message. Please try again later.', 'validation_error' => 'One or more fields have an error. Please check and try again.', 'spam' => 'There was an error trying to send your message. Please try again later.', 'accept_terms' => 'You must accept the terms and conditions before sending your message.', 'invalid_required' => 'Please fill out this field.', 'invalid_too_long' => 'This field has a too long input.', 'invalid_too_short' => 'This field has a too short input.', 'upload_failed' => 'There was an unknown error uploading the file.', 'upload_file_type_invalid' => 'You are not allowed to upload files of this type.', 'upload_file_too_large' => 'The uploaded file is too large.', 'upload_failed_php_error' => 'There was an error uploading the file.', 'invalid_date' => 'Please enter a date in YYYY-MM-DD format.', 'date_too_early' => 'This field has a too early date.', 'date_too_late' => 'This field has a too late date.', 'invalid_number' => 'Please enter a number.', 'number_too_small' => 'This field has a too small number.', 'number_too_large' => 'This field has a too large number.', 'quiz_answer_not_correct' => 'The answer to the quiz is incorrect.', 'invalid_email' => 'Please enter an email address.', 'invalid_url' => 'Please enter a URL.', 'invalid_tel' => 'Please enter a telephone number.', ), 'additional_settings' => '', ); $post_content = implode( "\n", wpcf7_array_flatten( $props ) ); $args = array( 'post_status' => 'publish', 'post_type' => 'wpcf7_contact_form', 'post_content' => $post_content, 'post_author' => $current_user->ID, 'post_title' => sprintf( __( 'Form | %s', 'premium-addons-for-elementor' ), gmdate( 'Y-m-d H:i' ) ), ); $post_id = wp_insert_post( $args ); foreach ( $props as $prop => $value ) { update_post_meta( $post_id, '_' . $prop, wpcf7_normalize_newline_deep( $value ) ); } $form_id = wpcf7_generate_contact_form_hash( $post_id ); add_post_meta( $post_id, '_hash', $form_id, true ); wp_send_json_success( substr( $form_id, 0, 7 ) ); } /** * Load Cross Domain Copy Paste JS Files. * * @since 3.21.1 */ public function enqueue_editor_cp_scripts() { wp_enqueue_script( 'premium-xdlocalstorage', PREMIUM_ADDONS_URL . 'assets/editor/js/xdlocalstorage.js', null, PREMIUM_ADDONS_VERSION, true ); wp_enqueue_script( 'premium-cross-cp', PREMIUM_ADDONS_URL . 'assets/editor/js/premium-cross-cp.js', array( 'jquery', 'elementor-editor', 'premium-xdlocalstorage' ), PREMIUM_ADDONS_VERSION, true ); // Check for required Compatible Elementor version. if ( ! version_compare( ELEMENTOR_VERSION, '3.1.0', '>=' ) ) { $elementor_old = true; } else { $elementor_old = false; } wp_localize_script( 'jquery', 'premium_cross_cp', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'premium_cross_cp_import' ), 'elementorCompatible' => $elementor_old, ) ); } /** * Get Template Content * * Get Elementor template HTML content. * * @since 3.2.6 * @access public */ public function get_template_content() { $template = isset( $_GET['templateID'] ) ? sanitize_text_field( wp_unslash( $_GET['templateID'] ) ) : ''; if ( empty( $template ) ) { wp_send_json_error( 'Empty Template ID' ); } if ( ! current_user_can( 'edit_posts' ) ) { wp_send_json_error( 'Insufficient user permission' ); } $template_content = $this->template_instance->get_template_content( $template ); if ( empty( $template_content ) || ! isset( $template_content ) ) { wp_send_json_error( 'Empty Content' ); } $data = array( 'template_content' => $template_content, ); wp_send_json_success( $data ); } /** * Registers Premium Addons Custom Controls. * * @since 4.2.5 * @access public * * @return void */ public function init_pa_controls() { /** * List of Modules that need a custom control. * * @var array */ $modules = array( self::$modules['premium-blog'], self::$modules['premium-equal-height'], self::$modules['pa-display-conditions'], self::$modules['premium-smart-post-listing'], self::$modules['premium-post-ticker'], self::$modules['premium-tcloud'], self::$modules['premium-notifications'], self::$modules['premium-pinterest-feed'], self::$modules['premium-contactform'], ); $blog_modules = array( self::$modules['premium-blog'], self::$modules['premium-smart-post-listing'], self::$modules['premium-post-ticker'], self::$modules['premium-notifications'], self::$modules['premium-search-form'], ); $load_controls = in_array( true, $modules, true ); $load_blog_controls = in_array( true, $blog_modules, true ); $control_manager = \Elementor\Plugin::instance(); if ( $load_controls ) { if ( self::$modules['premium-equal-height'] || self::$modules['premium-pinterest-feed'] ) { require_once PREMIUM_ADDONS_PATH . 'includes/controls/premium-select.php'; $premium_select = __NAMESPACE__ . '\Controls\Premium_Select'; $control_manager->controls_manager->register( new $premium_select() ); } if ( $load_blog_controls ) { require_once PREMIUM_ADDONS_PATH . 'includes/controls/premium-post-filter.php'; $premium_post_filter = __NAMESPACE__ . '\Controls\Premium_Post_Filter'; $control_manager->controls_manager->register( new $premium_post_filter() ); } if ( self::$modules['premium-blog'] || self::$modules['premium-smart-post-listing'] || self::$modules['premium-tcloud'] ) { require_once PREMIUM_ADDONS_PATH . 'includes/controls/premium-tax-filter.php'; $premium_tax_filter = __NAMESPACE__ . '\Controls\Premium_Tax_Filter'; $control_manager->controls_manager->register( new $premium_tax_filter() ); } if ( self::$modules['pa-display-conditions'] ) { require_once PREMIUM_ADDONS_PATH . 'includes/controls/premium-acf-selector.php'; $premium_acf_selector = __NAMESPACE__ . '\Controls\Premium_Acf_Selector'; $control_manager->controls_manager->register( new $premium_acf_selector() ); } } if ( self::$modules['premium-contactform'] || self::$modules['premium-shape-divider'] ) { require_once PREMIUM_ADDONS_PATH . 'includes/controls/pa-image-choose.php'; $premium_image_choose = __NAMESPACE__ . '\Controls\Premium_Image_Choose'; $control_manager->controls_manager->register( new $premium_image_choose() ); } } /** * Load PA Extensions * * @since 4.7.0 * @access public */ public function load_pa_extensions() { if ( self::$modules['premium-equal-height'] ) { Equal_Height::get_instance(); } if ( self::$modules['pa-display-conditions'] ) { require_once PREMIUM_ADDONS_PATH . 'widgets/dep/urlopen.php'; Display_Conditions::get_instance(); } if ( self::$modules['premium-floating-effects'] ) { Floating_Effects::get_instance(); } if ( class_exists( 'woocommerce' ) && ( self::$modules['woo-products'] || self::$modules['woo-categories'] || self::$modules['mini-cart'] || self::$modules['woo-cta'] ) ) { Woocommerce::get_instance(); } if ( self::$modules['premium-global-tooltips'] ) { GlobalTooltips::get_instance(); } if ( self::$modules['premium-shape-divider'] ) { Shape_Divider::get_instance(); } if ( self::$modules['premium-wrapper-link'] ) { Wrapper_Link::get_instance(); } } /** * Load Copy Paste Module * * @since 4.10.57 * @access public */ public function load_cp_module() { Addons_Cross_CP::get_instance(); } /** * * Creates and returns an instance of the class * * @since 1.0.0 * @access public * * @return object */ public static function get_instance() { if ( ! isset( self::$instance ) ) { self::$instance = new self(); } return self::$instance; } }