PluginProbe
Import Users & Customers with Meta | WP Ultimate CSV Importer Add-on / 1.3
Import Users & Customers with Meta | WP Ultimate CSV Importer Add-on v1.3
2.0 1.7.1 1.2.9 1.3 1.4 1.4.1 1.4.2 1.4.3 1.5 1.6 1.7 trunk 1.0 1.1 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8
← All changes | importExtensions/MediaHandling.php +543 -449 trunk1.3 View file →
@@ -7,30 +7,45 @@
7 7
8 8 namespace Smackcoders\SMUSERS;
9 9
10 10 if ( ! defined( 'ABSPATH' ) )
11 - exit; // Exit if accessed directly
11 +exit; // Exit if accessed directly
12 12
13 13 class MediaHandling{
14 - private static $instance=null,$smack_instance;
15 - public $header_array,$core_instance;
14 + private static $instance=null;
15 + public $header_array;
16 16 public $value_array;
17 17
18 18 public function __construct(){
19 19
20 - include_once(ABSPATH . 'wp-admin/includes/image.php');
20 + require_once(ABSPATH.'wp-load.php');
21 + require_once(ABSPATH . 'wp-admin/includes/image.php');
22 + require_once(ABSPATH . 'wp-admin/includes/file.php');
21 23 add_action('wp_ajax_image_options', array($this , 'imageOptions'));
22 24 add_action('wp_ajax_delete_image' , array($this , 'deleteImage'));
23 25 }
24 26
25 27 public static function imageOptions(){
26 - check_ajax_referer('smack-ultimate-csv-importer', 'securekey');
27 - $media_settings['media_handle_option'] = sanitize_text_field($_POST['media_handle_option']);
28 + check_ajax_referer('smack-ultimate-csv-importer', 'securekey');
28 29 $media_settings['use_ExistingImage'] = sanitize_text_field($_POST['use_ExistingImage']);
29 - $media_settings['enable_postcontent_image'] = sanitize_text_field($_POST['postContent_image_option']);
30 + $media_settings['overwriteImage'] = sanitize_text_field($_POST['overwriteImage']);
31 + $media_settings['title'] = sanitize_text_field($_POST['title']);
32 + $media_settings['caption'] = sanitize_text_field($_POST['caption']);
33 + $media_settings['alttext'] = sanitize_text_field($_POST['alttext']);
34 + $media_settings['description'] = sanitize_text_field($_POST['description']);
35 + $media_settings['file_name'] = sanitize_text_field($_POST['file_name']);
36 + $media_settings['thumbnail'] = sanitize_text_field($_POST['thumbnail']);
37 + $media_settings['media_handle_option'] = sanitize_text_field($_POST['media_handle_option']);
38 + $media_settings['medium'] = sanitize_text_field($_POST['medium']);
39 + $media_settings['medium_large'] = sanitize_text_field($_POST['medium_large']);
40 + $media_settings['large'] = sanitize_text_field($_POST['large']);
41 + $media_settings['custom'] = sanitize_text_field($_POST['custom']);
42 + $media_settings['custom_slug'] = sanitize_text_field($_POST['custom_slug']);
43 + $media_settings['custom_slug'] = sanitize_text_field($_POST['custom_width']);
44 + $media_settings['custom_height'] = sanitize_text_field($_POST['custom_height']);
30 45 $image_info = array(
31 - 'media_settings' => $media_settings
32 - );
46 + 'media_settings' => $media_settings
47 + );
33 48 update_option( 'smack_image_options', $image_info );
34 49 $result['success'] = 'true';
35 50 echo wp_json_encode($result);
36 51 wp_die();
@@ -37,8 +52,9 @@
37 52 }
38 53 public static function getInstance() {
39 54 if (MediaHandling::$instance == null) {
40 55 MediaHandling::$instance = new MediaHandling;
56 + //MediaHandling::$instance->featured_image();
41 57 return MediaHandling::$instance;
42 58 }
43 59 return MediaHandling::$instance;
44 60 }
@@ -56,180 +72,82 @@
56 72 $result['success'] = 'true';
57 73 echo wp_json_encode($result);
58 74 wp_die();
59 75 }
60 - public function media_handling($img_url , $post_id , $data_array = null,$module = null, $image_type = null ,$hash_key = null,$templatekey = null,$header_array=null,$value_array=null,$indexs=null,$acf_wpname_element=null,$acf_image_meta=null){
76 +
77 + public function media_handling($img_url , $post_id , $data_array = null ,$module = null, $image_type = null ,$hash_key = null, $header_array = null , $value_array = null){
61 78 $encodedurl = urlencode($img_url);
62 79 $img_url = urldecode($encodedurl);
63 - $url = parse_url($img_url);
64 - if($hash_key == null)
65 - $hash_key = "";
66 80 $media_handle = get_option('smack_image_options');
67 - if(isset($url['scheme']) && $url['scheme'] == 'http' || $url['scheme'] == 'https' ){
68 - $image_name = basename($img_url);
69 - $image_title = sanitize_file_name( pathinfo( $image_name, PATHINFO_FILENAME ) );
70 - }else{
71 - $image_title=preg_replace('/\\.[^.\\s]{3,4}$/', '', $img_url);
72 - }
81 + $image_name = basename($img_url);
82 + $image_title = sanitize_file_name( pathinfo( $image_name, PATHINFO_FILENAME ) );
73 83 global $wpdb;
74 - if($media_handle['media_settings']['use_ExistingImage'] == 'true'){
75 - if(is_numeric($img_url)){
76 - $attach_id=$img_url;
77 - if(!empty($data_array['featured_image'])) {
78 - set_post_thumbnail( $post_id, $attach_id );
84 +
85 + if($media_handle['media_settings']['media_handle_option'] == 'true'){
86 + if($media_handle['media_settings']['use_ExistingImage'] == 'true'){
87 + $guid_url = $img_url;
88 + $attachment_id = $wpdb->get_results("select ID from {$wpdb->prefix}posts where guid = '$guid_url'" ,ARRAY_A);
89 + if(!empty($attachment_id)){
90 + foreach($attachment_id as $value){
91 + $attach_id = $value['ID'];
92 + if(!wp_get_attachment_url($attach_id)){
93 + $attach_id = $this->image_function($img_url , $post_id , $data_array, '', 'use_existing_image',$header_array , $value_array );
94 + }
95 + }
79 96 }
80 - return $attach_id;
97 + else{
98 + $attach_id = $this->image_function($img_url , $post_id , $data_array , '', 'use_existing_image',$header_array , $value_array);
99 + }
81 100 }
82 - else{
83 - $attachment_id = $wpdb->get_results(
84 - $wpdb->prepare(
85 - "SELECT ID FROM {$wpdb->prefix}posts WHERE post_type = 'attachment' AND guid LIKE %s",
86 - '%' . $wpdb->esc_like( $image_title ) . '%'
87 - ),
88 - ARRAY_A
89 - );
90 -
91 - }
92 - if(is_array($attachment_id) && !empty($attachment_id[0]['ID']) && $image_type != 'Featured'){
93 - $table_name = $wpdb->prefix . 'smackcsv_file_events';
94 - $post_title = $wpdb->get_var(
95 - $wpdb->prepare(
96 - "SELECT post_title FROM {$wpdb->prefix}posts WHERE ID = %d AND post_status != 'trash'",
97 - absint( $post_id )
98 - )
99 - );
100 - $file_name = $wpdb->get_var(
101 - $wpdb->prepare(
102 - "SELECT file_name FROM $table_name WHERE hash_key = %s",
103 - $hash_key
104 - )
105 - );
106 - $shortcode_table = $wpdb->prefix . "ultimate_csv_importer_shortcode_manager";
107 - $attach_id = $attachment_id[0]['ID'];
108 - $check_id = $wpdb->get_results(
109 - $wpdb->prepare(
110 - "SELECT ID FROM {$wpdb->prefix}posts WHERE ID = %d AND post_title ='image-failed' AND post_type = 'attachment' AND guid LIKE %s",
111 - absint( $attach_id ),
112 - '%' . $wpdb->esc_like( $image_title ) . '%'
113 - ),
114 - ARRAY_A
115 - );
116 - if(!empty($check_id)){
117 - $failed_ids = $wpdb->get_results(
118 - $wpdb->prepare(
119 - "SELECT * FROM {$wpdb->prefix}ultimate_csv_importer_shortcode_manager WHERE post_id = %d AND media_id = %d",
120 - absint( $post_id ),
121 - absint( $attach_id )
122 - )
123 - );
124 - if(!empty($failed_ids) && $failed_ids[0]->post_id != $post_id){
125 - $attach_id = $check_id[0]['ID'];;
126 - $insert_status = $wpdb->insert($shortcode_table,
127 - array(
128 - 'post_id' => $post_id,
129 - 'post_title' => $post_title,
130 - 'image_shortcode' => $image_type.'_image__'.$acf_wpname_element,
131 - 'media_id' => $attach_id,
132 - 'original_image' => $img_url,
133 - 'indexs' => $indexs,
134 - 'image_meta' => $acf_image_meta,
135 - 'hash_key' => $hash_key,
136 - 'import_type' => $module,
137 - 'file_name' => $file_name
138 - ),
139 - array('%d','%s','%s','%d','%s','%d','%s','%s','%s','%s')
140 - );
141 - if($insert_status){
142 - $this->store_failed_image_ids($attach_id);
143 - }
144 -
145 - }elseif(($failed_ids[0]->post_id == $post_id) && ($check_id[0]['ID'] == $failed_ids[0]->media_id)){
146 - $attach_id = $check_id[0]['ID'];
147 - $insert_status = $wpdb->insert($shortcode_table,
148 - array(
149 - 'post_id' => $post_id,
150 - 'post_title' => $post_title,
151 - 'image_shortcode' => $image_type.'_image__'.$acf_wpname_element,
152 - 'media_id' => $attach_id,
153 - 'original_image' => $img_url,
154 - 'indexs' => $indexs,
155 - 'image_meta' => $acf_image_meta,
156 - 'hash_key' => $hash_key,
157 - 'import_type' => $module,
158 - 'file_name' => $file_name
159 - ),
160 - array('%d','%s','%s','%d','%s','%d','%s','%s','%s','%s')
161 - );
162 - if($insert_status){
163 - $this->store_failed_image_ids($attach_id);
164 - }
101 + elseif($media_handle['media_settings']['overwriteImage'] == 'true'){
102 + $get_id = $wpdb->get_results("SELECT ID FROM {$wpdb->prefix}posts WHERE post_title = '$image_title' AND post_type = 'attachment' limit 1");
103 + if(!empty($get_id)){
104 + foreach($get_id as $value){
105 + $attach_id = $value->ID;
106 + $this->overwrite($attach_id , $img_url);
107 + if(!empty($data_array['featured_image'])) {
108 + set_post_thumbnail( $post_id, $attach_id );
165 109 }
166 - elseif(empty($failed_ids) ){
167 - $insert_status = $wpdb->insert($shortcode_table,
168 - array(
169 - 'post_id' => $post_id,
170 - 'post_title' => $post_title,
171 - 'image_shortcode' => $image_type.'_image__'.$acf_wpname_element,
172 - 'media_id' => $attach_id,
173 - 'original_image' => $img_url,
174 - 'indexs'=>$indexs,
175 - 'hash_key' => $hash_key,
176 - 'import_type' => $module,
177 - 'file_name' => $file_name,
178 - ),
179 - array('%d','%s','%s','%d','%s','%d','%s','%s','%s')
180 - );
181 - if($insert_status){
182 - $this->store_failed_image_ids($attach_id);
183 - }
184 - }
185 -
186 - //return $attach_id;
187 - }
110 + }
111 + }
112 + else{
113 + $attach_id = $this->image_function($img_url , $post_id , $data_array,'','',$header_array , $value_array);
114 + }
188 115 }
189 116 else{
190 - $attach_id = $this->image_function($img_url , $post_id , $data_array,'','use_existing_image',$header_array,$value_array);
117 + $attach_id = $this->image_function($img_url , $post_id , $data_array,'','',$header_array , $value_array);
191 118 }
192 -
193 119 }
194 120 else{
195 - $img_url = is_array($img_url) ? implode(',', array_filter($img_url)) : $img_url;
196 - $hash_key = is_array($hash_key) ? implode(',', array_filter($hash_key)) : $hash_key;
197 - $templatekey = is_array($templatekey) ? implode(',', array_filter($templatekey)) : $templatekey;
198 - $module = is_array($module) ? implode(',', array_filter($module)) : $module;
199 - $image_type = is_array($image_type) ? implode(',', array_filter($image_type)) : $image_type;
200 - $img_url = esc_sql($img_url);
201 - $hash_key = esc_sql($hash_key);
202 - $templatekey = esc_sql($templatekey);
203 - $module = esc_sql($module);
204 - $image_type = esc_sql($image_type);
205 -
206 - $attach_id = $this->image_function($img_url, $post_id, $data_array,'','',$header_array,$value_array);
207 - // if ($attach_id != null) {
208 - // global $wpdb;
209 - // $image_table = $wpdb->prefix . "ultimate_csv_importer_media";
210 - // $wpdb->query($wpdb->prepare("INSERT INTO $image_table (image_url, attach_id, post_id, hash_key, templatekey, module, image_type, status) VALUES (%s, %d, %d, %s, %s, %s, %s, 'Completed')",$img_url,$attach_id,$post_id,$hash_key,$templatekey,$module,$image_type));
211 - // }
121 + $guid_url = $img_url;
122 + $attachment_id = $wpdb->get_results("select ID from {$wpdb->prefix}posts where guid = '$guid_url'" ,ARRAY_A);
212 123
124 + if(!empty($attachment_id)){
125 +
126 + foreach($attachment_id as $value){
127 + $attach_id = $value['ID'];
128 + if($_wp_attachment_metadata = get_post_meta($attach_id, '_wp_attachment_metadata', true)){
129 + // When an attachment is available on Media and not has attachment link
130 + if(!is_array($_wp_attachment_metadata)){
131 + $attach_id = $this->image_function($img_url , $post_id , $data_array,'','',$header_array , $value_array);
132 + }
133 + }
134 + //set_post_thumbnail( $post_id, $attach_id );
135 + }
136 + }
213 137 }
214 138 return $attach_id;
215 139 }
216 140
217 141 public function image_function($f_img , $post_id , $data_array = null,$option_name = null, $use_existing_image = false,$header_array = null , $value_array = null){
218 -
142 +
219 143 global $wpdb;
220 - $f_img = urldecode($f_img);
221 - // $image = explode("?", $f_img);
222 - // $f_img=$image[0];
223 144 $media_handle = get_option('smack_image_options');
224 - if(!empty($header_array) && !empty($value_array) ){
225 - $media_settings = array_combine($header_array,$value_array);
226 - }
145 + $media_settings = array_combine($header_array,$value_array);
227 146 if(isset($media_handle['media_settings']['alttext'])) {
228 - $alttext ['_wp_attachment_image_alt'] = isset($media_settings[$media_handle['media_settings']['alttext']]) ? $media_settings[$media_handle['media_settings']['alttext']] :'';
147 + $alttext ['_wp_attachment_image_alt'] = $media_settings[$media_handle['media_settings']['alttext']];
229 148 }
230 -
231 - if(preg_match_all('/\b(?:(?:https?|http|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i', $f_img , $matchedlist, PREG_PATTERN_ORDER)) {
149 + if(preg_match_all('/\b(?:(?:https?|?:http?|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i', $f_img , $matchedlist, PREG_PATTERN_ORDER)) {
232 150 $f_img = $f_img;
233 151 }
234 152 else{
235 153 $media_dir = wp_get_upload_dir();
@@ -239,20 +157,18 @@
239 157 $f_img = $media_dir['url'].'/'.$f_img;
240 158 }
241 159 }
242 160 }
243 -
244 161 $image_name = pathinfo($f_img);
245 - //if(!empty($media_handle['media_settings']['file_name'])){
246 - //$file_type = wp_check_filetype( $f_img, null );
247 - //$ext = '.'. $file_type['ext'];
248 - // if(!empty($media_settings[$media_handle['media_settings']['file_name']])){
249 - // $fimg_name = $media_settings[$media_handle['media_settings']['file_name']].$ext;
250 - // }
251 - //}
252 - //else{
162 + if(!empty($media_handle['media_settings']['file_name'])){
163 + $file_type = wp_check_filetype( $f_img, null );
164 + $ext = '.'. $file_type['ext'];
165 + $fimg_name = $media_settings[$media_handle['media_settings']['file_name']].$ext;
166 + }
167 + else{
253 168 $fimg_name = $image_name['basename'];
254 - //}
169 + }
170 +
255 171 $file_type = wp_check_filetype( $fimg_name, null );
256 172 if($use_existing_image){
257 173 if(empty($file_type['ext'])){
258 174 $fimg_name = @basename($f_img);
@@ -258,14 +174,10 @@
258 174 $fimg_name = @basename($f_img);
259 175 $fimg_name = str_replace(' ', '-', trim($fimg_name));
260 176 $fimg_name = preg_replace('/[^a-zA-Z0-9._\-\s]/', '', $fimg_name);
261 177 }
262 - $attachment_id = $wpdb->get_var(
263 - $wpdb->prepare(
264 - "SELECT ID FROM ".$wpdb->prefix."posts WHERE post_type = 'attachment' AND guid LIKE %s",
265 - '%' . $wpdb->esc_like( $fimg_name )
266 - )
267 - );
178 + $attachment_id = $wpdb->get_var("SELECT ID FROM ".$wpdb->prefix."posts WHERE post_type = 'attachment' AND guid LIKE '%$fimg_name'");
179 +
268 180 if($attachment_id){
269 181 if(!empty($data_array['featured_image'])){
270 182 set_post_thumbnail( $post_id, $attachment_id );
271 183 return $attachment_id;
@@ -275,20 +187,13 @@
275 187 }
276 188 }
277 189
278 190 $attachment_title = sanitize_file_name( pathinfo( $fimg_name, PATHINFO_FILENAME ) );
279 - $file_type = wp_check_filetype( $fimg_name, null );
191 + $file_type = wp_check_filetype( $fimg_name, null );
280 192 $dir = wp_upload_dir();
281 193 $dirname = date('Y') . '/' . date('m');
282 - $uploads_use_yearmonth = get_option('uploads_use_yearmonth_folders');
283 - if($uploads_use_yearmonth == 1){
284 - $uploaddir_paths = $dir ['basedir'] . '/' . $dirname ;
285 - $uploaddir_url = $dir ['baseurl'] . '/' . $dirname;
286 - }
287 - else{
288 - $uploaddir_paths = $dir ['basedir'];
289 - $uploaddir_url = $dir ['baseurl'];
290 - }
194 + $uploaddir_paths = $dir ['basedir'] . '/' . $dirname ;
195 + $uploaddir_url = $dir ['baseurl'] . '/' . $dirname;
291 196 $f_img = str_replace(" ","%20",$f_img);
292 197 if(empty($file_type['ext'])){
293 198 $fimg_name = @basename($f_img);
294 199 $fimg_name = str_replace(' ', '-', trim($fimg_name));
@@ -294,25 +199,13 @@
294 199 $fimg_name = str_replace(' ', '-', trim($fimg_name));
295 200 $fimg_name = preg_replace('/[^a-zA-Z0-9._\-\s]/', '', $fimg_name);
296 201 }
297 202 if ($uploaddir_paths != "" && $uploaddir_paths) {
298 - if (strpos($fimg_name, ' ') !== false) {
299 - $fimg_name = str_replace(' ', '-', $fimg_name);
300 - $fimg_name = preg_replace('/[^a-zA-Z0-9._\-\s]/', '', $fimg_name);
301 - }
302 203 $uploaddir_path = $uploaddir_paths . "/" . $fimg_name;
303 204 }
304 -
305 - if($file_type['ext'] == 'jpeg'){
306 - $response = wp_safe_remote_get($f_img, array( 'timeout' => 30));
307 - }else{
308 - $response = wp_safe_remote_get($f_img, array( 'timeout' => 10));
309 - }
310 - if(is_wp_error($response)) {
311 - return null;
312 - }
313 - $rawdata = wp_remote_retrieve_body($response);
314 -
205 + //Removed curl and added wordpress http api
206 + $response = wp_remote_get($f_img, array( 'timeout' => 10));
207 + $rawdata = wp_remote_retrieve_body($response);
315 208 $http_code = wp_remote_retrieve_response_code($response);
316 209 if($http_code == 404){
317 210 return null;
318 211 }
@@ -317,291 +210,492 @@
317 210 return null;
318 211 }
319 212
320 213 if ( $http_code != 200 && strpos( $rawdata, 'Not Found' ) != 0 ) {
321 - return null;
214 + $rawdata = null;
322 215 }
323 - if(is_plugin_active('exmage-wp-image-links/exmage-wp-image-links.php')){
324 - $guid =$fimg_name;
325 - }
326 216 if ($rawdata == false) {
327 217 return null;
328 218 } else {
329 - if(is_plugin_active('exmage-wp-image-links/exmage-wp-image-links.php')){
330 - $link = new \EXMAGE_WP_IMAGE_LINKS;
331 - $postID = $link->add_image($data_array['featured_image'],$value);
332 - wp_update_post(array(
333 - 'ID' => $postID['id'],
334 - 'post_title' => $data_array['title'],
335 - 'post_content' => $data_array['description'],
336 - 'post_excerpt' => $data_array['caption']
337 - ));
338 - // if($postID['id'] != null && isset($data_array['alt_text'])){
339 - //update_post_meta($postID['id'], '_wp_attachment_image_alt', $data_array['alt_text']);
340 - //}
341 - }
342 - else{
343 - if (file_exists($uploaddir_path)) {
344 - $i = 1;
345 - $exist = true;
346 - while($exist){
347 - $fimg_name = $attachment_title . "-" . $i . "." . $file_type['ext'];
348 - $uploaddir_path = $uploaddir_paths . "/" . $fimg_name;
349 219
350 - if (file_exists($uploaddir_path)) {
351 - $i = $i + 1;
352 - }
353 - else{
354 - $exist = false;
355 - }
220 + if (file_exists($uploaddir_path)) {
221 + $i = 1;
222 + $exist = true;
223 + while($exist){
224 + $fimg_name = $attachment_title . "-" . $i . "." . $file_type['ext'];
225 + $uploaddir_path = $uploaddir_paths . "/" . $fimg_name;
226 +
227 + if (file_exists($uploaddir_path)) {
228 + $i = $i + 1;
356 229 }
230 + else{
231 + $exist = false;
232 + }
357 233 }
358 - $fp = fopen($uploaddir_path, 'x');
359 - fwrite($fp, $rawdata);
360 - fclose($fp);
361 234 }
235 +
236 + $fp = fopen($uploaddir_path, 'x');
237 + fwrite($fp, $rawdata);
238 + fclose($fp);
362 239 }
363 240 if(empty($file_type['type'])){
364 241 $file_type['type'] = 'image/jpeg';
365 242 }
366 - if(is_plugin_active('exmage-wp-image-links/exmage-wp-image-links.php')){
367 - $guids =$data_array['featured_image'];
243 + $post_info = array(
244 + 'guid' => $uploaddir_url . "/" . $fimg_name,
245 + 'post_mime_type' => $file_type['type'],
246 + 'post_title' => $attachment_title,
247 + 'post_content' => '',
248 + 'post_status' => 'inherit',
249 + );
250 + //unset( $post_info['ID'] );
251 + $attach_id = wp_insert_attachment( $post_info,$uploaddir_path, $post_id );
252 + $attach_data = wp_generate_attachment_metadata( $attach_id, $uploaddir_path );
253 + wp_update_attachment_metadata( $attach_id, $attach_data );
254 + if($media_handle['media_settings']['thumbnail'] = 'true') {
255 + $thumbnail_width = get_option('thumbnail_size_w');
256 + $thumbnail_height = get_option('thumbnail_size_h');
257 + $metadata = wp_get_attachment_metadata($attach_id);
258 + $metadata['width'] = $thumbnail_width;
259 + $metadata['height'] = $thumbnail_height;
260 + wp_update_attachment_metadata($attach_id,$metadata);
368 261 }
369 - else{
370 - $guids=$uploaddir_url . "/" . $fimg_name;
262 + elseif($media_handle['media_settings']['medium_'] = 'true'){
263 + $medium_width = get_option('medium_size_w');
264 + $medium_height = get_option('medium_size_h');
265 + $metadata = wp_get_attachment_metadata($attach_id);
266 + $metadata['width'] = $medium_width;
267 + $metadata['height'] = $medium_height;
268 + wp_update_attachment_metadata($attach_id,$metadata);
371 269 }
372 - if(!empty($data_array['title'])){
373 - $attachment_title = $data_array['title'];
374 - }else{
375 - $attachment_title = str_replace('-', ' ', $attachment_title);
270 + elseif($media_handle['media_settings']['medium_large'] = 'true') {
271 + $medium_large_width = get_option('medium_large_size_w');
272 + $medium_large_height = get_option('medium_large_size_h');
273 + //add_image_size( 'medium_large', $medium_large_width, $medium_large_height, true );
274 + $metadata = wp_get_attachment_metadata($attach_id);
275 + $metadata['width'] = $medium_large_width;
276 + $metadata['height'] = $medium_large_height;
277 + wp_update_attachment_metadata($attach_id,$metadata);
376 278 }
377 - $post_info = array(
378 - 'guid' => $guids,
379 - 'post_mime_type' => $file_type['type'],
380 - 'post_title' => $attachment_title,
381 - 'post_content' => '',
382 - 'post_status' => 'inherit',
383 - );
384 - if(!is_plugin_active('exmage-wp-image-links/exmage-wp-image-links.php')){
385 - $attach_id = wp_insert_attachment( $post_info,$uploaddir_path, $post_id );
386 - $attach_data = wp_generate_attachment_metadata( $attach_id, $uploaddir_path );
387 - wp_update_attachment_metadata( $attach_id, $attach_data );
279 + elseif($media_handle['media_settings']['large'] = 'true'){
280 + $large_width = get_option('large_size_w');
281 + $large_height = get_option('large_size_h');
282 + $metadata = wp_get_attachment_metadata($attach_id);
283 + $metadata['width'] = $large_width;
284 + $metadata['height'] = $large_height;
285 + wp_update_attachment_metadata($attach_id,$metadata);
388 286 }
389 -
287 + if(isset($media_handle['media_settings']['description'])){
288 + $media_handle['media_settings']['description'] = $media_settings[$media_handle['media_settings']['description']];
289 + }
290 + if(isset($media_handle['media_settings']['caption'])){
291 + $media_handle['media_settings']['caption'] = $media_settings[$media_handle['media_settings']['caption']];
292 + }
293 + if(isset($media_handle['media_settings']['title'])){
294 + $media_handle['media_settings']['title'] = $media_settings[$media_handle['media_settings']['title']];
295 + }
296 + if(isset($media_handle['media_settings']['caption']) || isset($media_handle['media_settings']['description'])){
297 + wp_update_post(array(
298 + 'ID' =>$attach_id,
299 + 'post_content' =>$media_handle['media_settings']['description'],
300 + 'post_excerpt' =>$media_handle['media_settings']['caption']
301 + ));
302 + }
303 + if(isset($media_handle['media_settings']['title'])){
304 + wp_update_post(array(
305 + 'ID' =>$attach_id,
306 + 'post_title' =>$media_handle['media_settings']['title']
307 + ));
308 + }
309 + if($attach_id != null && isset($alttext['_wp_attachment_image_alt'])){
310 + update_post_meta($attach_id, '_wp_attachment_image_alt', $alttext['_wp_attachment_image_alt']);
311 + }
390 312 if(!empty($data_array['featured_image'])) {
391 313 set_post_thumbnail( $post_id, $attach_id );
392 314 }
315 + delete_option( $option_name );
393 316 return $attach_id;
394 317 }
395 318
396 - public function get_filename_path($image_url){
397 - $image_name = pathinfo($image_url);
398 - $fimg_name = $image_name['basename'];
399 - $fimg_name_without_ext = $image_name['filename'];
400 - if(empty($fimg_name_without_ext)){
401 - $fimg_name_without_ext = $fimg_name;
319 +
320 + public function image_import($data_array){
321 + $encodedurl = urlencode($data_array['featured_image']);
322 + $data_array['featured_image'] = urldecode($encodedurl);
323 + if(isset($data_array['alt_text'])) {
324 + $alttext ['_wp_attachment_image_alt'] = $data_array['alt_text'];
325 + }
326 + if(preg_match_all('/\b(?:(?:https?|http|ftp|file):\/\/|www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i', $data_array['featured_image'] , $matchedlist, PREG_PATTERN_ORDER))
327 + {
328 + $f_img = $data_array['featured_image'];
329 + }
330 + else{
331 + $media_dir = wp_get_upload_dir();
332 + $names = glob($media_dir['path'].'/'.'*.*');
333 + $f_img = $data_array['featured_image'];
334 + foreach($names as $values){
335 + if (strpos($values, $f_img) !== false) {
336 + $f_img = $media_dir['url'].'/'.$f_img;
337 + }
338 + }
339 + }
340 + $image_name = pathinfo($f_img);
341 + $attachment_title = sanitize_file_name( pathinfo( $f_img, PATHINFO_FILENAME ) );
342 + $file_type = wp_check_filetype( $f_img, null );
343 + $dir = wp_upload_dir();
344 + $dirname = date('Y') . '/' . date('m');
345 + $uploaddir_paths = $dir ['basedir'] . '/' . $dirname ;
346 + $uploaddir_url = $dir ['baseurl'] . '/' . $dirname;
347 + if(empty($file_type['ext']) || empty($data_array['file_name'])){
348 + $fimg_name = @basename($f_img);
349 + $fimg_name = str_replace(' ', '-', trim($fimg_name));
350 + $fimg_name = preg_replace('/[^a-zA-Z0-9._\-\s]/', '', $fimg_name);
351 + }
352 + if(!empty($data_array['file_name'])){
353 + $file_type = wp_check_filetype( $f_img, null );
354 + $ext = '.'. $file_type['ext'];
355 + $fimg_name = $data_array['file_name'].$ext;
356 + }
357 + if ($uploaddir_paths != "" && $uploaddir_paths) {
358 + $uploaddir_path = $uploaddir_paths . "/" . $fimg_name;
359 + }
360 + if (strstr($f_img, 'https://drive.google.com')){
361 + $page_content = file_get_contents($f_img);
362 + $dom_obj = new \DOMDocument();
363 + $dom_obj->loadHTML($page_content);
364 + $meta_val = null;
365 + foreach($dom_obj->getElementsByTagName('meta') as $meta) {
366 + if($meta->getAttribute('property')=='og:image'){
367 + $meta_val = $meta->getAttribute('content');
368 + }
402 369 }
403 - $file_type = wp_check_filetype( $fimg_name, null );
404 - if(empty($file_type['ext'])){
405 - $fimg_name = @basename($image_url);
406 - $fimg_name = str_replace(' ', '-', trim($fimg_name));
407 - $fimg_name = preg_replace('/[^a-zA-Z0-9._\-\s]/', '', $fimg_name);
370 +
371 + $response = wp_remote_get($meta_val);
372 + $rawdata = wp_remote_retrieve_body($response);
373 + }
374 + //Removed curl and added wordpress http api
375 + else{
376 + if($file_type['ext'] == 'jpeg'){
377 + $response = wp_remote_get($f_img, array( 'timeout' => 30));
378 + }else{
379 + $response = wp_remote_get($f_img, array( 'timeout' => 10));
380 + }
381 + $rawdata = wp_remote_retrieve_body($response);
382 + }
383 + $http_code = wp_remote_retrieve_response_code($response);
384 +
385 + if($http_code == 404){
386 + return null;
387 + }
388 +
389 + // When
390 + if ( $http_code != 200 && strpos( $rawdata, 'Not Found' ) != 0 ) {
391 + return null;
392 + }
393 +
394 + if ($rawdata == false) {
395 +
396 + return null;
397 + } else {
398 +
399 + if (file_exists($uploaddir_path)) {
400 + $i = 1;
401 + $exist = true;
402 + while($exist){
403 + $fimg_name = $attachment_title . "-" . $i . "." . $file_type['ext'];
404 + $uploaddir_path = $uploaddir_paths . "/" . $fimg_name;
405 +
406 + if (file_exists($uploaddir_path)) {
407 + $i = $i + 1;
408 + }
409 + else{
410 + $exist = false;
411 + }
412 + }
408 413 }
414 + $fp = fopen($uploaddir_path, 'x');
415 + fwrite($fp, $rawdata);
416 + fclose($fp);
417 + }
418 + if(empty($file_type['type'])){
419 + $file_type['type'] = 'image/jpeg';
420 + }
421 + //Removed curl and added wordpress http api
422 + $post_info = array(
423 + 'guid' => $uploaddir_url . "/" . $fimg_name,
424 + 'post_mime_type' => $file_type['type'],
425 + 'post_title' => $attachment_title,
426 + 'post_content' => '',
427 + 'post_status' => 'inherit',
428 + );
429 + unset( $post_info['ID'] );
430 + $attach_id = wp_insert_attachment( $post_info,$uploaddir_path );
431 + $attach_data = wp_generate_attachment_metadata( $attach_id, $uploaddir_path );
432 + wp_update_attachment_metadata( $attach_id, $attach_data );
433 + wp_update_post(array(
434 + 'ID' => $attach_id,
435 + 'post_title' => $data_array['title'],
436 + 'post_content' => $data_array['description'],
437 + 'post_excerpt' => $data_array['caption']
438 + ));
439 + if($attach_id != null && isset($alttext['_wp_attachment_image_alt'])){
440 + update_post_meta($attach_id, '_wp_attachment_image_alt', $alttext['_wp_attachment_image_alt']);
441 + }
442 + return $attach_id;
443 + }
409 444
410 - if (strstr($image_url, 'https://drive.google.com')){
411 - preg_match('/[?&]id=([^&]+)/', $image_url, $matches);
412 - $fimg_name = isset($matches[1]) ? $matches[1] : basename($image_url);
445 +
446 + function overwrite($post_id , $img_url){
447 +
448 + global $wpdb;
449 + $sql = "SELECT post_mime_type FROM {$wpdb->prefix}posts WHERE ID = $post_id";
450 + list($current_filetype) = $wpdb->get_row($sql, ARRAY_N);
451 + $current_filename = wp_get_attachment_url($post_id);
452 +
453 + $current_guid = $current_filename;
454 + $current_filename = substr($current_filename, (strrpos($current_filename, "/") + 1));
455 +
456 + $ID = $post_id;
457 +
458 + //$current_file = get_attached_file($ID, apply_filters( 'emr_unfiltered_get_attached_file', true ));
459 + $current_file = get_attached_file($ID);
460 + $current_path = substr($current_file, 0, (strrpos($current_file, "/")));
461 + $current_file = preg_replace("|(?<!:)/{2,}|", "/", $current_file);
462 + $current_filename = basename($current_file);
463 + $current_metadata = wp_get_attachment_metadata( $post_id );
464 +
465 + // $original_file_perms = fileperms($current_file) & 0777;
466 +
467 + $data = file_get_contents($img_url);
468 +
469 + $new_filename = basename($img_url);
470 + $file_type = wp_check_filetype( $new_filename, null );
471 + $new_filetype = $file_type["type"];
472 + if(empty($new_filetype['ext'])){
473 + $new_filename = @basename($img_url);
474 + $new_filename = str_replace(' ', '-', trim($new_filename));
475 + $new_filename = preg_replace('/[^a-zA-Z0-9._\-\s]/', '', $new_filename);
476 + }
477 + if(empty($new_filetype)){
478 + $new_filetype = 'image/jpeg';
479 + }
480 +
481 + $original_file_perms = fileperms($current_file) & 0777;
482 +
483 + $this->emr_delete_current_files( $current_file, $post_id, $current_metadata );
484 +
485 + $new_filename = wp_unique_filename( $current_path, $new_filename );
486 + $new_file = $current_path . "/" . $new_filename;
487 + file_put_contents($new_file, $data);
488 +
489 + @chmod($current_file, $original_file_perms);
490 +
491 + $new_filetitle = preg_replace('/\.[^.]+$/', '', basename($new_file));
492 + $new_guid = str_replace($current_filename, $new_filename, $current_guid);
493 +
494 + $post_date = gmdate( 'Y-m-d H:i:s' );
495 +
496 + $sql = $wpdb->prepare(
497 + "UPDATE {$wpdb->prefix}posts SET post_title = '$new_filetitle', post_name = '$new_filetitle', guid = '$new_guid', post_mime_type = '$new_filetype', post_date = '$post_date', post_date_gmt = '$post_date' WHERE ID = %d;",
498 + $post_id
499 + );
500 + $wpdb->query($sql);
501 +
502 +
503 + $sql = $wpdb->prepare(
504 + "SELECT meta_value FROM {$wpdb->prefix}postmeta WHERE meta_key = '_wp_attached_file' AND post_id = %d;",
505 + $post_id
506 + );
507 +
508 + $old_meta_name = $wpdb->get_row($sql, ARRAY_A);
509 + $old_meta_name = $old_meta_name["meta_value"];
510 +
511 + // Make new postmeta _wp_attached_file
512 + $new_meta_name = str_replace($current_filename, $new_filename, $old_meta_name);
513 + $sql = $wpdb->prepare(
514 + "UPDATE {$wpdb->prefix}postmeta SET meta_value = '$new_meta_name' WHERE meta_key = '_wp_attached_file' AND post_id = %d;",
515 + $post_id
516 + );
517 + $wpdb->query($sql);
518 +
519 + $new_metadata = wp_generate_attachment_metadata( $post_id, $new_file );
520 + wp_update_attachment_metadata( $post_id, $new_metadata );
521 +
522 +
523 +
524 + $current_base_url = $this->emr_get_match_url( $current_guid ); // .wp-contet.uplodas/ dae name without ext
525 +
526 + $sql = $wpdb->prepare(
527 + "SELECT ID, post_content FROM {$wpdb->prefix}posts WHERE post_status = 'publish' AND post_content LIKE %s;",
528 + '%' . $current_base_url . '%'
529 + );
530 +
531 +
532 + $rs = $wpdb->get_results( $sql, ARRAY_A );
533 +
534 + $number_of_updates = 0;
535 +
536 +
537 + if ( ! empty( $rs ) ) {
538 + $search_urls = $this->emr_get_file_urls( $current_guid, $current_metadata );
539 + $replace_urls = $this->emr_get_file_urls( $new_guid, $new_metadata );
540 + $replace_urls = $this->emr_normalize_file_urls( $search_urls, $replace_urls );
541 +
542 + foreach ( $rs AS $rows ) {
543 +
544 + $number_of_updates = $number_of_updates + 1;
545 +
546 + // replace old URLs with new URLs.
547 + $post_content = $rows["post_content"];
548 +
549 + $post_content = addslashes( str_replace( $search_urls, $replace_urls, $post_content ) );
550 +
551 + $sql = $wpdb->prepare(
552 + "UPDATE {$wpdb->prefix}posts SET post_content = '$post_content' WHERE ID = %d;",
553 + $rows["ID"]
554 + );
555 +
556 + $wpdb->query( $sql );
413 557 }
414 - $dir = wp_upload_dir();
415 - $dirname = date('Y') . '/' . date('m');
416 - $uploads_use_yearmonth = get_option('uploads_use_yearmonth_folders');
417 - if($uploads_use_yearmonth == 1){
418 - $uploaddir_paths = $dir ['basedir'] . '/' . $dirname ;
419 - $uploaddir_url = $dir ['baseurl'] . '/' . $dirname;
558 + }
559 + update_attached_file( $post_id, $new_file );
560 +
561 + }
562 +
563 +
564 + function emr_delete_current_files( $current_file, $post_id , $metadta = null ) {
565 + // Delete old file
566 +
567 + // Find path of current file
568 + $current_path = substr($current_file, 0, (strrpos($current_file, "/")));
569 +
570 + // Check if old file exists first
571 + if (file_exists($current_file)) {
572 + // Now check for correct file permissions for old file
573 + clearstatcache();
574 + if (is_writable($current_file)) {
575 + // Everything OK; delete the file
576 + unlink($current_file);
420 577 }
421 - else{
422 - $uploaddir_paths = $dir ['basedir'];
423 - $uploaddir_url = $dir ['baseurl'];
578 + else {
579 + // File exists, but has wrong permissions. Let the user know.
580 + printf( esc_html__('The file %1$s can not be deleted by the web server, most likely because the permissions on the file are wrong.'), $current_file);
581 + exit;
424 582 }
425 - if ($uploaddir_paths != "" && $uploaddir_paths) {
426 - $uploaddir_path = $uploaddir_paths . "/" . $fimg_name;
583 + }
584 +
585 + // Delete old resized versions if this was an image
586 + $suffix = substr($current_file, (strlen($current_file)-4));
587 + $prefix = substr($current_file, 0, (strlen($current_file)-4));
588 +
589 + if (strtolower($suffix) === ".pdf") {
590 + $prefix .= "-pdf";
591 + $suffix = ".jpg";
592 + }
593 +
594 + $imgAr = array(".png", ".gif", ".jpg", ".jpeg");
595 + if (in_array($suffix, $imgAr)) {
596 + // It's a png/gif/jpg based on file name
597 + // Get thumbnail filenames from metadata
598 + if ( empty( $metadata ) ) {
599 + $metadata = wp_get_attachment_metadata( $post_id );
427 600 }
601 + // var_dump($metadata);exit;
428 602
429 - return ['uploaddir_path' => $uploaddir_path,'uploaddir_url' => $uploaddir_url,'fimg_name' => $fimg_name];
430 - }
431 - public function image_meta_table_entry($line_number ,$post_values, $post_id ,$acf_wpname_element, $acf_csv_name, $hash_key, $plugin,$get_import_type,$templatekey = null,$gmode = null,$header_array = null, $value_array = null,$imgformat = null,$typecct = null,$indexs=null){
432 - global $wpdb;
433 - $table_name = $wpdb->prefix . 'smackcsv_file_events';
434 - $file_name = $wpdb->get_var(
435 - $wpdb->prepare(
436 - "SELECT file_name FROM $table_name WHERE hash_key = %s",
437 - $hash_key
438 - )
439 - );
440 - $post_title = $wpdb->get_var(
441 - $wpdb->prepare(
442 - "SELECT post_title FROM {$wpdb->prefix}posts WHERE ID = %d AND post_status != 'trash'",
443 - absint( $post_id )
444 - )
445 - );
446 - $failed_ids = $wpdb->get_results(
447 - $wpdb->prepare(
448 - "SELECT post_title,post_id,image_shortcode,media_id,original_image FROM {$wpdb->prefix}ultimate_csv_importer_shortcode_manager WHERE image_shortcode ='Featured_image_' AND post_id = %d AND original_image = %s",
449 - absint( $post_id ),
450 - $acf_csv_name
451 - )
452 - );
453 - //$core_instance = CoreFieldsImport::getInstance();
454 - //$core_instance = new WooCommerceCoreImport;
455 - $shortcode_table = $wpdb->prefix . "ultimate_csv_importer_shortcode_manager";
456 -
457 - $get_path_values = $this->get_filename_path($acf_csv_name);
458 - $uploaddir_path = isset($get_path_values['uploaddir_path']) ? $get_path_values['uploaddir_path'] : '';
459 - $uploaddir_url = isset($get_path_values['uploaddir_url']) ? $get_path_values['uploaddir_url'] : '';
460 - $fimg_name = isset($get_path_values['fimg_name']) ? $get_path_values['fimg_name'] : '';
461 - $file_type = 'image/jpeg';
462 - if(isset($post_id) && !empty($acf_csv_name) ){
463 -
464 - /************* custom image functionality ***********/
465 - if(strpos($plugin, 'jetengine_') !== false ){
466 - $image_meta_value = array(
467 - 'headerarray' => $header_array,
468 - 'valuearray' => $value_array,
469 - 'tablename' => $typecct,
470 - 'returnformat' => $imgformat
471 - );
472 - $acf_image_meta =json_encode($image_meta_value);
473 - }
474 - $acf_image_meta = isset($acf_image_meta) ? $acf_image_meta : null;
475 - $attach_id = $this->media_handling($acf_csv_name, $post_id, $post_values,$get_import_type,$plugin,$hash_key,'',$header_array,$value_array,$indexs,$acf_wpname_element,$acf_image_meta);
476 - $failed_id = $wpdb->get_results(
477 - $wpdb->prepare(
478 - "SELECT post_title,post_id,image_shortcode,media_id,original_image FROM {$wpdb->prefix}ultimate_csv_importer_shortcode_manager WHERE post_id = %d AND original_image = %s AND image_shortcode = %s",
479 - absint( $post_id ),
480 - $acf_csv_name,
481 - $plugin . '_image__' . $acf_wpname_element
482 - )
483 - );
484 - if(!empty($attach_id)){
485 - $this->store_image_ids($attach_id ); //store the image id
486 - return $attach_id;
603 + if (is_array($metadata)) { // Added fix for error messages when there is no metadata (but WHY would there not be? I don't know…)
604 + foreach($metadata["sizes"] AS $thissize) {
605 + // Get all filenames and do an unlink() on each one;
606 + $thisfile = $thissize["file"];
607 + // Create array with all old sizes for replacing in posts later
608 + $oldfilesAr[] = $thisfile;
609 + // Look for files and delete them
610 + if (strlen($thisfile)) {
611 + $thisfile = $current_path . "/" . $thissize["file"];
612 + if (file_exists($thisfile)) {
613 + unlink($thisfile);
614 + }
487 615 }
488 - elseif(empty($attach_id) || !empty($failed_id) || empty($failed_id)){
489 - if(empty($failed_id)){
490 - $post_info = array(
491 - 'guid' => $uploaddir_url . "/" . $fimg_name,
492 - 'post_mime_type' => $file_type,
493 - 'post_title' => 'image-failed',
494 - 'post_content' => '',
495 - 'post_status' => 'inherit',
496 - 'post_author' => isset($post_values['author']) ? $post_values['author'] : ''
497 - );
498 - $attach_id = wp_insert_attachment( $post_info,$uploaddir_path, $post_id );
499 - }
500 - elseif($failed_id[0]->original_image != $acf_csv_name){
501 - $post_info = array(
502 - 'guid' => $uploaddir_url . "/" . $fimg_name,
503 - 'post_mime_type' => $file_type,
504 - 'post_title' => 'image-failed',
505 - 'post_content' => '',
506 - 'post_status' => 'inherit',
507 - 'post_author' => $post_values['author']
508 - );
509 - $attach_id = wp_insert_attachment( $post_info,$uploaddir_path, $post_id );
510 - }
511 - elseif(($failed_id[0]->image_shortcode == 'Featured_image_') && ($failed_id[0]->original_image == $acf_csv_name)){
512 - $post_info = array(
513 - 'guid' => $uploaddir_url . "/" . $fimg_name,
514 - 'post_mime_type' => $file_type,
515 - 'post_title' => 'image-failed',
516 - 'post_content' => '',
517 - 'post_status' => 'inherit',
518 - 'post_author' => $post_values['author']
519 - );
520 - $attach_id = wp_insert_attachment( $post_info,$uploaddir_path, $post_id );
521 - }
522 - if(empty($failed_id)){
523 - $insert_status = $wpdb->insert($shortcode_table,
524 - array(
525 - 'post_id' => $post_id,
526 - 'post_title' => $post_title,
527 - 'image_shortcode' => $plugin.'_image__'.$acf_wpname_element,
528 - 'media_id' => $attach_id,
529 - 'original_image' => $acf_csv_name,
530 - 'indexs' => $indexs,
531 - 'image_meta' => $acf_image_meta,
532 - 'hash_key' => $hash_key,
533 - 'import_type' => $get_import_type,
534 - 'file_name' => $file_name
535 - ),
536 - array('%d','%s','%s','%d','%s','%d','%s','%s','%s','%s')
537 - );
538 - if($insert_status){
539 - $this->store_image_ids($attach_id);//store number of image ids
540 - $this->store_failed_image_ids($attach_id);//store failed image ids
541 - }
542 - }
543 - else{
544 - $media_id = $failed_id[0]->media_id;
545 - $attachment_id = $wpdb->get_results(
546 - $wpdb->prepare(
547 - "SELECT ID FROM {$wpdb->prefix}posts WHERE ID = %d AND post_title ='image-failed' AND post_type = 'attachment' AND guid LIKE %s",
548 - absint( $media_id ),
549 - '%' . $wpdb->esc_like( $fimg_name ) . '%'
550 - ),
551 - ARRAY_A
552 - );
553 - $attach_id= $attachment_id[0]['ID'];
554 - }
555 - return isset($attach_id) ? $attach_id : '';
556 - }else{
557 - $attachment_id = $wpdb->get_results(
558 - $wpdb->prepare(
559 - "SELECT ID FROM {$wpdb->prefix}posts WHERE post_title ='image-failed' AND post_type = 'attachment' AND guid LIKE %s",
560 - '%' . $wpdb->esc_like( $fimg_name ) . '%'
561 - ),
562 - ARRAY_A
563 - );
564 616 }
565 - return $attach_id;
617 + }
618 +
566 619 }
567 620 }
568 - public function store_image_ids($attach_id){
569 - //get number of images count
570 - $stored_ids = get_option('total_attachment_ids', '');
571 - $att_id = $attach_id;
572 - if ($stored_ids === '') {
573 - add_option('total_attachment_ids', serialize(array($att_id)));
574 - $stored_ids = unserialize(get_option('total_attachment_ids', ''));
575 - } else {
576 - $get_stored_ids = unserialize(get_option('total_attachment_ids', ''));
577 - if (is_array($get_stored_ids) && !empty($att_id)) {
578 - $att_id = is_array($att_id) ? $att_id : array($att_id);
579 - $stored_ids = array_merge($get_stored_ids,$att_id);
580 - } else {
581 - $stored_ids = $att_id;
582 - }
583 - update_option('total_attachment_ids', serialize($stored_ids));
584 - $stored_ids = unserialize(get_option('total_attachment_ids', ''));
585 - }
621 +
622 + function emr_get_match_url($url) {
623 + $url = $this->emr_remove_scheme($url);
624 + $url = $this->emr_maybe_remove_query_string($url);
625 + $url = $this->emr_remove_size_from_filename($url, true);
626 + $url = $this->emr_remove_domain_from_filename($url);
627 +
628 + return $url;
586 629 }
587 - public function store_failed_image_ids($attach_id){
588 - //get number of failed images count
589 - $stored_ids = get_option('failed_attachment_ids', '');
590 - $att_id = $attach_id;
591 - if ($stored_ids === '') {
592 - add_option('failed_attachment_ids', serialize(array($att_id)));
593 - $stored_ids = unserialize(get_option('failed_attachment_ids', ''));
594 - } else {
595 - $get_stored_ids = unserialize(get_option('failed_attachment_ids', ''));
596 - if (is_array($get_stored_ids) && !empty($att_id)) {
597 - $att_id = is_array($att_id) ? $att_id : array($att_id);
598 - $stored_ids = array_merge($get_stored_ids,$att_id);
599 - } else {
600 - $stored_ids = $att_id;
601 - }
602 - update_option('failed_attachment_ids', serialize($stored_ids));
603 - $stored_ids = unserialize(get_option('failed_attachment_ids', ''));
630 +
631 + function emr_remove_scheme( $url ) {
632 + return preg_replace( '/^(?:http|https):/', '', $url );
633 + }
634 +
635 + function emr_maybe_remove_query_string( $url ) {
636 + $parts = explode( '?', $url );
637 +
638 + return reset( $parts );
639 + }
640 +
641 + function emr_remove_size_from_filename( $url, $remove_extension = false ) {
642 + $url = preg_replace( '/^(\S+)-[0-9]{1,4}x[0-9]{1,4}(\.[a-zA-Z0-9\.]{2,})?/', '$1$2', $url );
643 +
644 + if ( $remove_extension ) {
645 + $ext = pathinfo( $url, PATHINFO_EXTENSION );
646 + $url = str_replace( ".$ext", '', $url );
647 + }
648 +
649 + return $url;
650 + }
651 +
652 + function emr_remove_domain_from_filename($url) {
653 + // Holding place for possible future function
654 + $url = str_replace($this->emr_remove_scheme(get_bloginfo('url')), '', $url);
655 + return $url;
656 + }
657 +
658 +
659 + function emr_get_file_urls( $guid, $metadata ) {
660 + $urls = array();
661 +
662 + $guid = $this->emr_remove_scheme( $guid );
663 + $guid= $this->emr_remove_domain_from_filename($guid);
664 +
665 + $urls['guid'] = $guid;
666 +
667 + if ( empty( $metadata ) ) {
668 + return $urls;
669 + }
670 +
671 + $base_url = dirname( $guid );
672 +
673 + if ( ! empty( $metadata['file'] ) ) {
674 + $urls['file'] = trailingslashit( $base_url ) . wp_basename( $metadata['file'] );
675 + }
676 +
677 + if ( ! empty( $metadata['sizes'] ) ) {
678 + foreach ( $metadata['sizes'] as $key => $value ) {
679 + $urls[ $key ] = trailingslashit( $base_url ) . wp_basename( $value['file'] );
604 680 }
681 + }
682 +
683 + return $urls;
605 684 }
606 685
607 -}
686 + function emr_normalize_file_urls( $old, $new ) {
687 + $result = array();
688 +
689 + if ( empty( $new['guid'] ) ) {
690 + return $result;
691 + }
692 +
693 + $guid = $new['guid'];
694 +
695 + foreach ( $old as $key => $value ) {
696 + $result[ $key ] = empty( $new[ $key ] ) ? $guid : $new[ $key ];
697 + }
698 +
699 + return $result;
700 + }
701 +}