PluginProbe
Import Users & Customers with Meta | WP Ultimate CSV Importer Add-on / 1.2.8
Import Users & Customers with Meta | WP Ultimate CSV Importer Add-on v1.2.8
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
import-users / importExtensions / MediaHandling.php

MediaHandling.php in Import Users & Customers with Meta | WP Ultimate CSV Importer Add-on 1.2.8, at importExtensions/MediaHandling.php

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