PluginProbe
Elementor Website Builder – more than just a page builder / 3.1.3
Elementor Website Builder – more than just a page builder v3.1.3
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 | includes/template-library/classes/class-import-images.php +11 -116 4.3.0-beta3 → 3.1.3 View file →
@@ -1,12 +1,7 @@
1 1 <?php
2 2 namespace Elementor\TemplateLibrary\Classes;
3 3
4 -use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
5 -use Elementor\Core\Files\Uploads_Manager;
6 -use Elementor\Plugin;
7 -use Elementor\Utils;
8 -
9 4 if ( ! defined( 'ABSPATH' ) ) {
10 5 exit; // Exit if accessed directly.
11 6 }
12 7
@@ -98,71 +93,30 @@
98 93 * uploads folder, create a new attachment in the database and updates the
99 94 * attachment metadata.
100 95 *
101 96 * @since 1.0.0
102 - * @since 3.2.0 New `$parent_post_id` option added
103 97 * @access public
104 98 *
105 99 * @param array $attachment The attachment.
106 - * @param int $parent_post_id Optional.
107 100 *
108 101 * @return false|array Imported image data, or false.
109 102 */
110 - public function import( $attachment, $parent_post_id = null ) {
111 - if ( isset( $attachment['tmp_name'] ) ) {
112 - // Used when called to import a directly-uploaded file.
113 - $filename = $attachment['name'];
114 - $file_content = false;
103 + public function import( $attachment ) {
104 + $saved_image = $this->get_saved_image( $attachment );
115 105
116 - // security validation in case the tmp_name has been tampered with
117 - if ( is_uploaded_file( $attachment['tmp_name'] ) ) {
118 - $file_content = Utils::file_get_contents( $attachment['tmp_name'] );
119 - }
120 - } else {
121 - // Used when attachment information is passed to this method.
122 - if ( ! empty( $attachment['id'] ) ) {
123 - $saved_image = $this->get_saved_image( $attachment );
106 + if ( $saved_image ) {
107 + return $saved_image;
108 + }
124 109
125 - if ( $saved_image ) {
126 - return $saved_image;
127 - }
128 - }
110 + // Extract the file name and extension from the url.
111 + $filename = basename( $attachment['url'] );
129 112
130 - // Extract the file name and extension from the url.
131 - $filename = basename( $attachment['url'] );
113 + $file_content = wp_remote_retrieve_body( wp_safe_remote_get( $attachment['url'] ) );
132 114
133 - $request = wp_safe_remote_get( $attachment['url'] );
134 -
135 - // Make sure the request returns a valid result.
136 - if ( is_wp_error( $request ) || ( ! empty( $request['response']['code'] ) && 200 !== (int) $request['response']['code'] ) ) {
137 - return false;
138 - }
139 -
140 - $file_content = wp_remote_retrieve_body( $request );
141 - }
142 -
143 115 if ( empty( $file_content ) ) {
144 116 return false;
145 117 }
146 118
147 - $filetype = wp_check_filetype( $filename );
148 -
149 - // If the file type is not recognized by WordPress, exit here to avoid creation of an empty attachment document.
150 - if ( ! $filetype['ext'] ) {
151 - return false;
152 - }
153 -
154 - if ( 'svg' === $filetype['ext'] ) {
155 - // In case that unfiltered-files upload is not enabled, SVG images should not be imported.
156 - if ( ! Uploads_Manager::are_unfiltered_uploads_enabled() ) {
157 - return false;
158 - }
159 -
160 - $svg_handler = Plugin::$instance->uploads_manager->get_file_type_handlers( 'svg' );
161 -
162 - $file_content = $svg_handler->sanitizer( $file_content );
163 - }
164 -
165 119 $upload = wp_upload_bits(
166 120 $filename,
167 121 null,
168 122 $file_content
@@ -173,30 +127,23 @@
173 127 'guid' => $upload['url'],
174 128 ];
175 129
176 130 $info = wp_check_filetype( $upload['file'] );
177 -
178 131 if ( $info ) {
179 132 $post['post_mime_type'] = $info['type'];
180 133 } else {
181 134 // For now just return the origin attachment
182 135 return $attachment;
183 - // return new \WP_Error( 'attachment_processing_error', esc_html__( 'Invalid file type.', 'elementor' ) );
136 + // return new \WP_Error( 'attachment_processing_error', __( 'Invalid file type.', 'elementor' ) );
184 137 }
185 138
186 - $post_id = wp_insert_attachment( $post, $upload['file'], $parent_post_id );
139 + $post_id = wp_insert_attachment( $post, $upload['file'] );
187 140
188 - apply_filters( 'elementor/template_library/import_images/new_attachment', $post_id );
189 -
190 141 // On REST requests.
191 142 if ( ! function_exists( 'wp_generate_attachment_metadata' ) ) {
192 143 require_once ABSPATH . '/wp-admin/includes/image.php';
193 144 }
194 145
195 - if ( ! function_exists( 'wp_read_video_metadata' ) ) {
196 - require_once ABSPATH . '/wp-admin/includes/media.php';
197 - }
198 -
199 146 wp_update_attachment_metadata(
200 147 $post_id,
201 148 wp_generate_attachment_metadata( $post_id, $upload['file'] )
202 149 );
@@ -205,62 +152,10 @@
205 152 $new_attachment = [
206 153 'id' => $post_id,
207 154 'url' => $upload['url'],
208 155 ];
209 -
210 - if ( ! empty( $attachment['id'] ) ) {
211 - $this->_replace_image_ids[ $attachment['id'] ] = $new_attachment;
212 - }
213 -
156 + $this->_replace_image_ids[ $attachment['id'] ] = $new_attachment;
214 157 return $new_attachment;
215 - }
216 -
217 - /**
218 - * Import local file.
219 - *
220 - * Import a local file directly to WordPress media library.
221 - * Used for importing files that are already downloaded locally (e.g., from extracted ZIP).
222 - *
223 - * @since 3.33.0
224 - * @access public
225 - *
226 - * @param string $local_file_path The local file path.
227 - * @param int $parent_post_id Optional. Parent post ID.
228 - *
229 - * @return false|array Imported image data, or false on failure.
230 - */
231 - public function import_local_file( $local_file_path, $parent_post_id = null ) {
232 - global $wp_filesystem;
233 -
234 - if ( ! $wp_filesystem->exists( $local_file_path ) ) {
235 - return false;
236 - }
237 -
238 - if ( ! function_exists( 'media_handle_sideload' ) ) {
239 - require_once ABSPATH . 'wp-admin/includes/media.php';
240 - }
241 -
242 - if ( ! function_exists( 'wp_generate_attachment_metadata' ) ) {
243 - require_once ABSPATH . 'wp-admin/includes/image.php';
244 - }
245 -
246 - $file_array = [
247 - 'name' => basename( $local_file_path ),
248 - 'tmp_name' => $local_file_path,
249 - ];
250 -
251 - $attachment_id = media_handle_sideload( $file_array, $parent_post_id );
252 -
253 - if ( is_wp_error( $attachment_id ) ) {
254 - return false;
255 - }
256 -
257 - apply_filters( 'elementor/template_library/import_images/new_attachment', $attachment_id );
258 -
259 - return [
260 - 'id' => $attachment_id,
261 - 'url' => wp_get_attachment_url( $attachment_id ),
262 - ];
263 158 }
264 159
265 160 /**
266 161 * Template library import images constructor.