| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451 |
- <?php
- /*====================================================================================*/
- /* import demo content */
- add_action('wp_ajax_importDemo', 'importDemo');
- add_action('wp_ajax_nopriv_importDemo', 'importDemo');
- if(!function_exists('importDemo')){
- function importDemo(){
- $layout = null;
- $res = null;
- if(isset($_POST['data'])){
- $layout = $_POST['data'];
- if($layout && $layout!=''){
- function set_demo_menus(){
- $primary_menu = get_term_by('name', 'Main', 'nav_menu');
- $footer_menu = get_term_by('name', 'Footer', 'nav_menu');
- set_theme_mod( 'nav_menu_locations', array(
- 'main' => $primary_menu->term_id,
- 'footer' => $footer_menu->term_id,
- )
- );
- }
- function set_demo_data( $file ) {
- if ( !defined('WP_LOAD_IMPORTERS') ) define('WP_LOAD_IMPORTERS', true);
- require_once ABSPATH . 'wp-admin/includes/import.php';
- $importer_error = false;
- if ( !class_exists( 'WP_Importer' ) ) {
- $class_wp_importer = ABSPATH . 'wp-admin/includes/class-wp-importer.php';
- if ( file_exists( $class_wp_importer ) ){
- require_once($class_wp_importer);
- } else {
- $importer_error = true;
- }
- }
- if ( !class_exists( 'WP_Import' ) ) {
- $class_wp_import = get_template_directory().'/framework/importer/importer/wordpress-importer.php';
- if ( file_exists( $class_wp_import ) )
- require_once($class_wp_import);
- else
- $importer_error = true;
- }
- if($importer_error){
- die("Error on import");
- } else {
- if(!is_file( $file )){
- echo "The XML file containing the dummy content is not available or could not be read .. You might want to try to set the file permission to chmod 755.<br/>If this doesn't work please use the Wordpress importer and import the XML file (should be located in your download .zip: Sample Content folder) manually ";
- } else {
- $wp_import = new WP_Import();
- $wp_import->fetch_attachments = true;
- $res=$wp_import->import( $file );
- echo esc_html($res, 'taskereasy');
- }
- }
- }
- function clean_default_widgets() {
- update_option( 'sidebars_widgets', $null );
- //echo esc_html__('widget has been cleaned.','taskereasy');
- }
- function process_widget_import_file( $file ) {
- WP_Filesystem();
- global $wp_filesystem;
- if ( ! file_exists( $file ) ) {
- echo esc_html__('Widget Import file could not be found. Please try again.','taskereasy');
- }
- else{
- $data = $wp_filesystem->get_contents( $file );
- $data = json_decode( $data );
- $this->widget_import_results = import_widgets( $data );
- }
- }
- function available_widgets() {
- global $wp_registered_widget_controls;
- $widget_controls = $wp_registered_widget_controls;
- $available_widgets = array();
- foreach ( $widget_controls as $widget ) {
- if ( ! empty( $widget['id_base'] ) && ! isset( $available_widgets[$widget['id_base']] ) ) { // no dupes
- $available_widgets[$widget['id_base']]['id_base'] = $widget['id_base'];
- $available_widgets[$widget['id_base']]['name'] = $widget['name'];
- }
- }
- return apply_filters( 'xshop_theme_import_widget_available_widgets', $available_widgets );
- }
- function import_widgets( $data ) {
- global $wp_registered_sidebars;
- if ( empty( $data ) || ! is_object( $data ) ) {
- echo esc_html__('Widget import data could not be read. Please try a different file.','taskereasy');
- }
- else{
- $data = apply_filters( 'radium_theme_import_widget_data', $data );
- }
- //$available_widgets = $this->available_widgets();
- $available_widgets = available_widgets();
- $widget_instances = array();
- foreach ( $available_widgets as $widget_data ) {
- $widget_instances[$widget_data['id_base']] = get_option( 'widget_' . $widget_data['id_base'] );
- }
- $results = array();
- foreach ( $data as $sidebar_id => $widgets ) {
- if ( 'wp_inactive_widgets' == $sidebar_id ) {
- continue;
- }
- if ( isset( $wp_registered_sidebars[$sidebar_id] ) ) {
- $sidebar_available = true;
- $use_sidebar_id = $sidebar_id;
- $sidebar_message_type = 'success';
- $sidebar_message = '';
- } else {
- $sidebar_available = false;
- $use_sidebar_id = 'wp_inactive_widgets'; // add to inactive if sidebar does not exist in theme
- $sidebar_message_type = 'error';
- $sidebar_message = esc_html__( 'Sidebar does not exist in theme (using Inactive)', 'taskereasy' );
- }
- $results[$sidebar_id]['name'] = ! empty( $wp_registered_sidebars[$sidebar_id]['name'] ) ? $wp_registered_sidebars[$sidebar_id]['name'] : $sidebar_id; // sidebar name if theme supports it; otherwise ID
- $results[$sidebar_id]['message_type'] = $sidebar_message_type;
- $results[$sidebar_id]['message'] = $sidebar_message;
- $results[$sidebar_id]['widgets'] = array();
- // Loop widgets
- foreach ( $widgets as $widget_instance_id => $widget ) {
- $fail = false;
- $id_base = preg_replace( '/-[0-9]+$/', '', $widget_instance_id );
- $instance_id_number = str_replace( $id_base . '-', '', $widget_instance_id );
- if ( ! $fail && ! isset( $available_widgets[$id_base] ) ) {
- $fail = true;
- $widget_message_type = 'error';
- $widget_message = esc_html__( 'Site does not support widget', 'taskereasy' ); // explain why widget not imported
- }
- $widget = apply_filters( 'radium_theme_import_widget_settings', $widget );
- if ( ! $fail && isset( $widget_instances[$id_base] ) ) {
- $sidebars_widgets = get_option( 'sidebars_widgets' );
- $sidebar_widgets = isset( $sidebars_widgets[$use_sidebar_id] ) ? $sidebars_widgets[$use_sidebar_id] : array(); // check Inactive if that's where will go
- $single_widget_instances = ! empty( $widget_instances[$id_base] ) ? $widget_instances[$id_base] : array();
- foreach ( $single_widget_instances as $check_id => $check_widget ) {
- if ( in_array( "$id_base-$check_id", $sidebar_widgets ) && (array) $widget == $check_widget ) {
- $fail = true;
- $widget_message_type = 'warning';
- $widget_message = esc_html__( 'Widget already exists', 'taskereasy' ); // explain why widget not imported
- break;
- }
- }
- }
- // No failure
- if ( ! $fail ) {
- $single_widget_instances = get_option( 'widget_' . $id_base ); // all instances for that widget ID base, get fresh every time
- $single_widget_instances = ! empty( $single_widget_instances ) ? $single_widget_instances : array( '_multiwidget' => 1 ); // start fresh if have to
- $single_widget_instances[] = (array) $widget; // add it
- end( $single_widget_instances );
- $new_instance_id_number = key( $single_widget_instances );
- if ( '0' === strval( $new_instance_id_number ) ) {
- $new_instance_id_number = 1;
- $single_widget_instances[$new_instance_id_number] = $single_widget_instances[0];
- unset( $single_widget_instances[0] );
- }
- if ( isset( $single_widget_instances['_multiwidget'] ) ) {
- $multiwidget = $single_widget_instances['_multiwidget'];
- unset( $single_widget_instances['_multiwidget'] );
- $single_widget_instances['_multiwidget'] = $multiwidget;
- }
- update_option( 'widget_' . $id_base, $single_widget_instances );
- $sidebars_widgets = get_option( 'sidebars_widgets' ); // which sidebars have which widgets, get fresh every time
- $new_instance_id = $id_base . '-' . $new_instance_id_number; // use ID number from new widget instance
- $sidebars_widgets[$use_sidebar_id][] = $new_instance_id; // add new instance to sidebar
- update_option( 'sidebars_widgets', $sidebars_widgets ); // save the amended data
- // Success message
- if ( $sidebar_available ) {
- $widget_message_type = 'success';
- $widget_message = esc_html__( 'Imported', 'taskereasy' );
- } else {
- $widget_message_type = 'warning';
- $widget_message = esc_html__( 'Imported to Inactive', 'taskereasy' );
- }
- }
- // Result for widget instance
- $results[$sidebar_id]['widgets'][$widget_instance_id]['name'] = isset( $available_widgets[$id_base]['name'] ) ? $available_widgets[$id_base]['name'] : $id_base; // widget name or ID if name not available (not supported by site)
- $results[$sidebar_id]['widgets'][$widget_instance_id]['title'] = $widget->title ? $widget->title : esc_html__( 'No Title', 'taskereasy' ); // show "No Title" if widget instance is untitled
- $results[$sidebar_id]['widgets'][$widget_instance_id]['message_type'] = $widget_message_type;
- $results[$sidebar_id]['widgets'][$widget_instance_id]['message'] = $widget_message;
- }
- }
- // Hook after import
- do_action( 'xshop_theme_import_widget_after_import' );
- //echo esc_html__('Widgets has been successfully imported','taskereasy');
- die();
- }
- function set_demo_theme_options( $file ) {
- // File exists?
- if ( !file_exists( $file ) ) {
- echo esc_html__('Theme options Import file could not be found. Please try again.','taskereasy');
- }
- else{
- // Get file contents and decode
- WP_Filesystem();
- global $wp_filesystem;
- $data = $wp_filesystem->get_contents( $file );
- $data = json_decode( $data, true );
- $theme_option_name = 'TakeThemes_options';
- if ( is_array( $data ) && !empty( $data ) ) {
- $data = apply_filters( 'solitaire_theme_import_theme_options', $data );
- update_option($theme_option_name, $data);
- //echo esc_html__('Theme options have been successfully imported', 'taskereasy');
- //die();
- } else {
- echo esc_html__('Theme options import data could not be read. Please try a different file.', 'taskereasy');
- }
- }
- }
- if($layout=="solitaire"){
- $solitaire_options = get_template_directory().'/framework/importer/demo-files/solitaire/solitaire-options.json';
- $solitaire_widgets = get_template_directory().'/framework/importer/demo-files/solitaire/solitaire_widgets.json';
- $solitaire_content = get_template_directory().'/framework/importer/demo-files/solitaire/solitaire.xml';
- set_demo_data( $solitaire_content );
- set_demo_menus();
- clean_default_widgets();
- set_demo_theme_options( $solitaire_options );
- wp_delete_post(1);
- wp_delete_post(2);
- update_option( 'show_on_front', 'page' );
- update_option( 'page_on_front', 144 );
- update_option( 'page_for_posts', 223 );
- process_widget_import_file( $solitaire_widgets );
- }
- else if($layout=="jewelia"){
- $jewelia_options = get_template_directory().'/framework/importer/demo-files/jewelia/jewelia-options.json';
- $jewelia_widgets = get_template_directory().'/framework/importer/demo-files/jewelia/jewelia_widgets.json';
- $jewelia_content = get_template_directory().'/framework/importer/demo-files/jewelia/jewelia.xml';
- set_demo_data( $jewelia_content );
- set_demo_menus();
- clean_default_widgets();
- set_demo_theme_options( $jewelia_options );
- wp_delete_post(1);
- wp_delete_post(2);
- update_option( 'show_on_front', 'page' );
- update_option( 'page_on_front', 144 );
- update_option( 'page_for_posts', 223 );
- $createPage = array(
- 'post_title' => 'Wishlist',
- 'post_content' => '[vc_row][vc_column][solitaire_wishlist title="My Wishlist"][/vc_column][/vc_row]',
- 'post_status' => 'publish',
- 'post_author' => 1,
- 'post_type' => 'page',
- 'post_name' => 'wishlist'
- );
- wp_insert_post( $createPage );
- if ( class_exists( 'Redux' ) ) {
- $opt_name = 'redux_demo';
- if( get_page_by_title('Wishlist') != NULL ) {
- $page = get_page_by_title('Wishlist');
- $permalink = get_permalink($page->ID);
- Redux::setOption( $opt_name, 'wishlist_page_url', $permalink);
- }
- }
- process_widget_import_file( $jewelia_widgets );
- }
- else if($layout=="quark1"){
- $quark1_options = get_template_directory().'/framework/importer/demo-files/quark1/quark1-options.json';
- $quark1_widgets = get_template_directory().'/framework/importer/demo-files/quark1/quark1_widgets.json';
- $quark1_content = get_template_directory().'/framework/importer/demo-files/quark1/quark1.xml';
- set_demo_data( $quark1_content );
- set_demo_menus();
- clean_default_widgets();
- set_demo_theme_options( $quark1_options );
- wp_delete_post(1);
- wp_delete_post(2);
- update_option( 'show_on_front', 'page' );
- update_option( 'page_on_front', 1756 );
- update_option( 'page_for_posts', 1862 );
- process_widget_import_file( $quark1_widgets );
- }
- else if($layout=="quark2"){
- $quark2_options = get_template_directory().'/framework/importer/demo-files/quark2/quark2-options.json';
- $quark2_widgets = get_template_directory().'/framework/importer/demo-files/quark2/quark2_widgets.json';
- $quark2_content = get_template_directory().'/framework/importer/demo-files/quark2/quark2.xml';
- set_demo_data( $quark2_content );
- set_demo_menus();
- clean_default_widgets();
- set_demo_theme_options( $quark2_options );
- wp_delete_post(1);
- wp_delete_post(2);
- update_option( 'show_on_front', 'page' );
- update_option( 'page_on_front', 1756 );
- update_option( 'page_for_posts', 1862 );
- process_widget_import_file( $quark2_widgets );
- }
- }
- }
- die();
- }
- }
- ?>
|