Passed
Push — master ( daf4aa...a05818 )
by Warwick
26:07 queued 09:35
created
classes/class-lsx-wetu-importer-destination.php 1 patch
Indentation   +504 added lines, -504 removed lines patch added patch discarded remove patch
@@ -9,87 +9,87 @@  discard block
 block discarded – undo
9 9
 
10 10
 class LSX_WETU_Importer_Destination extends LSX_WETU_Importer {
11 11
 
12
-	/**
13
-	 * The url to list items from WETU
14
-	 *
15
-	 * @since 0.0.1
16
-	 *
17
-	 * @var      string
18
-	 */
19
-	public $tab_slug = 'destination';
20
-
21
-	/**
22
-	 * The url to list items from WETU
23
-	 *
24
-	 * @since 0.0.1
25
-	 *
26
-	 * @var      string
27
-	 */
28
-	public $url = false;
29
-
30
-	/**
31
-	 * The query string url to list items from WETU
32
-	 *
33
-	 * @since 0.0.1
34
-	 *
35
-	 * @var      string
36
-	 */
37
-	public $url_qs = false;
38
-
39
-	/**
40
-	 * Options
41
-	 *
42
-	 * @since 0.0.1
43
-	 *
44
-	 * @var      string
45
-	 */
46
-	public $options = false;
47
-
48
-	/**
49
-	 * The fields you wish to import
50
-	 *
51
-	 * @since 0.0.1
52
-	 *
53
-	 * @var      string
54
-	 */
55
-	public $destination_options = false;
56
-
57
-	/**
58
-	 * Initialize the plugin by setting localization, filters, and administration functions.
59
-	 *
60
-	 * @since 1.0.0
61
-	 *
62
-	 * @access private
63
-	 */
64
-	public function __construct() {
65
-		$this->set_variables();
66
-	}
67
-
68
-	/**
69
-	 * Sets the variables used throughout the plugin.
70
-	 */
71
-	public function set_variables() {
72
-		parent::set_variables();
73
-		$this->url    = 'https://wetu.com/API/Pins/' . $this->api_key;
74
-		$this->url_qs = 'all=include';
75
-		$temp_options = get_option( '_lsx-to_settings', false );
76
-
77
-		if ( false !== $temp_options && isset( $temp_options[ $this->plugin_slug ] ) && ! empty( $temp_options[ $this->plugin_slug ] ) ) {
78
-			$this->options = $temp_options[ $this->plugin_slug ];
79
-		}
80
-
81
-		$destination_options = get_option( 'lsx_wetu_importer_destination_settings', false );
82
-
83
-		if ( false !== $destination_options ) {
84
-			$this->destination_options = $destination_options;
85
-		}
86
-	}
87
-
88
-	/**
89
-	 * Display the importer administration screen
90
-	 */
91
-	public function display_page() {
92
-		?>
12
+     /**
13
+      * The url to list items from WETU
14
+      *
15
+      * @since 0.0.1
16
+      *
17
+      * @var      string
18
+      */
19
+     public $tab_slug = 'destination';
20
+
21
+     /**
22
+      * The url to list items from WETU
23
+      *
24
+      * @since 0.0.1
25
+      *
26
+      * @var      string
27
+      */
28
+     public $url = false;
29
+
30
+     /**
31
+      * The query string url to list items from WETU
32
+      *
33
+      * @since 0.0.1
34
+      *
35
+      * @var      string
36
+      */
37
+     public $url_qs = false;
38
+
39
+     /**
40
+      * Options
41
+      *
42
+      * @since 0.0.1
43
+      *
44
+      * @var      string
45
+      */
46
+     public $options = false;
47
+
48
+     /**
49
+      * The fields you wish to import
50
+      *
51
+      * @since 0.0.1
52
+      *
53
+      * @var      string
54
+      */
55
+     public $destination_options = false;
56
+
57
+     /**
58
+      * Initialize the plugin by setting localization, filters, and administration functions.
59
+      *
60
+      * @since 1.0.0
61
+      *
62
+      * @access private
63
+      */
64
+     public function __construct() {
65
+          $this->set_variables();
66
+     }
67
+
68
+     /**
69
+      * Sets the variables used throughout the plugin.
70
+      */
71
+     public function set_variables() {
72
+          parent::set_variables();
73
+          $this->url    = 'https://wetu.com/API/Pins/' . $this->api_key;
74
+          $this->url_qs = 'all=include';
75
+          $temp_options = get_option( '_lsx-to_settings', false );
76
+
77
+          if ( false !== $temp_options && isset( $temp_options[ $this->plugin_slug ] ) && ! empty( $temp_options[ $this->plugin_slug ] ) ) {
78
+               $this->options = $temp_options[ $this->plugin_slug ];
79
+          }
80
+
81
+          $destination_options = get_option( 'lsx_wetu_importer_destination_settings', false );
82
+
83
+          if ( false !== $destination_options ) {
84
+               $this->destination_options = $destination_options;
85
+          }
86
+     }
87
+
88
+     /**
89
+      * Display the importer administration screen
90
+      */
91
+     public function display_page() {
92
+          ?>
93 93
 		<div class="wrap">
94 94
 			<div class="tablenav top">
95 95
 				<div class="actions">
@@ -280,17 +280,17 @@  discard block
 block discarded – undo
280 280
 			</div>
281 281
 		</div>
282 282
 		<?php
283
-	}
283
+     }
284 284
 
285
-	/**
286
-	 * Grab all the current destination posts via the lsx_wetu_id field.
287
-	 */
288
-	public function find_current_destination( $post_type = 'destination' ) {
289
-		global $wpdb;
290
-		$return = array();
285
+     /**
286
+      * Grab all the current destination posts via the lsx_wetu_id field.
287
+      */
288
+     public function find_current_destination( $post_type = 'destination' ) {
289
+          global $wpdb;
290
+          $return = array();
291 291
 
292
-		// @codingStandardsIgnoreStart
293
-		$current_destination = $wpdb->get_results("
292
+          // @codingStandardsIgnoreStart
293
+          $current_destination = $wpdb->get_results("
294 294
 			SELECT key1.post_id,key1.meta_value,key2.post_title as name,key2.post_date as last_modified
295 295
 			FROM {$wpdb->postmeta} key1
296 296
 
@@ -302,151 +302,151 @@  discard block
 block discarded – undo
302 302
 
303 303
 			LIMIT 0,1000
304 304
 		");
305
-		// @codingStandardsIgnoreEnd
306
-
307
-		if ( null !== $current_destination && ! empty( $current_destination ) ) {
308
-			foreach ( $current_destination as $accom ) {
309
-				$return[ $accom->meta_value ] = $accom;
310
-			}
311
-		}
312
-
313
-		return $return;
314
-	}
315
-
316
-	/**
317
-	 * Run through the accommodation grabbed from the DB.
318
-	 */
319
-	public function process_ajax_search() {
320
-		$return = false;
321
-		check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
322
-		if ( isset( $_POST['action'] ) && 'lsx_tour_importer' === $_POST['action'] && isset( $_POST['type'] ) && 'destination' === $_POST['type'] ) {
323
-
324
-			$searched_items = false;
325
-			if ( isset( $_POST['keyword'] ) ) {
326
-				$keyphrases = array_map( 'sanitize_text_field', wp_unslash( $_POST['keyword'] ) );
327
-			} else {
328
-				$keyphrases = array( 0 );
329
-			}
330
-
331
-			if ( ! is_array( $keyphrases ) ) {
332
-				$keyphrases = array( $keyphrases );
333
-			}
334
-			foreach ( $keyphrases as &$keyword ) {
335
-				$keyword = ltrim( rtrim( $keyword ) );
336
-			}
337
-
338
-			$post_status = false;
339
-
340
-			if ( in_array( 'publish', $keyphrases ) ) {
341
-				$post_status = 'publish';
342
-			}
343
-			if ( in_array( 'pending', $keyphrases ) ) {
344
-				$post_status = 'pending';
345
-			}
346
-			if ( in_array( 'draft', $keyphrases ) ) {
347
-				$post_status = 'draft';
348
-			}
349
-			if ( in_array( 'import', $keyphrases ) ) {
350
-				$post_status = 'import';
351
-			}
352
-
353
-			// If there is a post status use it.
354
-			if ( false !== $post_status ) {
355
-
356
-				$accommodation = array();
357
-				$current_accommodation = $this->find_current_accommodation( 'destination' );
358
-				if ( ! empty( $current_accommodation ) ) {
359
-					foreach ( $current_accommodation as $cs_key => $ccs_id ) {
360
-						$accommodation[] = $this->prepare_row_attributes( $cs_key, $ccs_id->post_id );
361
-					}
362
-				}
363
-
364
-				// Run through each accommodation and use it.
365
-				if ( ! empty( $accommodation ) ) {
366
-					foreach ( $accommodation as $row_key => $row ) {
367
-						$row['post_title'] = $row['name'];
368
-						if ( 'import' === $post_status ) {
369
-							if ( is_array( $this->queued_imports ) && in_array( $row['post_id'], $this->queued_imports ) ) {
370
-								$current_status = get_post_status( $row['post_id'] );
371
-								if ( 'draft' === $current_status ) {
372
-									$searched_items[ sanitize_title( $row['name'] ) . '-' . $row['id'] ] = $this->format_row( $row, $row_key );
373
-								}
374
-							} else {
375
-								continue;
376
-							}
377
-						} else {
378
-							if ( 0 === $row['post_id'] ) {
379
-								continue;
380
-							} else {
381
-								$current_status = get_post_status( $row['post_id'] );
382
-
383
-								if ( $current_status !== $post_status ) {
384
-									continue;
385
-								}
386
-							}
387
-							$searched_items[ sanitize_title( $row['name'] ) . '-' . $row['id'] ] = $this->format_row( $row, $row_key );
388
-						}
389
-					}
390
-				}
391
-			} else {
392
-
393
-				$key_string_search = implode( '+', $keyphrases );
394
-				$search_data       = wp_remote_get( $this->url . '/Search/' . $key_string_search . '/?all=include' );
395
-
396
-				if ( ! is_wp_error( $search_data ) || ! empty( $search_data ) && isset( $search_data['response'] ) && isset( $search_data['response']['code'] ) && 200 === $search_data['response']['code'] ) {
397
-					$search_data = json_decode( $search_data['body'], true );
398
-					foreach ( $search_data as $sdata_key => $sdata ) {
399
-
400
-						if ( isset( $sdata['type'] ) && 'Destination' !== trim( $sdata['type'] ) && 'Area' !== trim( $sdata['type'] ) ) {
401
-							continue;
402
-						}
403
-
404
-						$temp_id = $this->get_post_id_by_key_value( $sdata['id'] );
405
-						if ( false === $temp_id ) {
406
-							$sdata['post_id'] = 0;
407
-							$sdata['post_title'] = $sdata['name'];
408
-						} else {
409
-							$sdata['post_id'] = $temp_id;
410
-							$sdata['post_title'] = get_the_title( $temp_id );
411
-						}
412
-						$searched_items[ sanitize_title( $sdata['name'] ) . '-' . $sdata['id'] ] = $this->format_row( $sdata, $sdata_key );
413
-					}
414
-				}
415
-			}
416
-
417
-			if ( false !== $searched_items ) {
418
-				$return = implode( $searched_items );
419
-			}
420
-			print_r( $return );
421
-		} else {
422
-			echo esc_attr( 'None found' );
423
-		}
424
-		die();
425
-	}
426
-
427
-	public function prepare_row_attributes( $cs_key, $ccs_id ) {
428
-		$row_item = array(
429
-			'id' => $cs_key,
430
-			'type' => 'Destination',
431
-			'name' => get_the_title( $ccs_id ),
432
-			'last_modified' => date( 'Y-m-d', strtotime( 'now' ) ),
433
-			'post_id' => $ccs_id,
434
-		);
435
-		return $row_item;
436
-	}
437
-
438
-	/**
439
-	 * Formats the row for output on the screen.
440
-	 */
441
-	public function format_row( $row = false, $row_key = '' ) {
442
-		if ( false !== $row ) {
443
-
444
-			$status = 'import';
445
-			if ( 0 !== $row['post_id'] ) {
446
-				$status = '<a href="' . admin_url( '/post.php?post=' . $row['post_id'] . '&action=edit' ) . '" target="_blank">' . get_post_status( $row['post_id'] ) . '</a>';
447
-			}
448
-
449
-			$row_html = '
305
+          // @codingStandardsIgnoreEnd
306
+
307
+          if ( null !== $current_destination && ! empty( $current_destination ) ) {
308
+               foreach ( $current_destination as $accom ) {
309
+                    $return[ $accom->meta_value ] = $accom;
310
+               }
311
+          }
312
+
313
+          return $return;
314
+     }
315
+
316
+     /**
317
+      * Run through the accommodation grabbed from the DB.
318
+      */
319
+     public function process_ajax_search() {
320
+          $return = false;
321
+          check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
322
+          if ( isset( $_POST['action'] ) && 'lsx_tour_importer' === $_POST['action'] && isset( $_POST['type'] ) && 'destination' === $_POST['type'] ) {
323
+
324
+               $searched_items = false;
325
+               if ( isset( $_POST['keyword'] ) ) {
326
+                    $keyphrases = array_map( 'sanitize_text_field', wp_unslash( $_POST['keyword'] ) );
327
+               } else {
328
+                    $keyphrases = array( 0 );
329
+               }
330
+
331
+               if ( ! is_array( $keyphrases ) ) {
332
+                    $keyphrases = array( $keyphrases );
333
+               }
334
+               foreach ( $keyphrases as &$keyword ) {
335
+                    $keyword = ltrim( rtrim( $keyword ) );
336
+               }
337
+
338
+               $post_status = false;
339
+
340
+               if ( in_array( 'publish', $keyphrases ) ) {
341
+                    $post_status = 'publish';
342
+               }
343
+               if ( in_array( 'pending', $keyphrases ) ) {
344
+                    $post_status = 'pending';
345
+               }
346
+               if ( in_array( 'draft', $keyphrases ) ) {
347
+                    $post_status = 'draft';
348
+               }
349
+               if ( in_array( 'import', $keyphrases ) ) {
350
+                    $post_status = 'import';
351
+               }
352
+
353
+               // If there is a post status use it.
354
+               if ( false !== $post_status ) {
355
+
356
+                    $accommodation = array();
357
+                    $current_accommodation = $this->find_current_accommodation( 'destination' );
358
+                    if ( ! empty( $current_accommodation ) ) {
359
+                         foreach ( $current_accommodation as $cs_key => $ccs_id ) {
360
+                              $accommodation[] = $this->prepare_row_attributes( $cs_key, $ccs_id->post_id );
361
+                         }
362
+                    }
363
+
364
+                    // Run through each accommodation and use it.
365
+                    if ( ! empty( $accommodation ) ) {
366
+                         foreach ( $accommodation as $row_key => $row ) {
367
+                              $row['post_title'] = $row['name'];
368
+                              if ( 'import' === $post_status ) {
369
+                                   if ( is_array( $this->queued_imports ) && in_array( $row['post_id'], $this->queued_imports ) ) {
370
+                                        $current_status = get_post_status( $row['post_id'] );
371
+                                        if ( 'draft' === $current_status ) {
372
+                                             $searched_items[ sanitize_title( $row['name'] ) . '-' . $row['id'] ] = $this->format_row( $row, $row_key );
373
+                                        }
374
+                                   } else {
375
+                                        continue;
376
+                                   }
377
+                              } else {
378
+                                   if ( 0 === $row['post_id'] ) {
379
+                                        continue;
380
+                                   } else {
381
+                                        $current_status = get_post_status( $row['post_id'] );
382
+
383
+                                        if ( $current_status !== $post_status ) {
384
+                                             continue;
385
+                                        }
386
+                                   }
387
+                                   $searched_items[ sanitize_title( $row['name'] ) . '-' . $row['id'] ] = $this->format_row( $row, $row_key );
388
+                              }
389
+                         }
390
+                    }
391
+               } else {
392
+
393
+                    $key_string_search = implode( '+', $keyphrases );
394
+                    $search_data       = wp_remote_get( $this->url . '/Search/' . $key_string_search . '/?all=include' );
395
+
396
+                    if ( ! is_wp_error( $search_data ) || ! empty( $search_data ) && isset( $search_data['response'] ) && isset( $search_data['response']['code'] ) && 200 === $search_data['response']['code'] ) {
397
+                         $search_data = json_decode( $search_data['body'], true );
398
+                         foreach ( $search_data as $sdata_key => $sdata ) {
399
+
400
+                              if ( isset( $sdata['type'] ) && 'Destination' !== trim( $sdata['type'] ) && 'Area' !== trim( $sdata['type'] ) ) {
401
+                                   continue;
402
+                              }
403
+
404
+                              $temp_id = $this->get_post_id_by_key_value( $sdata['id'] );
405
+                              if ( false === $temp_id ) {
406
+                                   $sdata['post_id'] = 0;
407
+                                   $sdata['post_title'] = $sdata['name'];
408
+                              } else {
409
+                                   $sdata['post_id'] = $temp_id;
410
+                                   $sdata['post_title'] = get_the_title( $temp_id );
411
+                              }
412
+                              $searched_items[ sanitize_title( $sdata['name'] ) . '-' . $sdata['id'] ] = $this->format_row( $sdata, $sdata_key );
413
+                         }
414
+                    }
415
+               }
416
+
417
+               if ( false !== $searched_items ) {
418
+                    $return = implode( $searched_items );
419
+               }
420
+               print_r( $return );
421
+          } else {
422
+               echo esc_attr( 'None found' );
423
+          }
424
+          die();
425
+     }
426
+
427
+     public function prepare_row_attributes( $cs_key, $ccs_id ) {
428
+          $row_item = array(
429
+               'id' => $cs_key,
430
+               'type' => 'Destination',
431
+               'name' => get_the_title( $ccs_id ),
432
+               'last_modified' => date( 'Y-m-d', strtotime( 'now' ) ),
433
+               'post_id' => $ccs_id,
434
+          );
435
+          return $row_item;
436
+     }
437
+
438
+     /**
439
+      * Formats the row for output on the screen.
440
+      */
441
+     public function format_row( $row = false, $row_key = '' ) {
442
+          if ( false !== $row ) {
443
+
444
+               $status = 'import';
445
+               if ( 0 !== $row['post_id'] ) {
446
+                    $status = '<a href="' . admin_url( '/post.php?post=' . $row['post_id'] . '&action=edit' ) . '" target="_blank">' . get_post_status( $row['post_id'] ) . '</a>';
447
+               }
448
+
449
+               $row_html = '
450 450
 			<tr class="post-' . $row['post_id'] . ' type-tour" id="post-' . $row['post_id'] . '">
451 451
 				<th class="check-column" scope="row">
452 452
 					<label for="cb-select-' . $row['id'] . '" class="screen-reader-text">' . $row['name'] . '</label>
@@ -465,273 +465,273 @@  discard block
 block discarded – undo
465 465
 					' . $row['id'] . '
466 466
 				</td>
467 467
 			</tr>';
468
-			return $row_html;
469
-		}
470
-	}
471
-
472
-	/**
473
-	 * Connect to wetu
474
-	 */
475
-	public function process_ajax_import() {
476
-		$return = false;
477
-
478
-		check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
479
-		if ( isset( $_POST['action'] ) && 'lsx_import_items' === $_POST['action'] && isset( $_POST['type'] ) && 'destination' === $_POST['type'] && isset( $_POST['wetu_id'] ) ) {
480
-
481
-			$wetu_id = sanitize_text_field( $_POST['wetu_id'] );
482
-
483
-			if ( isset( $_POST['post_id'] ) ) {
484
-				$post_id = sanitize_text_field( $_POST['post_id'] );
485
-				$this->current_post = get_post( $post_id );
486
-			} else {
487
-				$post_id = 0;
488
-			}
489
-
490
-			if ( isset( $_POST['team_members'] ) ) {
491
-				$team_members = array_map( 'sanitize_text_field', wp_unslash( $_POST['team_members'] ) );
492
-			} else {
493
-				$team_members = false;
494
-			}
495
-
496
-			$safari_brands = false;
497
-
498
-			delete_option( 'lsx_wetu_importer_destination_settings' );
499
-
500
-			if ( isset( $_POST['content'] ) && is_array( $_POST['content'] ) && ! empty( $_POST['content'] ) ) {
501
-				$content = array_map( 'sanitize_text_field', wp_unslash( $_POST['content'] ) );
502
-				add_option( 'lsx_wetu_importer_destination_settings', $content );
503
-			} else {
504
-				$content = false;
505
-			}
506
-
507
-			$jdata = wp_remote_get( $this->url . '/Get?' . $this->url_qs . '&ids=' . $wetu_id );
508
-
509
-			if ( ! empty( $jdata ) && isset( $jdata['response'] ) && isset( $jdata['response']['code'] ) && 200 === $jdata['response']['code'] ) {
510
-				$adata  = json_decode( $jdata['body'], true );
511
-				$return = $this->import_row( $adata, $wetu_id, $post_id, $team_members, $content, $safari_brands );
512
-				$this->remove_from_queue( $return );
513
-				$this->format_completed_row( $return );
514
-			} else {
515
-				$this->format_error( esc_html__( 'There was a problem importing your destination, please try refreshing the page.', 'lsx-wetu-importer' ) );
516
-			}
517
-		}
518
-		die();
519
-	}
520
-
521
-	/**
522
-	 * Saves the queue to the option.
523
-	 */
524
-	public function remove_from_queue( $id ) {
525
-		if ( ! empty( $this->queued_imports ) ) {
526
-			$key = array_search( $id, $this->queued_imports );
527
-			if ( false !== $key ) {
528
-				unset( $this->queued_imports[ $key ] );
529
-
530
-				delete_option( 'lsx_wetu_importer_que' );
531
-				update_option( 'lsx_wetu_importer_que', $this->queued_imports );
532
-			}
533
-		}
534
-	}
535
-
536
-	/**
537
-	 * Connect to wetu
538
-	 */
539
-	public function import_row( $data, $wetu_id, $id = 0, $team_members = false, $importable_content = array(), $safari_brands = false ) {
540
-		if ( 'Destination' === trim( $data[0]['type'] ) || 'Area' === trim( $data[0]['type'] ) ) {
541
-			$post_name = '';
542
-			$data_post_content = '';
543
-			$data_post_excerpt = '';
544
-
545
-			$post = array(
546
-				'post_type' => 'destination',
547
-			);
548
-
549
-			if ( ! empty( $importable_content ) && in_array( 'country', $importable_content ) ) {
550
-				$parent = $this->check_for_parent( $data );
551
-				if ( false !== $parent ) {
552
-					$post['post_parent'] = $parent;
553
-				}
554
-			}
555
-
556
-			// Set the post_content.
557
-			if ( ! empty( $importable_content ) && in_array( 'description', $importable_content ) ) {
558
-				if ( isset( $data[0]['content']['general_description'] ) ) {
559
-
560
-					if ( in_array( 'strip_tags', $importable_content ) ) {
561
-						$post['post_content'] = wp_strip_all_tags( $data[0]['content']['general_description'] );
562
-					} else {
563
-						$post['post_content'] = $data[0]['content']['general_description'];
564
-					}
565
-				}
566
-			}
567
-
568
-			if ( false !== $id && '0' !== $id ) {
569
-				$post['ID'] = $id;
570
-				if ( isset( $this->options ) && 'on' !== $this->options['disable_destination_title'] && isset( $data[0]['name'] ) ) {
571
-					$post['post_title'] = $data[0]['name'];
572
-					$post['post_name'] = wp_unique_post_slug( sanitize_title( $data[0]['name'] ), $id, 'draft', 'destination', 0 );
573
-				}
574
-				$post['post_status'] = 'publish';
575
-
576
-				$id = wp_update_post( $post );
577
-				$prev_date = get_post_meta( $id, 'lsx_wetu_modified_date', true );
578
-				update_post_meta( $id, 'lsx_wetu_modified_date', strtotime( $data[0]['last_modified'] ), $prev_date );
579
-			} else {
580
-				// Set the name.
581
-				if ( isset( $data[0]['name'] ) ) {
582
-					$post_name = wp_unique_post_slug( sanitize_title( $data[0]['name'] ), $id, 'draft', 'destination', 0 );
583
-				}
584
-
585
-				$post['post_name'] = $post_name;
586
-				$post['post_title'] = $data[0]['name'];
587
-				$post['post_status'] = 'publish';
588
-				$id = wp_insert_post( $post );
589
-
590
-				// Save the WETU ID and the Last date it was modified.
591
-				if ( false !== $id ) {
592
-					add_post_meta( $id, 'lsx_wetu_id', $wetu_id );
593
-					add_post_meta( $id, 'lsx_wetu_modified_date', strtotime( $data[0]['last_modified'] ) );
594
-				}
595
-			}
596
-
597
-			$this->find_attachments( $id );
598
-
599
-			// Set the team member if it is there.
600
-			if ( post_type_exists( 'team' ) && false !== $team_members && '' !== $team_members ) {
601
-				$this->set_team_member( $id, $team_members );
602
-			}
603
-
604
-			$this->set_map_data( $data, $id, 9 );
605
-
606
-			// Set the Room Data.
607
-			if ( false !== $importable_content && in_array( 'videos', $importable_content ) ) {
608
-				$this->set_video_data( $data, $id );
609
-			}
610
-
611
-			// Set the Electricity.
612
-			if ( false !== $importable_content && in_array( 'electricity', $importable_content ) ) {
613
-				$this->set_travel_info( $data, $id, 'electricity', $importable_content );
614
-			}
615
-			// Set the cuisine.
616
-			if ( false !== $importable_content && in_array( 'cuisine', $importable_content ) ) {
617
-				$this->set_travel_info( $data, $id, 'cuisine', $importable_content );
618
-			}
619
-			// Set the banking.
620
-			if ( false !== $importable_content && in_array( 'banking', $importable_content ) ) {
621
-				$this->set_travel_info( $data, $id, 'banking', $importable_content );
622
-			}
623
-			// Set the transport.
624
-			if ( false !== $importable_content && in_array( 'transport', $importable_content ) ) {
625
-				$this->set_travel_info( $data, $id, 'transport', $importable_content );
626
-			}
627
-			// Set the dress.
628
-			if ( false !== $importable_content && in_array( 'dress', $importable_content ) ) {
629
-				$this->set_travel_info( $data, $id, 'dress', $importable_content );
630
-			}
631
-			// Set the climate.
632
-			if ( false !== $importable_content && in_array( 'climate', $importable_content ) ) {
633
-				$this->set_travel_info( $data, $id, 'climate', $importable_content );
634
-			}
635
-			// Set the Health.
636
-			if ( false !== $importable_content && in_array( 'health', $importable_content ) ) {
637
-				$this->set_travel_info( $data, $id, 'health', $importable_content );
638
-			}
639
-			// Set the Safety.
640
-			if ( false !== $importable_content && in_array( 'safety', $importable_content ) ) {
641
-				$this->set_travel_info( $data, $id, 'safety', $importable_content );
642
-			}
643
-			// Set the Visa.
644
-			if ( false !== $importable_content && in_array( 'visa', $importable_content ) ) {
645
-				$this->set_travel_info( $data, $id, 'visa', $importable_content );
646
-			}
647
-			// Set the General.
648
-			if ( false !== $importable_content && in_array( 'additional_info', $importable_content ) ) {
649
-				$this->set_travel_info( $data, $id, 'additional_info', $importable_content );
650
-			}
651
-
652
-			// Setup some default for use in the import.
653
-			if ( false !== $importable_content && (in_array( 'gallery', $importable_content ) || in_array( 'banner_image', $importable_content ) || in_array( 'featured_image', $importable_content )) ) {
654
-				$this->find_attachments( $id );
655
-
656
-				// Set the featured image.
657
-				if ( false !== $importable_content && in_array( 'featured_image', $importable_content ) ) {
658
-					$this->set_featured_image( $data, $id );
659
-				}
660
-				if ( false !== $importable_content && in_array( 'banner_image', $importable_content ) ) {
661
-					$this->set_banner_image( $data, $id, $importable_content );
662
-				}
663
-				// Import the main gallery.
664
-				if ( false !== $importable_content && in_array( 'gallery', $importable_content ) ) {
665
-					$this->create_main_gallery( $data, $id );
666
-				}
667
-			}
668
-
669
-			// Set the continent.
670
-			if ( false !== $importable_content && in_array( 'continent', $importable_content ) ) {
671
-				$this->set_continent( $data, $id );
672
-			}
673
-		}
674
-
675
-		return $id;
676
-	}
677
-
678
-	/**
679
-	 * Saves the room data
680
-	 */
681
-	public function set_travel_info( $data, $id, $meta_key, $importable = array( 'none' ) ) {
682
-		if ( ! empty( $data[0]['travel_information'] ) && isset( $data[0]['travel_information'][ $meta_key ] ) ) {
683
-			$content = $data[0]['travel_information'][ $meta_key ];
684
-
685
-			if ( in_array( 'strip_tags', $importable ) ) {
686
-				$content = strip_tags( $content );
687
-			}
688
-
689
-			$this->save_custom_field( $content, $meta_key, $id );
690
-		}
691
-	}
692
-
693
-	/**
694
-	 * Set the Travel Style
695
-	 */
696
-	public function set_continent( $data, $id ) {
697
-
698
-		if ( isset( $data[0]['position']['country'] ) && $data[0]['map_object_id'] === $data[0]['position']['country_content_entity_id'] ) {
699
-			// Get the continent code.
700
-			$country_code    = to_country_data( $data[0]['position']['country'], false );
701
-			$continent_code  = to_continent_code( $country_code );
702
-			$continent_label = to_continent_label( $continent_code );
703
-
704
-			if ( ! empty( tour_operator()->options['display']['enable_search_region_filter'] ) ) {
705
-				$continent_label = to_continent_region_label( $country_code );
706
-			}
707
-
708
-			if ( '' !== $continent_label ) {
709
-				$term = term_exists( trim( $continent_label ), 'continent' );
710
-				if ( ! $term ) {
711
-					$term = wp_insert_term( trim( $continent_label ), 'continent' );
712
-
713
-					if ( is_wp_error( $term ) ) {
714
-						echo wp_kses_post( $term->get_error_message() );
715
-					}
716
-				} else {
717
-					wp_set_object_terms( $id, sanitize_title( $continent_label ), 'continent', true );
718
-				}
719
-			}
720
-		}
721
-	}
722
-
723
-	/**
724
-	 * Save the list of Accommodation into an option
725
-	 */
726
-	public function check_for_parent( $data = array() ) {
727
-		global $wpdb;
728
-
729
-		if ( $data[0]['position']['country_content_entity_id'] !== $data[0]['position']['destination_content_entity_id'] ) {
730
-			$result = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'lsx_wetu_id' AND meta_value = '%s'", array( $data[0]['position']['country_content_entity_id'] ) ) );
731
-			if ( ! empty( $result ) && '' !== $result && false !== $result ) {
732
-				return $result;
733
-			}
734
-		}
735
-		return false;
736
-	}
468
+               return $row_html;
469
+          }
470
+     }
471
+
472
+     /**
473
+      * Connect to wetu
474
+      */
475
+     public function process_ajax_import() {
476
+          $return = false;
477
+
478
+          check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
479
+          if ( isset( $_POST['action'] ) && 'lsx_import_items' === $_POST['action'] && isset( $_POST['type'] ) && 'destination' === $_POST['type'] && isset( $_POST['wetu_id'] ) ) {
480
+
481
+               $wetu_id = sanitize_text_field( $_POST['wetu_id'] );
482
+
483
+               if ( isset( $_POST['post_id'] ) ) {
484
+                    $post_id = sanitize_text_field( $_POST['post_id'] );
485
+                    $this->current_post = get_post( $post_id );
486
+               } else {
487
+                    $post_id = 0;
488
+               }
489
+
490
+               if ( isset( $_POST['team_members'] ) ) {
491
+                    $team_members = array_map( 'sanitize_text_field', wp_unslash( $_POST['team_members'] ) );
492
+               } else {
493
+                    $team_members = false;
494
+               }
495
+
496
+               $safari_brands = false;
497
+
498
+               delete_option( 'lsx_wetu_importer_destination_settings' );
499
+
500
+               if ( isset( $_POST['content'] ) && is_array( $_POST['content'] ) && ! empty( $_POST['content'] ) ) {
501
+                    $content = array_map( 'sanitize_text_field', wp_unslash( $_POST['content'] ) );
502
+                    add_option( 'lsx_wetu_importer_destination_settings', $content );
503
+               } else {
504
+                    $content = false;
505
+               }
506
+
507
+               $jdata = wp_remote_get( $this->url . '/Get?' . $this->url_qs . '&ids=' . $wetu_id );
508
+
509
+               if ( ! empty( $jdata ) && isset( $jdata['response'] ) && isset( $jdata['response']['code'] ) && 200 === $jdata['response']['code'] ) {
510
+                    $adata  = json_decode( $jdata['body'], true );
511
+                    $return = $this->import_row( $adata, $wetu_id, $post_id, $team_members, $content, $safari_brands );
512
+                    $this->remove_from_queue( $return );
513
+                    $this->format_completed_row( $return );
514
+               } else {
515
+                    $this->format_error( esc_html__( 'There was a problem importing your destination, please try refreshing the page.', 'lsx-wetu-importer' ) );
516
+               }
517
+          }
518
+          die();
519
+     }
520
+
521
+     /**
522
+      * Saves the queue to the option.
523
+      */
524
+     public function remove_from_queue( $id ) {
525
+          if ( ! empty( $this->queued_imports ) ) {
526
+               $key = array_search( $id, $this->queued_imports );
527
+               if ( false !== $key ) {
528
+                    unset( $this->queued_imports[ $key ] );
529
+
530
+                    delete_option( 'lsx_wetu_importer_que' );
531
+                    update_option( 'lsx_wetu_importer_que', $this->queued_imports );
532
+               }
533
+          }
534
+     }
535
+
536
+     /**
537
+      * Connect to wetu
538
+      */
539
+     public function import_row( $data, $wetu_id, $id = 0, $team_members = false, $importable_content = array(), $safari_brands = false ) {
540
+          if ( 'Destination' === trim( $data[0]['type'] ) || 'Area' === trim( $data[0]['type'] ) ) {
541
+               $post_name = '';
542
+               $data_post_content = '';
543
+               $data_post_excerpt = '';
544
+
545
+               $post = array(
546
+                    'post_type' => 'destination',
547
+               );
548
+
549
+               if ( ! empty( $importable_content ) && in_array( 'country', $importable_content ) ) {
550
+                    $parent = $this->check_for_parent( $data );
551
+                    if ( false !== $parent ) {
552
+                         $post['post_parent'] = $parent;
553
+                    }
554
+               }
555
+
556
+               // Set the post_content.
557
+               if ( ! empty( $importable_content ) && in_array( 'description', $importable_content ) ) {
558
+                    if ( isset( $data[0]['content']['general_description'] ) ) {
559
+
560
+                         if ( in_array( 'strip_tags', $importable_content ) ) {
561
+                              $post['post_content'] = wp_strip_all_tags( $data[0]['content']['general_description'] );
562
+                         } else {
563
+                              $post['post_content'] = $data[0]['content']['general_description'];
564
+                         }
565
+                    }
566
+               }
567
+
568
+               if ( false !== $id && '0' !== $id ) {
569
+                    $post['ID'] = $id;
570
+                    if ( isset( $this->options ) && 'on' !== $this->options['disable_destination_title'] && isset( $data[0]['name'] ) ) {
571
+                         $post['post_title'] = $data[0]['name'];
572
+                         $post['post_name'] = wp_unique_post_slug( sanitize_title( $data[0]['name'] ), $id, 'draft', 'destination', 0 );
573
+                    }
574
+                    $post['post_status'] = 'publish';
575
+
576
+                    $id = wp_update_post( $post );
577
+                    $prev_date = get_post_meta( $id, 'lsx_wetu_modified_date', true );
578
+                    update_post_meta( $id, 'lsx_wetu_modified_date', strtotime( $data[0]['last_modified'] ), $prev_date );
579
+               } else {
580
+                    // Set the name.
581
+                    if ( isset( $data[0]['name'] ) ) {
582
+                         $post_name = wp_unique_post_slug( sanitize_title( $data[0]['name'] ), $id, 'draft', 'destination', 0 );
583
+                    }
584
+
585
+                    $post['post_name'] = $post_name;
586
+                    $post['post_title'] = $data[0]['name'];
587
+                    $post['post_status'] = 'publish';
588
+                    $id = wp_insert_post( $post );
589
+
590
+                    // Save the WETU ID and the Last date it was modified.
591
+                    if ( false !== $id ) {
592
+                         add_post_meta( $id, 'lsx_wetu_id', $wetu_id );
593
+                         add_post_meta( $id, 'lsx_wetu_modified_date', strtotime( $data[0]['last_modified'] ) );
594
+                    }
595
+               }
596
+
597
+               $this->find_attachments( $id );
598
+
599
+               // Set the team member if it is there.
600
+               if ( post_type_exists( 'team' ) && false !== $team_members && '' !== $team_members ) {
601
+                    $this->set_team_member( $id, $team_members );
602
+               }
603
+
604
+               $this->set_map_data( $data, $id, 9 );
605
+
606
+               // Set the Room Data.
607
+               if ( false !== $importable_content && in_array( 'videos', $importable_content ) ) {
608
+                    $this->set_video_data( $data, $id );
609
+               }
610
+
611
+               // Set the Electricity.
612
+               if ( false !== $importable_content && in_array( 'electricity', $importable_content ) ) {
613
+                    $this->set_travel_info( $data, $id, 'electricity', $importable_content );
614
+               }
615
+               // Set the cuisine.
616
+               if ( false !== $importable_content && in_array( 'cuisine', $importable_content ) ) {
617
+                    $this->set_travel_info( $data, $id, 'cuisine', $importable_content );
618
+               }
619
+               // Set the banking.
620
+               if ( false !== $importable_content && in_array( 'banking', $importable_content ) ) {
621
+                    $this->set_travel_info( $data, $id, 'banking', $importable_content );
622
+               }
623
+               // Set the transport.
624
+               if ( false !== $importable_content && in_array( 'transport', $importable_content ) ) {
625
+                    $this->set_travel_info( $data, $id, 'transport', $importable_content );
626
+               }
627
+               // Set the dress.
628
+               if ( false !== $importable_content && in_array( 'dress', $importable_content ) ) {
629
+                    $this->set_travel_info( $data, $id, 'dress', $importable_content );
630
+               }
631
+               // Set the climate.
632
+               if ( false !== $importable_content && in_array( 'climate', $importable_content ) ) {
633
+                    $this->set_travel_info( $data, $id, 'climate', $importable_content );
634
+               }
635
+               // Set the Health.
636
+               if ( false !== $importable_content && in_array( 'health', $importable_content ) ) {
637
+                    $this->set_travel_info( $data, $id, 'health', $importable_content );
638
+               }
639
+               // Set the Safety.
640
+               if ( false !== $importable_content && in_array( 'safety', $importable_content ) ) {
641
+                    $this->set_travel_info( $data, $id, 'safety', $importable_content );
642
+               }
643
+               // Set the Visa.
644
+               if ( false !== $importable_content && in_array( 'visa', $importable_content ) ) {
645
+                    $this->set_travel_info( $data, $id, 'visa', $importable_content );
646
+               }
647
+               // Set the General.
648
+               if ( false !== $importable_content && in_array( 'additional_info', $importable_content ) ) {
649
+                    $this->set_travel_info( $data, $id, 'additional_info', $importable_content );
650
+               }
651
+
652
+               // Setup some default for use in the import.
653
+               if ( false !== $importable_content && (in_array( 'gallery', $importable_content ) || in_array( 'banner_image', $importable_content ) || in_array( 'featured_image', $importable_content )) ) {
654
+                    $this->find_attachments( $id );
655
+
656
+                    // Set the featured image.
657
+                    if ( false !== $importable_content && in_array( 'featured_image', $importable_content ) ) {
658
+                         $this->set_featured_image( $data, $id );
659
+                    }
660
+                    if ( false !== $importable_content && in_array( 'banner_image', $importable_content ) ) {
661
+                         $this->set_banner_image( $data, $id, $importable_content );
662
+                    }
663
+                    // Import the main gallery.
664
+                    if ( false !== $importable_content && in_array( 'gallery', $importable_content ) ) {
665
+                         $this->create_main_gallery( $data, $id );
666
+                    }
667
+               }
668
+
669
+               // Set the continent.
670
+               if ( false !== $importable_content && in_array( 'continent', $importable_content ) ) {
671
+                    $this->set_continent( $data, $id );
672
+               }
673
+          }
674
+
675
+          return $id;
676
+     }
677
+
678
+     /**
679
+      * Saves the room data
680
+      */
681
+     public function set_travel_info( $data, $id, $meta_key, $importable = array( 'none' ) ) {
682
+          if ( ! empty( $data[0]['travel_information'] ) && isset( $data[0]['travel_information'][ $meta_key ] ) ) {
683
+               $content = $data[0]['travel_information'][ $meta_key ];
684
+
685
+               if ( in_array( 'strip_tags', $importable ) ) {
686
+                    $content = strip_tags( $content );
687
+               }
688
+
689
+               $this->save_custom_field( $content, $meta_key, $id );
690
+          }
691
+     }
692
+
693
+     /**
694
+      * Set the Travel Style
695
+      */
696
+     public function set_continent( $data, $id ) {
697
+
698
+          if ( isset( $data[0]['position']['country'] ) && $data[0]['map_object_id'] === $data[0]['position']['country_content_entity_id'] ) {
699
+               // Get the continent code.
700
+               $country_code    = to_country_data( $data[0]['position']['country'], false );
701
+               $continent_code  = to_continent_code( $country_code );
702
+               $continent_label = to_continent_label( $continent_code );
703
+
704
+               if ( ! empty( tour_operator()->options['display']['enable_search_region_filter'] ) ) {
705
+                    $continent_label = to_continent_region_label( $country_code );
706
+               }
707
+
708
+               if ( '' !== $continent_label ) {
709
+                    $term = term_exists( trim( $continent_label ), 'continent' );
710
+                    if ( ! $term ) {
711
+                         $term = wp_insert_term( trim( $continent_label ), 'continent' );
712
+
713
+                         if ( is_wp_error( $term ) ) {
714
+                              echo wp_kses_post( $term->get_error_message() );
715
+                         }
716
+                    } else {
717
+                         wp_set_object_terms( $id, sanitize_title( $continent_label ), 'continent', true );
718
+                    }
719
+               }
720
+          }
721
+     }
722
+
723
+     /**
724
+      * Save the list of Accommodation into an option
725
+      */
726
+     public function check_for_parent( $data = array() ) {
727
+          global $wpdb;
728
+
729
+          if ( $data[0]['position']['country_content_entity_id'] !== $data[0]['position']['destination_content_entity_id'] ) {
730
+               $result = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = 'lsx_wetu_id' AND meta_value = '%s'", array( $data[0]['position']['country_content_entity_id'] ) ) );
731
+               if ( ! empty( $result ) && '' !== $result && false !== $result ) {
732
+                    return $result;
733
+               }
734
+          }
735
+          return false;
736
+     }
737 737
 }
Please login to merge, or discard this patch.