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; } }