PluginProbe
Elementor Website Builder – more than just a page builder / 3.35.0
Elementor Website Builder – more than just a page builder v3.35.0
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 3.35.0, at modules/atomic-widgets/import-export/atomic-import-export.php

83 lines 2.6 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\Settings_Props_Modifier;
8 use Elementor\Modules\AtomicWidgets\ImportExport\Modifiers\Styles_Ids_Modifier;
9 use Elementor\Modules\AtomicWidgets\ImportExport\Modifiers\Styles_Props_Modifier;
10 use Elementor\Modules\AtomicWidgets\PropsResolver\Import_Export_Props_Resolver;
11 use Elementor\Modules\AtomicWidgets\Styles\Style_Schema;
12 use Elementor\Modules\AtomicWidgets\Utils\Utils;
13 use Elementor\Plugin;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit; // Exit if accessed directly.
17 }
18
19 class Atomic_Import_Export {
20 public function register_hooks() {
21 add_filter(
22 'elementor/template_library/sources/local/import/elements',
23 fn( $elements ) => $this->run( $elements, Import_Export_Props_Resolver::for_import() )
24 );
25
26 add_filter(
27 'elementor/template_library/sources/cloud/import/elements',
28 fn( $elements ) => $this->run( $elements, Import_Export_Props_Resolver::for_import() )
29 );
30
31 add_filter(
32 'elementor/template_library/sources/local/export/elements',
33 fn( $elements ) => $this->run( $elements, Import_Export_Props_Resolver::for_export() )
34 );
35
36 add_filter(
37 'elementor/document/element/replace_id',
38 fn( $element ) => $this->replace_styles_ids( $element )
39 );
40 }
41
42 private function run( $elements, Import_Export_Props_Resolver $props_resolver ) {
43 if ( empty( $elements ) || ! is_array( $elements ) ) {
44 return $elements;
45 }
46
47 return Plugin::$instance->db->iterate_data( $elements, function ( $element ) use ( $props_resolver ) {
48 $element_instance = Plugin::$instance->elements_manager->create_element_instance( $element );
49
50 /** @var Atomic_Element_Base | Atomic_Widget_Base $element_instance */
51 if ( ! Utils::is_atomic( $element_instance ) ) {
52 return $element;
53 }
54
55 $runners = [
56 Settings_Props_Modifier::make( $props_resolver, $element_instance::get_props_schema() ),
57 Styles_Props_Modifier::make( $props_resolver, Style_Schema::get() ),
58 ];
59
60 foreach ( $runners as $runner ) {
61 $element = $runner->run( $element );
62 }
63
64 return $element;
65 } );
66 }
67
68 private function replace_styles_ids( $element ) {
69 if ( empty( $element ) || ! is_array( $element ) ) {
70 return $element;
71 }
72
73 $element_instance = Plugin::$instance->elements_manager->create_element_instance( $element );
74
75 /** @var Atomic_Element_Base | Atomic_Widget_Base $element_instance */
76 if ( ! Utils::is_atomic( $element_instance ) ) {
77 return $element;
78 }
79
80 return Styles_Ids_Modifier::make()->run( $element );
81 }
82 }
83