PluginProbe
Elementor Website Builder – more than just a page builder / 4.0.5
Elementor Website Builder – more than just a page builder v4.0.5
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 4.0.7 All 451 releases
elementor / modules / atomic-widgets / import-export / atomic-import-export.php

atomic-import-export.php in Elementor Website Builder – more than just a page builder 4.0.5, at modules/atomic-widgets/import-export/atomic-import-export.php

92 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Elementor\Modules\AtomicWidgets\ImportExport;
4
5 use Elementor\Modules\AtomicWidgets\Elements\Base\Atomic_Element_Base;
6 use Elementor\Modules\AtomicWidgets\Elements\Base\Atomic_Widget_Base;
7 use Elementor\Modules\AtomicWidgets\ImportExport\Modifiers\Interactions_Ids_Modifier;
8 use Elementor\Modules\AtomicWidgets\ImportExport\Modifiers\Interactions_Props_Modifier;
9 use Elementor\Modules\AtomicWidgets\ImportExport\Modifiers\Settings_Props_Modifier;
10 use Elementor\Modules\AtomicWidgets\ImportExport\Modifiers\Styles_Ids_Modifier;
11 use Elementor\Modules\AtomicWidgets\ImportExport\Modifiers\Styles_Props_Modifier;
12 use Elementor\Modules\AtomicWidgets\PropsResolver\Import_Export_Props_Resolver;
13 use Elementor\Modules\AtomicWidgets\Styles\Style_Schema;
14 use Elementor\Modules\AtomicWidgets\Utils\Utils;
15 use Elementor\Modules\Interactions\Schema\Interactions_Schema;
16 use Elementor\Plugin;
17
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit; // Exit if accessed directly.
20 }
21
22 class Atomic_Import_Export {
23 public function register_hooks() {
24 add_filter(
25 'elementor/template_library/sources/local/import/elements',
26 fn( $elements ) => $this->run( $elements, Import_Export_Props_Resolver::for_import() )
27 );
28
29 add_filter(
30 'elementor/template_library/sources/cloud/import/elements',
31 fn( $elements ) => $this->run( $elements, Import_Export_Props_Resolver::for_import() )
32 );
33
34 add_filter(
35 'elementor/template_library/sources/local/export/elements',
36 fn( $elements ) => $this->run( $elements, Import_Export_Props_Resolver::for_export() )
37 );
38
39 add_filter(
40 'elementor/document/element/replace_id',
41 fn( $element ) => $this->replace_styles_ids( $element )
42 );
43 }
44
45 private function run( $elements, Import_Export_Props_Resolver $props_resolver ) {
46 if ( empty( $elements ) || ! is_array( $elements ) ) {
47 return $elements;
48 }
49
50 return Plugin::$instance->db->iterate_data( $elements, function ( $element ) use ( $props_resolver ) {
51 $element_instance = Plugin::$instance->elements_manager->create_element_instance( $element );
52
53 /** @var Atomic_Element_Base | Atomic_Widget_Base $element_instance */
54 if ( ! Utils::is_atomic( $element_instance ) ) {
55 return $element;
56 }
57
58 $interactions_schema = Interactions_Schema::get();
59 $interaction_item_schema = ! empty( $interactions_schema['items'][0] ) ? $interactions_schema['items'][0]->get_shape() : [];
60
61 $runners = [
62 Settings_Props_Modifier::make( $props_resolver, $element_instance::get_props_schema() ),
63 Styles_Props_Modifier::make( $props_resolver, Style_Schema::get() ),
64 Interactions_Props_Modifier::make( $props_resolver, $interaction_item_schema ),
65 ];
66
67 foreach ( $runners as $runner ) {
68 $element = $runner->run( $element );
69 }
70
71 return $element;
72 } );
73 }
74
75 private function replace_styles_ids( $element ) {
76 if ( empty( $element ) || ! is_array( $element ) ) {
77 return $element;
78 }
79
80 $element_instance = Plugin::$instance->elements_manager->create_element_instance( $element );
81
82 /** @var Atomic_Element_Base | Atomic_Widget_Base $element_instance */
83 if ( ! Utils::is_atomic( $element_instance ) ) {
84 return $element;
85 }
86
87 $element = Styles_Ids_Modifier::make()->run( $element );
88
89 return Interactions_Ids_Modifier::make()->run( $element );
90 }
91 }
92