Sid Gifari From Gifari Industries - BD Cyber Security Team
Home
/
home
/
drleilu
/
www
/
wp-content
/
themes
/
bella-beauty
/
admin
/
installer
/
importer
/
✏️
Editing: elementor-templates.php
<?php namespace BellaBeautySpace\Admin\Installer\Importer; use BellaBeautySpace\Core\Utils\API_Requests; use BellaBeautySpace\Core\Utils\File_Manager; use BellaBeautySpace\Core\Utils\Utils; use Elementor\Plugin as Elementor_Plugin; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } /** * Elementor Templates handler class is responsible for different methods on importing "Elementor" plugin templates. */ class Elementor_Templates { /** * Cached data. */ private static $cached_data = null; private static $cached_import_status = array(); /** * Elementor Templates Import constructor. */ public function __construct() { add_action( 'cmsmasters_set_import_status', array( get_called_class(), 'set_import_status' ) ); add_action( 'cmsmasters_set_apply_demo_status', array( get_called_class(), 'set_apply_demo_status' ) ); add_action( 'cmsmasters_set_backup_options', array( get_called_class(), 'set_backup_options' ) ); if ( self::activation_status() && API_Requests::check_token_status() ) { add_action( 'admin_init', array( $this, 'admin_init_actions' ) ); add_action( 'elementor/template-library/after_save_template', array( $this, 'set_import_templates_ids' ), 10, 2 ); } } /** * Activation status. * * @return bool Activation status. */ public static function activation_status() { return ( did_action( 'elementor/loaded' ) && class_exists( 'Cmsmasters_Elementor_Addon' ) ); } /** * Set import status. * * @param string $status Import status, may be pending or done. */ public static function set_import_status( $status = 'pending' ) { $demo = Utils::get_demo(); if ( 'done' !== get_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_import" ) ) { update_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_import", $status ); } if ( 'done' !== get_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_woocommerce_import" ) ) { update_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_woocommerce_import", $status ); } if ( 'done' !== get_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_pmpro_import" ) ) { update_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_pmpro_import", $status ); } if ( 'done' !== get_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_givewp_import" ) ) { update_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_givewp_import", $status ); } if ( 'done' !== get_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_tribe-events_import" ) ) { update_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_tribe-events_import", $status ); } } /** * Set apply demo status. * * @param string $status Apply demo status, may be pending or done. */ public static function set_apply_demo_status( $status = 'pending' ) { update_option( 'cmsmasters_bella-beauty_elementor_templates_apply_demo', $status ); } /** * Backup current options. * * @param bool $first_install First install trigger, if need to backup customer option from previous theme. */ public static function set_backup_options( $first_install = false ) { if ( $first_install ) { return; } $options = get_option( 'cmsmasters_elementor_documents_locations', array() ); update_option( 'cmsmasters_bella-beauty_' . Utils::get_demo() . '_elementor_documents_locations', $options ); do_action( 'cmsmasters_remove_all_elementor_locations' ); } /** * Actions on admin_init hook. */ public function admin_init_actions() { if ( wp_doing_ajax() ) { return; } if ( isset( $_POST['tgmpa-page'] ) && 'tgmpa-install-plugins' === $_POST['tgmpa-page'] ) { return; } $demo = Utils::get_demo(); if ( 'pending' === get_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_import", 'done' ) ) { $this->import_templates( 'templates_path' ); update_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_import", 'done' ); } if ( class_exists( 'woocommerce' ) && 'pending' === get_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_woocommerce_import", 'done' ) ) { $this->import_templates( 'templates_woocommerce_path' ); update_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_woocommerce_import", 'done' ); } if ( function_exists( 'pmpro_is_plugin_active' ) && 'pending' === get_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_pmpro_import", 'done' ) ) { $this->import_templates( 'templates_pmpro_path' ); update_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_pmpro_import", 'done' ); } if ( class_exists( 'Give' ) && 'pending' === get_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_givewp_import", 'done' ) ) { $this->import_templates( 'templates_givewp_path' ); update_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_givewp_import", 'done' ); } if ( class_exists( 'Tribe__Events__Main' ) && 'pending' === get_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_tribe-events_import", 'done' ) ) { $this->import_templates( 'templates_tribe-events_path' ); update_option( "cmsmasters_bella-beauty_{$demo}_elementor_templates_tribe-events_import", 'done' ); } if ( 'pending' === get_option( 'cmsmasters_bella-beauty_elementor_templates_apply_demo', 'done' ) ) { if ( false === get_option( "cmsmasters_bella-beauty_{$demo}_elementor_documents_locations" ) ) { if ( ! did_action( 'cmsmasters_remove_unique_elementor_locations' ) ) { do_action( 'cmsmasters_remove_unique_elementor_locations' ); } } else { $locations = get_option( "cmsmasters_bella-beauty_{$demo}_elementor_documents_locations", array() ); update_option( 'cmsmasters_elementor_documents_locations', $locations ); if ( ! did_action( 'cmsmasters_restore_elementor_locations' ) ) { do_action( 'cmsmasters_restore_elementor_locations' ); } } update_option( 'cmsmasters_bella-beauty_elementor_templates_apply_demo', 'done' ); } } /** * Import templates. */ protected function import_templates( $data_key ) { if ( ! empty( self::$cached_import_status[ $data_key ] ) && 'done' === self::$cached_import_status[ $data_key ] ) { return; } if ( ! empty( self::$cached_data ) ) { $file_path = ( ! empty( self::$cached_data[ $data_key ] ) ) ? self::$cached_data[ $data_key ] : ''; } else { $file_path = $this->get_api_data( $data_key ); } if ( empty( $file_path ) ) { return; } $file_path = File_Manager::download_temp_file( $file_path, $data_key . '-' . uniqid() . '.zip' ); $source = Elementor_Plugin::$instance->templates_manager->get_source( 'local' ); $source->import_template( basename( $file_path ), $file_path ); @unlink( $file_path ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged self::$cached_import_status[ $data_key ] = 'done'; } /** * Get API data. * * @param string $data_key Data key. * @param type param What_is_it. * * @return string */ protected function get_api_data( $data_key ) { $response = API_Requests::post_request( 'get-elementor-templates', array( 'demo' => Utils::get_demo() ) ); $response_code = wp_remote_retrieve_response_code( $response ); if ( 200 !== $response_code ) { return ''; } $response_body = json_decode( wp_remote_retrieve_body( $response ), true ); $data = $response_body['data']; self::$cached_data = $data; if ( ! isset( $data[ $data_key ] ) ) { return ''; } return $data[ $data_key ]; } /** * Set import templates ids. * * @param int $template_id Template id. * @param array $template_data Template data. */ public function set_import_templates_ids( $template_id, $template_data ) { $demo = Utils::get_demo(); $templates_ids = get_option( "cmsmasters_bella-beauty_{$demo}_elementor_import_templates_ids" ); if ( false === $templates_ids ) { $templates_ids = array(); } if ( ! isset( $template_data['page_settings']['cmsmasters_document_export_id'] ) ) { return; } $old_id = $template_data['page_settings']['cmsmasters_document_export_id']; if ( empty( $old_id ) ) { return; } $templates_ids[ $old_id ] = $template_id; update_option( "cmsmasters_bella-beauty_{$demo}_elementor_import_templates_ids", $templates_ids, false ); } /** * Change templates ids in posts _elementor_data on import. * * @param array $element Elementor element. * @param array $templates_ids Templates ids. * * @return array Elementor element. */ public static function change_import_templates_ids( $element, $templates_ids = array() ) { if ( empty( $element['widgetType'] ) ) { return $element; } if ( ( 'cmsmasters-blog-grid' === $element['widgetType'] || 'cmsmasters-blog-slider' === $element['widgetType'] || 'cmsmasters-archive-posts' === $element['widgetType'] ) && ! empty( $element['settings']['blog_template_id'] ) ) { $old_id = $element['settings']['blog_template_id']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['blog_template_id'] = strval( $templates_ids[ $old_id ] ); } } elseif ( 'cmsmasters-blog-featured' === $element['widgetType'] ) { if ( ! empty( $element['settings']['post_featured_template_id'] ) ) { $old_id = $element['settings']['post_featured_template_id']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['post_featured_template_id'] = strval( $templates_ids[ $old_id ] ); } } if ( ! empty( $element['settings']['post_regular_template_id'] ) ) { $old_id = $element['settings']['post_regular_template_id']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['post_regular_template_id'] = strval( $templates_ids[ $old_id ] ); } } } elseif ( 'cmsmasters-offcanvas' === $element['widgetType'] ) { if ( ! empty( $element['settings']['content_block'] ) ) { foreach ( $element['settings']['content_block'] as $index => $args ) { if ( ! empty( $args['saved_section'] ) ) { $old_id = $args['saved_section']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['content_block'][ $index ]['saved_section'] = strval( $templates_ids[ $old_id ] ); } } if ( ! empty( $args['template_id'] ) ) { $old_id = $args['template_id']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['content_block'][ $index ]['template_id'] = strval( $templates_ids[ $old_id ] ); } } } } } elseif ( ( 'cmsmasters-woo-products' === $element['widgetType'] || 'cmsmasters-woo-archive-products' === $element['widgetType'] || 'cmsmasters-woo-product-related' === $element['widgetType'] || 'cmsmasters-woo-products-slider' === $element['widgetType'] || 'cmsmasters-tribe-events-events-grid' === $element['widgetType'] || 'cmsmasters-tribe-events-events-slider' === $element['widgetType'] ) && ! empty( $element['settings']['cmsmasters_template_id'] ) ) { $old_id = $element['settings']['cmsmasters_template_id']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['cmsmasters_template_id'] = strval( $templates_ids[ $old_id ] ); } } elseif ( 'cmsmasters-template' === $element['widgetType'] && ! empty( $element['settings']['template_id'] ) ) { $old_id = $element['settings']['template_id']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['template_id'] = strval( $templates_ids[ $old_id ] ); } } elseif ( 'cmsmasters-tabs' === $element['widgetType'] ) { if ( ! empty( $element['settings']['tabs'] ) ) { foreach ( $element['settings']['tabs'] as $index => $args ) { if ( ! empty( $args['saved_section'] ) ) { $old_id = $args['saved_section']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['tabs'][ $index ]['saved_section'] = strval( $templates_ids[ $old_id ] ); } } if ( ! empty( $args['saved_template'] ) ) { $old_id = $args['saved_template']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['tabs'][ $index ]['saved_template'] = strval( $templates_ids[ $old_id ] ); } } } } } elseif ( 'cmsmasters-toggles' === $element['widgetType'] ) { if ( ! empty( $element['settings']['toggles'] ) ) { foreach ( $element['settings']['toggles'] as $index => $args ) { if ( ! empty( $args['saved_section'] ) ) { $old_id = $args['saved_section']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['toggles'][ $index ]['saved_section'] = strval( $templates_ids[ $old_id ] ); } } if ( ! empty( $args['saved_template'] ) ) { $old_id = $args['saved_template']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['toggles'][ $index ]['saved_template'] = strval( $templates_ids[ $old_id ] ); } } } } } elseif ( 'cmsmasters-time-popup' === $element['widgetType'] && ! empty( $element['settings']['cms_popup_id'] ) ) { $old_id = $element['settings']['cms_popup_id']; if ( isset( $templates_ids[ $old_id ] ) ) { $element['settings']['cms_popup_id'] = strval( $templates_ids[ $old_id ] ); } } foreach ( $element['settings'] as $setting_key => $setting_value ) { if ( '__dynamic__' === $setting_key && ! empty( $setting_value ) ) { $element['settings'][ $setting_key ] = self::change_import_popup_templates_ids( $setting_value, $templates_ids ); } elseif ( is_array( $setting_value ) ) { foreach ( $setting_value as $inner_setting_key => $inner_setting_value ) { if ( ! empty( $inner_setting_value['__dynamic__'] ) ) { $element['settings'][ $setting_key ][ $inner_setting_key ]['__dynamic__'] = self::change_import_popup_templates_ids( $inner_setting_value['__dynamic__'], $templates_ids ); } } } } return $element; } /** * Change dynamic popup templates IDs on import. * * @param array $settings Dynamic settings. * @param array $templates_ids Templates ids to replace. */ public static function change_import_popup_templates_ids( $settings = array(), $templates_ids = array() ) { if ( empty( $settings ) ) { return $settings; } foreach ( $settings as $setting_key => $setting_value ) { if ( false === strpos( $setting_value, 'cmsmasters-action-popup' ) ) { continue; } preg_match( '/settings="(.*?)"/', $setting_value, $popup_setting_match ); $popup_setting = urldecode( $popup_setting_match[1] ); $popup_setting = json_decode( $popup_setting ); if ( empty( $popup_setting->popup_id ) ) { continue; } $old_id = $popup_setting->popup_id; if ( ! isset( $templates_ids[ $old_id ] ) ) { continue; } $settings[ $setting_key ] = str_replace( $old_id, $templates_ids[ $old_id ], $settings[ $setting_key ] ); } return $settings; } }
💾 Save
❌ Cancel