Server IP : 192.64.112.168 / Your IP : 3.145.58.141 Web Server : Apache System : Linux nc-ph-2300-85.bluforrest.com 4.18.0-513.9.1.el8_9.x86_64 #1 SMP Sat Dec 2 05:23:44 EST 2023 x86_64 User : expressoneac ( 1128) PHP Version : 8.0.30 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/expressoneac/www/wp-content/themes/woodmart/inc/admin/import/ |
Upload File : |
<?php /** * Import options. * * @package Woodmart */ namespace XTS\Import; use XTS\Options as ThemeSettingsOptions; use XTS\Presets; if ( ! defined( 'WOODMART_THEME_DIR' ) ) { exit( 'No direct script access allowed' ); } /** * Import options. */ class Options { /** * Version name. * * @var string */ private $version; /** * Version type. * * @var string */ private $type; /** * Helpers. * * @var Helpers */ private $helpers; /** * Constructor. * * @param string $version Version name. */ public function __construct( $version, $type ) { $this->helpers = Helpers::get_instance(); $this->version = $version; $this->type = $type; if ( 'base' === $this->type ) { $this->import_presets(); $this->import_options_presets(); } $this->import_options(); } /** * Import options presets. */ private function import_options_presets() { global $xts_woodmart_options; $file = $this->helpers->get_file_path( 'options_presets.json', $this->version ); if ( 'elementor' === woodmart_get_current_page_builder() && file_exists( $this->helpers->get_version_folder_path( $this->version ) . 'options_presets-elementor.json' ) ) { $file = $this->helpers->get_file_path( 'options_presets-elementor.json', $this->version ); } if ( ! $file ) { return; } $new_options_json = $this->helpers->links_replace( $this->helpers->get_local_file_content( $file ) ); $new_options = $xts_woodmart_options + json_decode( $new_options_json, true ); $options = ThemeSettingsOptions::get_instance(); $pseudo_post_data = array( 'import-btn' => true, 'import_export' => wp_json_encode( $new_options ), ); $sanitized_options = $options->sanitize_before_save( $pseudo_post_data ); $options->update_options( $sanitized_options ); } /** * Import presets. */ private function import_presets() { $file = $this->helpers->get_file_path( 'presets.json', $this->version ); if ( 'elementor' === woodmart_get_current_page_builder() && file_exists( $this->helpers->get_version_folder_path( $this->version ) . 'presets-elementor.json' ) ) { $file = $this->helpers->get_file_path( 'presets-elementor.json', $this->version ); } if ( ! $file ) { return; } $presets = json_decode( $this->helpers->get_local_file_content( $file ), true ); update_option( 'xts-options-presets', $presets ); Presets::get_instance()->load_presets(); } /** * Import options. */ private function import_options() { global $xts_woodmart_options; $file = $this->helpers->get_file_path( 'options.json', $this->version ); if ( 'elementor' === woodmart_get_current_page_builder() && file_exists( $this->helpers->get_version_folder_path( $this->version ) . 'options-elementor.json' ) ) { $file = $this->helpers->get_file_path( 'options-elementor.json', $this->version ); } if ( ! $file ) { return; } $new_options_json = $this->helpers->links_replace( $this->helpers->get_local_file_content( $file ) ); $options = ThemeSettingsOptions::get_instance(); // Merge new options with new resetting values. $new_options = json_decode( $new_options_json, true ) + $this->get_reset_options(); // Set builder to WPB or Elementor. $xts_woodmart_options['variation_gallery_storage_method'] = 'new'; // Merge new options with other existed ones. $new_options = $new_options + $xts_woodmart_options; $pseudo_post_data = array( 'import-btn' => true, 'import_export' => wp_json_encode( $new_options ), ); $sanitized_options = $options->sanitize_before_save( $pseudo_post_data ); $options->update_options( $sanitized_options ); // Dynamic css options. foreach ( Presets::get_all() as $preset ) { delete_option( 'xts-theme_settings_' . $preset['id'] . '-file-data' ); delete_option( 'xts-theme_settings_' . $preset['id'] . '-css-data' ); delete_option( 'xts-theme_settings_' . $preset['id'] . '-version' ); delete_option( 'xts-theme_settings_' . $preset['id'] . '-site-url' ); delete_option( 'xts-theme_settings_' . $preset['id'] . '-status' ); delete_option( 'xts-theme_settings_' . $preset['id'] . '-credentials' ); } delete_option( 'xts-theme_settings_default-file-data' ); delete_option( 'xts-theme_settings_default-css-data' ); delete_option( 'xts-theme_settings_default-version' ); delete_option( 'xts-theme_settings_default-site-url' ); delete_option( 'xts-theme_settings_default-status' ); delete_option( 'xts-theme_settings_default-credentials' ); $this->theme_settings_replace_post_ids(); } /** * Get reset options. * * @return array */ private function get_reset_options() { $reset_options = array(); $version_type = 'base' === $this->type ? 'version' : $this->type; $reset_options_keys = woodmart_get_config( 'reset-options-' . $version_type ); foreach ( $reset_options_keys as $opt ) { $reset_options[ $opt ] = $this->get_default_option_value( $opt ); } return $reset_options; } /** * Get default options value. * * @param string $key Opt key. * * @return mixed|string */ private function get_default_option_value( $key ) { $all_fields = ThemeSettingsOptions::get_fields(); foreach ( $all_fields as $field ) { if ( $field->args['id'] === $key ) { return isset( $field->args['default'] ) ? $field->args['default'] : ''; } } return ''; } /** * Theme settings replace posts ids. */ private function theme_settings_replace_post_ids() { $imported_data = $this->helpers->get_imported_data( $this->version ); $theme_options = get_option( 'xts-woodmart-options' ); $theme_options = $this->options_with_attachment( $theme_options, $imported_data ); $theme_options = $this->options_with_post_id( $theme_options, $imported_data ); $theme_options = $this->options_with_custom_fonts( $theme_options, $imported_data ); update_option( 'xts-woodmart-options', $theme_options ); } /** * Replace options with attachment. * * @param array $theme_options Options. * @param array $imported_data Data. */ private function options_with_attachment( $theme_options, $imported_data ) { $options_with_attachment = array( 'title-background', 'body-background', 'pages-background', 'shop-background', 'product-background', 'blog-background', 'blog-post-background', 'portfolio-background', 'portfolio-project-background', 'footer-bar-bg', 'age_verify_background', 'popup-background', 'header_banner_bg', 'white_label_sidebar_icon_logo', 'white_label_dashboard_logo', 'white_label_appearance_screenshot', 'link_1_icon', 'link_2_icon', 'link_3_icon', 'link_4_icon', 'link_5_icon', 'lazy_custom_placeholder', 'preloader_image', ); foreach ( $options_with_attachment as $option_name ) { if ( isset( $theme_options[ $option_name ]['id'] ) && $theme_options[ $option_name ]['id'] ) { $current_id = $theme_options[ $option_name ]['id']; $new_id = ''; if ( isset( $imported_data['attachment'][ $current_id ]['new'] ) && $imported_data['attachment'][ $current_id ]['new'] ) { $new_id = $imported_data['attachment'][ $current_id ]['new']; } if ( $new_id ) { $theme_options[ $option_name ]['id'] = $new_id; $theme_options[ $option_name ]['url'] = wp_get_attachment_image_url( $new_id, 'full' ); } } } return $theme_options; } /** * Replace options with post id. * * @param array $theme_options Options. * @param array $imported_data Data. */ private function options_with_post_id( $theme_options, $imported_data ) { $options_with_post_id = array( 'custom_404_page', 'popup_html_block', 'footer_html_block', 'prefooter_html_block', 'thank_you_page_html_block', 'before_add_to_cart_html_block', 'after_add_to_cart_html_block', 'additional_tab_html_block', 'additional_tab_2_html_block', 'additional_tab_3_html_block', 'cookies_policy_page', 'compare_page', 'wishlist_page', 'full_search_content_html_block', ); foreach ( $options_with_post_id as $option_name ) { if ( isset( $theme_options[ $option_name ] ) && $theme_options[ $option_name ] ) { $current_id = $theme_options[ $option_name ]; $new_id = ''; if ( isset( $imported_data['all_posts'][ $current_id ]['new'] ) && $imported_data['all_posts'][ $current_id ]['new'] ) { $new_id = $imported_data['all_posts'][ $current_id ]['new']; } if ( $new_id ) { $theme_options[ $option_name ] = $new_id; } } } return $theme_options; } /** * Replace options with custom fonts. * * @param array $theme_options Options. * @param array $imported_data Data. */ private function options_with_custom_fonts( $theme_options, $imported_data ) { $options_with_custom_fonts = array( 'multi_custom_fonts', ); foreach ( $options_with_custom_fonts as $option_name ) { if ( isset( $theme_options[ $option_name ] ) && $theme_options[ $option_name ] ) { foreach ( $theme_options[ $option_name ] as $font_data_key => $font_data ) { foreach ( $font_data as $key => $value ) { if ( isset( $value['id'] ) && $value['id'] ) { $current_id = $value['id']; $new_id = ''; if ( isset( $imported_data['attachment'][ $current_id ]['new'] ) && $imported_data['attachment'][ $current_id ]['new'] ) { $new_id = $imported_data['attachment'][ $current_id ]['new']; } if ( $new_id ) { $theme_options[ $option_name ][ $font_data_key ][ $key ]['id'] = $new_id; $theme_options[ $option_name ][ $font_data_key ][ $key ]['url'] = wp_get_attachment_image_url( $new_id, 'full' ); } } } } } } return $theme_options; } }