File "class-hestia-import-zerif.php"
Full Path: /home/tekvhqgl/public_html/dev2024_old_skip/wp-content/themes/hestia/inc/content-import/class-hestia-import-zerif.php
File size: 34.83 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Class used to import zerif.
*
* @package hestia
* @since 1.1.51
*/
/**
* Class Hestia_Import_Zerif
*/
class Hestia_Import_Zerif extends Hestia_Import_Utilities {
/**
* Previous theme slug
*
* @var mixed|string|void
*/
private $previous_theme = '';
/**
* Previous theme content
*
* @var array
*/
private $previous_theme_content = array();
/**
* Match customizer options between Zerif and Hestia
*
* @var array
*/
private $match_controls = array(
'hestia_features_hide' => 'zerif_ourfocus_show',
'hestia_features_title' => 'zerif_ourfocus_title',
'hestia_features_subtitle' => 'zerif_ourfocus_subtitle',
'hestia_team_hide' => 'zerif_ourteam_show',
'hestia_team_title' => 'zerif_ourteam_title',
'hestia_team_subtitle' => 'zerif_ourteam_subtitle',
'hestia_testimonials_hide' => 'zerif_testimonials_show',
'hestia_testimonials_title' => 'zerif_testimonials_title',
'hestia_testimonials_subtitle' => 'zerif_testimonials_subtitle',
'hestia_clients_bar_hide' => 'zerif_aboutus_show',
'hestia_pricing_title' => 'zerif_packages_title',
'hestia_pricing_subtitle' => 'zerif_packages_subtitle',
'custom_logo' => 'custom_logo',
'hestia_portfolio_title' => 'zerif_portofolio_title',
'hestia_portfolio_subtitle' => 'zerif_portofolio_subtitle',
'hestia_portfolio_items' => 'zerif_portofolio_number',
'hestia_portfolio_hide' => 'zerif_portofolio_show',
'hestia_ribbon_text' => 'zerif_ribbonright_text',
'hestia_ribbon_button_text' => 'zerif_ribbonright_buttonlabel',
'hestia_ribbon_button_url' => 'zerif_ribbonright_buttonlink',
'hestia_contact_title' => 'zerif_contactus_title',
'hestia_contact_subtitle' => 'zerif_contactus_subtitle',
'hestia_general_credits' => 'zerif_copyright',
'hestia_blog_title' => 'zerif_latestnews_title',
'hestia_blog_subtitle' => 'zerif_latestnews_subtitle',
'hestia_parallax_layer1' => 'zerif_parallax_img1',
'hestia_parallax_layer2' => 'zerif_parallax_img2',
);
/**
* Collect all content from zerif and add it to this variable.
*
* @var string
*/
private $about_content_markup;
/**
* Hestia_Import_Zerif constructor.
*
* @access public
* @since 1.1.51
*/
public function __construct() {
$this->about_content_markup = '';
if ( 'page' === get_option( 'show_on_front' ) ) {
$page_id = get_theme_mod( 'page_on_front' );
if ( ! empty( $page_id ) ) {
$front_page = get_post( $page_id );
if ( property_exists( $front_page, 'post_content' ) ) {
$this->about_content_markup = $front_page->post_content;
}
}
}
// 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.51
*/
public final function import() {
if ( ! in_array(
$this->previous_theme,
array(
'zerif-pro',
'zerif-lite',
'zblackbeard',
'responsiveboat',
),
true
) ) {
return;
}
/* Set fonts */
set_theme_mod( 'hestia_headings_font', 'Montserrat' );
set_theme_mod( 'hestia_body_font', 'Montserrat' );
set_theme_mod( 'hestia_general_layout', false );
/* Set default color */
set_theme_mod( 'accent_color', '#e96656' );
// Import about section.
$this->import_zerif_about();
// Import bottom button ribon to about
$this->import_zerif_bottom_button_ribbon();
if ( $this->previous_theme === 'zerif-pro' ) {
/* Static front page settings */
if ( 'posts' === get_option( 'show_on_front' ) ) {
$about_content = $this->about_content_markup;
$page_content = ! empty( $about_content ) ? $about_content : '';
$page = array(
'post_type' => 'page',
'post_title' => 'Front page',
'post_content' => wp_kses_post( $page_content ),
'post_status' => 'publish',
'post_author' => 1,
);
$pid = wp_insert_post( $page );
update_option( 'show_on_front', 'page' );
update_option( 'page_on_front', $pid );
}
$this->import_section_order();
} else {
$this->sync_content_from_control( $this->about_content_markup );
}
if ( $this->previous_theme === 'zerif-lite' ) {
$this->match_controls['hestia_features_title'] = 'zerif_ourfocus_title_2';
}
// Set all mods in the $simple_theme_mods array.
$this->set_simple_mods();
$this->import_zerif_parallax();
$this->import_zerif_header();
$this->widgets_to_theme_mods();
$this->import_zerif_packages();
// Import portfolios
require_once( HESTIA_PHP_INCLUDE . 'content-import/class-hestia-import-utilities.php' );
$utilities = new Hestia_Import_Utilities();
if ( empty( $this->previous_theme_content['zerif_portofolio_show'] ) || (bool) $this->previous_theme_content['zerif_portofolio_show'] === false ) {
set_theme_mod( 'hestia_portfolio_hide', false );
}
$utilities->update_portfolio( 'portofolio' );
// Show ribbon section if it's visible in zerif
if ( ! empty( $this->previous_theme_content['zerif_ribbonright_text'] ) || ! empty( $this->previous_theme_content['zerif_ribbonright_buttonlabel'] ) ) {
set_theme_mod( 'hestia_ribbon_hide', false );
}
// Import shortcode section
if ( isset( $this->previous_theme_content['zerif_shortcodes_settings'] ) ) {
$utilities->shortcodes_section_to_html( $this->previous_theme_content['zerif_shortcodes_settings'] );
}
// Import footer to contact section
$this->import_zerif_footer();
// Import footer social in footer menu
$this->import_zerif_footer_socials();
// Update sidebars
$this->import_sidebars();
// Import menus
$this->import_menus();
}
/**
* Function to import About section.
*
* @since 1.1.51
* @access private
*/
private function import_zerif_about() {
$execute = get_option( 'should_import_zerif_about' );
if ( $execute !== false ) {
return;
}
$css_to_add = '';
/* Title and subtitle */
$title = array_key_exists( 'zerif_aboutus_title', $this->previous_theme_content ) && ! empty( $this->previous_theme_content['zerif_aboutus_title'] ) ? $this->previous_theme_content['zerif_aboutus_title'] : '';
$subtitle = array_key_exists( 'zerif_aboutus_subtitle', $this->previous_theme_content ) && ! empty( $this->previous_theme_content['zerif_aboutus_subtitle'] ) ? $this->previous_theme_content['zerif_aboutus_subtitle'] : '';
if ( ! empty( $title ) || ! empty( $subtitle ) ) {
$this->about_content_markup .= '<div class="row"><div class="col-md-8 col-md-offset-2 text-center">';
if ( ! empty( $title ) ) {
$this->about_content_markup .= '<h2 class="hestia-title">' . wp_kses_post( $title ) . '</h2>';
}
if ( ! empty( $subtitle ) ) {
$this->about_content_markup .= '<h5 class="description">' . wp_kses_post( $subtitle ) . '</h5>';
}
$this->about_content_markup .= '</div></div>';
}
/* Left content */
$left_content = array_key_exists( 'zerif_aboutus_biglefttitle', $this->previous_theme_content ) && ! empty( $this->previous_theme_content['zerif_aboutus_biglefttitle'] ) ? $this->previous_theme_content['zerif_aboutus_biglefttitle'] : '';
/* Center content */
$center_content = array_key_exists( 'zerif_aboutus_text', $this->previous_theme_content ) && ! empty( $this->previous_theme_content['zerif_aboutus_text'] ) ? $this->previous_theme_content['zerif_aboutus_text'] : '';
/* Right content */
$right_content = '';
for ( $i = 1; $i <= 4; $i ++ ) {
$knob_title = ! empty( $this->previous_theme_content[ 'zerif_aboutus_feature' . $i . '_title' ] ) ? $this->previous_theme_content[ 'zerif_aboutus_feature' . $i . '_title' ] : '';
$knob_text = ! empty( $this->previous_theme_content[ 'zerif_aboutus_feature' . $i . '_text' ] ) ? $this->previous_theme_content[ 'zerif_aboutus_feature' . $i . '_text' ] : '';
$knob_percentage = ! empty( $this->previous_theme_content[ 'zerif_aboutus_feature' . $i . '_nr' ] ) ? $this->previous_theme_content[ 'zerif_aboutus_feature' . $i . '_nr' ] : '';
$knob_color = ! empty( $this->previous_theme_content[ 'zerif_aboutus_feature' . $i . '_color' ] ) ? $this->previous_theme_content[ 'zerif_aboutus_feature' . $i . '_color' ] : '';
if ( ! empty( $knob_percentage ) ) {
if ( $knob_percentage <= 50 ) {
$rotation = (int) $knob_percentage * 3.6;
$css_to_add .= '.progress' . $i . ' .progress-right .progress-bar { margin-right: 10px;border-color: ' . $knob_color . ';-webkit-transform: rotate(' . $rotation . 'deg); transform: rotate(' . $rotation . 'deg);}';
$css_to_add .= '.progress' . $i . ' .progress-left .progress-bar { margin-right: 10px;border-color: ' . $knob_color . ';-webkit-transform: rotate(0deg); transform: rotate(0deg); }';
} else {
$rotation = ( (int) $knob_percentage - 50 ) * 3.6;
$css_to_add .= '.progress' . $i . ' .progress-left .progress-bar { margin-right: 10px;border-color: ' . $knob_color . ';-webkit-transform: rotate(' . $rotation . 'deg); transform: rotate(' . $rotation . 'deg);}';
$css_to_add .= '.progress' . $i . ' .progress-right .progress-bar { margin-right: 10px;border-color: ' . $knob_color . ';-webkit-transform: rotate(180deg); transform: rotate(180deg);}';
}
$right_content .= '
<div class="row">
<div class="progress progress' . esc_attr( $i ) . '">
<span class="progress-left">
<span class="progress-bar"></span>
</span>
<span class="progress-right">
<span class="progress-bar"></span>
</span>
<div class="progress-value">' . wp_kses_post( $knob_percentage ) . '%</div>
</div>
<h6 class="category">' . wp_kses_post( $knob_title ) . '</h6>
<p>' . wp_kses_post( $knob_text ) . '</p>
</div>';
}
}
/* About section in zerif have 3 columns. If one column is empty, divide the section in two*/
$content = array( $left_content, $center_content, $right_content );
$not_empty_colums = count( array_filter( $content ) );
if ( ! function_exists( 'wp_update_custom_css_post' ) ) {
$not_empty_colums --;
}
if ( $not_empty_colums <= 0 ) {
return;
}
/* Get bootstrap class name for columns */
$nb = 12 / $not_empty_colums;
$class = 'col-md-' . $nb;
/* Add section content */
$this->about_content_markup .= '<div class="row">';
if ( ! empty( $left_content ) ) {
$this->about_content_markup .= '<div class="' . esc_attr( $class ) . ' text-right">';
$this->about_content_markup .= '<h3>' . wp_kses_post( $left_content ) . '</h3>';
$this->about_content_markup .= '</div>';
}
if ( ! empty( $center_content ) ) {
$this->about_content_markup .= '<div class="' . esc_attr( $class ) . '">';
$this->about_content_markup .= '<p>' . wp_kses_post( $center_content ) . '</p>';
$this->about_content_markup .= '</div>';
}
if ( ! empty( $right_content ) && function_exists( 'wp_update_custom_css_post' ) ) {
/* This is the css for knobs */
$css_to_add .= '
.progress{
width: 70px;
height: 70px;
line-height: 70px;
margin: 0 auto;
position: relative;
display: inline-block;
float: left;
margin-right: 15px;
margin-top: 15px;
}
.progress > span{
width: 50%;
height: 100%;
overflow: hidden;
position: absolute;
top: 0;
z-index: 1;
}
.progress .progress-left{
left: 0;
}
.progress .progress-bar{
width: 100%;
height: 100%;
background: none;
border-width: 8px;
border-style: solid;
position: absolute;
top: 0;
}
.progress .progress-left .progress-bar{
left: 100%;
border-top-right-radius: 80px;
border-bottom-right-radius: 80px;
border-left: 0;
-webkit-transform-origin: center left;
transform-origin: center left;
}
.progress .progress-right{
right: 0;
}
.progress .progress-right .progress-bar{
left: -100%;
border-top-left-radius: 80px;
border-bottom-left-radius: 80px;
border-right: 0;
-webkit-transform-origin: center right;
transform-origin: center right;
}
.progress .progress-value{
width: 54px;
height: 54px;
border-radius: 50%;
background: #44484b;
font-size: 13px;
color: #fff;
line-height: 54px;
text-align: center;
position: absolute;
top: 8px;
left: 8px;
}
.progress.blue .progress-bar{
border-color: #049dff;
}';
wp_update_custom_css_post( $css_to_add );
$this->about_content_markup .= '<div class="' . esc_attr( $class ) . '">';
$this->about_content_markup .= wp_kses_post( $right_content );
$this->about_content_markup .= '</div>';
}
$this->about_content_markup .= '</div>';
update_option( 'should_import_zerif_about', true );
}
/**
* Import Bottom Button ribbon to Hestia's about section.
*
* @access private
* @since 1.1.51
*/
private function import_zerif_bottom_button_ribbon() {
$execute = get_option( 'should_import_zerif_ribbon' );
if ( $execute !== false ) {
return;
}
$title = ! empty( $this->previous_theme_content['zerif_bottomribbon_text'] ) ? $this->previous_theme_content['zerif_bottomribbon_text'] : '';
$button_label = ! empty( $this->previous_theme_content['zerif_bottomribbon_buttonlabel'] ) ? $this->previous_theme_content['zerif_bottomribbon_buttonlabel'] : '';
$button_link = ! empty( $this->previous_theme_content['zerif_bottomribbon_buttonlink'] ) ? $this->previous_theme_content['zerif_bottomribbon_buttonlink'] : '';
if ( empty( $title ) && empty( $button_label ) ) {
return;
}
$section_content = '<div class="row"><div class="col-md-12 text-center">';
if ( ! empty( $title ) ) {
$section_content .= '<h2 class="hestia-title">' . wp_kses_post( $title ) . '</h2>';
}
if ( ! empty( $button_label ) && ! empty( $button_link ) ) {
$section_content .= '<a href="' . esc_url( $button_link ) . '" class="btn btn-primary btn-lg">' . wp_kses_post( $button_label ) . '</a>';
}
$section_content .= '</div></div>';
$this->about_content_markup .= $section_content;
update_option( 'should_import_zerif_ribbon', true );
}
/**
* Import sections order in hestia.
*
* @access private
* @since 1.1.51
*/
private function import_section_order() {
$result_order = array(
'hestia_features' => 10,
'hestia_ribbon' => 15,
'hestia_portfolio' => 20,
'hestia_about' => 25,
'hestia_clients_bar' => 30,
'hestia_team' => 35,
'hestia_testimonials' => 40,
'hestia_contact' => 45,
'hestia_pricing' => 50,
'sidebar-widgets-subscribe-widgets' => 55,
'hestia_shop' => 60,
'hestia_blog' => 65,
);
$section_mapping = array(
'our_focus' => 'hestia_features',
'portofolio' => 'hestia_portfolio',
'about_us' => 'hestia_about',
'our_team' => 'hestia_team',
'testimonials' => 'hestia_testimonials',
'right_ribbon' => 'hestia_ribbon',
'contact_us' => 'hestia_contact',
'packages' => 'hestia_pricing',
'subscribe' => 'sidebar-widgets-subscribe-widgets',
'latest_news' => 'hestia_blog',
);
for ( $i = 1; $i <= 13; $i ++ ) {
if ( ! empty( $this->previous_theme_content[ 'section' . $i ] ) ) {
if ( array_key_exists( $this->previous_theme_content[ 'section' . $i ], $section_mapping ) ) {
$hestia_section = $section_mapping[ $this->previous_theme_content[ 'section' . $i ] ];
$result_order[ $hestia_section ] = ( $i * 5 ) + 5;
}
}
}
if ( empty( $sections_order ) ) {
set_theme_mod( 'sections_order', json_encode( $result_order ) );
}
}
/**
* Sets all the simple theme mods provided in the parameter array.
*
* @access private
* @since 1.1.51
*/
private function set_simple_mods() {
$mods = $this->match_controls;
// 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.51
*/
private final function set_hestia_mod( $hestia_mod_id, $imported_mod_id ) {
$hestia_mod = get_theme_mod( $hestia_mod_id );
if ( array_key_exists( $imported_mod_id, $this->previous_theme_content ) ) {
$imported_mod = $this->previous_theme_content[ $imported_mod_id ];
if ( ! empty( $imported_mod ) && empty( $hestia_mod ) ) {
set_theme_mod( $hestia_mod_id, $imported_mod );
}
}
}
/**
* Import parallax from zerif to hestia.
*/
private function import_zerif_parallax() {
if ( ! array_key_exists( 'zerif_parallax_show', $this->previous_theme_content ) ) {
return;
}
$zerif_parallax_use = $this->previous_theme_content['zerif_parallax_show'];
if ( ! empty( $zerif_parallax_use ) && ( (bool) $zerif_parallax_use === true ) ) {
set_theme_mod( 'hestia_slider_type', 'parallax' );
}
}
/**
* Create Json for slider control in hestia
*
* @access private
* @since 1.1.51
*/
private function import_zerif_header() {
// This is the main structure of a slide. In zerif all slides have same content but different background.
$main_slide = array();
if ( ! empty( $this->previous_theme_content['zerif_bigtitle_title'] ) ) {
$main_slide['title'] = wp_kses_post( $this->previous_theme_content['zerif_bigtitle_title'] );
} elseif ( ! empty( $this->previous_theme_content['zerif_bigtitle_title_2'] ) ) {
$main_slide['title'] = wp_kses_post( $this->previous_theme_content['zerif_bigtitle_title_2'] );
}
if ( ! empty( $this->previous_theme_content['zerif_bigtitle_redbutton_label'] ) ) {
$main_slide['text'] = wp_kses_post( $this->previous_theme_content['zerif_bigtitle_redbutton_label'] );
} elseif ( ! empty( $this->previous_theme_content['zerif_bigtitle_redbutton_label_2'] ) ) {
$main_slide['text'] = wp_kses_post( $this->previous_theme_content['zerif_bigtitle_redbutton_label_2'] );
}
if ( ! empty( $this->previous_theme_content['zerif_bigtitle_redbutton_url'] ) ) {
$main_slide['link'] = esc_url( $this->previous_theme_content['zerif_bigtitle_redbutton_url'] );
}
if ( ! empty( $this->previous_theme_content['zerif_bigtitle_greenbutton_label'] ) ) {
$main_slide['text2'] = wp_kses_post( $this->previous_theme_content['zerif_bigtitle_greenbutton_label'] );
}
if ( ! empty( $this->previous_theme_content['zerif_bigtitle_greenbutton_url'] ) ) {
$main_slide['link2'] = esc_url( $this->previous_theme_content['zerif_bigtitle_greenbutton_url'] );
}
if ( ! empty( $this->previous_theme_content['zerif_bigtitle_1button_background_color'] ) ) {
$main_slide['color'] = wp_kses_post( $this->previous_theme_content['zerif_bigtitle_1button_background_color'] );
} else {
$main_slide['color'] = '#e96656';
}
if ( ! empty( $this->previous_theme_content['zerif_bigtitle_2button_background_color'] ) ) {
$main_slide['color2'] = wp_kses_post( $this->previous_theme_content['zerif_bigtitle_2button_background_color'] );
} else {
$main_slide['color2'] = '#1e9e6b';
}
$background_settings = ! empty( $this->previous_theme_content['zerif_background_settings'] ) ? $this->previous_theme_content['zerif_background_settings'] : '';
if ( ! empty( $background_settings ) && $background_settings === 'zerif-background-slider' ) {
$settings = array();
for ( $i = 1; $i <= 3; $i ++ ) {
if ( array_key_exists( 'zerif_bgslider_' . $i, $this->previous_theme_content ) ) {
$bg = $this->previous_theme_content[ 'zerif_bgslider_' . $i ];
if ( ! empty( $bg ) ) {
$slide = $main_slide;
$slide['image_url'] = esc_url( $bg );
array_push( $settings, $slide );
}
}
set_theme_mod( 'hestia_slider_type', 'image' );
}
$section_is_empty = empty( $main_slide['title'] ) && empty( $main_slide['text'] ) && empty( $main_slide['text2'] ) && empty( $background_settings );
if ( ! $section_is_empty ) {
set_theme_mod( 'hestia_slider_content', json_encode( $settings ) );
}
} elseif ( $background_settings !== 'zerif-background-video' ) {
if ( ! empty( $this->previous_theme_content['background_image'] ) ) {
$main_slide['image_url'] = esc_url( $this->previous_theme_content['background_image'] );
}
$section_is_empty = empty( $main_slide['title'] ) && empty( $main_slide['text'] ) && empty( $main_slide['text2'] ) && empty( $main_slide['image_url'] );
if ( ! $section_is_empty ) {
set_theme_mod( 'hestia_slider_content', '[' . json_encode( $main_slide ) . ']' );
}
if ( ! array_key_exists( 'zerif_parallax_show', $this->previous_theme_content ) ) {
return;
}
$zerif_parallax_use = $this->previous_theme_content['zerif_parallax_show'];
if ( ! empty( $zerif_parallax_use ) && ( (bool) $zerif_parallax_use === true ) ) {
set_theme_mod( 'hestia_slider_type', 'parallax' );
} else {
set_theme_mod( 'hestia_slider_type', 'image' );
}
}
}
/**
* Transfer widgets from Our focus, Testimonials, Team and About us to theme mods in hestia
*
* @since 1.1.51
* @access private
*/
private function widgets_to_theme_mods() {
$sidebars = array(
'hestia_features_content' => array( 'sidebar-ourfocus', 'ctup-ads' ),
'hestia_testimonials_content' => array( 'sidebar-testimonials', 'zerif_testim' ),
'hestia_clients_bar_content' => array( 'sidebar-aboutus', 'zerif_clients' ),
'hestia_team_content' => array( 'sidebar-ourteam', 'zerif_team' ),
);
foreach ( $sidebars as $hestia_corespondent => $sidebar_settings ) {
$hestia_content = get_theme_mod( $hestia_corespondent );
$hestia_content_decoded = json_decode( $hestia_content );
if ( empty( $hestia_content_decoded ) ) {
$content = $this->get_sidebar_content( $sidebar_settings[0], $sidebar_settings[1] );
if ( ! empty( $content ) ) {
set_theme_mod( $hestia_corespondent, $content );
}
}
}
}
/**
* Returns the content from Our focus, Testimonials, Team and About in json format
*
* @param string $sidebar Sidebar name.
* @param string $prefix Prefix of widgets in that sidebar.
*
* @since 1.1.51
* @access private
* @return array|string
*/
private function get_sidebar_content( $sidebar, $prefix ) {
$sidebars = get_option( 'sidebars_widgets' );
$data_in_hestia_format = array();
if ( array_key_exists( $sidebar, $sidebars ) ) {
$widget_ids = $sidebars[ $sidebar ];
if ( empty( $widget_ids ) ) {
return '';
}
$ids_to_grab = array();
foreach ( $widget_ids as $widget_id ) {
if ( strpos( $widget_id, $prefix ) !== false ) {
$short_id_transient = explode( '-', $widget_id );
$short_id = end( $short_id_transient );
array_push( $ids_to_grab, $short_id );
}
}
$all_widgets = get_option( 'widget_' . $prefix . '-widget' );
foreach ( $ids_to_grab as $key ) {
$widget_data = array();
if ( array_key_exists( $key, $all_widgets ) ) {
$current_widget = $all_widgets[ $key ];
if ( ! empty( $current_widget ) ) {
$social_repeater = array();
foreach ( $current_widget as $key => $value ) {
$repeater_key = $this->get_key( $key );
if ( ! empty( $value ) && ! empty( $repeater_key ) ) {
if ( $repeater_key === 'social_repeater' ) {
$social = $this->get_repeater_social( $key, $value );
array_push( $social_repeater, $social );
} else {
$widget_data[ $repeater_key ] = $value;
}
}
}
$widget_data['social_repeater'] = json_encode( $social_repeater );
$widget_data['choice'] = 'customizer_repeater_image';
}
}
if ( ! empty( $widget_data ) ) {
array_push( $data_in_hestia_format, $widget_data );
}
}
}
return json_encode( $data_in_hestia_format );
}
/**
* Map widgets inputs names to repeater inputs
*
* @param string $key Name of the inputs.
*
* @since 1.1.51
* @access private
* @return bool|string
*/
private function get_key( $key ) {
$repeater_map = array(
'image_url' => array( 'image_url', 'image_uri' ),
'title' => array( 'title', 'name' ),
'subtitle' => array( 'subtitle', 'position', 'details' ),
'text' => array( 'text', 'description' ),
'link' => array( 'link' ),
'social_repeater' => array(
'fb_link',
'tw_link',
'bh_link',
'db_link',
'ln_link',
'gp_link',
'pinterest_link',
'tumblr_link',
'reddit_link',
'youtube_link',
'instagram_link',
'website_link',
'email_link',
'phone_link',
'profile_link',
),
);
foreach ( $repeater_map as $k => $v ) {
if ( in_array( $key, $v, true ) ) {
return $k;
}
}
return false;
}
/**
* Return content to add to social repeater. Used for team members.
*
* @param string $social_name Name of social link.
* @param string $value Link of social.
*
* @since 1.1.51
* @access private
* @return array
*/
private function get_repeater_social( $social_name, $value ) {
$result = array(
'icon' => '',
'link' => $value,
);
switch ( $social_name ) {
case 'fb_link':
$result['icon'] = 'fa-facebook';
break;
case 'tw_link':
$result['icon'] = 'fa-twitter';
break;
case 'bh_link':
$result['icon'] = 'fa-behance';
break;
case 'db_link':
$result['icon'] = 'fa-dribbble';
break;
case 'ln_link':
$result['icon'] = 'fa-linkedin';
break;
case 'gp_link':
$result['icon'] = 'fa-google-plus';
break;
case 'pinterest_link':
$result['icon'] = 'fa-pinterest-p';
break;
case 'tumblr_link':
$result['icon'] = 'fa-tumblr';
break;
case 'reddit_link':
$result['icon'] = 'fa-reddit-alien';
break;
case 'youtube_link':
$result['icon'] = 'fa-youtube';
break;
case 'instagram_link':
$result['icon'] = 'fa-instagram';
break;
case 'website_link':
$result['icon'] = 'fa-globe';
break;
case 'email_link':
$result['icon'] = 'fa-envelope';
break;
case 'phone_link':
$result['icon'] = 'fa-phone';
break;
case 'profile_link':
$result['icon'] = 'fa-user';
break;
}
return $result;
}
/**
* Function to import Packages section.
* Because in hestia are only two tables, we only import two widgets from packages in this section.
*
* @since 1.1.51
* @access private
*/
private function import_zerif_packages() {
if ( ! isset( $this->previous_theme_content['zerif_packages_show'] ) ) {
$display_packages = false;
} else {
$display_packages = get_theme_mod( $this->previous_theme_content['zerif_packages_show'] );
}
$hestia_pricing_hide = get_theme_mod( 'hestia_pricing_hide' );
if ( ( ! empty( $display_packages ) && $display_packages === false ) || $hestia_pricing_hide === true ) {
return;
}
$sidebars = get_option( 'sidebars_widgets' );
if ( ! array_key_exists( 'sidebar-packages', $sidebars ) ) {
return;
}
set_theme_mod( 'hestia_pricing_hide', false );
/* Get two widgets ids from this section */
$widget_ids = $sidebars['sidebar-packages'];
if ( empty( $widget_ids ) ) {
return;
}
$ids_to_grab = array();
$items = 2;
foreach ( $widget_ids as $widget_id ) {
if ( strpos( $widget_id, 'color-picker' ) !== false && $items > 0 ) {
$short_id_transient = explode( '-', $widget_id );
$short_id = end( $short_id_transient );
array_push( $ids_to_grab, $short_id );
$items --;
}
}
/* Get all widgets from packages section and import just the ones that have one of those ids that we've selected earlier */
$all_widgets = get_option( 'widget_color-picker' );
if ( ! empty( $ids_to_grab[0] ) && array_key_exists( $ids_to_grab[0], $all_widgets ) ) {
$current_widget = $all_widgets[ $ids_to_grab[0] ];
$this->import_package( $current_widget, 'one' );
}
if ( ! empty( $ids_to_grab[1] ) && array_key_exists( $ids_to_grab[1], $all_widgets ) ) {
$current_widget = $all_widgets[ $ids_to_grab[1] ];
$this->import_package( $current_widget, 'two' );
}
}
/**
* Update theme mods from hestia based on content from zerif package widget.
*
* @param array $content Content from zerif's widget.
* @param string $table Destination table for the widget.
*
* @since 1.1.51
* @access private
*/
private function import_package( $content, $table ) {
if ( ! in_array( $table, array( 'one', 'two' ), true ) || empty( $content ) ) {
return;
}
$pricing_table_title = get_theme_mod( 'hestia_pricing_table_' . $table . '_title' );
$pricing_table_price = get_theme_mod( 'hestia_pricing_table_' . $table . '_price' );
$pricing_table_features = get_theme_mod( 'hestia_pricing_table_' . $table . '_features' );
$pricing_table_link = get_theme_mod( 'hestia_pricing_table_' . $table . '_link' );
$pricing_table_text = get_theme_mod( 'hestia_pricing_table_' . $table . '_text' );
$table_is_empty = empty( $pricing_table_title ) && empty( $pricing_table_price ) && empty( $pricing_table_features ) && empty( $pricing_table_link ) && empty( $pricing_table_text ) && empty( $table_is_empty );
if ( ! $table_is_empty ) {
return;
}
if ( ! empty( $content['title'] ) ) {
set_theme_mod( 'hestia_pricing_table_' . $table . '_title', $content['title'] );
}
$price = '';
if ( ! empty( $content['price'] ) ) {
if ( ! empty( $content['currency'] ) ) {
$price .= '<small>' . $content['currency'] . '</small>';
}
$price .= $content['price'];
if ( ! empty( $content['price_meta'] ) ) {
$price .= '<small>' . $content['price_meta'] . '</small>';
}
}
if ( ! empty( $price ) ) {
set_theme_mod( 'hestia_pricing_table_' . $table . '_price', $price );
}
if ( ! empty( $content['button_link'] ) ) {
set_theme_mod( 'hestia_pricing_table_' . $table . '_link', $content['button_link'] );
}
if ( ! empty( $content['button_label'] ) ) {
set_theme_mod( 'hestia_pricing_table_' . $table . '_text', $content['button_label'] );
}
/**
* Zerif's package widget have 10 possible items in a package. If an item isn't empty we need to concatenate
* it and to add \n character to tell the control in hestia that it's a new item.
*/
$features = '';
for ( $i = 1; $i <= 10; $i ++ ) {
if ( ! empty( $content[ 'item' . $i ] ) ) {
$features .= $content[ 'item' . $i ] . '\n';
}
}
if ( ! empty( $features ) ) {
set_theme_mod( 'hestia_pricing_table_' . $table . '_features', $features );
}
}
/**
* Import content from footer to contact section.
*
* @access private
* @since 1.1.51
*/
private function import_zerif_footer() {
$icon1 = ! empty( $this->previous_theme_content['zerif_email_icon'] ) ? $this->previous_theme_content['zerif_email_icon'] : '';
$text1 = ! empty( $this->previous_theme_content['zerif_email'] ) ? $this->previous_theme_content['zerif_email'] : '';
$icon2 = ! empty( $this->previous_theme_content['zerif_phone_icon'] ) ? $this->previous_theme_content['zerif_phone_icon'] : '';
$text2 = ! empty( $this->previous_theme_content['zerif_phone'] ) ? $this->previous_theme_content['zerif_phone'] : '';
$icon3 = ! empty( $this->previous_theme_content['zerif_address_icon'] ) ? $this->previous_theme_content['zerif_address_icon'] : '';
$text3 = ! empty( $this->previous_theme_content['zerif_address'] ) ? $this->previous_theme_content['zerif_address'] : '';
$section_content = array(
$icon1 => $text1,
$icon2 => $text2,
$icon3 => $text3,
);
if ( ! empty( $section_content ) ) {
$contact_html = '';
foreach ( $section_content as $icon => $text ) {
$contact_html .= '<div class="info info-horizontal">';
if ( ! empty( $icon ) ) {
$contact_html .= '<div class="icon icon-primary"><img src="' . esc_url( $icon ) . '"></div>';
}
if ( ! empty( $text ) ) {
$contact_html .= '<h4 class="info-title">' . wp_kses_post( $text ) . '</h4>';
}
$contact_html .= '</div>';
}
$contact_content = get_theme_mod( 'hestia_contact_content_new' );
if ( empty( $contact_content ) ) {
set_theme_mod( 'hestia_contact_content_new', $contact_html );
}
}
}
/**
* Import footer socials into hestia footer menu.
*
* @access private
* @since 1.1.51
*/
private function import_zerif_footer_socials() {
$zerif_socials = array(
'zerif_socials_facebook',
'zerif_socials_twitter',
'zerif_socials_linkedin',
'zerif_socials_behance',
'zerif_socials_dribbble',
'zerif_socials_googleplus',
'zerif_socials_pinterest',
'zerif_socials_tumblr',
'zerif_socials_reddit',
'zerif_socials_youtube',
'zerif_socials_instagram',
);
$theme_navs = get_theme_mod( 'nav_menu_locations' );
if ( empty( $theme_navs['footer'] ) ) {
$menu_name = __( 'Footer socials menu', 'hestia' );
$menu_exists = wp_get_nav_menu_object( $menu_name );
if ( ! $menu_exists ) {
$menu_id = wp_create_nav_menu( $menu_name );
foreach ( $zerif_socials as $social ) {
if ( ! empty( $this->previous_theme_content[ $social ] ) ) {
wp_update_nav_menu_item(
$menu_id,
0,
array(
'menu-item-title' => __( 'Custom Page', 'hestia' ),
'menu-item-url' => $this->previous_theme_content[ $social ],
'menu-item-status' => 'publish',
)
);
}
}
$theme_navs['footer'] = $menu_id;
}
}
set_theme_mod( 'nav_menu_locations', $theme_navs );
}
/**
* Move widgets from old sidebars to hestia's sidebars
*
* @access private
* @since 1.1.51
*/
private function import_sidebars() {
$widgets_from_old_theme = wp_get_sidebars_widgets();
$new_widget_array = array();
if ( ! empty( $widgets_from_old_theme['sidebar-1'] ) ) {
$new_widget_array['sidebar-1'] = $widgets_from_old_theme['sidebar-1'];
}
if ( ! empty( $widgets_from_old_theme['zerif-sidebar-footer'] ) ) {
$new_widget_array['footer-one-widgets'] = $widgets_from_old_theme['zerif-sidebar-footer'];
}
if ( ! empty( $widgets_from_old_theme['zerif-sidebar-footer-2'] ) ) {
$new_widget_array['footer-two-widgets'] = $widgets_from_old_theme['zerif-sidebar-footer-2'];
}
if ( ! empty( $widgets_from_old_theme['zerif-sidebar-footer-3'] ) ) {
$new_widget_array['footer-three-widgets'] = $widgets_from_old_theme['zerif-sidebar-footer-3'];
}
if ( ! isset( $new_widget_array['wp_inactive_widgets'] ) ) {
$new_widget_array['wp_inactive_widgets'] = array();
}
update_option( 'sidebars_widgets', $new_widget_array );
}
/**
* Import menus from zerif
*
* @access private
* @since 1.1.51
*/
private function import_menus() {
$theme_navs = get_theme_mod( 'nav_menu_locations' );
if ( empty( $theme_navs['primary'] ) && ! empty( $nav_locations['primary'] ) ) {
$theme_navs['primary'] = $nav_locations['primary'];
}
set_theme_mod( 'nav_menu_locations', $theme_navs );
}
}