384 lines
9.1 KiB
PHP
384 lines
9.1 KiB
PHP
<?php
|
|
/**
|
|
* Tracks imported content.
|
|
*
|
|
* @author ThemeFusion
|
|
* @copyright (c) Copyright by ThemeFusion
|
|
* @link https://avada.com
|
|
* @package Avada
|
|
* @subpackage Importer
|
|
* @since 5.2
|
|
*/
|
|
|
|
// Do not allow directly accessing this file.
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit( 'Direct script access denied.' );
|
|
}
|
|
|
|
/**
|
|
* Class Avada_Demo_Content_Tracker
|
|
*/
|
|
class Avada_Demo_Content_Tracker {
|
|
|
|
/**
|
|
* Currently importing / removing demo_type.
|
|
*
|
|
* @access private
|
|
* @since 5.2
|
|
* @var string
|
|
*/
|
|
private $demo_type;
|
|
|
|
/**
|
|
* Array of arrays. Key is demo_type, value is array containing demo backup.
|
|
*
|
|
* @access private
|
|
* @since 5.2
|
|
* @var mixed|void
|
|
*/
|
|
private $demo_history;
|
|
|
|
/**
|
|
* The defaults.
|
|
*
|
|
* @access private
|
|
* @since 5.2
|
|
* @var array
|
|
*/
|
|
private $import_data_defaults;
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param string $demo_type The demo type.
|
|
*/
|
|
public function __construct( $demo_type ) {
|
|
|
|
$this->demo_type = $demo_type;
|
|
|
|
$this->demo_history = get_option( 'fusion_demo_history', [] );
|
|
|
|
$this->import_data_defaults = [
|
|
'post' => [],
|
|
'page' => [],
|
|
'avada_portfolio' => [],
|
|
'avada_faq' => [],
|
|
'avada_layout' => [],
|
|
'fusion_icons' => [],
|
|
'attachment' => [],
|
|
'product' => [],
|
|
'event' => [],
|
|
'forum' => [],
|
|
'sliders' => [],
|
|
'widgets' => [],
|
|
'theme_options' => [],
|
|
'convertplug' => [],
|
|
'acf_data' => [],
|
|
'general_data' => [],
|
|
'all' => [],
|
|
];
|
|
|
|
add_action( 'wxr_importer.processed.term', [ $this, 'add_term_to_stack' ], 10, 2 );
|
|
add_action( 'fusion_slider_import_processed_term', [ $this, 'add_fusion_slider_term_to_stack' ], 10, 2 );
|
|
}
|
|
|
|
/**
|
|
* Saves import data.
|
|
* Import data is used to quickly get which parts of which demo are imported.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param string $import_stage Demo type.
|
|
* @param array $import_type The import type.
|
|
*/
|
|
public function save_import_stage_data( $import_stage, $import_type ) {
|
|
|
|
$import_data = get_option( 'fusion_import_data', $this->import_data_defaults );
|
|
$import_data[ $import_stage ] = $import_type;
|
|
|
|
update_option( 'fusion_import_data', $import_data, false );
|
|
}
|
|
|
|
/**
|
|
* Gets import data for specific stage.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param string $import_stage The import stage.
|
|
* @return array
|
|
*/
|
|
public function get_import_stage_data( $import_stage ) {
|
|
|
|
$import_data = get_option( 'fusion_import_data', $this->import_data_defaults );
|
|
|
|
if ( empty( $import_data[ $import_stage ] ) ) {
|
|
return [];
|
|
}
|
|
|
|
return $import_data[ $import_stage ];
|
|
}
|
|
|
|
/**
|
|
* Updates import data.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param string $import_stage The import stage.
|
|
*/
|
|
public function update_import_stage_data( $import_stage ) {
|
|
|
|
$data = $this->get_import_stage_data( $import_stage );
|
|
|
|
// Add demo if it's not already added.
|
|
if ( ! in_array( $this->demo_type, $data ) ) { // phpcs:ignore WordPress.PHP.StrictInArray
|
|
$data[] = $this->demo_type;
|
|
}
|
|
|
|
$this->save_import_stage_data( $import_stage, $data );
|
|
}
|
|
|
|
/**
|
|
* Resets the stage.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param string $stage The import stage.
|
|
*/
|
|
public function reset_stage( $stage ) {
|
|
|
|
$data = $this->get_import_stage_data( $stage );
|
|
$key = array_search( $this->demo_type, $data ); // phpcs:ignore WordPress.PHP.StrictInArray
|
|
if ( is_array( $data ) && false !== $key ) {
|
|
unset( $data[ $key ] );
|
|
}
|
|
$this->save_import_stage_data( $stage, $data );
|
|
}
|
|
|
|
/**
|
|
* Adds general data to demo history.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
*/
|
|
public function set_general_data() {
|
|
|
|
$this->demo_history[ $this->demo_type ]['blogname'] = get_option( 'blogname' );
|
|
$this->demo_history[ $this->demo_type ]['page_on_front'] = get_option( 'page_on_front' );
|
|
$this->demo_history[ $this->demo_type ]['show_on_front'] = get_option( 'show_on_front' );
|
|
$this->demo_history[ $this->demo_type ]['nav_menu_locations'] = get_theme_mod( 'nav_menu_locations' );
|
|
}
|
|
|
|
/**
|
|
* Adds Global Options backup to demo history.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
*/
|
|
public function set_theme_options() {
|
|
$this->demo_history[ $this->demo_type ]['theme_options'] = get_option( Avada::get_original_option_name() );
|
|
}
|
|
|
|
/**
|
|
* Adds global layout backup to demo history.
|
|
*
|
|
* @access public
|
|
* @since 6.2
|
|
*/
|
|
public function set_avada_layout() {
|
|
$this->demo_history[ $this->demo_type ]['fusion_tb_layout_default'] = get_option( 'fusion_tb_layout_default' );
|
|
}
|
|
|
|
/**
|
|
* Saves imported Woo attributes to demo history.
|
|
*
|
|
* @access public
|
|
* @since 7.2
|
|
* @param array $attr_ids Imported Woo attribute IDs.
|
|
*/
|
|
public function set_woo_attributes( $attr_ids ) {
|
|
$this->demo_history[ $this->demo_type ]['woo_attributes'] = $attr_ids;
|
|
}
|
|
|
|
/**
|
|
* Saves imported ACF data to demo history.
|
|
*
|
|
* @access public
|
|
* @since 7.2
|
|
* @param array $data Imported Woo attribute IDs.
|
|
* @return void
|
|
*/
|
|
public function set_acf( $data ) {
|
|
$this->demo_history[ $this->demo_type ]['acf_data'] = $data;
|
|
}
|
|
|
|
/**
|
|
* Adds widgets backup to demo history.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
*/
|
|
public function set_widgets() {
|
|
$this->demo_history[ $this->demo_type ]['widgets'] = $this->fetch_widgets();
|
|
$this->demo_history[ $this->demo_type ]['sidebars_widgets'] = get_option( 'sidebars_widgets' );
|
|
$this->demo_history[ $this->demo_type ]['sbg_sidebars'] = get_option( 'sbg_sidebars' );
|
|
}
|
|
|
|
/**
|
|
* Fetches the widgets so they can be added to the demo history.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @return array
|
|
*/
|
|
public function fetch_widgets() {
|
|
global $wpdb;
|
|
|
|
$results = $wpdb->get_results( "SELECT * FROM $wpdb->options WHERE option_name LIKE 'widget_%'" );
|
|
|
|
if ( is_wp_error( $results ) ) {
|
|
$results = [];
|
|
}
|
|
return $results;
|
|
}
|
|
|
|
/**
|
|
* Adds Slider Revolution slider IDs to demo history.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param string $slider_id The slider-ID.
|
|
*/
|
|
public function add_rev_slider_to_stack( $slider_id ) {
|
|
|
|
if ( ! isset( $this->demo_history[ $this->demo_type ]['rev_sliders'] ) ) {
|
|
$this->demo_history[ $this->demo_type ]['rev_sliders'] = [];
|
|
}
|
|
$this->demo_history[ $this->demo_type ]['rev_sliders'][] = (int) $slider_id;
|
|
}
|
|
|
|
/**
|
|
* Adds Layer slider IDs to demo history.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param string $slider_id The slider-ID.
|
|
*/
|
|
public function add_layer_slider_to_stack( $slider_id ) {
|
|
|
|
if ( ! isset( $this->demo_history[ $this->demo_type ]['layer_sliders'] ) ) {
|
|
$this->demo_history[ $this->demo_type ]['layer_sliders'] = [];
|
|
}
|
|
$this->demo_history[ $this->demo_type ]['layer_sliders'][] = (int) $slider_id;
|
|
}
|
|
|
|
/**
|
|
* Adds imported terms to demo history.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param int $term_id Term id.
|
|
* @param array $data Term data.
|
|
*/
|
|
public function add_term_to_stack( $term_id, $data ) {
|
|
|
|
if ( ! isset( $this->demo_history[ $this->demo_type ]['terms'] ) ) {
|
|
$this->demo_history[ $this->demo_type ]['terms'] = [];
|
|
}
|
|
$this->demo_history[ $this->demo_type ]['terms'][] = [
|
|
'term_id' => $term_id,
|
|
'taxonomy' => $data['taxonomy'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Adds Avada Sliders to demo history.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param int $term_id The term-ID.
|
|
* @param array $term The term.
|
|
*/
|
|
public function add_fusion_slider_term_to_stack( $term_id, $term ) {
|
|
|
|
if ( ! isset( $this->demo_history[ $this->demo_type ]['fusion_sliders'] ) ) {
|
|
$this->demo_history[ $this->demo_type ]['fusion_sliders'] = [];
|
|
}
|
|
$this->demo_history[ $this->demo_type ]['fusion_sliders'][] = [
|
|
'term_id' => $term_id,
|
|
'taxonomy' => $term['taxonomy'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Adds Convert Pluging module IDs to demo history.
|
|
*
|
|
* @access public
|
|
* @since 6.2.0
|
|
* @param array $module [module_id, module_name] pair.
|
|
* @return void
|
|
*/
|
|
public function add_convertplug_to_stack( $module ) {
|
|
|
|
if ( ! isset( $this->demo_history[ $this->demo_type ]['convertplug_modules'] ) ) {
|
|
$this->demo_history[ $this->demo_type ]['convertplug_modules'] = [];
|
|
}
|
|
$this->demo_history[ $this->demo_type ]['convertplug_modules'][] = $module;
|
|
}
|
|
|
|
/**
|
|
* Saves demo history.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
*/
|
|
public function save_demo_history() {
|
|
update_option( 'fusion_demo_history', $this->demo_history, false );
|
|
}
|
|
|
|
/**
|
|
* Demo history getter.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param string $key The key.
|
|
* @return bool
|
|
*/
|
|
public function get( $key ) {
|
|
|
|
if ( empty( $this->demo_history[ $this->demo_type ][ $key ] ) ) {
|
|
return false;
|
|
}
|
|
return $this->demo_history[ $this->demo_type ][ $key ];
|
|
}
|
|
|
|
/**
|
|
* Demo history setter.
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
* @param string $key The key.
|
|
* @param mixed $value The value.
|
|
*/
|
|
public function set( $key, $value ) {
|
|
|
|
$this->demo_history[ $this->demo_type ][ $key ] = $value;
|
|
$this->save_demo_history();
|
|
}
|
|
|
|
/**
|
|
* Removes all demo backup data
|
|
*
|
|
* @access public
|
|
* @since 5.2
|
|
*/
|
|
public function remove_demo() {
|
|
|
|
if ( isset( $this->demo_history[ $this->demo_type ] ) ) {
|
|
unset( $this->demo_history[ $this->demo_type ] );
|
|
}
|
|
$this->save_demo_history();
|
|
}
|
|
}
|