PluginProbe
Elementor Website Builder – more than just a page builder / 4.1.0-beta1
Elementor Website Builder – more than just a page builder v4.1.0-beta1
4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 All 456 releases
← All changes | modules/global-classes/database/migrations/migrate-to-posts.php +36 -21 4.1.2 → 4.1.0-beta1 View file →
@@ -2,15 +2,13 @@
2 2
3 3 namespace Elementor\Modules\GlobalClasses\Database\Migrations;
4 4
5 5 use Elementor\Core\Database\Base_Migration;
6 -use Elementor\Core\Kits\Documents\Kit;
7 6 use Elementor\Modules\GlobalClasses\Concerns\Has_Kit_Dependency;
8 7 use Elementor\Modules\GlobalClasses\Global_Class_Post_Type;
8 +use Elementor\Modules\GlobalClasses\Global_Classes_Relations;
9 9 use Elementor\Modules\GlobalClasses\Global_Classes_Order;
10 -use Elementor\Modules\GlobalClasses\Global_Classes_Relations;
11 10 use Elementor\Modules\GlobalClasses\Global_Classes_Repository;
12 -use Elementor\Modules\GlobalClasses\Utils\Global_Class_Data_Normalizer;
13 11 use Elementor\Plugin;
14 12
15 13 if ( ! defined( 'ABSPATH' ) ) {
16 14 exit; // Exit if accessed directly.
@@ -19,9 +17,9 @@
19 17 class Migrate_To_Posts extends Base_Migration {
20 18 use Has_Kit_Dependency;
21 19
22 20 public function up() {
23 - Global_Class_Post_Type::ensure_registered();
21 + $this->ensure_cpt_registered();
24 22
25 23 $migrated = $this->migrate_global_classes_to_posts();
26 24
27 25 if ( ! $migrated ) {
@@ -27,21 +25,28 @@
27 25 if ( ! $migrated ) {
28 26 return;
29 27 }
30 28
31 - self::run_document_tracking( $this->get_kit() );
29 + $this->update_document_tracking();
32 30
33 31 // We'll comment it out for now as we may prefer to avoid data restoration upon downgrading
34 32 // $this->cleanup_kit_meta();
35 33 }
36 34
35 + private function ensure_cpt_registered(): void {
36 + if ( ! post_type_exists( Global_Class_Post_Type::CPT ) ) {
37 + ( new Global_Class_Post_Type() )->register_post_type();
38 + }
39 + }
40 +
37 41 private function migrate_global_classes_to_posts(): bool {
38 42 $kit = $this->get_kit();
43 +
39 44 if ( ! $kit ) {
40 45 return false;
41 46 }
42 47
43 - $global_classes = self::get_aggregate_global_classes( $kit );
48 + $global_classes = $kit->get_json_meta( Global_Classes_Repository::META_KEY_FRONTEND );
44 49
45 50 if ( empty( $global_classes ) || empty( $global_classes['items'] ) ) {
46 51 return false;
47 52 }
@@ -54,9 +59,9 @@
54 59
55 60 $raw_items = $global_classes['items'];
56 61 $order = $global_classes['order'] ?? array_keys( $raw_items );
57 62
58 - $items = Global_Class_Data_Normalizer::normalize_styles( $raw_items );
63 + $items = $this->normalize_items( $raw_items );
59 64
60 65 Global_Classes_Repository::make( $kit )->put( $items, $order );
61 66
62 67 return true;
@@ -61,8 +66,29 @@
61 66
62 67 return true;
63 68 }
64 69
70 + private function normalize_items( array $raw_items ): array {
71 + $items = [];
72 +
73 + foreach ( $raw_items as $class_id => $class_data ) {
74 + $item = [
75 + 'id' => $class_id,
76 + 'label' => $class_data['label'] ?? $class_id,
77 + 'type' => $class_data['type'] ?? 'class',
78 + 'variants' => $class_data['variants'] ?? [],
79 + ];
80 +
81 + if ( array_key_exists( 'sync_to_v3', $class_data ) ) {
82 + $item['sync_to_v3'] = (bool) $class_data['sync_to_v3'];
83 + }
84 +
85 + $items[ $class_id ] = $item;
86 + }
87 +
88 + return $items;
89 + }
90 +
65 91 private function get_existing_class_posts(): array {
66 92 return get_posts( [
67 93 'post_type' => Global_Class_Post_Type::CPT,
68 94 'post_status' => 'publish',
@@ -70,27 +96,16 @@
70 96 'fields' => 'ids',
71 97 ] );
72 98 }
73 99
74 - public static function get_aggregate_global_classes( ?Kit $kit = null ): array {
75 - $empty_result = [
76 - 'items' => [],
77 - 'order' => [],
78 - ];
100 + private function update_document_tracking(): void {
101 + $kit = $this->get_kit();
79 102
80 103 if ( ! $kit ) {
81 - return $empty_result;
82 - }
83 -
84 - return $kit->get_json_meta( Global_Classes_Repository::META_KEY_FRONTEND ) ?? $empty_result;
85 - }
86 -
87 - public static function run_document_tracking( ?Kit $kit ): void {
88 - if ( ! $kit ) {
89 104 return;
90 105 }
91 106
92 - $valid_class_ids = Global_Classes_Order::make( $kit )->set_preview( false )->get_order();
107 + $valid_class_ids = Global_Classes_Order::make( $kit )->get_order();
93 108
94 109 if ( empty( $valid_class_ids ) ) {
95 110 return;
96 111 }