449 lines
10 KiB
PHP
449 lines
10 KiB
PHP
<?php
|
|
|
|
class Brizy_Admin_Migrations_ShortcodesMobileOneMigration implements Brizy_Admin_Migrations_MigrationInterface {
|
|
|
|
use Brizy_Admin_Migrations_PostsTrait;
|
|
|
|
/**
|
|
* @return int|mixed
|
|
*/
|
|
public function getPriority() {
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Return the version
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function getVersion() {
|
|
return '1.0.39';
|
|
}
|
|
|
|
/**
|
|
* Execute the migration
|
|
*/
|
|
public function execute() {
|
|
$this->posts_migration();
|
|
$this->globals_migration();
|
|
}
|
|
|
|
/**
|
|
* Posts migration
|
|
*/
|
|
public function posts_migration() {
|
|
$result = $this->get_posts_and_meta();
|
|
$class = __CLASS__;
|
|
|
|
// parse each post
|
|
foreach ( $result as $item ) {
|
|
$postMigrationStorage = new Brizy_Admin_Migrations_PostStorage( $item->ID );
|
|
if ( $postMigrationStorage->hasMigration($this) ) {
|
|
continue;
|
|
}
|
|
|
|
$json_value = null;
|
|
$instance = Brizy_Editor_Storage_Post::instance($item->ID);
|
|
$storage = $instance->get_storage();
|
|
$old_meta = $instance->get(Brizy_Editor_Post::BRIZY_POST, false);
|
|
|
|
if ( is_array($old_meta) ) {
|
|
$json_value = base64_decode($old_meta['editor_data']);
|
|
}
|
|
elseif( is_object($old_meta) ) {
|
|
$json_value = $old_meta->get_editor_data();
|
|
}
|
|
|
|
if( !is_null($json_value) ) {
|
|
// make a backup to previous version
|
|
update_post_meta($item->ID, 'brizy-bk-'.$class.'-'.$this->getVersion(), $storage);
|
|
|
|
// migrate post
|
|
$new_json = $this->migrate_post($json_value);
|
|
|
|
// set the changed value in DB
|
|
if ( is_array($old_meta) ) {
|
|
$old_meta['editor_data'] = base64_encode($new_json);
|
|
}
|
|
elseif( is_object($old_meta) ) {
|
|
$old_meta->set_editor_data($new_json);
|
|
}
|
|
$instance->set(Brizy_Editor_Post::BRIZY_POST, $old_meta);
|
|
|
|
// set that migration was successful executed
|
|
$postMigrationStorage->addMigration($this)->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Globals migration
|
|
*/
|
|
public function globals_migration() {
|
|
$class = __CLASS__;
|
|
$result = $this->get_globals_posts();
|
|
foreach ($result as $item) {
|
|
$postMigrationStorage = new Brizy_Admin_Migrations_PostStorage( $item->ID );
|
|
if ( $postMigrationStorage->hasMigration($this) ) {
|
|
continue;
|
|
}
|
|
|
|
$instance = Brizy_Editor_Storage_Project::instance( $item->ID );
|
|
$storage = $instance->get_storage();
|
|
|
|
if ( ! isset( $storage['globals'] ) ) {
|
|
continue;
|
|
}
|
|
|
|
$json_value = base64_decode($storage['globals']);
|
|
|
|
if( !is_null($json_value) ) {
|
|
// make a backup to previous version
|
|
update_post_meta($item->ID, 'brizy-bk-' . $class . '-' . $this->getVersion(), $storage);
|
|
|
|
// migrate post
|
|
$new_json = $this->migrate_post($json_value);
|
|
|
|
// set the changed value in DB
|
|
$storage['globals'] = base64_encode($new_json);
|
|
$instance->loadStorage($storage);
|
|
|
|
// set that migration was successful executed
|
|
$postMigrationStorage->addMigration($this)->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Parse shortcodes
|
|
*/
|
|
public function parse_shortcodes(array &$array) {
|
|
// Line
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Line",
|
|
"delete_keys" => array(
|
|
"mobileWidth",
|
|
"mobileBorderWidth"
|
|
)
|
|
) );
|
|
|
|
// Spacer
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Spacer",
|
|
"delete_keys" => array(
|
|
"mobileHeight"
|
|
)
|
|
) );
|
|
|
|
// Video
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Video",
|
|
"delete_keys" => array(
|
|
"mobileSize",
|
|
"mobileCoverImageWidth",
|
|
"mobileCoverImageHeight"
|
|
)
|
|
) );
|
|
|
|
// EmbedCode
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "EmbedCode",
|
|
"delete_keys" => array(
|
|
"mobileWidth",
|
|
"mobileHeight"
|
|
)
|
|
) );
|
|
|
|
// Map
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Map",
|
|
"delete_keys" => array(
|
|
"mobileSize",
|
|
"mobileHeight"
|
|
)
|
|
) );
|
|
|
|
// SoundCloud
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "SoundCloud",
|
|
"delete_keys" => array(
|
|
"mobileWidth",
|
|
"mobileHeight"
|
|
)
|
|
) );
|
|
|
|
// Countdown
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Countdown",
|
|
"delete_keys" => array(
|
|
"mobileWidth"
|
|
)
|
|
) );
|
|
|
|
// ProgressBar
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "ProgressBar",
|
|
"delete_keys" => array(
|
|
"mobileWidth",
|
|
"mobileBorderRadius"
|
|
)
|
|
) );
|
|
|
|
// Wrapper
|
|
$array = $this->mobile_migation_wrapper_align( $array, "Wrapper" );
|
|
|
|
// Cloneable
|
|
$array = $this->mobile_migation_wrapper_align( $array, "Cloneable" );
|
|
|
|
// WOOCategories
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "WOOCategories",
|
|
"delete_keys" => array(
|
|
"mobileWidth"
|
|
)
|
|
) );
|
|
|
|
// WOOPages
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "WOOPages",
|
|
"delete_keys" => array(
|
|
"mobileWidth"
|
|
)
|
|
) );
|
|
|
|
// WOOProducts
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "WOOProducts",
|
|
"delete_keys" => array(
|
|
"mobileWidth"
|
|
)
|
|
) );
|
|
|
|
// WPSidebar
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "WPSidebar",
|
|
"delete_keys" => array(
|
|
"mobileWidth"
|
|
)
|
|
) );
|
|
|
|
// WPCustomShortcode
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "WPCustomShortcode",
|
|
"delete_keys" => array(
|
|
"mobileWidth"
|
|
)
|
|
) );
|
|
|
|
// WOOProductPage
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "WOOProductPage",
|
|
"delete_keys" => array(
|
|
"mobileWidth"
|
|
)
|
|
) );
|
|
|
|
// WPNavigation
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "WPNavigation",
|
|
"delete_keys" => array(
|
|
"mobileWidth",
|
|
"mobileItemPadding"
|
|
)
|
|
) );
|
|
|
|
// Button
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Button",
|
|
"delete_keys" => array(
|
|
"mobileBorderRadius"
|
|
)
|
|
) );
|
|
|
|
// Tabs
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Tabs",
|
|
"delete_keys" => array(
|
|
"mobileHorizontalAlign"
|
|
)
|
|
) );
|
|
|
|
// Image
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Image",
|
|
"delete_keys" => array(
|
|
"mobileResize",
|
|
"mobileZoom",
|
|
"mobileWidth",
|
|
"mobileHeight"
|
|
)
|
|
) );
|
|
|
|
// Delete image position if all are equal
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Image",
|
|
"delete_keys" => array(
|
|
"mobilePositionX",
|
|
"mobilePositionY"
|
|
),
|
|
"dependent_keys" => true
|
|
) );
|
|
|
|
// Form
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Form",
|
|
"delete_keys" => array(
|
|
"mobileHorizontalAlign"
|
|
)
|
|
) );
|
|
|
|
// Form fields options
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "FormFields",
|
|
"delete_keys" => array(
|
|
"mobilePadding",
|
|
"mobilePaddingRight",
|
|
"mobilePaddingBottom",
|
|
"mobilePaddingLeft",
|
|
),
|
|
"dependent_keys" => true
|
|
) );
|
|
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "FormFields",
|
|
"delete_keys" => array(
|
|
"mobileBorderRadius",
|
|
"mobilePaddingTop" // top is used as zero from the default json
|
|
)
|
|
) );
|
|
|
|
// Form single field options
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "FormField",
|
|
"delete_keys" => array(
|
|
"mobileWidth",
|
|
"mobileHeight"
|
|
)
|
|
) );
|
|
|
|
// Icon
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Icon",
|
|
"delete_keys" => array(
|
|
"mobilePadding",
|
|
"mobileBorderRadius"
|
|
)
|
|
) );
|
|
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Icon",
|
|
"delete_keys" => array(
|
|
"mobileSize",
|
|
"mobileCustomSize"
|
|
),
|
|
"dependent_keys" => true
|
|
) );
|
|
|
|
// Row
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Row",
|
|
"delete_keys" => array(
|
|
"mobileMedia",
|
|
"mobileBgImageWidth",
|
|
"mobileBgImageHeight",
|
|
"mobileBgImageSrc",
|
|
"mobileBgColorHex",
|
|
"mobileBgColorOpacity",
|
|
"mobileBgColorPalette",
|
|
"mobileBgMapZoom"
|
|
)
|
|
) );
|
|
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Row",
|
|
"delete_keys" => array(
|
|
"mobileBgPositionX",
|
|
"mobileBgPositionY"
|
|
),
|
|
"dependent_keys" => true
|
|
) );
|
|
|
|
// Column
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Column",
|
|
"delete_keys" => array(
|
|
"mobileBgImageWidth",
|
|
"mobileBgImageHeight",
|
|
"mobileBgImageSrc",
|
|
"mobileBgColorHex",
|
|
"mobileBgColorOpacity",
|
|
"mobileBgColorPalette"
|
|
)
|
|
) );
|
|
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "Column",
|
|
"delete_keys" => array(
|
|
"mobileBgPositionX",
|
|
"mobileBgPositionY"
|
|
),
|
|
"dependent_keys" => true
|
|
) );
|
|
|
|
// Section
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "SectionItem",
|
|
"delete_keys" => array(
|
|
"mobileMedia",
|
|
"mobileBgImageWidth",
|
|
"mobileBgImageHeight",
|
|
"mobileBgImageSrc",
|
|
"mobileBgColorHex",
|
|
"mobileBgColorOpacity",
|
|
"mobileBgColorPalette",
|
|
"mobileBgMapZoom"
|
|
)
|
|
) );
|
|
|
|
$array = $this->unset_prefixed_keys( $array, array(
|
|
"shortcode" => "SectionItem",
|
|
"delete_keys" => array(
|
|
"mobileBgPositionX",
|
|
"mobileBgPositionY"
|
|
),
|
|
"dependent_keys" => true
|
|
) );
|
|
|
|
return $array;
|
|
}
|
|
|
|
/**
|
|
* Special Migration for Wrapper and Cloneable "align"
|
|
*/
|
|
public function mobile_migation_wrapper_align(array &$array, $shortcode = "") {
|
|
if ( empty($shortcode) ) {
|
|
return $array;
|
|
}
|
|
|
|
if ( $shortcode == $array['type'] ) {
|
|
if ( isset( $array['value']['horizontalAlign'], $array['value']['mobileHorizontalAlign'] ) && $array['value']['horizontalAlign'] === $array['value']['mobileHorizontalAlign'] )
|
|
{
|
|
unset( $array['value']['mobileHorizontalAlign'] );
|
|
}
|
|
else
|
|
{
|
|
// !Attention this need only 1-time execution in JSON (to not apply to the same JSON 2 times)
|
|
if ( isset( $array['value']['horizontalAlign'] )
|
|
&& ( $array['value']['horizontalAlign'] !== "center" )
|
|
&& !isset( $array['value']['mobileHorizontalAlign'] ) )
|
|
{
|
|
$array['value']['mobileHorizontalAlign'] = "center";
|
|
}
|
|
}
|
|
}
|
|
|
|
return $array;
|
|
}
|
|
|
|
}
|