PluginProbe
Elementor Website Builder – more than just a page builder / 3.31.4
Elementor Website Builder – more than just a page builder v3.31.4
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 4.1.0-beta2 4.1.0-dev2 4.0.8 All 454 releases
← All changes | app/modules/import-export-customization/data/routes/upload.php +4 -72 4.3.1 → 3.31.4 View file →
@@ -1,10 +1,8 @@
1 1 <?php
2 2 namespace Elementor\App\Modules\ImportExportCustomization\Data\Routes;
3 3
4 -use Elementor\App\Modules\ImportExportCustomization\Module as ImportExportCustomizationModule;
5 4 use Elementor\Plugin;
6 -use Elementor\App\Modules\ImportExportCustomization\Data\Response;
7 5
8 6 if ( ! defined( 'ABSPATH' ) ) {
9 7 exit; // Exit if accessed directly.
10 8 }
@@ -17,22 +15,9 @@
17 15 protected function get_method(): string {
18 16 return \WP_REST_Server::CREATABLE;
19 17 }
20 18
21 - private function format_url( string $url ): string {
22 - return wp_unslash( urldecode( $url ) );
23 - }
24 -
25 - /**
26 - * @param $request \WP_REST_Request
27 - * @return \WP_REST_Response
28 - */
29 19 protected function callback( $request ): \WP_REST_Response {
30 - /**
31 - * @var $module ImportExportCustomizationModule
32 - */
33 - $module = Plugin::$instance->app->get_component( 'import-export-customization' );
34 -
35 20 try {
36 21 $file_url = $request->get_param( 'file_url' );
37 22 $kit_id = $request->get_param( 'kit_id' );
38 23 $source = $request->get_param( 'source' );
@@ -38,15 +23,12 @@
38 23 $source = $request->get_param( 'source' );
39 24 $module = Plugin::$instance->app->get_component( 'import-export-customization' );
40 25
41 26 $is_import_from_library = ! empty( $file_url );
42 - if ( $is_import_from_library ) {
43 - $file_url = $this->format_url( $file_url );
44 - }
45 27
46 28 if ( $is_import_from_library ) {
47 29 if ( ! filter_var( $file_url, FILTER_VALIDATE_URL ) || 0 !== strpos( $file_url, 'http' ) ) {
48 - return Response::error( ImportExportCustomizationModule::KIT_LIBRARY_ERROR_KEY, 'Invalid kit library URL.' );
30 + return Response::error( 'Invalid kit library URL.', 'invalid_kit_library_url' );
49 31 }
50 32
51 33 $import_result = apply_filters( 'elementor/import/kit/result', [ 'file_url' => $file_url ] );
52 34 } elseif ( ! empty( $source ) ) {
@@ -58,9 +40,9 @@
58 40 $files = $request->get_file_params();
59 41 $file = $files['e_import_file'] ?? null;
60 42
61 43 if ( empty( $file ) || empty( $file['tmp_name'] ) ) {
62 - return Response::error( 'no_file_uploaded', 'No file uploaded or upload error occurred.' );
44 + return Response::error( 'No file uploaded or upload error occurred.', 'no_file_uploaded' );
63 45 }
64 46
65 47 $import_result = [
66 48 'file_name' => $file['tmp_name'],
@@ -78,12 +60,8 @@
78 60 if ( is_wp_error( $import_result ) ) {
79 61 return Response::error( $import_result->get_error_message(), 'upload_error' );
80 62 }
81 63
82 - if ( ! empty( $import_result['media_file_name'] ) ) {
83 - $this->setup_media_mapping( $import_result['media_file_name'] );
84 - }
85 -
86 64 $uploaded_kit = $module->upload_kit( $import_result['file_name'], $import_result['referrer'], $kit_id );
87 65
88 66 $result = [
89 67 'session' => $uploaded_kit['session'],
@@ -108,9 +86,9 @@
108 86 }
109 87
110 88 return Response::success( $result );
111 89
112 - } catch ( \Error | \Exception $e ) {
90 + } catch ( \Error $e ) {
113 91 Plugin::$instance->logger->get_logger()->error( $e->getMessage(), [
114 92 'meta' => [
115 93 'trace' => $e->getTraceAsString(),
116 94 ],
@@ -115,57 +93,12 @@
115 93 'trace' => $e->getTraceAsString(),
116 94 ],
117 95 ] );
118 96
119 - if ( $module->is_third_party_class( $e->getTrace()[0]['class'] ) ) {
120 - return Response::error( ImportExportCustomizationModule::THIRD_PARTY_ERROR, $e->getMessage() );
121 - }
122 -
123 97 return Response::error( $e->getMessage(), 'upload_error' );
124 98 }
125 99 }
126 100
127 - private function setup_media_mapping( $media_zip_path ) {
128 - \Elementor\TemplateLibrary\Classes\Media_Mapper::clear_mapping();
129 -
130 - $media_dir = null;
131 -
132 - if ( file_exists( $media_zip_path ) ) {
133 - $media_dir = $this->extract_media_zip( $media_zip_path );
134 - }
135 -
136 - if ( $media_dir && file_exists( $media_dir . '/media-mapping.json' ) ) {
137 - $media_mapping = json_decode( file_get_contents( $media_dir . '/media-mapping.json' ), true );
138 -
139 - \Elementor\TemplateLibrary\Classes\Media_Mapper::set_mapping( $media_mapping, $media_dir );
140 - }
141 -
142 - Plugin::$instance->uploads_manager->remove_file_or_dir( $media_zip_path );
143 -
144 - return $media_dir;
145 - }
146 -
147 - private function extract_media_zip( $zip_path ) {
148 - if ( ! class_exists( '\ZipArchive' ) ) {
149 - return null;
150 - }
151 -
152 - $zip = new \ZipArchive();
153 - if ( $zip->open( $zip_path ) !== true ) {
154 - return null;
155 - }
156 -
157 - $media_dir = dirname( $zip_path ) . '/media';
158 - if ( ! $zip->extractTo( $media_dir ) ) {
159 - $zip->close();
160 - return null;
161 - }
162 -
163 - $zip->close();
164 -
165 - return $media_dir;
166 - }
167 -
168 101 protected function get_args(): array {
169 102 return [
170 103 'file_url' => [
171 104 'type' => 'string',
@@ -174,10 +107,9 @@
174 107 'validate_callback' => function ( $value ) {
175 108 if ( empty( $value ) ) {
176 109 return true;
177 110 }
178 -
179 - return filter_var( $this->format_url( $value ), FILTER_VALIDATE_URL );
111 + return filter_var( $value, FILTER_VALIDATE_URL );
180 112 },
181 113 ],
182 114 'kit_id' => [
183 115 'type' => 'string',