PluginProbe
Elementor Website Builder – more than just a page builder / 3.32.0-dev3
Elementor Website Builder – more than just a page builder v3.32.0-dev3
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 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
← All changes | modules/global-classes/import-export-customization/runners/export.php +20 -76 4.1.0-dev23.32.0-dev3 View file →
@@ -2,112 +2,56 @@
2 2
3 3 namespace Elementor\Modules\GlobalClasses\ImportExportCustomization\Runners;
4 4
5 5 use Elementor\App\Modules\ImportExportCustomization\Runners\Export\Export_Runner_Base;
6 -use Elementor\Modules\AtomicWidgets\Module as Atomic_Widgets_Module;
7 -use Elementor\Modules\GlobalClasses\Global_Classes_Order;
6 +use Elementor\Modules\GlobalClasses\Global_Classes_Repository;
8 7 use Elementor\Modules\GlobalClasses\Global_Classes_Parser;
9 -use Elementor\Modules\GlobalClasses\Global_Classes_Repository;
10 8 use Elementor\Modules\GlobalClasses\ImportExportCustomization\Import_Export_Customization;
11 -use Elementor\Modules\GlobalClasses\Module as Global_Classes_Module;
12 9 use Elementor\Plugin;
13 10
14 11 if ( ! defined( 'ABSPATH' ) ) {
15 - exit;
12 + exit; // Exit if accessed directly.
16 13 }
17 14
18 15 class Export extends Export_Runner_Base {
19 - const ORDER_FILE = 'order.json';
20 -
21 16 public static function get_name(): string {
22 17 return 'global-classes';
23 18 }
24 19
25 - public function should_export( array $data ): bool {
20 + public function should_export( array $data ) {
21 + // Same as the site-settings runner.
26 22 return (
27 23 isset( $data['include'] ) &&
28 - in_array( 'settings', $data['include'], true ) &&
29 - $this->is_classes_enabled( $data )
24 + in_array( 'settings', $data['include'], true )
30 25 );
31 26 }
32 27
33 - private function is_classes_enabled( array $data ): bool {
34 - if ( ! $this->is_feature_active() ) {
35 - return false;
36 - }
37 -
38 - if ( isset( $data['customization']['settings']['classes'] ) ) {
39 - return (bool) $data['customization']['settings']['classes'];
40 - }
41 -
42 - return true;
43 - }
44 -
45 - private function is_feature_active(): bool {
46 - return Plugin::$instance->experiments->is_feature_active( Global_Classes_Module::NAME )
47 - && Plugin::$instance->experiments->is_feature_active( Atomic_Widgets_Module::EXPERIMENT_NAME );
48 - }
49 -
50 - public function export( array $data ): array {
28 + public function export( array $data ) {
51 29 $kit = Plugin::$instance->kits_manager->get_active_kit();
52 30
53 31 if ( ! $kit ) {
54 - return $this->empty_result();
32 + return [
33 + 'manifest' => [],
34 + 'files' => [],
35 + ];
55 36 }
56 37
57 - $repository = Global_Classes_Repository::make( $kit );
58 - $labels_by_id = [];
59 - $files = [];
38 + $global_classes = Global_Classes_Repository::make()->all()->get();
60 39
61 - $skip_migration = true;
62 - $repository->each_item(
63 - static function ( array $class_data ) use ( &$files, &$labels_by_id ) {
64 - if ( empty( $class_data['id'] ) || ! is_string( $class_data['id'] ) ) {
65 - return;
66 - }
40 + $global_classes_result = Global_Classes_Parser::make()->parse( $global_classes );
67 41
68 - $class_id = $class_data['id'];
69 -
70 - $files[] = [
71 - 'path' => Import_Export_Customization::FILE_NAME . '/' . $class_id . '.json',
72 - 'data' => wp_json_encode( $class_data ),
73 - ];
74 - $labels_by_id[ $class_id ] = $class_data['label'] ?? $class_id;
75 - },
76 - $skip_migration
77 - );
78 -
79 - if ( empty( $files ) ) {
80 - return $this->empty_result();
42 + if ( ! $global_classes_result->is_valid() ) {
43 + return [
44 + 'manifest' => [],
45 + 'files' => [],
46 + ];
81 47 }
82 48
83 - $files[] = [
84 - 'path' => Import_Export_Customization::FILE_NAME . '/' . self::ORDER_FILE,
85 - 'data' => wp_json_encode( $this->build_order_entries( $kit, $labels_by_id ) ),
86 - ];
87 -
88 49 return [
89 - 'files' => $files,
90 - 'manifest' => [],
91 - ];
92 - }
93 -
94 - private function build_order_entries( $kit, array $labels_by_id ): array {
95 - $repository_order = Global_Classes_Order::make( $kit )->get_order();
96 - $sanitized_order = Global_Classes_Parser::sanitize_order( $labels_by_id, $repository_order );
97 -
98 - return array_map(
99 - static fn( string $id ) => [
100 - 'id' => $id,
101 - 'label' => $labels_by_id[ $id ],
50 + 'files' => [
51 + 'path' => Import_Export_Customization::FILE_NAME,
52 + 'data' => $global_classes_result->unwrap(),
102 53 ],
103 - $sanitized_order
104 - );
105 - }
106 -
107 - private function empty_result(): array {
108 - return [
109 54 'manifest' => [],
110 - 'files' => [],
111 55 ];
112 56 }
113 57 }