← All changes
|
modules/global-classes/import-export-customization/runners/export.php
+21
-49
4.2.0-beta2
→
4.0.8
View file →
| @@ -3,9 +3,8 @@ | ||
| 3 | 3 | namespace Elementor\Modules\GlobalClasses\ImportExportCustomization\Runners; |
| 4 | 4 | |
| 5 | 5 | use Elementor\App\Modules\ImportExportCustomization\Runners\Export\Export_Runner_Base; |
| 6 | 6 | use Elementor\Modules\AtomicWidgets\Module as Atomic_Widgets_Module; |
| 7 | -use Elementor\Modules\GlobalClasses\Global_Classes_Order; | |
| 8 | 7 | use Elementor\Modules\GlobalClasses\Global_Classes_Parser; |
| 9 | 8 | use Elementor\Modules\GlobalClasses\Global_Classes_Repository; |
| 10 | 9 | use Elementor\Modules\GlobalClasses\ImportExportCustomization\Import_Export_Customization; |
| 11 | 10 | use Elementor\Modules\GlobalClasses\Module as Global_Classes_Module; |
| @@ -15,10 +14,8 @@ | ||
| 15 | 14 | exit; |
| 16 | 15 | } |
| 17 | 16 | |
| 18 | 17 | class Export extends Export_Runner_Base { |
| 19 | - const ORDER_FILE = 'order.json'; | |
| 20 | - | |
| 21 | 18 | public static function get_name(): string { |
| 22 | 19 | return 'global-classes'; |
| 23 | 20 | } |
| 24 | 21 | |
| @@ -50,64 +47,39 @@ | ||
| 50 | 47 | public function export( array $data ): array { |
| 51 | 48 | $kit = Plugin::$instance->kits_manager->get_active_kit(); |
| 52 | 49 | |
| 53 | 50 | if ( ! $kit ) { |
| 54 | - return $this->empty_result(); | |
| 51 | + return [ | |
| 52 | + 'manifest' => [], | |
| 53 | + 'files' => [], | |
| 54 | + ]; | |
| 55 | 55 | } |
| 56 | 56 | |
| 57 | - $repository = Global_Classes_Repository::make( $kit ); | |
| 58 | - $labels_by_id = []; | |
| 59 | - $files = []; | |
| 57 | + $global_classes = Global_Classes_Repository::make()->all()->get(); | |
| 60 | 58 | |
| 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 | - } | |
| 59 | + $global_classes_result = Global_Classes_Parser::make()->parse( $global_classes ); | |
| 67 | 60 | |
| 68 | - $class_id = $class_data['id']; | |
| 61 | + if ( ! $global_classes_result->is_valid() ) { | |
| 62 | + return [ | |
| 63 | + 'manifest' => [], | |
| 64 | + 'files' => [], | |
| 65 | + ]; | |
| 66 | + } | |
| 69 | 67 | |
| 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 | - ); | |
| 68 | + $classes_data = $global_classes_result->unwrap(); | |
| 78 | 69 | |
| 79 | - if ( empty( $files ) ) { | |
| 80 | - return $this->empty_result(); | |
| 70 | + if ( empty( $classes_data['items'] ) ) { | |
| 71 | + return [ | |
| 72 | + 'manifest' => [], | |
| 73 | + 'files' => [], | |
| 74 | + ]; | |
| 81 | 75 | } |
| 82 | 76 | |
| 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 | 77 | 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 )->set_preview( false )->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 ], | |
| 78 | + 'files' => [ | |
| 79 | + 'path' => Import_Export_Customization::FILE_NAME, | |
| 80 | + 'data' => $classes_data, | |
| 102 | 81 | ], |
| 103 | - $sanitized_order | |
| 104 | - ); | |
| 105 | - } | |
| 106 | - | |
| 107 | - private function empty_result(): array { | |
| 108 | - return [ | |
| 109 | 82 | 'manifest' => [], |
| 110 | - 'files' => [], | |
| 111 | 83 | ]; |
| 112 | 84 | } |
| 113 | 85 | } |