'-apple-system, blinkmacsystemfont, segoe ui, roboto, oxygen-sans, ubuntu, cantarell, helvetica neue, helvetica, arial, sans-serif', 'variant' => '500', 'line-height' => '1.3', 'color' => '#16181a', ) ) ); if ( $old_page_title_color ) { $post_page_title_typography['color'] = $old_page_title_color; set_theme_mod( 'zakra_typography_post_page_title', $post_page_title_typography ); remove_theme_mod( 'zakra_page_header_text_color' ); } if ( $old_page_title_font_size ) { $post_page_title_typography['font-size'] = $old_page_title_font_size['slider'] . $old_page_title_font_size['suffix']; set_theme_mod( 'zakra_typography_post_page_title', $post_page_title_typography ); remove_theme_mod( 'zakra_page_title_font_size' ); } // Migrate headings colors from typography to heading colors. $headings_typography = get_theme_mod( 'zakra_base_typography_heading', apply_filters( 'zakra_base_typography_heading_filter', array( 'font-family' => '-apple-system, blinkmacsystemfont, segoe ui, roboto, oxygen-sans, ubuntu, cantarell, helvetica neue, helvetica, arial, sans-serif', 'variant' => '400', 'line-height' => '1.3', 'color' => '#16181a', ) ) ); $h1_typography = get_theme_mod( 'zakra_typography_h1', apply_filters( 'zakra_typography_h1_filter', array( 'font-family' => '-apple-system, blinkmacsystemfont, segoe ui, roboto, oxygen-sans, ubuntu, cantarell, helvetica neue, helvetica, arial, sans-serif', 'variant' => '500', 'font-size' => '2.5rem', 'line-height' => '1.3', 'color' => '#16181a', ) ) ); $h2_typography = get_theme_mod( 'zakra_typography_h2', apply_filters( 'zakra_typography_h2_filter', array( 'font-family' => '-apple-system, blinkmacsystemfont, segoe ui, roboto, oxygen-sans, ubuntu, cantarell, helvetica neue, helvetica, arial, sans-serif', 'variant' => '500', 'font-size' => '2.25rem', 'line-height' => '1.3', 'color' => '#16181a', ) ) ); $h3_typography = get_theme_mod( 'zakra_typography_h3', apply_filters( 'zakra_typography_h3_filter', array( 'font-family' => '-apple-system, blinkmacsystemfont, segoe ui, roboto, oxygen-sans, ubuntu, cantarell, helvetica neue, helvetica, arial, sans-serif', 'variant' => '500', 'font-size' => '2rem', 'line-height' => '1.3', 'color' => '#16181a', ) ) ); $h4_typography = get_theme_mod( 'zakra_typography_h4', apply_filters( 'zakra_typography_h4_filter', array( 'font-family' => '-apple-system, blinkmacsystemfont, segoe ui, roboto, oxygen-sans, ubuntu, cantarell, helvetica neue, helvetica, arial, sans-serif', 'variant' => '500', 'font-size' => '1.75rem', 'line-height' => '1.3', 'color' => '#16181a', ) ) ); $h5_typography = get_theme_mod( 'zakra_typography_h5', apply_filters( 'zakra_typography_h5_filter', array( 'font-family' => '-apple-system, blinkmacsystemfont, segoe ui, roboto, oxygen-sans, ubuntu, cantarell, helvetica neue, helvetica, arial, sans-serif', 'variant' => '500', 'font-size' => '1.313rem', 'line-height' => '1.3', 'color' => '#16181a', ) ) ); $h6_typography = get_theme_mod( 'zakra_typography_h6', apply_filters( 'zakra_typography_h6_filter', array( 'font-family' => '-apple-system, blinkmacsystemfont, segoe ui, roboto, oxygen-sans, ubuntu, cantarell, helvetica neue, helvetica, arial, sans-serif', 'variant' => '500', 'font-size' => '1.125rem', 'line-height' => '1.3', 'color' => '#16181a', ) ) ); if ( in_array( 'color', $headings_typography, true ) && isset( $headings_typography['color'] ) ) { set_theme_mod( 'zakra_color_headings', $headings_typography['color'] ); unset( $headings_typography['color'] ); set_theme_mod( 'zakra_base_typography_heading', $headings_typography ); } if ( in_array( 'color', $h1_typography, true ) && isset( $h1_typography['color'] ) ) { set_theme_mod( 'zakra_color_h1', $headings_typography['color'] ); unset( $h1_typography['color'] ); set_theme_mod( 'zakra_typography_h1', $h1_typography ); } if ( in_array( 'color', $headings_typography, true ) && isset( $headings_typography['color'] ) ) { set_theme_mod( 'zakra_color_h2', $h2_typography['color'] ); unset( $h2_typography['color'] ); set_theme_mod( 'zakra_typography_h2', $h2_typography ); } if ( in_array( 'color', $h3_typography, true ) && isset( $h3_typography['color'] ) ) { set_theme_mod( 'zakra_color_h3', $h3_typography['color'] ); unset( $h3_typography['color'] ); set_theme_mod( 'zakra_typography_h3', $h3_typography ); } if ( in_array( 'color', $h4_typography, true ) && isset( $h4_typography['color'] ) ) { set_theme_mod( 'zakra_color_h4', $h4_typography['color'] ); unset( $h4_typography['color'] ); set_theme_mod( 'zakra_typography_h4', $h4_typography ); } if ( in_array( 'color', $h5_typography, true ) && isset( $h5_typography['color'] ) ) { set_theme_mod( 'zakra_color_h5', $h5_typography['color'] ); unset( $h5_typography['color'] ); set_theme_mod( 'zakra_typography_h5', $h5_typography ); } if ( in_array( 'color', $h6_typography, true ) && isset( $h6_typography['color'] ) ) { set_theme_mod( 'zakra_color_h6', $h6_typography['color'] ); unset( $h6_typography['color'] ); set_theme_mod( 'zakra_typography_h6', $h6_typography ); } // Set flag to not repeat the migration process, ie, run it only once. update_option( 'zakra_migrations', true ); } /** * Customizer options migration after implementation of customizer framework. * * @since 2.0.0 */ public function customizer_migration_v2() { if ( ! self::demo_import_migration() ) { if ( get_option( 'zakra_customizer_migration_v2' ) ) { return; } } do_action( 'zakra_customizer_migration_v2' ); // Set flag to not repeat the migration process, ie, run it only once. update_option( 'zakra_customizer_migration_v2', true ); // Set flag for demo import migration to not repeat the migration process, ie, run it only once. if ( self::demo_import_migration() ) { update_option( 'zakra_demo_import_migration_notice_dismiss', true ); } } public function migrate_typography_options() { // Remove theme mod. remove_theme_mod( 'zakra_typography_primary_menu_dropdown' ); $old_typography_header_icon = get_theme_mod( 'zakra_typograyphy_header_icon', array( 'color' => '', 'font-size' => '1rem', ) ); if ( $old_typography_header_icon ) { set_theme_mod( 'zakra_typography_header_icon', array( 'font-size' => array( 'desktop' => isset( $old_typography_header_icon['font-size'] ) ? $old_typography_header_icon['font-size'] : '', 'tablet' => '', 'mobile' => '', ), ) ); set_theme_mod( 'zakra_header_icon_color', $old_typography_header_icon['color'] ); remove_theme_mod( 'zakra_typograyphy_header_icon' ); } $old_base_typography_heading = get_theme_mod( 'zakra_base_typography_heading', apply_filters( 'zakra_base_typography_heading_filter', array( 'font-family' => '-apple-system, blinkmacsystemfont, segoe ui, roboto, oxygen-sans, ubuntu, cantarell, helvetica neue, helvetica, arial, sans-serif', 'variant' => '400', 'line-height' => '1.3', ) ) ); if ( isset( $old_base_typography_heading ) && array_key_exists( 'variant', $old_base_typography_heading ) ) { set_theme_mod( 'zakra_base_typography_heading', array( 'font-family' => isset( $old_base_typography_heading['font-family'] ) ? $old_base_typography_heading['font-family'] : 'default', 'font-weight' => isset( $old_base_typography_heading['font-weight'] ) && array_key_exists( 'font-weight', $old_base_typography_heading ) ? $old_base_typography_heading['font-weight'] : ( isset( $old_base_typography_heading['variant'] ) ? (int) $old_base_typography_heading['variant'] : '' ), 'line-height' => array( 'desktop' => isset( $old_base_typography_heading['line-height'] ) ? $old_base_typography_heading['line-height'] : '', 'tablet' => '', 'mobile' => '', ), 'font-style' => array_key_exists( 'font-style', $old_base_typography_heading ) ? $old_base_typography_heading['font-style'] : 'normal', 'text-transform' => 'none', ) ); } $typography_option_keys = array( 'zakra_typography_paragraph', 'zakra_typography_preformatted_text', 'zakra_typography_blockquote', 'zakra_typography_header_top_widget_title', 'zakra_typography_header_top_widget_content', 'zakra_typography_header_top_menu', 'zakra_typography_header_top_text', 'zakra_typography_header_button_one', 'zakra_typography_header_button_two', 'zakra_typography_mobile_submenu', 'zakra_typography_read_more', 'zakra_typography_post_meta', 'zakra_typography_post_meta_content', 'zakra_typography_widget_list_item', 'zakra_typography_page_title', 'zakra_typography_post_title', 'zakra_typography_footer_bar_widget_title', 'zakra_typography_footer_bar_widget_content', 'zakra_typography_footer_bar_menu', 'zakra_typography_footer_bar_text', 'zakra_typography_footer_widgets_title', 'zakra_typography_footer_widgets_content', 'zakra_typography_footer_widgets_list_item', 'zakra_base_typography_body', 'zakra_typography_site_title', 'zakra_typography_site_description', 'zakra_typography_primary_menu', 'zakra_typography_primary_menu_dropdown_item', 'zakra_typography_mobile_menu', 'zakra_typography_post_page_title', 'zakra_typography_blog_post_title', 'zakra_typography_h1', 'zakra_typography_h2', 'zakra_typography_h3', 'zakra_typography_h4', 'zakra_typography_h5', 'zakra_typography_h6', 'zakra_typography_widget_heading', 'zakra_typography_widget_content', ); $typography_option_with_color_keys = array( 'zakra_typography_paragraph' => 'zakra_paragraph_color', 'zakra_typography_preformatted_text' => 'zakra_preformatted_color', 'zakra_typography_blockquote' => 'zakra_blockquote_color', 'zakra_typography_post_page_title' => 'zakra_post_page_title_color', ); $system_fonts = array( '-apple-system', 'blinkmacsystemfont', 'segoe ui', 'roboto', 'oxygen-sans', 'ubuntu', 'cantarell', 'helvetica neue', 'helvetica', 'arial', 'sans-serif', ); foreach ( $typography_option_with_color_keys as $typography_option_with_color_key => $new_color_key ) { $old_typography_option_with_color = get_theme_mod( $typography_option_with_color_key ); if ( ! empty( $old_typography_option_with_color ) && is_array( $old_typography_option_with_color ) && array_key_exists( 'color', $old_typography_option_with_color ) ) { set_theme_mod( $new_color_key, $old_typography_option_with_color['color'] ); unset( $old_typography_option_with_color['color'] ); } } foreach ( $typography_option_keys as $typography_option_key ) { $old_typography_option = get_theme_mod( $typography_option_key ); if ( ! empty( $old_typography_option ) && is_array( $old_typography_option ) && array_key_exists( 'variant', $old_typography_option ) ) { set_theme_mod( $typography_option_key, array( 'font-family' => ( isset( $old_typography_option['font-family'] ) && ! zakra_strpos( $old_typography_option['font-family'], $system_fonts ) ) ? $old_typography_option['font-family'] : 'default', 'font-weight' => isset( $old_typography_option['font-weight'] ) && array_key_exists( 'font-weight', $old_typography_option ) ? $old_typography_option['font-weight'] : ( isset( $old_typography_option['variant'] ) ? (int) $old_typography_option['variant'] : '' ), 'font-size' => array( 'desktop' => isset( $old_typography_option['font-size'] ) ? $old_typography_option['font-size'] : '', 'tablet' => '', 'mobile' => '', ), 'line-height' => array( 'desktop' => isset( $old_typography_option['line-height'] ) ? $old_typography_option['line-height'] : '', 'tablet' => '', 'mobile' => '', ), 'font-style' => array_key_exists( 'font-style', $old_typography_option ) ? $old_typography_option['font-style'] : 'normal', 'text-transform' => 'none', ) ); } } } public function migrate_background_color_options() { // Background color options key. $bg_color_option_keys = array( 'zakra_blog_archive_read_more_button_bg', 'zakra_blog_archive_pagination_bg', 'zakra_blog_archive_read_more_button_hover_bg', 'zakra_blog_archive_pagination_number_item_link_hover_bg', 'zakra_blog_archive_post_bg', 'zakra_archive_blog_post_grid_bg', 'zakra_archive_blog_post_thumbnail_bg', 'zakra_footer_widgets_item_bg', 'zakra_primary_menu_item_bg_color_button', 'zakra_primary_menu_item_bg_hover_color_button', 'zakra_primary_menu_item_bg_active_color_button', ); foreach ( $bg_color_option_keys as $bg_color_option_key ) { $old_bg_color_option = get_theme_mod( $bg_color_option_key ); if ( ! empty( $old_bg_color_option ) && is_array( $old_bg_color_option ) && array_key_exists( 'background-color', $old_bg_color_option ) ) { set_theme_mod( $bg_color_option_key, $old_bg_color_option['background-color'] ); } } } public function migrate_slider_options() { // Slider options key. $slider_option_keys = array( 'zakra_primary_menu_border_bottom_width', 'zakra_breadcrumbs_font_size', 'zakra_footer_bar_border_top_width', 'zakra_footer_widgets_border_top_width', 'zakra_footer_widgets_item_border_bottom_width', 'zakra_button_roundness', 'zakra_general_container_width', 'zakra_general_content_width', 'zakra_general_sidebar_width', 'zakra_header_button_roundness', 'zakra_header_main_border_bottom_width', 'zakra_mobile_menu_breakpoint', 'zakra_mobile_menu_toggle_font_size', 'zakra_mobile_menu_toggle_fill_border_radius', 'zakra_mobile_menu_toggle_outline_border', 'zakra_mobile_menu_toggle_outline_border_radius', 'zakra_mobile_submenu_max_height', 'zakra_mobile_menu_item_border_bottom', 'zakra_blog_archive_blog_thumbnail_image_style', 'zakra_blog_archive_post_title_spacing', 'zakra_blog_archive_read_more_button_border_width', 'zakra_meta_border_width', 'zakra_sidebar_widgets_spacing', 'zakra_sidebar_widgets_border_width', 'zakra_site_logo_width', 'zakra_woocommerce_related_products_count', 'zakra_woocommerce_related_products_per_row', 'zakra_pro_content_margin_option', 'zakra_blog_archive_excerpt_length', 'zakra_primary_menu_dropdown_width', 'zakra_header_button_border_width', 'zakra_button_border_width', 'zakra_sidebar_widgets_item_border_bottom_width', 'zakra_scroll_to_top_width', 'zakra_scroll_to_top_height', 'zakra_scroll_to_top_roundness', 'zakra_scroll_to_top_bottom_position', 'zakra_scroll_to_top_icon_font_size', 'zakra_header_image_cta_title_spacing', 'zakra_header_image_cta_text_spacing', 'zakra_header_top_border_bottom', 'zakra_header_button_two_border_width', 'zakra_header_button_two_roundness', 'zakra_primary_menu_dropdown_item_border_width', ); foreach ( $slider_option_keys as $slider_option_key ) { $old_slider_option = get_theme_mod( $slider_option_key ); if ( ! empty( $old_slider_option ) && is_array( $old_slider_option ) && array_key_exists( 'slider', $old_slider_option ) ) { set_theme_mod( $slider_option_key, $old_slider_option['slider'] ); } } } /** * Return the value for customize migration on demo import. * * @return bool */ public static function demo_import_migration() { if ( isset( $_GET['zakra_notice_dismiss'] ) && isset( $_GET['_zakra_demo_import_migration_notice_dismiss_nonce'] ) ) { if ( ! wp_verify_nonce( wp_unslash( $_GET['_zakra_demo_import_migration_notice_dismiss_nonce'] ), 'zakra_demo_import_migration_notice_dismiss_nonce' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized wp_die( esc_html__( 'Action failed. Please refresh the page and retry.', 'zakra' ) ); } return true; } return false; } /** * @return bool */ public static function is_fresh_install() { /** * If the option with keys zakra_stretched_style_transfer ( introduced in V1.0.8 ) * or zakra_migrations ( introduced V1.5.3 ) is available in the option table. * It is not a fresh install of the theme. * * @TODO Better way to check if it is a fresh installation of theme. */ if ( get_option( 'zakra_stretched_style_transfer' ) || get_option( 'zakra_migrations' ) ) { return false; } return true; } } new Zakra_Migration(); }