<?php
namespace Blocksy\DbVersioning;
class V200 {
public function migrate() {
$this->migrate_sale_badge();
$this->migrate_woocommerce_extra_features();
$this->migrate_post_types_extra_features();
$this->migrate_single_product();
$this->migrate_archive_card();
$this->migrate_image_sizes();
new \Blocksy\LegacyWidgetsTransformer();
$values_cleaner = new \Blocksy\DbVersioning\DefaultValuesCleaner();
$values_cleaner->clean_header();
$values_cleaner->clean_footer();
$this->cleanup_color_palette_theme_mod();
$should_migrate_color_palette = apply_filters(
'blocksy:db-versioning:v2:should-migrate-color-palette',
true
);
if ($should_migrate_color_palette) {
$did_migrate = $this->migrate_color_palette();
wp_cache_flush();
if ($did_migrate) {
return 'RETRY';
}
$r = new \Blocksy\Database\SearchReplace();
$result = $r->invoke([
'old' => 'paletteColor',
'new' => 'theme-palette-color-'
]);
if ($result && isset($result['total']) && $result['total'] > 0) {
return 'RETRY';
}
}
}
public function migrate_post_types_extra_features() {
$blocksy_ext_post_types_extra_settings = get_option(
'blocksy_ext_post_types_extra_settings',
'__empty__'
);
if ($blocksy_ext_post_types_extra_settings !== '__empty__') {
return;
}
if (
in_array(
'post-types-extra',
get_option('blocksy_active_extensions', [])
)
) {
update_option(
'blocksy_ext_post_types_extra_settings',
[
'features' => [
'read-time' => true,
'dynamic-data' => true,
'filtering' => true,
'taxonomies-customization' => true
]
]
);
}
}
public function migrate_woocommerce_extra_features() {
$blocksy_ext_woocommerce_extra_settings = get_option(
'blocksy_ext_woocommerce_extra_settings',
'__empty__'
);
if ($blocksy_ext_woocommerce_extra_settings !== '__empty__') {
return;
}
$should_update = false;
$woo_extra_settings = [
'features' => [
'floating-cart' => false,
'quick-view' => false,
'filters' => false,
'wishlist' => false,
'single-product-share-box' => false,
'advanced-gallery' => false,
'search-by-sku' => false,
'free-shipping' => false,
'variation-swatches' => false,
'product-brands' => false,
'product-affiliates' => false
],
'product-brands-slug' => 'brand'
];
if (
in_array(
'woocommerce-extra',
get_option('blocksy_active_extensions', [])
)
) {
$woo_extra_settings['advanced-gallery'] = true;
if (
get_theme_mod('has_archive_wishlist', 'no') === 'yes'
||
get_theme_mod('has_single_wishlist', 'no') === 'yes'
||
get_theme_mod('has_quick_view_wishlist', 'no') === 'yes'
) {
$woo_extra_settings['wishlist'] = true;
}
}
$has_floating_bar = get_theme_mod('has_floating_bar', '__empty__');
if ($has_floating_bar !== '__empty__') {
$woo_extra_settings['features'][
'floating-cart'
] = $has_floating_bar === 'yes';
$should_update = true;
}
$woocommerce_quickview_enabled = get_theme_mod(
'woocommerce_quickview_enabled',
'__empty__'
);
if ($woocommerce_quickview_enabled !== '__empty__') {
$woo_extra_settings['features'][
'quick-view'
] = $woocommerce_quickview_enabled === 'yes';
$should_update = true;
}
if ($should_update) {
update_option(
'blocksy_ext_woocommerce_extra_settings',
$woo_extra_settings
);
}
}
public function migrate_sale_badge() {
$sale_badge_custom_value = get_theme_mod(
'sale_badge_custom_value',
'__empty__'
);
if ($sale_badge_custom_value !== '__empty__') {
set_theme_mod(
'sale_badge_custom_value',
str_replace('[value]', '{value}', $sale_badge_custom_value)
);
}
$has_sale_badge = get_theme_mod('has_sale_badge', '__empty__');
$has_product_single_onsale = get_option(
'has_product_single_onsale',
'__empty__'
);
if ($has_sale_badge === '__empty__' || is_array($has_sale_badge)) {
return;
}
$future_value = [
'archive' => true,
'single' => true
];
$future_value['archive'] = $has_sale_badge === 'yes';
if ($has_product_single_onsale !== '__empty__') {
$future_value['single'] = $has_product_single_onsale === 'yes';
}
set_theme_mod('has_sale_badge', $future_value);
}
public function migrate_single_product() {
if (! function_exists('blocksy_get_woo_single_layout_defaults')) {
return;
}
$woo_single_layout = get_theme_mod(
'woo_single_layout',
blocksy_get_woo_single_layout_defaults()
);
$has_product_single_title = get_theme_mod(
'has_product_single_title',
'__empty__'
);
$has_product_single_rating = get_theme_mod(
'has_product_single_rating',
'__empty__'
);
$has_product_single_meta = get_theme_mod(
'has_product_single_meta',
'__empty__'
);
$touched = false;
foreach ($woo_single_layout as $index => $layer) {
if (
$layer['id'] === 'product_title'
&&
$has_product_single_title !== '__empty__'
) {
$touched = true;
$woo_single_layout[$index]['enabled'] =
$has_product_single_title === 'yes';
}
if (
$layer['id'] === 'product_rating'
&&
$has_product_single_rating !== '__empty__'
) {
$touched = true;
$woo_single_layout[$index]['enabled'] =
$has_product_single_rating === 'yes';
}
if (
$layer['id'] === 'product_meta'
&&
$has_product_single_meta !== '__empty__'
) {
$touched = true;
$woo_single_layout[$index]['enabled'] =
$has_product_single_meta === 'yes';
}
}
if ($touched) {
set_theme_mod('woo_single_layout', $woo_single_layout);
}
}
public function migrate_archive_card() {
if (! function_exists('blocksy_get_woo_archive_layout_defaults')) {
return;
}
$woo_card_layout = get_theme_mod(
'woo_card_layout',
blocksy_get_woo_archive_layout_defaults()
);
$touched = false;
foreach ($woo_card_layout as $index => $layer) {
if ($layer['id'] === 'product_image') {
$blocksy_woocommerce_thumbnail_cropping = get_theme_mod(
'blocksy_woocommerce_thumbnail_cropping',
'__empty__'
);
if ($blocksy_woocommerce_thumbnail_cropping !== '__empty__') {
$touched = true;
$woo_card_layout[$index]['blocksy_woocommerce_archive_thumbnail_cropping'] = $blocksy_woocommerce_thumbnail_cropping;
}
$product_image_hover = get_theme_mod(
'product_image_hover',
'__empty__'
);
if ($product_image_hover !== '__empty__') {
$touched = true;
$woo_card_layout[$index]['product_image_hover'] = $product_image_hover;
}
$has_archive_video_thumbnail = get_theme_mod(
'has_archive_video_thumbnail',
'__empty__'
);
if ($has_archive_video_thumbnail !== '__empty__') {
$touched = true;
$woo_card_layout[$index]['has_archive_video_thumbnail'] = $has_archive_video_thumbnail;
}
}
if ($layer['id'] === 'product_rating') {
$has_star_rating = get_theme_mod(
'has_star_rating',
'__empty__'
);
if ($has_star_rating !== '__empty__') {
$touched = true;
$woo_card_layout[$index]['enabled'] = $has_star_rating === 'yes';
}
}
if ($layer['id'] === 'product_meta') {
$has_product_categories = get_theme_mod(
'has_product_categories',
'__empty__'
);
if ($has_product_categories !== '__empty__') {
$touched = true;
$woo_card_layout[$index]['enabled'] = $has_product_categories === 'yes';
}
}
if ($layer['id'] === 'product_desc') {
$has_excerpt = get_theme_mod(
'has_excerpt',
'__empty__'
);
$excerpt_length = get_theme_mod(
'excerpt_length',
'__empty__'
);
if ($has_excerpt !== '__empty__') {
$touched = true;
$woo_card_layout[$index]['enabled'] = $has_excerpt === 'yes';
}
if ($excerpt_length !== '__empty__') {
$touched = true;
$woo_card_layout[$index]['excerpt_length'] = $excerpt_length;
}
}
if (
$layer['id'] === 'product_add_to_cart'
||
$layer['id'] === 'product_add_to_cart_and_price'
) {
$has_product_action_button = get_theme_mod(
'has_product_action_button',
'__empty__'
);
if ($has_product_action_button !== '__empty__') {
$touched = true;
$woo_card_layout[$index]['enabled'] = $has_product_action_button === 'yes';
}
}
}
if (
$touched
&&
get_theme_mod('woo_card_layout', '__empty__') === '__empty__'
) {
set_theme_mod('woo_card_layout', $woo_card_layout);
}
blocksy_manager()->db_versioning->migrate_options([
[
'old' => 'shop_cards_alignment_1',
'new' => 'shop_cards_alignment'
]
]);
}
public function cleanup_color_palette_theme_mod() {
$colorPalette = get_theme_mod('colorPalette', '__empty__');
if ($colorPalette === '__empty__') {
return;
}
$did_update = false;
if (isset($colorPalette['palettes'])) {
$did_update = true;
unset($colorPalette['palettes']);
}
if (isset($colorPalette['current_palette'])) {
$did_update = true;
unset($colorPalette['current_palette']);
}
if ($did_update) {
set_theme_mod('colorPalette', $colorPalette);
}
}
public function migrate_color_palette() {
$r = new \Blocksy\Database\SearchReplace();
$result = $r->invoke([
'old' => 'paletteColor',
'new' => 'theme-palette-color-'
]);
$did_migrate = false;
if ($result && isset($result['total']) && $result['total'] > 0) {
$did_migrate = true;
$r->invoke([
'old' => 'var(--color)',
'new' => 'var(--theme-text-color)',
'dry_run' => false
]);
$r->invoke([
'old' => 'paletteColor',
'new' => 'theme-palette-color-',
'dry_run' => false
]);
$r->invoke([
'old' => 'buttonInitialColor',
'new' => 'theme-button-background-initial-color',
'dry_run' => false
]);
}
if (function_exists('gspb_GreenShift_plugin_init')) {
$greenshift_variables = [
'--linkInitialColor' => '--theme-link-initial-color',
'--container-width' => '--theme-container-width',
'--normal-container-max-width' => '--theme-normal-container-max-width',
'--narrow-container-max-width' => '--theme-narrow-container-max-width',
'--buttonFontFamily' => '--theme-button-font-family',
'--fontFamily' => '--theme-font-family',
'--buttonFontSize' => '--theme-button-font-size',
'--buttonFontWeight' => '--theme-button-font-weight',
'--buttonFontStyle' => '--theme-button-font-style',
'--buttonLineHeight' => '--theme-button-line-height',
'--buttonLetterSpacing' => '--theme-button-letter-spacing',
'--buttonTextTransform' => '--theme-button-text-transform',
'--buttonTextDecoration' => '--theme-button-text-decoration',
'--buttonTextInitialColor' => '--theme-button-text-initial-color',
'--button-border' => '--theme-button-border',
'--buttonInitialColor' => '--theme-button-background-initial-color',
'--buttonMinHeight' => '--theme-button-min-height',
'--buttonBorderRadius' => '--theme-button-border-radius',
'--button-padding' => '--theme-button-padding',
'--button-border-hover-color' => '--theme-button-border-hover-color',
'--buttonTextHoverColor' => '--theme-button-text-hover-color',
'--buttonHoverColor' => '--theme-button-background-hover-color'
];
foreach ($greenshift_variables as $old => $new) {
$result = $r->invoke([
'old' => $old,
'new' => $new,
'tables' => [
_get_meta_table('post')
]
]);
if ($result && $result['total'] > 0) {
$r->invoke([
'old' => $old,
'new' => $new,
'tables' => [
_get_meta_table('post')
],
'dry_run' => false
]);
}
}
}
return $did_migrate;
}
public function migrate_image_sizes() {
$archive_thumbnail = get_option(
'woocommerce_archive_thumbnail_image_width',
'__empty__'
);
$thumbnail = get_option(
'woocommerce_thumbnail_image_width',
'__empty__'
);
if ($archive_thumbnail !== '__empty__' || $thumbnail === '__empty__') {
return;
}
update_option(
'woocommerce_archive_thumbnail_image_width',
$thumbnail
);
update_option(
'woocommerce_archive_thumbnail_cropping',
get_option('woocommerce_thumbnail_cropping', '1:1')
);
update_option(
'woocommerce_archive_thumbnail_cropping_custom_width',
get_option('woocommerce_thumbnail_cropping_custom_width', '4')
);
update_option(
'woocommerce_archive_thumbnail_cropping_custom_height',
get_option('woocommerce_thumbnail_cropping_custom_height', '3')
);
}
}
|