PluginProbe
Elementor Website Builder – more than just a page builder / 3.33.0-beta1
Elementor Website Builder – more than just a page builder v3.33.0-beta1
4.3.4 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 All 457 releases
elementor / app / modules / import-export-customization / data / routes / export.php

export.php in Elementor Website Builder – more than just a page builder 3.33.0-beta1, at app/modules/import-export-customization/data/routes/export.php

155 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor\App\Modules\ImportExportCustomization\Data\Routes;
3
4 use Elementor\Plugin;
5 use Elementor\App\Modules\ImportExportCustomization\Data\Response;
6 use Elementor\Utils as ElementorUtils;
7 use Elementor\App\Modules\ImportExportCustomization\Module as ImportExportCustomizationModule;
8 use Elementor\App\Modules\ImportExportCustomization\Processes\Import;
9
10
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit; // Exit if accessed directly.
13 }
14
15 class Export extends Base_Route {
16
17 protected function get_route(): string {
18 return 'export';
19 }
20
21 protected function get_method(): string {
22 return \WP_REST_Server::CREATABLE;
23 }
24
25 protected function callback( $request ): \WP_REST_Response {
26 /**
27 * @var $module ImportExportCustomizationModule
28 */
29 $module = Plugin::$instance->app->get_component( 'import-export-customization' );
30
31 try {
32 $settings = [
33 'include' => $request->get_param( 'include' ),
34 'kitInfo' => $request->get_param( 'kitInfo' ),
35 'screenShotBlob' => $request->get_param( 'screenShotBlob' ),
36 'customization' => $request->get_param( 'customization' ),
37 'plugins' => $request->get_param( 'plugins' ),
38 'selectedCustomPostTypes' => $request->get_param( 'selectedCustomPostTypes' ),
39 ];
40
41 $settings = array_filter( $settings );
42
43 $source = $settings['kitInfo']['source'];
44
45 $export = $module->export_kit( $settings );
46
47 $file_name = $export['file_name'];
48 $file_size = filesize( $file_name );
49 $file = ElementorUtils::file_get_contents( $file_name );
50
51 if ( ! $file ) {
52 throw new \Error( Import::ZIP_FILE_ERROR_KEY );
53 }
54
55 Plugin::$instance->uploads_manager->remove_file_or_dir( dirname( $file_name ) );
56
57 $result = apply_filters(
58 'elementor/export/kit/export-result',
59 [
60 'manifest' => $export['manifest'],
61 'file' => base64_encode( $file ),
62 'media_urls' => $export['media_urls'],
63 ],
64 $source,
65 $export,
66 $settings,
67 $file,
68 $file_size,
69 );
70
71 if ( is_wp_error( $result ) ) {
72 throw new \Error( $result->get_error_message() );
73 }
74
75 return Response::success( $result );
76
77 } catch ( \Error |\Exception $e ) {
78 Plugin::$instance->logger->get_logger()->error( $e->getMessage(), [
79 'meta' => [
80 'trace' => $e->getTraceAsString(),
81 ],
82 ] );
83
84 if ( $module->is_third_party_class( $e->getTrace()[0]['class'] ) ) {
85 return Response::error( ImportExportCustomizationModule::THIRD_PARTY_ERROR, $e->getMessage() );
86 }
87
88 return Response::error( $e->getMessage(), 'export_error' );
89 }
90 }
91
92 protected function get_args(): array {
93 return [
94 'include' => [
95 'type' => 'array',
96 'description' => 'Content types to include in export',
97 'required' => false,
98 'default' => [ 'templates', 'content', 'settings', 'plugins' ],
99 ],
100 'kitInfo' => [
101 'type' => 'object',
102 'description' => 'Kit information',
103 'required' => false,
104 'default' => [
105 'title' => 'Elementor Website Template',
106 'description' => '',
107 'source' => 'local',
108 ],
109 ],
110 'screenShotBlob' => [
111 'type' => [ 'string', 'null' ],
112 'description' => 'Base64 encoded screenshot for cloud exports',
113 'required' => false,
114 'default' => null,
115 ],
116 'customization' => [
117 'type' => 'object',
118 'description' => 'Customization settings for selective export',
119 'required' => false,
120 'default' => null,
121 'properties' => [
122 'settings' => [
123 'type' => [ 'object', 'null' ],
124 'description' => 'Site settings customization',
125 ],
126 'templates' => [
127 'type' => [ 'object', 'null' ],
128 'description' => 'Templates customization',
129 ],
130 'content' => [
131 'type' => [ 'object', 'null' ],
132 'description' => 'Content customization',
133 ],
134 'plugins' => [
135 'type' => [ 'object', 'null' ],
136 'description' => 'Plugins customization',
137 ],
138 ],
139 ],
140 'plugins' => [
141 'type' => 'array',
142 'description' => 'Selected plugins to export',
143 'required' => false,
144 'default' => [],
145 ],
146 'selectedCustomPostTypes' => [
147 'type' => 'array',
148 'description' => 'Selected custom post types',
149 'required' => false,
150 'default' => [],
151 ],
152 ];
153 }
154 }
155