Server IP : 192.64.112.168 / Your IP : 3.128.226.114 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 widgets. * * @package Woodmart */ namespace XTS\Import; if ( ! defined( 'WOODMART_THEME_DIR' ) ) { exit( 'No direct script access allowed' ); } /** * Import widgets. */ class Widgets { /** * Active widgets. * * @var array */ private $active_widgets; /** * Widgets counter. * * @var int */ private $widgets_counter = 1; /** * Version name. * * @var string */ private $version; /** * Helpers. * * @var Helpers */ private $helpers; /** * Constructor. * * @param string $version Version name. */ public function __construct( $version ) { $this->helpers = Helpers::get_instance(); $this->version = $version; $this->import_widgets(); } /** * Import widgets. */ private function import_widgets() { $file_path = $this->helpers->get_file_path( 'widgets.json', $this->version ); if ( 'elementor' === woodmart_get_current_page_builder() && file_exists( $this->helpers->get_version_folder_path( $this->version ) . 'widgets-elementor.json' ) ) { $file_path = $this->helpers->get_file_path( 'widgets-elementor.json', $this->version ); } if ( ! $file_path ) { return; } $widgets_data = $this->helpers->get_local_file_content( $file_path ); $widgets_data = $this->helpers->links_replace( $widgets_data ); $widgets_data = $this->widgets_replace_html_block_and_menu_ids( $widgets_data ); $widgets_data = json_decode( $widgets_data, true ); $this->active_widgets = get_option( 'sidebars_widgets' ); foreach ( $widgets_data as $area => $params ) { $this->clear_widget_area( $area ); foreach ( $params['widgets'] as $widget => $args ) { $widget = preg_replace( '/-[0-9]+$/', '', $widget ); $this->add_widget( $area, $widget, $args ); } } update_option( 'sidebars_widgets', $this->active_widgets ); } /** * Add widget to area. * * @param string $sidebar Sidebar area name. * @param string $widget Widget name. * @param array $options Widget options. */ private function add_widget( $sidebar, $widget, $options = array() ) { $this->active_widgets[ $sidebar ][] = $widget . '-' . $this->widgets_counter; $widget_content = get_option( 'widget_' . $widget ); $widget_content[ $this->widgets_counter ] = $options; update_option( 'widget_' . $widget, $widget_content ); $this->widgets_counter ++; } /** * Clear widget area. * * @param string $area Sidebar area name. */ private function clear_widget_area( $area ) { unset( $this->active_widgets[ $area ] ); } /** * Widgets replace html block and menu ids. * * @param string $widgets_data Widgets data. */ private function widgets_replace_html_block_and_menu_ids( $widgets_data ) { $widgets_data = json_decode( $widgets_data, true ); $imported_data = $this->helpers->get_imported_data( $this->version ); foreach ( $widgets_data as $area_name => $area_settings ) { foreach ( $area_settings['widgets'] as $widget_name => $widget_settings ) { if ( strstr( $widget_name, 'woodmart-html-block' ) ) { $current_id = $widget_settings['id']; $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 ) { $widgets_data[ $area_name ]['widgets'][ $widget_name ]['id'] = $new_id; } } if ( strstr( $widget_name, 'woodmart-author-information' ) || strstr( $widget_name, 'woodmart-banner' ) ) { $current_id = $widget_settings['image']; $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 ) { $widgets_data[ $area_name ]['widgets'][ $widget_name ]['image'] = $new_id; } } if ( strstr( $widget_name, 'nav_menu' ) ) { $current_id = $widget_settings['nav_menu']; $new_id = ''; if ( isset( $imported_data['term']['nav_menu'][ $current_id ]['new'] ) && $imported_data['term']['nav_menu'][ $current_id ]['new'] ) { $new_id = $imported_data['term']['nav_menu'][ $current_id ]['new']; } if ( $new_id ) { $widgets_data[ $area_name ]['widgets'][ $widget_name ]['nav_menu'] = $new_id; } } if ( strstr( $widget_name, 'woodmart-instagram' ) ) { $images = explode( ',', $widget_settings['images'] ); $images_output = array(); foreach ( $images as $image_id ) { if ( ! $image_id ) { continue; } if ( isset( $imported_data['attachment'][ $image_id ]['new'] ) && $imported_data['attachment'][ $image_id ]['new'] ) { $images_output[] = $imported_data['attachment'][ $image_id ]['new']; } else { $images_output[] = $image_id; } } $widgets_data[ $area_name ]['widgets'][ $widget_name ]['images'] = implode( ',', $images_output ); } } } return wp_json_encode( $widgets_data ); } }