OwlCyberSecurity - MANAGER
Edit File: class-hestia-content-import.php
<?php /** * Hestia import handler. * * @package Hestia * @since 1.1.49 */ /** * Class Hestia_Content_Import * * Handles content import from Azera, Llorix and Parallax One. */ final class Hestia_Content_Import { /** * Previous theme slug * * @var mixed|string|void */ private $previous_theme = ''; /** * Simple theme mods * * @var array */ private $simple_theme_mods = array( // Big title 'hestia_big_title_title' => 'header_title', 'hestia_big_title_text' => 'header_subtitle', 'hestia_big_title_button_text' => 'header_button_text', 'hestia_big_title_button_link' => 'header_button_link', // Logos section 'hestia_clients_bar_hide' => 'logos_show', 'hestia_clients_bar_content' => 'logos_content', // Ribbon section 'hestia_ribbon_hide' => 'ribbon_show', 'hestia_ribbon_text' => 'ribbon_title', 'hestia_ribbon_button_text' => 'button_text', 'hestia_ribbon_button_url' => 'button_link', // Contact subtitle 'hestia_contact_subtitle' => 'copyright', // Features section 'hestia_features_hide' => 'our_services_show', 'hestia_features_title' => 'our_services_title', 'hestia_features_subtitle' => 'our_services_subtitle', // About section 'hestia_about_hide' => 'our_story_show', // Team section 'hestia_team_hide' => 'our_team_show', 'hestia_team_title' => 'our_team_title', 'hestia_team_subtitle' => 'our_team_subtitle', 'hestia_team_content' => 'team_content', // Testimonials 'hestia_testimonials_hide' => 'happy_customers_show', 'hestia_testimonials_title' => 'happy_customers_title', 'hestia_testimonials_subtitle' => 'happy_customers_subtitle', 'hestia_testimonials_content' => 'testimonials_content', // Portfolio 'hestia_portfolio_title' => 'plus_portfolio_section_title', 'hestia_portfolio_subtitle' => 'plus_portfolio_section_subtitle', 'hestia_portfolio_items' => 'plus_number_of_portfolio_posts', // Shop 'hestia_shop_hide' => 'shop_section_show', // Copyright 'hestia_general_credits' => 'pwd', ); /** * Previous theme content * * @var array */ private $previous_theme_content = array(); /** * Hestia_Content_Import constructor. * * @access public * @since 1.1.49 */ public function __construct() { // Get the name of the previously active theme. $this->previous_theme = strtolower( get_option( 'theme_switched' ) ); // Get the theme mods from the previous theme. $this->previous_theme_content = get_option( 'theme_mods_' . $this->previous_theme ); } /** * Main import handler function. * * @access private * @since 1.1.49 */ public final function import() { if ( ! in_array( $this->previous_theme, array( 'azera-shop', 'parallax-one', 'llorix-one-lite' ), true ) ) { return; } // Prefix the theme mods with the previously active theme slug. $this->prefix_theme_mods( $this->simple_theme_mods ); // Add exceptions. $this->add_exceptions(); // Set all mods in the $simple_theme_mods array. $this->set_simple_mods( $this->simple_theme_mods ); // Import content. $this->import_content(); } /** * Prefix theme mods. * * @param theme -mods $mods theme mods array. * * @access private * @since 1.1.49 */ private final function prefix_theme_mods( $mods ) { $prefix = str_replace( '-', '_', $this->previous_theme ) . '_'; if ( ! empty( $mods ) ) { foreach ( $mods as $hestia_mod => $previous_mod_unprefixed ) { $this->simple_theme_mods[ $hestia_mod ] = $prefix . $previous_mod_unprefixed; } } } /** * Add exceptions || remove unused settings. * * Add exceptions and bail if the previous theme was not Azera, Parallax or Llorix, * * @access private * @since 1.1.49 */ private final function add_exceptions() { // Add exceptions and bail if there's another theme than these three. switch ( $this->previous_theme ) { case 'azera-shop': $this->azera_specific_changes(); $theme_exceptions = array( 'hestia_big_title_background' => 'header_image', 'hestia_ribbon_background' => 'azera_shop_ribbon_background', 'hestia_shop_title' => 'azera_shop_shop_section_title', 'hestia_shop_subtitle' => 'azera_shop_shop_section_subtitle', 'hestia_shop_items' => 'azera_shop_number_of_products', ); $this->simple_theme_mods = array_merge( $this->simple_theme_mods, $theme_exceptions ); break; case 'parallax-one': $this->parallax_specific_changes(); $theme_exceptions = array( 'hestia_big_title_background' => 'header_image', 'hestia_ribbon_background' => 'paralax_one_ribbon_background', 'hestia_shop_title' => 'parallax_one_plus_shop_section_title', 'hestia_shop_subtitle' => 'parallax_one_plus_shop_section_subtitle', 'hestia_shop_items' => 'parallax_one_plus_number_of_products', 'hestia_blog_title' => 'parallax_one_latest_news_title', ); $this->simple_theme_mods = array_merge( $this->simple_theme_mods, $theme_exceptions ); break; case 'llorix-one-lite': $this->llorix_specific_changes(); $theme_exceptions = array( 'hestia_big_title_background' => 'header_image', 'hestia_ribbon_background' => 'llorix_one_lite_ribbon_background', 'hestia_shop_title' => 'llorix_one_plus_shop_section_title', 'hestia_shop_subtitle' => 'llorix_one_plus_shop_section_subtitle', 'hestia_shop_items' => 'llorix_one_plus_number_of_products', 'hestia_blog_title' => 'llorix_one_lite_latest_news_title', ); $this->simple_theme_mods = array_merge( $this->simple_theme_mods, $theme_exceptions ); break; } } /** * Import content from previous theme. * * @access private * @since 1.1.49 */ private function import_content() { require_once( HESTIA_PHP_INCLUDE . 'content-import/class-hestia-import-utilities.php' ); $utilities = new Hestia_Import_Utilities(); $prefix = str_replace( '-', '_', $this->previous_theme ) . '_'; /** * Import logo. */ $logo_id = $prefix === 'parallax_one_' ? 'paralax_one_logo' : $prefix . 'logo'; if ( ! empty( $this->previous_theme_content[ $logo_id ] ) ) { $utilities->update_logo( $this->previous_theme_content[ $logo_id ] ); } /** * Enable Clients bar section if user have content in it in previous theme. */ $clients_hide = get_theme_mod( 'hestia_clients_bar_hide' ); if ( ! empty( $this->previous_theme_content[ $prefix . 'logos_content' ] ) && empty( $clients_hide ) ) { set_theme_mod( 'hestia_clients_bar_hide', false ); } /** * Enable ribbon section if user have content in it in previous theme. */ $ribbon_hide = get_theme_mod( 'hestia_ribbon_hide' ); if ( ( ! empty( $this->previous_theme_content[ $prefix . 'ribbon_title' ] ) || ! empty( $this->previous_theme_content[ $prefix . 'button_text' ] ) ) && empty( $ribbon_hide ) ) { set_theme_mod( 'hestia_ribbon_hide', false ); } /** * Features content. Check if it contains stamp icons, replace them and update content in hestia. */ if ( ! empty( $this->previous_theme_content[ $prefix . 'services_content' ] ) ) { $json = $utilities->update_icons( $this->previous_theme_content[ $prefix . 'services_content' ] ); if ( ! empty( $json ) ) { set_theme_mod( 'hestia_features_content', $json ); } } /** * Shop section. */ $woo_cat_control_id = $prefix . 'woocomerce_categories'; switch ( $prefix ) { case 'llorix_one_lite_': $woo_cat_control_id = 'llorix_one_plus_woocomerce_categories'; break; case 'parallax_one_': $woo_cat_control_id = 'parallax_one_plus_woocomerce_categories'; break; } if ( ! empty( $this->previous_theme_content[ $woo_cat_control_id ] ) ) { $utilities->update_shop_category( $this->previous_theme_content[ $woo_cat_control_id ] ); } /** * Shortcodes section. */ if ( ( empty( $this->previous_theme_content[ $prefix . 'shortcodes_section_show' ] ) || (bool) $this->previous_theme_content[ $prefix . 'shortcodes_section_show' ] !== true ) && ! empty( $this->previous_theme_content[ $prefix . 'shortcodes_settings' ] ) ) { $utilities->shortcodes_section_to_html( $this->previous_theme_content[ $prefix . 'shortcodes_settings' ] ); } /** * Contact section. */ if ( ( empty( $this->previous_theme_content[ $prefix . 'contact_info_show' ] ) || (bool) $this->previous_theme_content[ $prefix . 'contact_info_show' ] !== true ) && ! empty( $this->previous_theme_content[ $prefix . 'contact_info_content' ] ) ) { $utilities->contact_to_html( $this->previous_theme_content[ $prefix . 'contact_info_content' ] ); } /** * About section. */ $settings = array(); if ( ! empty( $this->previous_theme_content[ $prefix . 'our_story_title' ] ) ) { $settings['title'] = $this->previous_theme_content[ $prefix . 'our_story_title' ]; }; if ( ! empty( $this->previous_theme_content[ $prefix . 'our_story_text' ] ) ) { $settings['text'] = $this->previous_theme_content[ $prefix . 'our_story_text' ]; }; if ( ! empty( $this->previous_theme_content[ $prefix . 'our_story_image' ] ) ) { $settings['image'] = $this->previous_theme_content[ $prefix . 'our_story_image' ]; }; $layout_control = ''; switch ( $prefix ) { case 'llorix_one_lite_': $layout_control = 'llorix_one_plus_about_layout'; break; case 'parallax_one_': $layout_control = 'parallax_one_plus_about_layout'; break; case 'azera_shop_': $layout_control = 'azera_shop_plus_about_layout'; break; } if ( ! empty( $layout_control ) && ! empty( $this->previous_theme_content[ $layout_control ] ) ) { $settings['layout'] = $this->previous_theme_content[ $layout_control ]; }; $utilities->about_to_html( $settings ); /** * Move portfolio from cpt to jetpack's cpt. */ $utilities->update_portfolio( 'portfolio' ); /** * Sidebars. */ $utilities->update_sidebars(); /** * Features ribbon section. */ if ( ! empty( $this->previous_theme_content[ $prefix . 'features_ribbon_content' ] ) ) { $utilities->features_ribbon_to_html( $this->previous_theme_content[ $prefix . 'features_ribbon_content' ] ); } /** * Create Json for slider control in hestia */ $settings = array( 'title' => $prefix . 'header_title', 'subtitle' => $prefix . 'header_subtitle', 'text' => $prefix . 'header_button_text', 'link' => $prefix . 'header_button_link', 'image_url' => 'header_image', ); $utilities->update_big_title( $this->previous_theme_content, $settings ); /** * Full width layout */ if ( ! empty( $this->previous_theme_content[ $prefix . 'full_width_template' ] ) ) { $utilities->update_layout( $this->previous_theme_content[ $prefix . 'full_width_template' ] ); } /** * Update sections order */ $section_match = array( 'hestia_clients_bar' => $prefix . 'logos_settings_section', 'hestia_features' => $prefix . 'services_section', 'hestia_about' => $prefix . 'about_section', 'hestia_shop' => $prefix . 'shop_section', 'hestia_team' => $prefix . 'team_section', 'hestia_portfolio' => $prefix . 'portfolio_section', 'hestia_testimonials' => $prefix . 'testimonials_section', 'hestia_ribbon' => $prefix . 'ribbon_section', 'hestia_blog' => $prefix . 'latest_news_section', 'hestia_contact' => $prefix . 'contact_section', ); $sections_order = ( ! empty( $this->previous_theme_content['sections_order'] ) ? $this->previous_theme_content['sections_order'] : '' ); $utilities->update_sections_order( $sections_order, $section_match ); /** * Header layout */ $layout = $prefix === 'azera_shop_' ? 'layout2' : ''; if ( ! empty( $this->previous_theme_content[ $prefix . 'header_layout' ] ) ) { $utilities->update_header_layout( $this->previous_theme_content[ $prefix . 'header_layout' ] ); } elseif ( ! empty( $layout ) ) { $utilities->update_header_layout( $layout ); } /* Menus */ if ( ! empty( $this->previous_theme_content['nav_menu_locations'] ) ) { if ( $prefix === 'llorix_one_lite_' ) { $social_content = ! empty( $this->previous_theme_content['llorix_one_lite_very_top_social_icons'] ) ? $this->previous_theme_content['llorix_one_lite_very_top_social_icons'] : ''; } else { $social_content = ! empty( $this->previous_theme_content[ $prefix . 'social_icons' ] ) ? $this->previous_theme_content[ $prefix . 'social_icons' ] : ''; } $utilities->update_menus( $social_content, $this->previous_theme_content['nav_menu_locations'] ); } } /** * Sets all the simple theme mods provided in the parameter array. * * @param theme -mods $mods theme mods array. * * @access private * @since 1.1.49 */ private function set_simple_mods( $mods ) { // Prefix the theme mods with the previous active theme name and set them in Hestia. if ( ! empty( $mods ) ) { foreach ( $mods as $hestia_mod => $imported_mod ) { $this->set_hestia_mod( $hestia_mod, $imported_mod ); } } } /** * Utility method to set theme mod from import. * * @param hestia-mod-id $hestia_mod_id the hestia mod to set. * @param imported-mod-id $imported_mod_id the imported theme mod id. * * @access private * @since 1.1.49 */ private final function set_hestia_mod( $hestia_mod_id, $imported_mod_id ) { $hestia_mod = get_theme_mod( $hestia_mod_id ); if ( ! empty( $this->previous_theme_content[ $imported_mod_id ] ) ) { $imported_mod = $this->previous_theme_content[ $imported_mod_id ]; if ( ! empty( $imported_mod ) && empty( $hestia_mod ) ) { set_theme_mod( $hestia_mod_id, $imported_mod ); } } } /** * Do specific actions for Llorix theme. * * @access private * @since 1.1.49 */ private function llorix_specific_changes() { /* Set fonts */ set_theme_mod( 'hestia_headings_font', 'Cabin' ); set_theme_mod( 'hestia_body_font', 'Cabin' ); /* Set default color */ set_theme_mod( 'accent_color', '#be5000' ); set_theme_mod( 'secondary_color', '#0d3c55' ); if ( ! empty( $previous_theme_content['llorix_one_lite_title_color'] ) ) { set_theme_mod( 'body_color', $previous_theme_content['llorix_one_lite_title_color'] ); } if ( ! empty( $previous_theme_content['llorix_one_lite_text_color'] ) ) { set_theme_mod( 'secondary_color', $previous_theme_content['llorix_one_lite_text_color'] ); } } /** * Do specific actions for Azera theme. * * @access private * @since 1.1.49 */ private function azera_specific_changes() { /* Set fonts */ set_theme_mod( 'hestia_headings_font', 'Cabin' ); set_theme_mod( 'hestia_body_font', 'Cabin' ); /* Set default color */ set_theme_mod( 'accent_color', '#FFA200' ); /* Static front page settings */ if ( 'page' === get_option( 'show_on_front' ) ) { $pid = $this->create_frontpage(); update_option( 'page_on_front', $pid ); } } /** * Do modifications for parallax that needs some logic. * * @access private * @since 1.1.49 */ private function parallax_specific_changes() { /* Set fonts */ set_theme_mod( 'hestia_headings_font', 'Cabin' ); set_theme_mod( 'hestia_body_font', 'Cabin' ); /* Set default color */ set_theme_mod( 'accent_color', '#008ed6' ); /* Shop section visibility */ if ( ! empty( $previous_theme_content['parallax_one_shop_section_show'] ) ) { set_theme_mod( 'hestia_shop_hide', (bool) $previous_theme_content['parallax_one_shop_section_show'] ); } else { set_theme_mod( 'hestia_shop_hide', true ); } /* Static front page settings */ if ( 'posts' === get_option( 'show_on_front' ) ) { $pid = $this->create_frontpage(); update_option( 'show_on_front', 'page' ); update_option( 'page_on_front', $pid ); } } /** * Create the frontpage from previous themes ( azera/llorix/paralax) and returns its id. */ private function create_frontpage() { $about_content = get_theme_mod( 'hestia_page_editor' ); $page_content = ! empty( $about_content ) ? $about_content : ''; $page = array( 'post_type' => 'page', 'post_title' => __( 'Front page', 'hestia' ), 'post_content' => wp_kses_post( $page_content ), 'post_status' => 'publish', 'post_author' => 1, ); $pid = wp_insert_post( $page ); return $pid; } }