Passed
Push — master ( 6e5731...3bf1be )
by Chris
03:18
created
classes/class-lsx-wetu-importer-welcome.php 1 patch
Indentation   +83 added lines, -83 removed lines patch added patch discarded remove patch
@@ -14,57 +14,57 @@  discard block
 block discarded – undo
14 14
  */
15 15
 class LSX_WETU_Importer_Welcome {
16 16
 
17
-	/**
18
-	 * Holds instance of the class
19
-	 *
20
-	 * @var object
21
-	 */
22
-	private static $instance;
17
+     /**
18
+      * Holds instance of the class
19
+      *
20
+      * @var object
21
+      */
22
+     private static $instance;
23 23
 
24
-	/**
25
-	 * Initialize the plugin by setting localization, filters, and administration functions.
26
-	 *
27
-	 * @since 1.0.0
28
-	 *
29
-	 * @access private
30
-	 */
31
-	public function __construct() {
32
-	}
24
+     /**
25
+      * Initialize the plugin by setting localization, filters, and administration functions.
26
+      *
27
+      * @since 1.0.0
28
+      *
29
+      * @access private
30
+      */
31
+     public function __construct() {
32
+     }
33 33
 
34
-	/**
35
-	 * Return an instance of this class.
36
-	 *
37
-	 * @return  object
38
-	 */
39
-	public static function get_instance() {
40
-		// If the single instance hasn't been set, set it now.
41
-		if ( ! isset( self::$instance ) ) {
42
-			self::$instance = new self();
43
-		}
44
-		return self::$instance;
45
-	}
34
+     /**
35
+      * Return an instance of this class.
36
+      *
37
+      * @return  object
38
+      */
39
+     public static function get_instance() {
40
+          // If the single instance hasn't been set, set it now.
41
+          if ( ! isset( self::$instance ) ) {
42
+               self::$instance = new self();
43
+          }
44
+          return self::$instance;
45
+     }
46 46
 
47
-	/**
48
-	 * Display the importer welcome screen
49
-	 */
50
-	public function display_page() {
51
-		?>
47
+     /**
48
+      * Display the importer welcome screen
49
+      */
50
+     public function display_page() {
51
+          ?>
52 52
 		<div class="row section">
53 53
 			<h1><?php esc_html_e( 'Welcome to the LSX Importer for Wetu', 'lsx-wetu-importer' ); ?></h1>
54 54
 			<p><?php esc_html_e( 'If this is the first time running the import, please follow the steps below.', 'lsx-wetu-importer' ); ?></p>
55 55
 		</div>
56 56
 		<?php
57
-		$this->importer_steps();
58
-		$this->welcome_blocks();
59
-	}
57
+          $this->importer_steps();
58
+          $this->welcome_blocks();
59
+     }
60 60
 
61
-	/**
62
-	 * Undocumented function
63
-	 *
64
-	 * @return void
65
-	 */
66
-	public function importer_steps() {
67
-		?>
61
+     /**
62
+      * Undocumented function
63
+      *
64
+      * @return void
65
+      */
66
+     public function importer_steps() {
67
+          ?>
68 68
 		<div class="row section postbox">
69 69
 			<div class="welcome-block-header">
70 70
 				<p class="heading"><a href="<?php echo esc_attr( admin_url( 'admin.php' ) . '?page=lsx-wetu-importer&tab=tour' ); ?>"><?php esc_html_e( 'Import your tours', 'lsx-wetu-importer' ); ?></a></p>
@@ -85,15 +85,15 @@  discard block
 block discarded – undo
85 85
 			<div class="spacer"></div>
86 86
 		</div>
87 87
 		<?php
88
-	}
88
+     }
89 89
 
90
-	/**
91
-	 * Outputs the welcome blocks on the welcome screen
92
-	 *
93
-	 * @return void
94
-	 */
95
-	public function welcome_blocks() {
96
-		?>
90
+     /**
91
+      * Outputs the welcome blocks on the welcome screen
92
+      *
93
+      * @return void
94
+      */
95
+     public function welcome_blocks() {
96
+          ?>
97 97
 		<div class="row section">
98 98
 			<div class="welcome-block postbox">
99 99
 				<?php $this->tour_block(); ?>
@@ -109,15 +109,15 @@  discard block
 block discarded – undo
109 109
 			</div>
110 110
 		</div>
111 111
 		<?php
112
-	}
112
+     }
113 113
 
114
-	/**
115
-	 * Outputs the Tour Block.
116
-	 *
117
-	 * @return void
118
-	 */
119
-	public function tour_block() {
120
-		?>
114
+     /**
115
+      * Outputs the Tour Block.
116
+      *
117
+      * @return void
118
+      */
119
+     public function tour_block() {
120
+          ?>
121 121
 			<h2 class="title"><?php esc_html_e( 'Importing tours', 'lsx-wetu-importer' ); ?></h2>
122 122
 			<p class="excerpt"><?php esc_html_e( 'Search for tours, select the ones you want to import and choose the data you want to sync on import. All connected accommodadtions will be imported as drafts to be pubished after completing the tour import.', 'lsx-wetu-importer' ); ?></p>
123 123
 			<p><a href="<?php echo esc_attr( admin_url( 'admin.php' ) . '?page=lsx-wetu-importer&tab=tour' ); ?>" class="button button-primary"><?php esc_html_e( 'Import Tours', 'lsx-wetu-importer' ); ?></a></p>
@@ -129,14 +129,14 @@  discard block
 block discarded – undo
129 129
 				</ul>
130 130
 			</p>			
131 131
 		<?php
132
-	}
133
-	/**
134
-	 * Outputs the Accommodation Block.
135
-	 *
136
-	 * @return void
137
-	 */
138
-	public function accommodation_block() {
139
-		?>
132
+     }
133
+     /**
134
+      * Outputs the Accommodation Block.
135
+      *
136
+      * @return void
137
+      */
138
+     public function accommodation_block() {
139
+          ?>
140 140
 			<h2 class="title"><?php esc_html_e( 'Import and publish accommodation', 'lsx-wetu-importer' ); ?></h2>
141 141
 			<p class="excerpt"><?php esc_html_e( 'All accommodations connnected to your tours have been imported as drafts. Review the imported accommodations, sync selected data and publish.', 'lsx-wetu-importer' ); ?></p>
142 142
 			<p><a href="<?php echo esc_attr( admin_url( 'admin.php' ) . '?page=lsx-wetu-importer&tab=accommodation' ); ?>" class="button button-primary"><?php esc_html_e( 'Sync accommodation', 'lsx-wetu-importer' ); ?></a></p>
@@ -150,14 +150,14 @@  discard block
 block discarded – undo
150 150
 				</ul>
151 151
 			</p>			
152 152
 		<?php
153
-	}
154
-	/**
155
-	 * Outputs the Destination Block.
156
-	 *
157
-	 * @return void
158
-	 */
159
-	public function destination_block() {
160
-		?>
153
+     }
154
+     /**
155
+      * Outputs the Destination Block.
156
+      *
157
+      * @return void
158
+      */
159
+     public function destination_block() {
160
+          ?>
161 161
 			<h2 class="title"><?php esc_html_e( 'Import and publish destinations', 'lsx-wetu-importer' ); ?></h2>
162 162
 			<p class="excerpt"><?php esc_html_e( 'All destinations and regions connnected to your tours & accommodations have been imported as drafts. Review the imported accommodations, sync selected data and publish.', 'lsx-wetu-importer' ); ?></p>
163 163
 			<p><a href="<?php echo esc_attr( admin_url( 'admin.php' ) . '?page=lsx-wetu-importer&tab=destination' ); ?>" class="button button-primary"><?php esc_html_e( 'Sync destinations', 'lsx-wetu-importer' ); ?></a></p>
@@ -170,16 +170,16 @@  discard block
 block discarded – undo
170 170
 				</ul>
171 171
 			</p>
172 172
 		<?php
173
-	}
174
-	/**
175
-	 * Outputs the last welcome block
176
-	 *
177
-	 * @return void
178
-	 */
179
-	public function end_block() {
180
-		?>
173
+     }
174
+     /**
175
+      * Outputs the last welcome block
176
+      *
177
+      * @return void
178
+      */
179
+     public function end_block() {
180
+          ?>
181 181
 			<h2 class="title"><?php esc_html_e( 'Done! Check out your imported content', 'lsx-wetu-importer' ); ?></h2>
182 182
 			<p><?php esc_html_e( 'If you’ve updated your content on Wetu then you can return to these steps at any stage to import and re-sync any updates', 'lsx-wetu-importer' ); ?></p>
183 183
 		<?php
184
-	}
184
+     }
185 185
 }
Please login to merge, or discard this patch.
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.
classes/class-lsx-wetu-importer-post-columns.php 1 patch
Indentation   +95 added lines, -95 removed lines patch added patch discarded remove patch
@@ -14,109 +14,109 @@  discard block
 block discarded – undo
14 14
  */
15 15
 class LSX_WETU_Importer_Post_Columns {
16 16
 
17
-	/**
18
-	 * Holds instance of the class
19
-	 *
20
-	 * @var object
21
-	 */
22
-	private static $instance;
17
+     /**
18
+      * Holds instance of the class
19
+      *
20
+      * @var object
21
+      */
22
+     private static $instance;
23 23
 
24
-	/**
25
-	 * Initialize the plugin by setting localization, filters, and administration functions.
26
-	 *
27
-	 * @since 1.0.0
28
-	 *
29
-	 * @access private
30
-	 */
31
-	public function __construct() {
32
-		add_filter( 'manage_tour_posts_columns', array( $this, 'register_tour_columns' ) );
33
-		add_action( 'manage_tour_posts_custom_column', array( $this, 'output_tour_ref_column' ), 10, 2 );
24
+     /**
25
+      * Initialize the plugin by setting localization, filters, and administration functions.
26
+      *
27
+      * @since 1.0.0
28
+      *
29
+      * @access private
30
+      */
31
+     public function __construct() {
32
+          add_filter( 'manage_tour_posts_columns', array( $this, 'register_tour_columns' ) );
33
+          add_action( 'manage_tour_posts_custom_column', array( $this, 'output_tour_ref_column' ), 10, 2 );
34 34
 
35
-		// Sortables Columns, sorting needs to be fixed
36
-		// add_filter( 'manage_edit-tour_sortable_columns', array( $this, 'register_sortable_columns' ) );
37
-		// add_action( 'pre_get_posts', array( $this, 'columns_posts_orderby' ) );
38
-	}
35
+          // Sortables Columns, sorting needs to be fixed
36
+          // add_filter( 'manage_edit-tour_sortable_columns', array( $this, 'register_sortable_columns' ) );
37
+          // add_action( 'pre_get_posts', array( $this, 'columns_posts_orderby' ) );
38
+     }
39 39
 
40
-	/**
41
-	 * Return an instance of this class.
42
-	 *
43
-	 * @return  object
44
-	 */
45
-	public static function get_instance() {
46
-		// If the single instance hasn't been set, set it now.
47
-		if ( ! isset( self::$instance ) ) {
48
-			self::$instance = new self();
49
-		}
50
-		return self::$instance;
51
-	}
40
+     /**
41
+      * Return an instance of this class.
42
+      *
43
+      * @return  object
44
+      */
45
+     public static function get_instance() {
46
+          // If the single instance hasn't been set, set it now.
47
+          if ( ! isset( self::$instance ) ) {
48
+               self::$instance = new self();
49
+          }
50
+          return self::$instance;
51
+     }
52 52
 
53
-	/**
54
-	 * Display the importer welcome screen
55
-	 */
56
-	public function display_page() {
53
+     /**
54
+      * Display the importer welcome screen
55
+      */
56
+     public function display_page() {
57 57
 
58
-	}
58
+     }
59 59
 
60
-	/**
61
-	 * Registers the tour ref column
62
-	 *
63
-	 * @param array $columns
64
-	 * @return array
65
-	 */
66
-	public function register_tour_columns( $columns ) {
67
-		$new_columns = array(
68
-			'cb'       => $columns['cb'],
69
-			'title'    => $columns['title'],
70
-			'wetu_ref' => __( 'Ref', 'lsx-wetu-importer' ),
71
-		);
72
-		unset( $columns['cb'] );
73
-		unset( $columns['title'] );
74
-		foreach ( $columns as $column_key => $column_label ) {
75
-			$new_columns[ $column_key ] = $column_label;
76
-		}
77
-		$columns = $new_columns;
78
-		return $columns;
79
-	}
60
+     /**
61
+      * Registers the tour ref column
62
+      *
63
+      * @param array $columns
64
+      * @return array
65
+      */
66
+     public function register_tour_columns( $columns ) {
67
+          $new_columns = array(
68
+               'cb'       => $columns['cb'],
69
+               'title'    => $columns['title'],
70
+               'wetu_ref' => __( 'Ref', 'lsx-wetu-importer' ),
71
+          );
72
+          unset( $columns['cb'] );
73
+          unset( $columns['title'] );
74
+          foreach ( $columns as $column_key => $column_label ) {
75
+               $new_columns[ $column_key ] = $column_label;
76
+          }
77
+          $columns = $new_columns;
78
+          return $columns;
79
+     }
80 80
 
81
-	/**
82
-	 * Outputs the tour reference column
83
-	 *
84
-	 * @param string $column
85
-	 * @param string $post_id
86
-	 * @return void
87
-	 */
88
-	public function output_tour_ref_column( $column, $post_id ) {
89
-		if ( 'wetu_ref' === $column ) {
90
-			echo esc_attr( get_post_meta( $post_id, 'lsx_wetu_ref', true ) );
91
-		}
92
-	}
81
+     /**
82
+      * Outputs the tour reference column
83
+      *
84
+      * @param string $column
85
+      * @param string $post_id
86
+      * @return void
87
+      */
88
+     public function output_tour_ref_column( $column, $post_id ) {
89
+          if ( 'wetu_ref' === $column ) {
90
+               echo esc_attr( get_post_meta( $post_id, 'lsx_wetu_ref', true ) );
91
+          }
92
+     }
93 93
 
94
-	/**
95
-	 * Register the columns that will be sortable
96
-	 *
97
-	 * @param array $columns
98
-	 * @return array
99
-	 */
100
-	public function register_sortable_columns( $columns = array() ) {
101
-		$columns['wetu_ref'] = 'price_per_month';
102
-		return $columns;
103
-	}
94
+     /**
95
+      * Register the columns that will be sortable
96
+      *
97
+      * @param array $columns
98
+      * @return array
99
+      */
100
+     public function register_sortable_columns( $columns = array() ) {
101
+          $columns['wetu_ref'] = 'price_per_month';
102
+          return $columns;
103
+     }
104 104
 
105
-	/**
106
-	 * Sort the columns
107
-	 *
108
-	 * @param object $query WP_Query()
109
-	 * @return void
110
-	 */
111
-	public function columns_posts_orderby( $query ) {
112
-		if ( ! is_admin() || ! $query->is_main_query() ) {
113
-			return;
114
-		}
115
-		if ( 'wetu_ref' === $query->get( 'orderby' ) ) {
116
-			$query->set( 'orderby', 'meta_value' );
117
-			$query->set( 'meta_key', 'lsx_wetu_reference' );
118
-		}
119
-		/*if ( $query->is_search() && 'tour' === $query->get( 'post_type' ) ) {
105
+     /**
106
+      * Sort the columns
107
+      *
108
+      * @param object $query WP_Query()
109
+      * @return void
110
+      */
111
+     public function columns_posts_orderby( $query ) {
112
+          if ( ! is_admin() || ! $query->is_main_query() ) {
113
+               return;
114
+          }
115
+          if ( 'wetu_ref' === $query->get( 'orderby' ) ) {
116
+               $query->set( 'orderby', 'meta_value' );
117
+               $query->set( 'meta_key', 'lsx_wetu_reference' );
118
+          }
119
+          /*if ( $query->is_search() && 'tour' === $query->get( 'post_type' ) ) {
120 120
 			$meta_query = array(
121 121
 				'relation' => 'OR',
122 122
 				array(
@@ -127,5 +127,5 @@  discard block
 block discarded – undo
127 127
 			);
128 128
 			$query->set( 'meta_query', $meta_query );
129 129
 		}*/
130
-	}
130
+     }
131 131
 }
Please login to merge, or discard this patch.
includes/helpers.php 1 patch
Indentation   +55 added lines, -55 removed lines patch added patch discarded remove patch
@@ -15,18 +15,18 @@  discard block
 block discarded – undo
15 15
  * @return array
16 16
  */
17 17
 function lsx_wetu_get_options() {
18
-	$options = get_option( 'lsx_wetu_importer_settings', array() );
19
-	if ( empty( $options ) ) {
20
-		// Check for any previous options.
21
-		$temp_options = get_option( '_lsx-to_settings', false );
22
-		if ( false !== $temp_options && isset( $temp_options['lsx-wetu-importer'] ) && ! empty( $temp_options['lsx-wetu-importer'] ) ) {
23
-			$options = $temp_options['lsx-wetu-importer'];
24
-		}
25
-		if ( false !== $temp_options && isset( $temp_options['api']['wetu_api_key'] ) && '' !== $temp_options['api']['wetu_api_key'] ) {
26
-			$options['api_key'] = $temp_options['api']['wetu_api_key'];
27
-		}
28
-	}
29
-	return $options;
18
+     $options = get_option( 'lsx_wetu_importer_settings', array() );
19
+     if ( empty( $options ) ) {
20
+          // Check for any previous options.
21
+          $temp_options = get_option( '_lsx-to_settings', false );
22
+          if ( false !== $temp_options && isset( $temp_options['lsx-wetu-importer'] ) && ! empty( $temp_options['lsx-wetu-importer'] ) ) {
23
+               $options = $temp_options['lsx-wetu-importer'];
24
+          }
25
+          if ( false !== $temp_options && isset( $temp_options['api']['wetu_api_key'] ) && '' !== $temp_options['api']['wetu_api_key'] ) {
26
+               $options['api_key'] = $temp_options['api']['wetu_api_key'];
27
+          }
28
+     }
29
+     return $options;
30 30
 }
31 31
 
32 32
 /**
@@ -37,38 +37,38 @@  discard block
 block discarded – undo
37 37
  * @return void
38 38
  */
39 39
 function lsx_wetu_get_post_count( $post_type = '', $post_status = '' ) {
40
-	global $wpdb;
41
-	$count = '0';
42
-	if ( '' !== $post_type && '' !== $post_status ) {
43
-		$result = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(`ID`) FROM $wpdb->posts WHERE `post_status` = '%s' AND `post_type` = '%s'", array( trim( $post_status ), $post_type ) ) );
44
-		if ( false !== $result && '' !== $result ) {
45
-			if ( 'tour' === $post_type ) {
46
-				$wetu_tours = get_transient( 'lsx_ti_tours' );
47
-				if ( false !== $wetu_tours ) {
48
-					$results = $wpdb->get_results( $wpdb->prepare( "SELECT `ID` FROM $wpdb->posts WHERE `post_status` = '%s' AND `post_type` = '%s'", array( trim( $post_status ), $post_type ) ) );
49
-					$result_count = 0;
50
-					$tour_wetu_ids = array();
51
-					foreach ( $wetu_tours as $wetu_tour ) {
52
-						$tour_wetu_ids[] = $wetu_tour['identifier'];
53
-					}
40
+     global $wpdb;
41
+     $count = '0';
42
+     if ( '' !== $post_type && '' !== $post_status ) {
43
+          $result = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(`ID`) FROM $wpdb->posts WHERE `post_status` = '%s' AND `post_type` = '%s'", array( trim( $post_status ), $post_type ) ) );
44
+          if ( false !== $result && '' !== $result ) {
45
+               if ( 'tour' === $post_type ) {
46
+                    $wetu_tours = get_transient( 'lsx_ti_tours' );
47
+                    if ( false !== $wetu_tours ) {
48
+                         $results = $wpdb->get_results( $wpdb->prepare( "SELECT `ID` FROM $wpdb->posts WHERE `post_status` = '%s' AND `post_type` = '%s'", array( trim( $post_status ), $post_type ) ) );
49
+                         $result_count = 0;
50
+                         $tour_wetu_ids = array();
51
+                         foreach ( $wetu_tours as $wetu_tour ) {
52
+                              $tour_wetu_ids[] = $wetu_tour['identifier'];
53
+                         }
54 54
 
55
-					if ( ! empty( $results ) ) {
56
-						foreach ( $results as $tour ) {
57
-							$current_wetu_id = get_post_meta( $tour->ID, 'lsx_wetu_id', true );
58
-							if ( in_array( $current_wetu_id, $tour_wetu_ids ) ) {
59
-								$result_count++;
60
-							}
61
-						}
62
-					}
63
-					$result = $result_count;
64
-				} else {
65
-					$result = 0;
66
-				}
67
-			}
68
-			$count = $result;
69
-		}
70
-	}
71
-	return $count;
55
+                         if ( ! empty( $results ) ) {
56
+                              foreach ( $results as $tour ) {
57
+                                   $current_wetu_id = get_post_meta( $tour->ID, 'lsx_wetu_id', true );
58
+                                   if ( in_array( $current_wetu_id, $tour_wetu_ids ) ) {
59
+                                        $result_count++;
60
+                                   }
61
+                              }
62
+                         }
63
+                         $result = $result_count;
64
+                    } else {
65
+                         $result = 0;
66
+                    }
67
+               }
68
+               $count = $result;
69
+          }
70
+     }
71
+     return $count;
72 72
 }
73 73
 
74 74
 /**
@@ -78,12 +78,12 @@  discard block
 block discarded – undo
78 78
  * @return void
79 79
  */
80 80
 function lsx_wetu_get_queue_count( $post_type = '' ) {
81
-	$count = '0';
82
-	$queued_imports = get_option( 'lsx_wetu_importer_que', array() );
83
-	if ( isset( $queued_imports[ $post_type ] ) ) {
84
-		$count = count( $queued_imports[ $post_type ] );
85
-	}
86
-	return $count;
81
+     $count = '0';
82
+     $queued_imports = get_option( 'lsx_wetu_importer_que', array() );
83
+     if ( isset( $queued_imports[ $post_type ] ) ) {
84
+          $count = count( $queued_imports[ $post_type ] );
85
+     }
86
+     return $count;
87 87
 }
88 88
 
89 89
 /**
@@ -93,10 +93,10 @@  discard block
 block discarded – undo
93 93
  * @return void
94 94
  */
95 95
 function lsx_wetu_get_tour_count( $post_type = '' ) {
96
-	$count = '0';
97
-	$wetu_tours = get_transient( 'lsx_ti_tours', array() );
98
-	if ( ! empty( $wetu_tours ) ) {
99
-		$count = count( $wetu_tours );
100
-	}
101
-	return $count;
96
+     $count = '0';
97
+     $wetu_tours = get_transient( 'lsx_ti_tours', array() );
98
+     if ( ! empty( $wetu_tours ) ) {
99
+          $count = count( $wetu_tours );
100
+     }
101
+     return $count;
102 102
 }
Please login to merge, or discard this patch.
classes/class-lsx-wetu-importer.php 1 patch
Indentation   +1274 added lines, -1274 removed lines patch added patch discarded remove patch
@@ -13,467 +13,467 @@  discard block
 block discarded – undo
13 13
  */
14 14
 class LSX_WETU_Importer {
15 15
 
16
-	/**
17
-	 * Holds class instance
18
-	 *
19
-	 * @since 1.0.0
20
-	 *
21
-	 * @var      object|Module_Template
22
-	 */
23
-	protected static $instance = null;
24
-
25
-	/**
26
-	 * The slug for this plugin
27
-	 *
28
-	 * @since 0.0.1
29
-	 *
30
-	 * @var      string
31
-	 */
32
-	public $plugin_slug = 'lsx-wetu-importer';
33
-
34
-	/**
35
-	 * The url to list items from WETU
36
-	 *
37
-	 * @since 0.0.1
38
-	 *
39
-	 * @var      string
40
-	 */
41
-	public $tab_slug = 'default';
42
-
43
-	/**
44
-	 * The options for the plugin
45
-	 *
46
-	 * @since 0.0.1
47
-	 *
48
-	 * @var      string
49
-	 */
50
-	public $options = false;
51
-
52
-	/**
53
-	 * The url to import images from WETU
54
-	 *
55
-	 * @since 0.0.1
56
-	 *
57
-	 * @var      string
58
-	 */
59
-	public $import_scaling_url = false;
60
-
61
-	/**
62
-	 * scale the images on import or not
63
-	 *
64
-	 * @since 0.0.1
65
-	 *
66
-	 * @var      boolean
67
-	 */
68
-	public $scale_images = false;
69
-
70
-	/**
71
-	 * The WETU API Key
72
-	 */
73
-	public $api_key = false;
74
-
75
-	/**
76
-	 * The post types this works with.
77
-	 */
78
-	public $post_types = array();
79
-
80
-	/**
81
-	 * The previously attached images
82
-	 *
83
-	 * @var      array()
84
-	 */
85
-	public $found_attachments = array();
86
-
87
-	/**
88
-	 * The gallery ids for the found attachements
89
-	 *
90
-	 * @var      array()
91
-	 */
92
-	public $gallery_meta = array();
93
-
94
-	/**
95
-	 * The post ids to clean up (make sure the connected items are only singular)
96
-	 *
97
-	 * @var      array()
98
-	 */
99
-	public $cleanup_posts = array();
100
-
101
-	/**
102
-	 * A post => parent relationship array.
103
-	 *
104
-	 * @var      array()
105
-	 */
106
-	public $relation_meta = array();
107
-
108
-	/**
109
-	 * Image Limit
110
-	 *
111
-	 * @var      int
112
-	 */
113
-	public $image_limit = false;
114
-
115
-	/**
116
-	 * the featured image id
117
-	 *
118
-	 * @var      int
119
-	 */
120
-	public $featured_image = false;
121
-
122
-	/**
123
-	 * the banner image
124
-	 *
125
-	 * @var      int
126
-	 */
127
-	public $banner_image = false;
128
-
129
-	/**
130
-	 * Holds the current import to display
131
-	 *
132
-	 * @var      int
133
-	 */
134
-	public $current_importer = false;
135
-
136
-	/**
137
-	 * if you ran a tour import then you will have accommodation and destination queued to sync as well.
138
-	 *
139
-	 * @var      int
140
-	 */
141
-	public $queued_imports = array();
142
-
143
-	/**
144
-	 * An Array to hold the items to queue
145
-	 *
146
-	 * @var      int
147
-	 */
148
-	public $import_queue = array();
149
-
150
-	/**
151
-	 * Holds the current post that is being imported. Use to check the content and excerpt.
152
-	 *
153
-	 * @var      int
154
-	 */
155
-	public $current_post = false;
156
-
157
-	/**
158
-	 * Holds the accommodation settings
159
-	 *
160
-	 * @var      int
161
-	 */
162
-	public $accommodation_settings = false;
163
-
164
-	/**
165
-	 * Holds the tour settings
166
-	 *
167
-	 * @var      int
168
-	 */
169
-	public $tour_settings = false;
170
-
171
-	/**
172
-	 * Holds the destination settings
173
-	 *
174
-	 * @var      int
175
-	 */
176
-	public $destination_settings = false;
177
-
178
-	/**
179
-	 * Hold the flag to let you know if the debug is enabled or not.
180
-	 *
181
-	 * @var      int
182
-	 */
183
-	public $debug_enabled = false;
184
-
185
-	/**
186
-	 * Hold the post columns object
187
-	 *
188
-	 * @var object LSX_WETU_Importer_Post_Columns()
189
-	 */
190
-	public $post_columns = false;
191
-
192
-	/**
193
-	 * Initialize the plugin by setting localization, filters, and administration functions.
194
-	 *
195
-	 * @since 1.0.0
196
-	 *
197
-	 * @access private
198
-	 */
199
-	public function __construct() {
200
-		add_action( 'admin_init', array( $this, 'compatible_version_check' ) );
201
-		require_once LSX_WETU_IMPORTER_PATH . 'includes/helpers.php';
202
-
203
-		// Don't run anything else in the plugin, if we're on an incompatible PHP version.
204
-		if ( ! self::compatible_version() ) {
205
-			return;
206
-		}
207
-
208
-		$this->set_variables();
209
-
210
-		add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
211
-		add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ), 11 );
212
-		add_action( 'admin_menu', array( $this, 'register_importer_page' ), 20 );
213
-
214
-		require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-welcome.php';
215
-		require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-accommodation.php';
216
-		require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-destination.php';
217
-		require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-tours.php';
218
-		require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-settings.php';
219
-		if ( isset( $this->options ) && isset( $this->options['enable_tour_ref_column'] ) && '' !== $this->options['enable_tour_ref_column'] ) {
220
-			require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-post-columns.php';
221
-			$this->post_columns = LSX_WETU_Importer_Post_Columns::get_instance();
222
-		}
223
-
224
-		add_action( 'init', array( $this, 'load_class' ) );
225
-
226
-		if ( 'default' !== $this->tab_slug ) {
227
-			add_action( 'wp_ajax_lsx_tour_importer', array( $this, 'process_ajax_search' ) );
228
-			add_action( 'wp_ajax_nopriv_lsx_tour_importer', array( $this, 'process_ajax_search' ) );
229
-
230
-			add_action( 'wp_ajax_lsx_import_items', array( $this, 'process_ajax_import' ) );
231
-			add_action( 'wp_ajax_nopriv_lsx_import_items', array( $this, 'process_ajax_import' ) );
232
-		}
233
-
234
-		//delete_transient( 'lsx_ti_tours' );
235
-	}
236
-
237
-	// ACTIVATION FUNCTIONS.
238
-
239
-	/**
240
-	 * Load the plugin text domain for translation.
241
-	 *
242
-	 * @since 1.0.0
243
-	 */
244
-	public function load_plugin_textdomain() {
245
-		load_plugin_textdomain( 'lsx-wetu-importer', false, basename( LSX_WETU_IMPORTER_PATH ) . '/languages' );
246
-	}
247
-
248
-	/**
249
-	 * Sets the variables used throughout the plugin.
250
-	 */
251
-	public function set_variables() {
252
-		$this->post_types = array( 'accommodation', 'destination', 'tour' );
253
-		$options = lsx_wetu_get_options();
254
-
255
-		// Set the options.
256
-		$this->options = $options;
257
-
258
-		$temp_options = get_option( '_lsx-to_settings', false );
259
-		if ( false !== $temp_options ) {
260
-			$this->accommodation_settings = $temp_options['accommodation'];
261
-			$this->tour_settings          = $temp_options['tour'];
262
-			$this->destination_settings   = $temp_options['destination'];
263
-		}
264
-
265
-		$this->api_key = false;
266
-
267
-		if ( ! defined( 'WETU_API_KEY' ) ) {
268
-			if ( isset( $options['api_key'] ) && '' !== $options['api_key'] ) {
269
-				$this->api_key = $options['api_key'];
270
-			}
271
-		} else {
272
-			$this->api_key = WETU_API_KEY;
273
-		}
274
-
275
-		// Set the tab slug.
276
-		// @codingStandardsIgnoreLine
277
-		if ( isset( $_GET['tab'] ) || ( defined( 'DOING_AJAX' ) && isset( $_POST['type'] ) ) ) {
278
-			if ( isset( $_GET['tab'] ) ) {
279
-				$this->tab_slug = sanitize_text_field( $_GET['tab'] );
280
-			} else {
281
-				// @codingStandardsIgnoreLine
282
-				$this->tab_slug = sanitize_text_field( $_POST['type'] );
283
-			}
284
-		}
285
-
286
-		// If any tours were queued.
287
-		$this->queued_imports = get_option( 'lsx_wetu_importer_que', array() );
288
-
289
-		// Set the scaling options.
290
-		if ( isset( $this->options ) && isset( $this->options['image_scaling'] ) ) {
291
-			$this->scale_images = true;
292
-
293
-			$width = '1024';
294
-			if ( isset( $this->options['width'] ) && '' !== $this->options['width'] ) {
295
-				$width = $this->options['width'];
296
-			}
297
-
298
-			$height = '768';
299
-			if ( isset( $this->options['height'] ) && '' !== $this->options['height'] ) {
300
-				$height = $this->options['height'];
301
-			}
302
-
303
-			$cropping = 'w';
304
-			if ( isset( $this->options['cropping'] ) && '' !== $this->options['cropping'] ) {
305
-				$cropping = $this->options['cropping'];
306
-			}
307
-
308
-			$this->image_scaling_url = 'https://wetu.com/ImageHandler/' . $cropping . $width . 'x' . $height . '/';
309
-		}
310
-
311
-		if ( isset( $this->options ) && isset( $this->options['image_limit'] ) && '' !== $this->options['image_limit'] ) {
312
-			$this->image_limit = $this->options['image_limit'];
313
-		}
314
-	}
315
-
316
-	// COMPATABILITY FUNCTIONS.
317
-
318
-	/**
319
-	 * On plugin activation
320
-	 *
321
-	 * @since 1.0.0
322
-	 */
323
-	public static function register_activation_hook() {
324
-		self::compatible_version_check_on_activation();
325
-	}
326
-
327
-	/**
328
-	 * Check if the PHP version is compatible.
329
-	 *
330
-	 * @since 1.0.0
331
-	 */
332
-	public static function compatible_version() {
333
-		if ( version_compare( PHP_VERSION, '5.6', '<' ) ) {
334
-			return false;
335
-		}
336
-
337
-		return true;
338
-	}
339
-
340
-	/**
341
-	 * The backup sanity check, in case the plugin is activated in a weird way,
342
-	 * or the versions change after activation.
343
-	 *
344
-	 * @since 1.0.0
345
-	 */
346
-	public function compatible_version_check() {
347
-		if ( ! self::compatible_version() ) {
348
-			if ( is_plugin_active( plugin_basename( LSX_WETU_IMPORTER_CORE ) ) ) {
349
-				deactivate_plugins( plugin_basename( LSX_WETU_IMPORTER_CORE ) );
350
-				add_action( 'admin_notices', array( $this, 'compatible_version_notice' ) );
351
-
352
-				if ( isset( $_GET['activate'] ) ) {
353
-					unset( $_GET['activate'] );
354
-				}
355
-			}
356
-		}
357
-	}
358
-
359
-	/**
360
-	 * Display the notice related with the older version from PHP.
361
-	 *
362
-	 * @since 1.0.0
363
-	 */
364
-	public function compatible_version_notice() {
365
-		$class = 'notice notice-error';
366
-		$message = esc_html__( 'LSX Importer for Wetu Plugin requires PHP 5.6 or higher.', 'lsx-wetu-importer' );
367
-		printf( '<div class="%1$s"><p>%2$s</p></div>', esc_html( $class ), esc_html( $message ) );
368
-	}
369
-
370
-	/**
371
-	 * The primary sanity check, automatically disable the plugin on activation if it doesn't
372
-	 * meet minimum requirements.
373
-	 *
374
-	 * @since 1.0.0
375
-	 */
376
-	public static function compatible_version_check_on_activation() {
377
-		if ( ! self::compatible_version() ) {
378
-			deactivate_plugins( plugin_basename( LSX_WETU_IMPORTER_CORE ) );
379
-			wp_die( esc_html__( 'LSX Importer for Wetu Plugin requires PHP 5.6 or higher.', 'lsx-wetu-importer' ) );
380
-		}
381
-	}
382
-
383
-	// DISPLAY FUNCTIONS.
384
-
385
-	/**
386
-	 * Load the importer class you want to use
387
-	 */
388
-	public function load_class() {
389
-		switch ( $this->tab_slug ) {
390
-			case 'accommodation':
391
-				$this->current_importer = new LSX_WETU_Importer_Accommodation();
392
-				break;
393
-
394
-			case 'destination':
395
-				$this->current_importer = new LSX_WETU_Importer_Destination();
396
-				break;
397
-
398
-			case 'tour':
399
-				$this->current_importer = new LSX_WETU_Importer_Tours();
400
-				break;
401
-
402
-			case 'settings':
403
-				$this->current_importer = LSX_WETU_Importer_Settings::get_instance();
404
-				break;
405
-
406
-			default:
407
-				$this->current_importer = LSX_WETU_Importer_Welcome::get_instance();
408
-				break;
409
-		}
410
-	}
411
-
412
-	/**
413
-	 * Registers the admin page which will house the importer form.
414
-	 */
415
-	public function register_importer_page() {
416
-		add_submenu_page( 'tour-operator', esc_html__( 'Importer', 'tour-operator' ), esc_html__( 'Importer', 'tour-operator' ), 'manage_options', 'lsx-wetu-importer', array( $this, 'display_page' ) );
417
-	}
418
-
419
-	/**
420
-	 * Enqueue the JS needed to contact wetu and return your result.
421
-	 */
422
-	public function admin_scripts() {
423
-		if ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) {
424
-			$min = '';
425
-		} else {
426
-			$min = '.min';
427
-		}
428
-
429
-		$min = '';
430
-
431
-		if ( is_admin() && isset( $_GET['page'] ) && $this->plugin_slug === $_GET['page'] ) {
432
-
433
-			//wp_enqueue_style( 'datatables', LSX_WETU_IMPORTER_URL . 'assets/css/datatables' . $min . '.css', LSX_WETU_IMPORTER_VER, true );
434
-			wp_enqueue_style( 'lsx-wetu-importer-style', LSX_WETU_IMPORTER_URL . 'assets/css/lsx-wetu-importer.css', LSX_WETU_IMPORTER_VER, true );
435
-
436
-			if ( isset( $_GET['tab'] ) ) {
437
-				wp_enqueue_script( 'datatables', LSX_WETU_IMPORTER_URL . 'assets/js/datatables' . $min . '.js', array( 'jquery' ), LSX_WETU_IMPORTER_VER, true );
438
-				wp_enqueue_script( 'lsx-wetu-importers-script', LSX_WETU_IMPORTER_URL . 'assets/js/lsx-wetu-importer' . $min . '.js', array( 'jquery', 'datatables' ), LSX_WETU_IMPORTER_VER, true );
439
-
440
-				wp_localize_script(
441
-					'lsx-wetu-importers-script',
442
-					'lsx_tour_importer_params',
443
-					array(
444
-						'ajax_url' => admin_url( 'admin-ajax.php' ),
445
-						'ajax_nonce' => wp_create_nonce( 'lsx_wetu_ajax_action' ),
446
-					)
447
-				);
448
-			}
449
-		}
450
-	}
451
-
452
-	/**
453
-	 * Display the importer administration screen
454
-	 */
455
-	public function display_page() {
456
-		?>
16
+     /**
17
+      * Holds class instance
18
+      *
19
+      * @since 1.0.0
20
+      *
21
+      * @var      object|Module_Template
22
+      */
23
+     protected static $instance = null;
24
+
25
+     /**
26
+      * The slug for this plugin
27
+      *
28
+      * @since 0.0.1
29
+      *
30
+      * @var      string
31
+      */
32
+     public $plugin_slug = 'lsx-wetu-importer';
33
+
34
+     /**
35
+      * The url to list items from WETU
36
+      *
37
+      * @since 0.0.1
38
+      *
39
+      * @var      string
40
+      */
41
+     public $tab_slug = 'default';
42
+
43
+     /**
44
+      * The options for the plugin
45
+      *
46
+      * @since 0.0.1
47
+      *
48
+      * @var      string
49
+      */
50
+     public $options = false;
51
+
52
+     /**
53
+      * The url to import images from WETU
54
+      *
55
+      * @since 0.0.1
56
+      *
57
+      * @var      string
58
+      */
59
+     public $import_scaling_url = false;
60
+
61
+     /**
62
+      * scale the images on import or not
63
+      *
64
+      * @since 0.0.1
65
+      *
66
+      * @var      boolean
67
+      */
68
+     public $scale_images = false;
69
+
70
+     /**
71
+      * The WETU API Key
72
+      */
73
+     public $api_key = false;
74
+
75
+     /**
76
+      * The post types this works with.
77
+      */
78
+     public $post_types = array();
79
+
80
+     /**
81
+      * The previously attached images
82
+      *
83
+      * @var      array()
84
+      */
85
+     public $found_attachments = array();
86
+
87
+     /**
88
+      * The gallery ids for the found attachements
89
+      *
90
+      * @var      array()
91
+      */
92
+     public $gallery_meta = array();
93
+
94
+     /**
95
+      * The post ids to clean up (make sure the connected items are only singular)
96
+      *
97
+      * @var      array()
98
+      */
99
+     public $cleanup_posts = array();
100
+
101
+     /**
102
+      * A post => parent relationship array.
103
+      *
104
+      * @var      array()
105
+      */
106
+     public $relation_meta = array();
107
+
108
+     /**
109
+      * Image Limit
110
+      *
111
+      * @var      int
112
+      */
113
+     public $image_limit = false;
114
+
115
+     /**
116
+      * the featured image id
117
+      *
118
+      * @var      int
119
+      */
120
+     public $featured_image = false;
121
+
122
+     /**
123
+      * the banner image
124
+      *
125
+      * @var      int
126
+      */
127
+     public $banner_image = false;
128
+
129
+     /**
130
+      * Holds the current import to display
131
+      *
132
+      * @var      int
133
+      */
134
+     public $current_importer = false;
135
+
136
+     /**
137
+      * if you ran a tour import then you will have accommodation and destination queued to sync as well.
138
+      *
139
+      * @var      int
140
+      */
141
+     public $queued_imports = array();
142
+
143
+     /**
144
+      * An Array to hold the items to queue
145
+      *
146
+      * @var      int
147
+      */
148
+     public $import_queue = array();
149
+
150
+     /**
151
+      * Holds the current post that is being imported. Use to check the content and excerpt.
152
+      *
153
+      * @var      int
154
+      */
155
+     public $current_post = false;
156
+
157
+     /**
158
+      * Holds the accommodation settings
159
+      *
160
+      * @var      int
161
+      */
162
+     public $accommodation_settings = false;
163
+
164
+     /**
165
+      * Holds the tour settings
166
+      *
167
+      * @var      int
168
+      */
169
+     public $tour_settings = false;
170
+
171
+     /**
172
+      * Holds the destination settings
173
+      *
174
+      * @var      int
175
+      */
176
+     public $destination_settings = false;
177
+
178
+     /**
179
+      * Hold the flag to let you know if the debug is enabled or not.
180
+      *
181
+      * @var      int
182
+      */
183
+     public $debug_enabled = false;
184
+
185
+     /**
186
+      * Hold the post columns object
187
+      *
188
+      * @var object LSX_WETU_Importer_Post_Columns()
189
+      */
190
+     public $post_columns = false;
191
+
192
+     /**
193
+      * Initialize the plugin by setting localization, filters, and administration functions.
194
+      *
195
+      * @since 1.0.0
196
+      *
197
+      * @access private
198
+      */
199
+     public function __construct() {
200
+          add_action( 'admin_init', array( $this, 'compatible_version_check' ) );
201
+          require_once LSX_WETU_IMPORTER_PATH . 'includes/helpers.php';
202
+
203
+          // Don't run anything else in the plugin, if we're on an incompatible PHP version.
204
+          if ( ! self::compatible_version() ) {
205
+               return;
206
+          }
207
+
208
+          $this->set_variables();
209
+
210
+          add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
211
+          add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ), 11 );
212
+          add_action( 'admin_menu', array( $this, 'register_importer_page' ), 20 );
213
+
214
+          require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-welcome.php';
215
+          require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-accommodation.php';
216
+          require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-destination.php';
217
+          require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-tours.php';
218
+          require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-settings.php';
219
+          if ( isset( $this->options ) && isset( $this->options['enable_tour_ref_column'] ) && '' !== $this->options['enable_tour_ref_column'] ) {
220
+               require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-post-columns.php';
221
+               $this->post_columns = LSX_WETU_Importer_Post_Columns::get_instance();
222
+          }
223
+
224
+          add_action( 'init', array( $this, 'load_class' ) );
225
+
226
+          if ( 'default' !== $this->tab_slug ) {
227
+               add_action( 'wp_ajax_lsx_tour_importer', array( $this, 'process_ajax_search' ) );
228
+               add_action( 'wp_ajax_nopriv_lsx_tour_importer', array( $this, 'process_ajax_search' ) );
229
+
230
+               add_action( 'wp_ajax_lsx_import_items', array( $this, 'process_ajax_import' ) );
231
+               add_action( 'wp_ajax_nopriv_lsx_import_items', array( $this, 'process_ajax_import' ) );
232
+          }
233
+
234
+          //delete_transient( 'lsx_ti_tours' );
235
+     }
236
+
237
+     // ACTIVATION FUNCTIONS.
238
+
239
+     /**
240
+      * Load the plugin text domain for translation.
241
+      *
242
+      * @since 1.0.0
243
+      */
244
+     public function load_plugin_textdomain() {
245
+          load_plugin_textdomain( 'lsx-wetu-importer', false, basename( LSX_WETU_IMPORTER_PATH ) . '/languages' );
246
+     }
247
+
248
+     /**
249
+      * Sets the variables used throughout the plugin.
250
+      */
251
+     public function set_variables() {
252
+          $this->post_types = array( 'accommodation', 'destination', 'tour' );
253
+          $options = lsx_wetu_get_options();
254
+
255
+          // Set the options.
256
+          $this->options = $options;
257
+
258
+          $temp_options = get_option( '_lsx-to_settings', false );
259
+          if ( false !== $temp_options ) {
260
+               $this->accommodation_settings = $temp_options['accommodation'];
261
+               $this->tour_settings          = $temp_options['tour'];
262
+               $this->destination_settings   = $temp_options['destination'];
263
+          }
264
+
265
+          $this->api_key = false;
266
+
267
+          if ( ! defined( 'WETU_API_KEY' ) ) {
268
+               if ( isset( $options['api_key'] ) && '' !== $options['api_key'] ) {
269
+                    $this->api_key = $options['api_key'];
270
+               }
271
+          } else {
272
+               $this->api_key = WETU_API_KEY;
273
+          }
274
+
275
+          // Set the tab slug.
276
+          // @codingStandardsIgnoreLine
277
+          if ( isset( $_GET['tab'] ) || ( defined( 'DOING_AJAX' ) && isset( $_POST['type'] ) ) ) {
278
+               if ( isset( $_GET['tab'] ) ) {
279
+                    $this->tab_slug = sanitize_text_field( $_GET['tab'] );
280
+               } else {
281
+                    // @codingStandardsIgnoreLine
282
+                    $this->tab_slug = sanitize_text_field( $_POST['type'] );
283
+               }
284
+          }
285
+
286
+          // If any tours were queued.
287
+          $this->queued_imports = get_option( 'lsx_wetu_importer_que', array() );
288
+
289
+          // Set the scaling options.
290
+          if ( isset( $this->options ) && isset( $this->options['image_scaling'] ) ) {
291
+               $this->scale_images = true;
292
+
293
+               $width = '1024';
294
+               if ( isset( $this->options['width'] ) && '' !== $this->options['width'] ) {
295
+                    $width = $this->options['width'];
296
+               }
297
+
298
+               $height = '768';
299
+               if ( isset( $this->options['height'] ) && '' !== $this->options['height'] ) {
300
+                    $height = $this->options['height'];
301
+               }
302
+
303
+               $cropping = 'w';
304
+               if ( isset( $this->options['cropping'] ) && '' !== $this->options['cropping'] ) {
305
+                    $cropping = $this->options['cropping'];
306
+               }
307
+
308
+               $this->image_scaling_url = 'https://wetu.com/ImageHandler/' . $cropping . $width . 'x' . $height . '/';
309
+          }
310
+
311
+          if ( isset( $this->options ) && isset( $this->options['image_limit'] ) && '' !== $this->options['image_limit'] ) {
312
+               $this->image_limit = $this->options['image_limit'];
313
+          }
314
+     }
315
+
316
+     // COMPATABILITY FUNCTIONS.
317
+
318
+     /**
319
+      * On plugin activation
320
+      *
321
+      * @since 1.0.0
322
+      */
323
+     public static function register_activation_hook() {
324
+          self::compatible_version_check_on_activation();
325
+     }
326
+
327
+     /**
328
+      * Check if the PHP version is compatible.
329
+      *
330
+      * @since 1.0.0
331
+      */
332
+     public static function compatible_version() {
333
+          if ( version_compare( PHP_VERSION, '5.6', '<' ) ) {
334
+               return false;
335
+          }
336
+
337
+          return true;
338
+     }
339
+
340
+     /**
341
+      * The backup sanity check, in case the plugin is activated in a weird way,
342
+      * or the versions change after activation.
343
+      *
344
+      * @since 1.0.0
345
+      */
346
+     public function compatible_version_check() {
347
+          if ( ! self::compatible_version() ) {
348
+               if ( is_plugin_active( plugin_basename( LSX_WETU_IMPORTER_CORE ) ) ) {
349
+                    deactivate_plugins( plugin_basename( LSX_WETU_IMPORTER_CORE ) );
350
+                    add_action( 'admin_notices', array( $this, 'compatible_version_notice' ) );
351
+
352
+                    if ( isset( $_GET['activate'] ) ) {
353
+                         unset( $_GET['activate'] );
354
+                    }
355
+               }
356
+          }
357
+     }
358
+
359
+     /**
360
+      * Display the notice related with the older version from PHP.
361
+      *
362
+      * @since 1.0.0
363
+      */
364
+     public function compatible_version_notice() {
365
+          $class = 'notice notice-error';
366
+          $message = esc_html__( 'LSX Importer for Wetu Plugin requires PHP 5.6 or higher.', 'lsx-wetu-importer' );
367
+          printf( '<div class="%1$s"><p>%2$s</p></div>', esc_html( $class ), esc_html( $message ) );
368
+     }
369
+
370
+     /**
371
+      * The primary sanity check, automatically disable the plugin on activation if it doesn't
372
+      * meet minimum requirements.
373
+      *
374
+      * @since 1.0.0
375
+      */
376
+     public static function compatible_version_check_on_activation() {
377
+          if ( ! self::compatible_version() ) {
378
+               deactivate_plugins( plugin_basename( LSX_WETU_IMPORTER_CORE ) );
379
+               wp_die( esc_html__( 'LSX Importer for Wetu Plugin requires PHP 5.6 or higher.', 'lsx-wetu-importer' ) );
380
+          }
381
+     }
382
+
383
+     // DISPLAY FUNCTIONS.
384
+
385
+     /**
386
+      * Load the importer class you want to use
387
+      */
388
+     public function load_class() {
389
+          switch ( $this->tab_slug ) {
390
+               case 'accommodation':
391
+                    $this->current_importer = new LSX_WETU_Importer_Accommodation();
392
+                    break;
393
+
394
+               case 'destination':
395
+                    $this->current_importer = new LSX_WETU_Importer_Destination();
396
+                    break;
397
+
398
+               case 'tour':
399
+                    $this->current_importer = new LSX_WETU_Importer_Tours();
400
+                    break;
401
+
402
+               case 'settings':
403
+                    $this->current_importer = LSX_WETU_Importer_Settings::get_instance();
404
+                    break;
405
+
406
+               default:
407
+                    $this->current_importer = LSX_WETU_Importer_Welcome::get_instance();
408
+                    break;
409
+          }
410
+     }
411
+
412
+     /**
413
+      * Registers the admin page which will house the importer form.
414
+      */
415
+     public function register_importer_page() {
416
+          add_submenu_page( 'tour-operator', esc_html__( 'Importer', 'tour-operator' ), esc_html__( 'Importer', 'tour-operator' ), 'manage_options', 'lsx-wetu-importer', array( $this, 'display_page' ) );
417
+     }
418
+
419
+     /**
420
+      * Enqueue the JS needed to contact wetu and return your result.
421
+      */
422
+     public function admin_scripts() {
423
+          if ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) {
424
+               $min = '';
425
+          } else {
426
+               $min = '.min';
427
+          }
428
+
429
+          $min = '';
430
+
431
+          if ( is_admin() && isset( $_GET['page'] ) && $this->plugin_slug === $_GET['page'] ) {
432
+
433
+               //wp_enqueue_style( 'datatables', LSX_WETU_IMPORTER_URL . 'assets/css/datatables' . $min . '.css', LSX_WETU_IMPORTER_VER, true );
434
+               wp_enqueue_style( 'lsx-wetu-importer-style', LSX_WETU_IMPORTER_URL . 'assets/css/lsx-wetu-importer.css', LSX_WETU_IMPORTER_VER, true );
435
+
436
+               if ( isset( $_GET['tab'] ) ) {
437
+                    wp_enqueue_script( 'datatables', LSX_WETU_IMPORTER_URL . 'assets/js/datatables' . $min . '.js', array( 'jquery' ), LSX_WETU_IMPORTER_VER, true );
438
+                    wp_enqueue_script( 'lsx-wetu-importers-script', LSX_WETU_IMPORTER_URL . 'assets/js/lsx-wetu-importer' . $min . '.js', array( 'jquery', 'datatables' ), LSX_WETU_IMPORTER_VER, true );
439
+
440
+                    wp_localize_script(
441
+                         'lsx-wetu-importers-script',
442
+                         'lsx_tour_importer_params',
443
+                         array(
444
+                              'ajax_url' => admin_url( 'admin-ajax.php' ),
445
+                              'ajax_nonce' => wp_create_nonce( 'lsx_wetu_ajax_action' ),
446
+                         )
447
+                    );
448
+               }
449
+          }
450
+     }
451
+
452
+     /**
453
+      * Display the importer administration screen
454
+      */
455
+     public function display_page() {
456
+          ?>
457 457
 		<div class="wrap">
458 458
 			<?php
459
-			$this->navigation( $this->tab_slug );
460
-			if ( 'default' !== $this->tab_slug && 'settings' !== $this->tab_slug ) {
461
-				$this->wetu_status();
462
-				$this->post_status_navigation();
463
-			}
464
-			$this->current_importer->display_page();
465
-			?>
459
+               $this->navigation( $this->tab_slug );
460
+               if ( 'default' !== $this->tab_slug && 'settings' !== $this->tab_slug ) {
461
+                    $this->wetu_status();
462
+                    $this->post_status_navigation();
463
+               }
464
+               $this->current_importer->display_page();
465
+               ?>
466 466
 		</div>
467 467
 		<?php
468
-	}
469
-
470
-	/**
471
-	 * Outputs the post status navigation
472
-	 *
473
-	 * @return void
474
-	 */
475
-	public function post_status_navigation() {
476
-		?>
468
+     }
469
+
470
+     /**
471
+      * Outputs the post status navigation
472
+      *
473
+      * @return void
474
+      */
475
+     public function post_status_navigation() {
476
+          ?>
477 477
 		<ul class="subsubsub">
478 478
 			<li class="searchform"><a class="current" href="#search"><?php esc_attr_e( 'Search', 'lsx-wetu-importer' ); ?></a> | </li>
479 479
 			<li class="publish"><a href="#publish"><?php esc_attr_e( 'Published', 'lsx-wetu-importer' ); ?> <span class="count"> (<?php echo esc_attr( lsx_wetu_get_post_count( $this->tab_slug, 'publish ' ) ); ?>)</span></a> | </li>
@@ -488,13 +488,13 @@  discard block
 block discarded – undo
488 488
 		</ul>
489 489
 		<a class="documentation" target="_blank"href="https://tour-operator.lsdev.biz/documentation/extension/wetu-importer/"><?php esc_attr_e( 'Documentation', 'lsx-wetu-importer' ); ?></a>
490 490
 		<?php
491
-	}
491
+     }
492 492
 
493
-	/**
494
-	 * Search Form
495
-	 */
496
-	public function search_form() {
497
-		?>
493
+     /**
494
+      * Search Form
495
+      */
496
+     public function search_form() {
497
+          ?>
498 498
 		<form class="ajax-form" id="<?php echo esc_attr( $this->plugin_slug ); ?>-search-form" method="get" action="tools.php" data-type="<?php echo esc_attr( $this->tab_slug ); ?>">
499 499
 			<input type="hidden" name="page" value="<?php echo esc_attr( $this->tab_slug ); ?>" />
500 500
 
@@ -520,13 +520,13 @@  discard block
 block discarded – undo
520 520
 			<a class="button advanced-search-toggle" href="#"><?php esc_html_e( 'Bulk Search', 'lsx-wetu-importer' ); ?></a>
521 521
 		</form>
522 522
 		<?php
523
-	}
523
+     }
524 524
 
525
-	/**
526
-	 * The header of the item list
527
-	 */
528
-	public function table_header() {
529
-		?>
525
+     /**
526
+      * The header of the item list
527
+      */
528
+     public function table_header() {
529
+          ?>
530 530
 		<thead>
531 531
 		<tr>
532 532
 			<th style="" class="manage-column column-cb check-column no-sort" id="cb" scope="col">
@@ -540,13 +540,13 @@  discard block
 block discarded – undo
540 540
 		</tr>
541 541
 		</thead>
542 542
 		<?php
543
-	}
543
+     }
544 544
 
545
-	/**
546
-	 * The footer of the item list
547
-	 */
548
-	public function table_footer() {
549
-		?>
545
+     /**
546
+      * The footer of the item list
547
+      */
548
+     public function table_footer() {
549
+          ?>
550 550
 		<tfoot>
551 551
 		<tr>
552 552
 			<th style="" class="manage-column column-cb check-column" id="cb" scope="col">
@@ -560,694 +560,694 @@  discard block
 block discarded – undo
560 560
 		</tr>
561 561
 		</tfoot>
562 562
 		<?php
563
-	}
564
-
565
-	/**
566
-	 * Displays the importers navigation.
567
-	 *
568
-	 * @param $tab string
569
-	 */
570
-	public function navigation( $tab = '' ) {
571
-		$post_types = array(
572
-			'tour'          => esc_attr( 'Tours', 'lsx-wetu-importer' ),
573
-			'accommodation' => esc_attr( 'Accommodation', 'lsx-wetu-importer' ),
574
-			'destination'   => esc_attr( 'Destinations', 'lsx-wetu-importer' ),
575
-		);
576
-
577
-		echo wp_kses_post( '<div class="wp-filter">' );
578
-		echo wp_kses_post( '<ul class="filter-links">' );
579
-		echo wp_kses_post( '<li><a class="' . $this->itemd( $tab, 'default', 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '">' . esc_attr__( 'Home', 'lsx-wetu-importer' ) . '</a></li>' );
580
-
581
-		foreach ( $post_types as $post_type => $label ) {
582
-			echo wp_kses_post( ' | <li><a class="' . $this->itemd( $tab, $post_type, 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '&tab=' . $post_type . '">' . $label . '</a></li>' );
583
-		}
584
-
585
-		echo wp_kses_post( ' | <li><a class="' . $this->itemd( $tab, 'settings', 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '&tab=settings">' . esc_attr__( 'Settings', 'lsx-wetu-importer' ) . '</a></li>' );
586
-		echo wp_kses_post( '</ul> </div>' );
587
-	}
588
-
589
-	/**
590
-	 * Wetu Status Bar.
591
-	 */
592
-	public function wetu_status() {
593
-		$tours = get_transient( 'lsx_ti_tours' );
594
-		echo '<div class="wetu-status tour-wetu-status"><h3>' . esc_html__( 'Wetu Status', 'lsx-wetu-importer' ) . ' - ';
595
-
596
-		if ( '' === $tours || false === $tours || isset( $_GET['refresh_tours'] ) ) {
597
-			$result = $this->update_options();
598
-			if ( true === $result ) {
599
-				echo '<span style="color:green;">' . esc_attr( 'Connected', 'lsx-wetu-importer' ) . '</span>';
600
-				echo ' - <small><a href="#">' . esc_attr( 'Refresh', 'lsx-wetu-importer' ) . '</a></small>';
601
-			} else {
602
-				echo '<span style="color:red;">' . wp_kses_post( $result ) . '</span>';
603
-			}
604
-		} else {
605
-			echo '<span style="color:green;">' . esc_attr( 'Connected', 'lsx-wetu-importer' ) . '</span> - <small><a href="#">' . esc_attr( 'Refresh', 'lsx-wetu-importer' ) . '</a></small>';
606
-		}
607
-		echo '</h3>';
608
-		echo '</div>';
609
-	}
610
-
611
-	/**
612
-	 * Set_taxonomy with some terms
613
-	 */
614
-	public function team_member_checkboxes( $selected = array() ) {
615
-		if ( post_type_exists( 'team' ) ) { 
616
-        ?>
563
+     }
564
+
565
+     /**
566
+      * Displays the importers navigation.
567
+      *
568
+      * @param $tab string
569
+      */
570
+     public function navigation( $tab = '' ) {
571
+          $post_types = array(
572
+               'tour'          => esc_attr( 'Tours', 'lsx-wetu-importer' ),
573
+               'accommodation' => esc_attr( 'Accommodation', 'lsx-wetu-importer' ),
574
+               'destination'   => esc_attr( 'Destinations', 'lsx-wetu-importer' ),
575
+          );
576
+
577
+          echo wp_kses_post( '<div class="wp-filter">' );
578
+          echo wp_kses_post( '<ul class="filter-links">' );
579
+          echo wp_kses_post( '<li><a class="' . $this->itemd( $tab, 'default', 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '">' . esc_attr__( 'Home', 'lsx-wetu-importer' ) . '</a></li>' );
580
+
581
+          foreach ( $post_types as $post_type => $label ) {
582
+               echo wp_kses_post( ' | <li><a class="' . $this->itemd( $tab, $post_type, 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '&tab=' . $post_type . '">' . $label . '</a></li>' );
583
+          }
584
+
585
+          echo wp_kses_post( ' | <li><a class="' . $this->itemd( $tab, 'settings', 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '&tab=settings">' . esc_attr__( 'Settings', 'lsx-wetu-importer' ) . '</a></li>' );
586
+          echo wp_kses_post( '</ul> </div>' );
587
+     }
588
+
589
+     /**
590
+      * Wetu Status Bar.
591
+      */
592
+     public function wetu_status() {
593
+          $tours = get_transient( 'lsx_ti_tours' );
594
+          echo '<div class="wetu-status tour-wetu-status"><h3>' . esc_html__( 'Wetu Status', 'lsx-wetu-importer' ) . ' - ';
595
+
596
+          if ( '' === $tours || false === $tours || isset( $_GET['refresh_tours'] ) ) {
597
+               $result = $this->update_options();
598
+               if ( true === $result ) {
599
+                    echo '<span style="color:green;">' . esc_attr( 'Connected', 'lsx-wetu-importer' ) . '</span>';
600
+                    echo ' - <small><a href="#">' . esc_attr( 'Refresh', 'lsx-wetu-importer' ) . '</a></small>';
601
+               } else {
602
+                    echo '<span style="color:red;">' . wp_kses_post( $result ) . '</span>';
603
+               }
604
+          } else {
605
+               echo '<span style="color:green;">' . esc_attr( 'Connected', 'lsx-wetu-importer' ) . '</span> - <small><a href="#">' . esc_attr( 'Refresh', 'lsx-wetu-importer' ) . '</a></small>';
606
+          }
607
+          echo '</h3>';
608
+          echo '</div>';
609
+     }
610
+
611
+     /**
612
+      * Set_taxonomy with some terms
613
+      */
614
+     public function team_member_checkboxes( $selected = array() ) {
615
+          if ( post_type_exists( 'team' ) ) { 
616
+          ?>
617 617
 			<ul>
618 618
 				<?php
619
-					$team_args = array(
620
-						'post_type' => 'team',
621
-						'post_status' => 'publish',
622
-						'nopagin' => true,
623
-						'fields' => 'ids',
624
-					);
625
-
626
-					$team_members = new WP_Query( $team_args );
627
-
628
-					if ( $team_members->have_posts() ) {
629
-						foreach ( $team_members->posts as $member ) {
630
-							?>
619
+                         $team_args = array(
620
+                              'post_type' => 'team',
621
+                              'post_status' => 'publish',
622
+                              'nopagin' => true,
623
+                              'fields' => 'ids',
624
+                         );
625
+
626
+                         $team_members = new WP_Query( $team_args );
627
+
628
+                         if ( $team_members->have_posts() ) {
629
+                              foreach ( $team_members->posts as $member ) {
630
+                                   ?>
631 631
 							<li><input class="team" <?php $this->checked( $selected, $member ); ?> type="checkbox" value="<?php echo esc_attr( $member ); ?>" /> <?php echo wp_kses_post( get_the_title( $member ) ); ?></li>
632 632
 							<?php
633
-						}
634
-					} else { 
633
+                              }
634
+                         } else { 
635 635
                     ?>
636 636
 						<li><input class="team" type="checkbox" value="0" /> <?php esc_html_e( 'None', 'lsx-wetu-importer' ); ?></li>
637 637
 					<?php 
638 638
                     }
639
-				?>
639
+                    ?>
640 640
 			</ul>
641 641
 		<?php 
642
-        }
643
-	}
644
-
645
-
646
-	// GENERAL FUNCTIONS.
647
-
648
-	/**
649
-	 * Checks to see if an item is checked.
650
-	 *
651
-	 * @param $haystack array|string
652
-	 * @param $needle string
653
-	 * @param $echo bool
654
-	 */
655
-	public function checked( $haystack = false, $needle = '', $echo = true ) {
656
-		$return = $this->itemd( $haystack, $needle, 'checked', false );
657
-
658
-		if ( '' !== $return ) {
659
-			if ( true === $echo ) {
660
-				echo wp_kses_post( $return );
661
-			} else {
662
-				return $return;
663
-			}
664
-		}
665
-	}
666
-
667
-	/**
668
-	 * Checks to see if an item is checked.
669
-	 *
670
-	 * @param $haystack array|string
671
-	 * @param $needle string
672
-	 * @param $echo bool
673
-	 */
674
-	public function selected( $haystack = false, $needle = '', $echo = true ) {
675
-		$return = $this->itemd( $haystack, $needle, 'selected' );
676
-
677
-		if ( '' !== $return ) {
678
-			if ( true === $echo ) {
679
-				echo wp_kses_post( $return );
680
-			} else {
681
-				return $return;
682
-			}
683
-		}
684
-	}
685
-
686
-	/**
687
-	 * Checks to see if an item is selected. If $echo is false,  it will return the $type if conditions are true.
688
-	 *
689
-	 * @param $haystack array|string
690
-	 * @param $needle string
691
-	 * @param $type string
692
-	 * @param $wrap bool
693
-	 * @return $html string
694
-	 */
695
-	public function itemd( $haystack = false, $needle = '', $type = '', $wrap = true ) {
696
-		$html = '';
697
-
698
-		if ( '' !== $type ) {
699
-			if ( ! is_array( $haystack ) ) {
700
-				$haystack = array( $haystack );
701
-			}
702
-			if ( in_array( $needle, $haystack ) ) {
703
-				if ( true === $wrap || 'true' === $wrap ) {
704
-					$html = $type . '="' . $type . '"';
705
-				} else {
706
-					$html = $type;
707
-				}
708
-			}
709
-		}
710
-
711
-		return $html;
712
-	}
713
-
714
-	/**
715
-	 * Grabs any attachments for the current item
716
-	 */
717
-	public function find_attachments( $id = false ) {
718
-		if ( false !== $id ) {
719
-			if ( empty( $this->found_attachments ) ) {
720
-				$attachments_args = array(
721
-					'post_parent' => $id,
722
-					'post_status' => 'inherit',
723
-					'post_type' => 'attachment',
724
-					'order' => 'ASC',
725
-					'nopagin' => 'true',
726
-					'posts_per_page' => '-1',
727
-				);
728
-
729
-				$attachments = new WP_Query( $attachments_args );
730
-
731
-				if ( $attachments->have_posts() ) {
732
-					foreach ( $attachments->posts as $attachment ) {
733
-						$this->found_attachments[ $attachment->ID ] = str_replace( array( '.jpg', '.png', '.jpeg' ), '', $attachment->post_title );
734
-					}
735
-				}
736
-			}
737
-		}
738
-	}
739
-
740
-	// CUSTOM FIELD FUNCTIONS.
741
-
742
-	/**
743
-	 * Saves the room data
744
-	 */
745
-	public function save_custom_field( $value = false, $meta_key, $id, $decrease = false, $unique = true ) {
746
-		if ( false !== $value ) {
747
-			if ( false !== $decrease ) {
748
-				$value = intval( $value );
749
-				$value--;
750
-			}
751
-
752
-			$prev = get_post_meta( $id, $meta_key, true );
753
-
754
-			if ( false !== $id && '0' !== $id && false !== $prev && true === $unique ) {
755
-				update_post_meta( $id, $meta_key, $value, $prev );
756
-			} else {
757
-				add_post_meta( $id, $meta_key, $value, $unique );
758
-			}
759
-		}
760
-	}
761
-
762
-	/**
763
-	 * Grabs the custom fields,  and resaves an array of unique items.
764
-	 */
765
-	public function cleanup_posts() {
766
-		if ( ! empty( $this->cleanup_posts ) ) {
767
-
768
-			foreach ( $this->cleanup_posts as $id => $key ) {
769
-				$prev_items = get_post_meta( $id, $key, false );
770
-				$new_items = array_unique( $prev_items );
771
-				delete_post_meta( $id, $key );
772
-
773
-				foreach ( $new_items as $new_item ) {
774
-					add_post_meta( $id, $key, $new_item, false );
775
-				}
776
-			}
777
-		}
778
-	}
779
-
780
-	// TAXONOMY FUNCTIONS.
781
-
782
-	/**
783
-	 * Set_taxonomy with some terms
784
-	 */
785
-	public function set_taxonomy( $taxonomy, $terms, $id ) {
786
-		$result = array();
787
-
788
-		if ( ! empty( $data ) ) {
789
-			foreach ( $data as $k ) {
790
-				if ( $id ) {
791
-					$term = term_exists( trim( $k ), $tax );
792
-					if ( ! $term ) {
793
-						$term = wp_insert_term( trim( $k ), $tax );
794
-
795
-						if ( is_wp_error( $term ) ) {
796
-							echo wp_kses_post( $term->get_error_message() );
797
-						} else {
798
-							wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true );
799
-						}
800
-					} else {
801
-						wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true );
802
-					}
803
-				} else {
804
-					$result[] = trim( $k );
805
-				}
806
-			}
807
-		}
808
-		return $result;
809
-	}
810
-
811
-	/**
812
-	 * Sets the terms of the current post
813
-	 *
814
-	 * @param boolean $id
815
-	 * @param boolean $name
816
-	 * @param boolean $taxonomy
817
-	 * @param boolean $parent
818
-	 * @return void
819
-	 */
820
-	public function set_term( $id = false, $name = false, $taxonomy = false, $parent = false ) {
821
-		$term = term_exists( $name, $taxonomy );
822
-		if ( ! $term ) {
823
-			if ( false !== $parent ) {
824
-				$parent = array(
825
-					'parent' => $parent,
826
-				);
827
-			}
828
-			$term = wp_insert_term( trim( $name ), $taxonomy, $parent );
829
-
830
-			if ( is_wp_error( $term ) ) {
831
-				echo wp_kses_post( $term->get_error_message() );
832
-			} else {
833
-				wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true );
834
-			}
835
-		} else {
836
-			wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true );
837
-		}
838
-
839
-		return $term['term_id'];
840
-	}
841
-
842
-	/**
843
-	 * set_taxonomy with some terms
844
-	 */
845
-	public function taxonomy_checkboxes( $taxonomy = false, $selected = array() ) {
846
-		$return = '';
847
-
848
-		if ( false !== $taxonomy ) {
849
-			$return .= '<ul>';
850
-			$terms = get_terms( array(
851
-				'taxonomy' => $taxonomy,
852
-				'hide_empty' => false,
853
-			) );
854
-
855
-			if ( ! is_wp_error( $terms ) ) {
856
-				foreach ( $terms as $term ) {
857
-					$return .= '<li><input class="' . $taxonomy . '" ' . $this->checked( $selected, $term->term_id, false ) . ' type="checkbox" value="' . $term->term_id . '" /> ' . $term->name . '</li>';
858
-				}
859
-			} else {
860
-				$return .= '<li><input type="checkbox" value="" /> ' . __( 'None', 'lsx-wetu-importer' ) . '</li>';
861
-			}
862
-
863
-			$return .= '</ul>';
864
-		}
865
-
866
-		return $return;
867
-	}
868
-
869
-	// MAP FUNCTIONS
870
-
871
-	/**
872
-	 * Saves the longitude and lattitude, as well as sets the map marker.
873
-	 */
874
-	public function set_map_data( $data, $id, $zoom = '10' ) {
875
-		$longitude = false;
876
-		$latitude = false;
877
-		$address = false;
878
-
879
-		if ( isset( $data[0]['position'] ) ) {
880
-			if ( isset( $data[0]['position']['driving_latitude'] ) ) {
881
-				$latitude = $data[0]['position']['driving_latitude'];
882
-			} elseif ( isset( $data[0]['position']['latitude'] ) ) {
883
-				$latitude = $data[0]['position']['latitude'];
884
-			}
885
-
886
-			if ( isset( $data[0]['position']['driving_longitude'] ) ) {
887
-				$longitude = $data[0]['position']['driving_longitude'];
888
-			} elseif ( isset( $data[0]['position']['longitude'] ) ) {
889
-				$longitude = $data[0]['position']['longitude'];
890
-			}
891
-		}
892
-
893
-		if ( isset( $data[0]['content'] ) && isset( $data[0]['content']['contact_information'] ) ) {
894
-			if ( isset( $data[0]['content']['contact_information']['address'] ) ) {
895
-				$address = strip_tags( $data[0]['content']['contact_information']['address'] );
896
-				$address = explode( "\n", $address );
897
-
898
-				foreach ( $address as $bitkey => $bit ) {
899
-					$bit = ltrim( rtrim( $bit ) );
900
-
901
-					if ( false === $bit || '' === $bit || null === $bit || empty( $bit ) ) {
902
-						unset( $address[ $bitkey ] );
903
-					}
904
-				}
905
-
906
-				$address = implode( ', ', $address );
907
-				$address = str_replace( ', , ', ', ', $address );
908
-			}
909
-		}
910
-
911
-		if ( false !== $longitude ) {
912
-			$location_data = array(
913
-				'address'   => (string) $address,
914
-				'lat'       => (string) $latitude,
915
-				'long'      => (string) $longitude,
916
-				'zoom'      => (string) $zoom,
917
-				'elevation' => '',
918
-			);
919
-
920
-			if ( false !== $id && '0' !== $id ) {
921
-				$prev = get_post_meta( $id, 'location', true );
922
-				update_post_meta( $id, 'location', $location_data, $prev );
923
-			} else {
924
-				add_post_meta( $id, 'location', $location_data, true );
925
-			}
926
-		}
927
-	}
928
-
929
-	// IMAGE FUNCTIONS
930
-
931
-	/**
932
-	 * Creates the main gallery data
933
-	 */
934
-	public function set_featured_image( $data, $id ) {
935
-		if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) {
936
-			$this->featured_image = $this->attach_image( $data[0]['content']['images'][0], $id,  array(
937
-				'width' => '800',
938
-				'height' => '600',
939
-				'cropping' => 'h',
940
-			) );
941
-
942
-			if ( false !== $this->featured_image ) {
943
-				delete_post_meta( $id, '_thumbnail_id' );
944
-				add_post_meta( $id, '_thumbnail_id', $this->featured_image, true );
945
-			}
946
-		}
947
-	}
948
-
949
-	/**
950
-	 * Sets a banner image
951
-	 */
952
-	public function set_banner_image( $data, $id, $content = array( 'none' ) ) {
953
-		if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) {
954
-			if ( in_array( 'unique_banner_image', $content ) && isset( $data[0]['destination_image'] ) && is_array( $data[0]['destination_image'] ) ) {
955
-				$temp_banner = $this->attach_image( $data[0]['destination_image'], $id, array(
956
-					'width' => '1920',
957
-					'height' => '600',
958
-					'cropping' => 'c',
959
-				));
960
-			} else {
961
-				$temp_banner = $this->attach_image( $data[0]['content']['images'][1], $id, array(
962
-					'width' => '1920',
963
-					'height' => '600',
964
-					'cropping' => 'c',
965
-				));
966
-			}
967
-
968
-			if ( false !== $temp_banner ) {
969
-				$this->banner_image = $temp_banner;
970
-
971
-				delete_post_meta( $id, 'image_group' );
972
-
973
-				$new_banner = array(
974
-					'banner_image' => array(
975
-						'cmb-field-0' => $this->banner_image,
976
-					),
977
-				);
978
-
979
-				add_post_meta( $id, 'image_group', $new_banner, true );
980
-			}
981
-		}
982
-	}
983
-
984
-	/**
985
-	 * Creates the main gallery data
986
-	 */
987
-	public function create_main_gallery( $data, $id ) {
988
-		if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) {
989
-			if ( isset( $this->options['image_replacing'] ) && 'on' === $this->options['image_replacing'] ) {
990
-				$current_gallery = get_post_meta( $id, 'gallery', false );
991
-
992
-				if ( false !== $current_gallery && ! empty( $current_gallery ) ) {
993
-					foreach ( $current_gallery as $g ) {
994
-						delete_post_meta( $id, 'gallery', $g );
995
-
996
-						if ( 'attachment' === get_post_type( $g ) ) {
997
-							wp_delete_attachment( $g, true );
998
-						}
999
-					}
1000
-				}
1001
-			}
1002
-
1003
-			$counter = 0;
1004
-
1005
-			foreach ( $data[0]['content']['images'] as $image_data ) {
1006
-				if ( ( 0 === $counter && false !== $this->featured_image ) || ( 1 === $counter && false !== $this->banner_image ) ) {
1007
-					$counter++;
1008
-
1009
-					if ( false !== $this->image_limit && false !== $this->image_limit ) {
1010
-						$this->image_limit++;
1011
-					}
1012
-
1013
-					continue;
1014
-				}
1015
-
1016
-				if ( false !== $this->image_limit && $counter >= $this->image_limit ) {
1017
-					continue;
1018
-				}
1019
-
1020
-				$this->gallery_meta[] = $this->attach_image( $image_data, $id );
1021
-				$counter++;
1022
-			}
1023
-
1024
-			if ( ! empty( $this->gallery_meta ) ) {
1025
-				delete_post_meta( $id, 'gallery' );
1026
-				$this->gallery_meta = array_unique( $this->gallery_meta );
1027
-
1028
-				foreach ( $this->gallery_meta as $gallery_id ) {
1029
-					if ( false !== $gallery_id && '' !== $gallery_id && ! is_array( $gallery_id ) ) {
1030
-						add_post_meta( $id, 'gallery', $gallery_id, false );
1031
-					}
1032
-				}
1033
-			}
1034
-		}
1035
-	}
1036
-
1037
-	/**
1038
-	 * search_form
1039
-	 */
1040
-	public function get_scaling_url( $args = array() ) {
1041
-		$defaults = array(
1042
-			'width' => '1024',
1043
-			'height' => '768',
1044
-			//'cropping' => 'w',
1045
-			'cropping' => 'h',
1046
-		);
1047
-
1048
-		if ( false !== $this->options ) {
1049
-			if ( isset( $this->options['width'] ) && '' !== $this->options['width'] ) {
1050
-				$defaults['width'] = $this->options['width'];
1051
-			}
1052
-
1053
-			if ( isset( $this->options['height'] ) && '' !== $this->options['height'] ) {
1054
-				$defaults['height'] = $this->options['height'];
1055
-			}
1056
-
1057
-			if ( isset( $this->options['cropping'] ) && '' !== $this->options['cropping'] ) {
1058
-				$defaults['cropping'] = $this->options['cropping'];
1059
-			}
1060
-		}
1061
-
1062
-		$args = wp_parse_args( $args, $defaults );
1063
-		$cropping = $args['cropping'];
1064
-		$width = $args['width'];
1065
-		$height = $args['height'];
1066
-
1067
-		return 'https://wetu.com/ImageHandler/' . $cropping . $width . 'x' . $height . '/';
1068
-	}
1069
-
1070
-	/**
1071
-	 * Attaches 1 image
1072
-	 */
1073
-	public function attach_image( $v = false, $parent_id, $image_sizes = false, $banner = false ) {
1074
-		if ( false !== $v ) {
1075
-			$temp_fragment = explode( '/', $v['url_fragment'] );
1076
-			$url_filename  = $temp_fragment[ count( $temp_fragment ) - 1 ];
1077
-			$url_filename  = str_replace( array( '.jpg', '.png', '.jpeg' ), '', $url_filename );
1078
-			$url_filename  = trim( $url_filename );
1079
-			$title         = $url_filename;
1080
-			$url_filename  = str_replace( ' ', '_', $url_filename );
1081
-
1082
-			if ( ! isset( $this->options['image_replacing'] ) && in_array( $url_filename, $this->found_attachments ) ) {
1083
-				return array_search( $url_filename, $this->found_attachments );
1084
-			}
1085
-
1086
-			$postdata = array();
1087
-
1088
-			if ( empty( $v['label'] ) ) {
1089
-				$v['label'] = '';
1090
-			}
1091
-
1092
-			if ( ! empty( $v['description'] ) ) {
1093
-				$desc = wp_strip_all_tags( $v['description'] );
1094
-				$posdata = array(
1095
-					'post_excerpt' => $desc,
1096
-				);
1097
-			}
1098
-
1099
-			if ( ! empty( $v['section'] ) ) {
1100
-				$desc = wp_strip_all_tags( $v['section'] );
1101
-				$posdata = array(
1102
-					'post_excerpt' => $desc,
1103
-				);
1104
-			}
1105
-
1106
-			$attach_id = null;
1107
-			// Resizor - add option to setting if required.
1108
-			$fragment  = str_replace( ' ', '%20', $v['url_fragment'] );
1109
-			$url       = $this->get_scaling_url( $image_sizes ) . $fragment;
1110
-			$attach_id = $this->attach_external_image2( $url, $parent_id, '', $v['label'], $postdata );
1111
-			if ( ! empty( $attach_id ) ) {
1112
-				$this->found_attachments[ $attach_id ] = $url_filename;
1113
-				add_post_meta( $attach_id, 'lsx_wetu_id', $v['url_fragment'], true );
1114
-				return $attach_id;
1115
-			}
1116
-		}
1117
-		return false;
1118
-	}
1119
-
1120
-	public function attach_external_image2( $url = null, $post_id = null, $thumb = null, $filename = null, $post_data = array() ) {
1121
-		if ( ! $url || ! $post_id ) {
642
+          }
643
+     }
644
+
645
+
646
+     // GENERAL FUNCTIONS.
647
+
648
+     /**
649
+      * Checks to see if an item is checked.
650
+      *
651
+      * @param $haystack array|string
652
+      * @param $needle string
653
+      * @param $echo bool
654
+      */
655
+     public function checked( $haystack = false, $needle = '', $echo = true ) {
656
+          $return = $this->itemd( $haystack, $needle, 'checked', false );
657
+
658
+          if ( '' !== $return ) {
659
+               if ( true === $echo ) {
660
+                    echo wp_kses_post( $return );
661
+               } else {
662
+                    return $return;
663
+               }
664
+          }
665
+     }
666
+
667
+     /**
668
+      * Checks to see if an item is checked.
669
+      *
670
+      * @param $haystack array|string
671
+      * @param $needle string
672
+      * @param $echo bool
673
+      */
674
+     public function selected( $haystack = false, $needle = '', $echo = true ) {
675
+          $return = $this->itemd( $haystack, $needle, 'selected' );
676
+
677
+          if ( '' !== $return ) {
678
+               if ( true === $echo ) {
679
+                    echo wp_kses_post( $return );
680
+               } else {
681
+                    return $return;
682
+               }
683
+          }
684
+     }
685
+
686
+     /**
687
+      * Checks to see if an item is selected. If $echo is false,  it will return the $type if conditions are true.
688
+      *
689
+      * @param $haystack array|string
690
+      * @param $needle string
691
+      * @param $type string
692
+      * @param $wrap bool
693
+      * @return $html string
694
+      */
695
+     public function itemd( $haystack = false, $needle = '', $type = '', $wrap = true ) {
696
+          $html = '';
697
+
698
+          if ( '' !== $type ) {
699
+               if ( ! is_array( $haystack ) ) {
700
+                    $haystack = array( $haystack );
701
+               }
702
+               if ( in_array( $needle, $haystack ) ) {
703
+                    if ( true === $wrap || 'true' === $wrap ) {
704
+                         $html = $type . '="' . $type . '"';
705
+                    } else {
706
+                         $html = $type;
707
+                    }
708
+               }
709
+          }
710
+
711
+          return $html;
712
+     }
713
+
714
+     /**
715
+      * Grabs any attachments for the current item
716
+      */
717
+     public function find_attachments( $id = false ) {
718
+          if ( false !== $id ) {
719
+               if ( empty( $this->found_attachments ) ) {
720
+                    $attachments_args = array(
721
+                         'post_parent' => $id,
722
+                         'post_status' => 'inherit',
723
+                         'post_type' => 'attachment',
724
+                         'order' => 'ASC',
725
+                         'nopagin' => 'true',
726
+                         'posts_per_page' => '-1',
727
+                    );
728
+
729
+                    $attachments = new WP_Query( $attachments_args );
730
+
731
+                    if ( $attachments->have_posts() ) {
732
+                         foreach ( $attachments->posts as $attachment ) {
733
+                              $this->found_attachments[ $attachment->ID ] = str_replace( array( '.jpg', '.png', '.jpeg' ), '', $attachment->post_title );
734
+                         }
735
+                    }
736
+               }
737
+          }
738
+     }
739
+
740
+     // CUSTOM FIELD FUNCTIONS.
741
+
742
+     /**
743
+      * Saves the room data
744
+      */
745
+     public function save_custom_field( $value = false, $meta_key, $id, $decrease = false, $unique = true ) {
746
+          if ( false !== $value ) {
747
+               if ( false !== $decrease ) {
748
+                    $value = intval( $value );
749
+                    $value--;
750
+               }
751
+
752
+               $prev = get_post_meta( $id, $meta_key, true );
753
+
754
+               if ( false !== $id && '0' !== $id && false !== $prev && true === $unique ) {
755
+                    update_post_meta( $id, $meta_key, $value, $prev );
756
+               } else {
757
+                    add_post_meta( $id, $meta_key, $value, $unique );
758
+               }
759
+          }
760
+     }
761
+
762
+     /**
763
+      * Grabs the custom fields,  and resaves an array of unique items.
764
+      */
765
+     public function cleanup_posts() {
766
+          if ( ! empty( $this->cleanup_posts ) ) {
767
+
768
+               foreach ( $this->cleanup_posts as $id => $key ) {
769
+                    $prev_items = get_post_meta( $id, $key, false );
770
+                    $new_items = array_unique( $prev_items );
771
+                    delete_post_meta( $id, $key );
772
+
773
+                    foreach ( $new_items as $new_item ) {
774
+                         add_post_meta( $id, $key, $new_item, false );
775
+                    }
776
+               }
777
+          }
778
+     }
779
+
780
+     // TAXONOMY FUNCTIONS.
781
+
782
+     /**
783
+      * Set_taxonomy with some terms
784
+      */
785
+     public function set_taxonomy( $taxonomy, $terms, $id ) {
786
+          $result = array();
787
+
788
+          if ( ! empty( $data ) ) {
789
+               foreach ( $data as $k ) {
790
+                    if ( $id ) {
791
+                         $term = term_exists( trim( $k ), $tax );
792
+                         if ( ! $term ) {
793
+                              $term = wp_insert_term( trim( $k ), $tax );
794
+
795
+                              if ( is_wp_error( $term ) ) {
796
+                                   echo wp_kses_post( $term->get_error_message() );
797
+                              } else {
798
+                                   wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true );
799
+                              }
800
+                         } else {
801
+                              wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true );
802
+                         }
803
+                    } else {
804
+                         $result[] = trim( $k );
805
+                    }
806
+               }
807
+          }
808
+          return $result;
809
+     }
810
+
811
+     /**
812
+      * Sets the terms of the current post
813
+      *
814
+      * @param boolean $id
815
+      * @param boolean $name
816
+      * @param boolean $taxonomy
817
+      * @param boolean $parent
818
+      * @return void
819
+      */
820
+     public function set_term( $id = false, $name = false, $taxonomy = false, $parent = false ) {
821
+          $term = term_exists( $name, $taxonomy );
822
+          if ( ! $term ) {
823
+               if ( false !== $parent ) {
824
+                    $parent = array(
825
+                         'parent' => $parent,
826
+                    );
827
+               }
828
+               $term = wp_insert_term( trim( $name ), $taxonomy, $parent );
829
+
830
+               if ( is_wp_error( $term ) ) {
831
+                    echo wp_kses_post( $term->get_error_message() );
832
+               } else {
833
+                    wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true );
834
+               }
835
+          } else {
836
+               wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true );
837
+          }
838
+
839
+          return $term['term_id'];
840
+     }
841
+
842
+     /**
843
+      * set_taxonomy with some terms
844
+      */
845
+     public function taxonomy_checkboxes( $taxonomy = false, $selected = array() ) {
846
+          $return = '';
847
+
848
+          if ( false !== $taxonomy ) {
849
+               $return .= '<ul>';
850
+               $terms = get_terms( array(
851
+                    'taxonomy' => $taxonomy,
852
+                    'hide_empty' => false,
853
+               ) );
854
+
855
+               if ( ! is_wp_error( $terms ) ) {
856
+                    foreach ( $terms as $term ) {
857
+                         $return .= '<li><input class="' . $taxonomy . '" ' . $this->checked( $selected, $term->term_id, false ) . ' type="checkbox" value="' . $term->term_id . '" /> ' . $term->name . '</li>';
858
+                    }
859
+               } else {
860
+                    $return .= '<li><input type="checkbox" value="" /> ' . __( 'None', 'lsx-wetu-importer' ) . '</li>';
861
+               }
862
+
863
+               $return .= '</ul>';
864
+          }
865
+
866
+          return $return;
867
+     }
868
+
869
+     // MAP FUNCTIONS
870
+
871
+     /**
872
+      * Saves the longitude and lattitude, as well as sets the map marker.
873
+      */
874
+     public function set_map_data( $data, $id, $zoom = '10' ) {
875
+          $longitude = false;
876
+          $latitude = false;
877
+          $address = false;
878
+
879
+          if ( isset( $data[0]['position'] ) ) {
880
+               if ( isset( $data[0]['position']['driving_latitude'] ) ) {
881
+                    $latitude = $data[0]['position']['driving_latitude'];
882
+               } elseif ( isset( $data[0]['position']['latitude'] ) ) {
883
+                    $latitude = $data[0]['position']['latitude'];
884
+               }
885
+
886
+               if ( isset( $data[0]['position']['driving_longitude'] ) ) {
887
+                    $longitude = $data[0]['position']['driving_longitude'];
888
+               } elseif ( isset( $data[0]['position']['longitude'] ) ) {
889
+                    $longitude = $data[0]['position']['longitude'];
890
+               }
891
+          }
892
+
893
+          if ( isset( $data[0]['content'] ) && isset( $data[0]['content']['contact_information'] ) ) {
894
+               if ( isset( $data[0]['content']['contact_information']['address'] ) ) {
895
+                    $address = strip_tags( $data[0]['content']['contact_information']['address'] );
896
+                    $address = explode( "\n", $address );
897
+
898
+                    foreach ( $address as $bitkey => $bit ) {
899
+                         $bit = ltrim( rtrim( $bit ) );
900
+
901
+                         if ( false === $bit || '' === $bit || null === $bit || empty( $bit ) ) {
902
+                              unset( $address[ $bitkey ] );
903
+                         }
904
+                    }
905
+
906
+                    $address = implode( ', ', $address );
907
+                    $address = str_replace( ', , ', ', ', $address );
908
+               }
909
+          }
910
+
911
+          if ( false !== $longitude ) {
912
+               $location_data = array(
913
+                    'address'   => (string) $address,
914
+                    'lat'       => (string) $latitude,
915
+                    'long'      => (string) $longitude,
916
+                    'zoom'      => (string) $zoom,
917
+                    'elevation' => '',
918
+               );
919
+
920
+               if ( false !== $id && '0' !== $id ) {
921
+                    $prev = get_post_meta( $id, 'location', true );
922
+                    update_post_meta( $id, 'location', $location_data, $prev );
923
+               } else {
924
+                    add_post_meta( $id, 'location', $location_data, true );
925
+               }
926
+          }
927
+     }
928
+
929
+     // IMAGE FUNCTIONS
930
+
931
+     /**
932
+      * Creates the main gallery data
933
+      */
934
+     public function set_featured_image( $data, $id ) {
935
+          if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) {
936
+               $this->featured_image = $this->attach_image( $data[0]['content']['images'][0], $id,  array(
937
+                    'width' => '800',
938
+                    'height' => '600',
939
+                    'cropping' => 'h',
940
+               ) );
941
+
942
+               if ( false !== $this->featured_image ) {
943
+                    delete_post_meta( $id, '_thumbnail_id' );
944
+                    add_post_meta( $id, '_thumbnail_id', $this->featured_image, true );
945
+               }
946
+          }
947
+     }
948
+
949
+     /**
950
+      * Sets a banner image
951
+      */
952
+     public function set_banner_image( $data, $id, $content = array( 'none' ) ) {
953
+          if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) {
954
+               if ( in_array( 'unique_banner_image', $content ) && isset( $data[0]['destination_image'] ) && is_array( $data[0]['destination_image'] ) ) {
955
+                    $temp_banner = $this->attach_image( $data[0]['destination_image'], $id, array(
956
+                         'width' => '1920',
957
+                         'height' => '600',
958
+                         'cropping' => 'c',
959
+                    ));
960
+               } else {
961
+                    $temp_banner = $this->attach_image( $data[0]['content']['images'][1], $id, array(
962
+                         'width' => '1920',
963
+                         'height' => '600',
964
+                         'cropping' => 'c',
965
+                    ));
966
+               }
967
+
968
+               if ( false !== $temp_banner ) {
969
+                    $this->banner_image = $temp_banner;
970
+
971
+                    delete_post_meta( $id, 'image_group' );
972
+
973
+                    $new_banner = array(
974
+                         'banner_image' => array(
975
+                              'cmb-field-0' => $this->banner_image,
976
+                         ),
977
+                    );
978
+
979
+                    add_post_meta( $id, 'image_group', $new_banner, true );
980
+               }
981
+          }
982
+     }
983
+
984
+     /**
985
+      * Creates the main gallery data
986
+      */
987
+     public function create_main_gallery( $data, $id ) {
988
+          if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) {
989
+               if ( isset( $this->options['image_replacing'] ) && 'on' === $this->options['image_replacing'] ) {
990
+                    $current_gallery = get_post_meta( $id, 'gallery', false );
991
+
992
+                    if ( false !== $current_gallery && ! empty( $current_gallery ) ) {
993
+                         foreach ( $current_gallery as $g ) {
994
+                              delete_post_meta( $id, 'gallery', $g );
995
+
996
+                              if ( 'attachment' === get_post_type( $g ) ) {
997
+                                   wp_delete_attachment( $g, true );
998
+                              }
999
+                         }
1000
+                    }
1001
+               }
1002
+
1003
+               $counter = 0;
1004
+
1005
+               foreach ( $data[0]['content']['images'] as $image_data ) {
1006
+                    if ( ( 0 === $counter && false !== $this->featured_image ) || ( 1 === $counter && false !== $this->banner_image ) ) {
1007
+                         $counter++;
1008
+
1009
+                         if ( false !== $this->image_limit && false !== $this->image_limit ) {
1010
+                              $this->image_limit++;
1011
+                         }
1012
+
1013
+                         continue;
1014
+                    }
1015
+
1016
+                    if ( false !== $this->image_limit && $counter >= $this->image_limit ) {
1017
+                         continue;
1018
+                    }
1019
+
1020
+                    $this->gallery_meta[] = $this->attach_image( $image_data, $id );
1021
+                    $counter++;
1022
+               }
1023
+
1024
+               if ( ! empty( $this->gallery_meta ) ) {
1025
+                    delete_post_meta( $id, 'gallery' );
1026
+                    $this->gallery_meta = array_unique( $this->gallery_meta );
1027
+
1028
+                    foreach ( $this->gallery_meta as $gallery_id ) {
1029
+                         if ( false !== $gallery_id && '' !== $gallery_id && ! is_array( $gallery_id ) ) {
1030
+                              add_post_meta( $id, 'gallery', $gallery_id, false );
1031
+                         }
1032
+                    }
1033
+               }
1034
+          }
1035
+     }
1036
+
1037
+     /**
1038
+      * search_form
1039
+      */
1040
+     public function get_scaling_url( $args = array() ) {
1041
+          $defaults = array(
1042
+               'width' => '1024',
1043
+               'height' => '768',
1044
+               //'cropping' => 'w',
1045
+               'cropping' => 'h',
1046
+          );
1047
+
1048
+          if ( false !== $this->options ) {
1049
+               if ( isset( $this->options['width'] ) && '' !== $this->options['width'] ) {
1050
+                    $defaults['width'] = $this->options['width'];
1051
+               }
1052
+
1053
+               if ( isset( $this->options['height'] ) && '' !== $this->options['height'] ) {
1054
+                    $defaults['height'] = $this->options['height'];
1055
+               }
1056
+
1057
+               if ( isset( $this->options['cropping'] ) && '' !== $this->options['cropping'] ) {
1058
+                    $defaults['cropping'] = $this->options['cropping'];
1059
+               }
1060
+          }
1061
+
1062
+          $args = wp_parse_args( $args, $defaults );
1063
+          $cropping = $args['cropping'];
1064
+          $width = $args['width'];
1065
+          $height = $args['height'];
1066
+
1067
+          return 'https://wetu.com/ImageHandler/' . $cropping . $width . 'x' . $height . '/';
1068
+     }
1069
+
1070
+     /**
1071
+      * Attaches 1 image
1072
+      */
1073
+     public function attach_image( $v = false, $parent_id, $image_sizes = false, $banner = false ) {
1074
+          if ( false !== $v ) {
1075
+               $temp_fragment = explode( '/', $v['url_fragment'] );
1076
+               $url_filename  = $temp_fragment[ count( $temp_fragment ) - 1 ];
1077
+               $url_filename  = str_replace( array( '.jpg', '.png', '.jpeg' ), '', $url_filename );
1078
+               $url_filename  = trim( $url_filename );
1079
+               $title         = $url_filename;
1080
+               $url_filename  = str_replace( ' ', '_', $url_filename );
1081
+
1082
+               if ( ! isset( $this->options['image_replacing'] ) && in_array( $url_filename, $this->found_attachments ) ) {
1083
+                    return array_search( $url_filename, $this->found_attachments );
1084
+               }
1085
+
1086
+               $postdata = array();
1087
+
1088
+               if ( empty( $v['label'] ) ) {
1089
+                    $v['label'] = '';
1090
+               }
1091
+
1092
+               if ( ! empty( $v['description'] ) ) {
1093
+                    $desc = wp_strip_all_tags( $v['description'] );
1094
+                    $posdata = array(
1095
+                         'post_excerpt' => $desc,
1096
+                    );
1097
+               }
1098
+
1099
+               if ( ! empty( $v['section'] ) ) {
1100
+                    $desc = wp_strip_all_tags( $v['section'] );
1101
+                    $posdata = array(
1102
+                         'post_excerpt' => $desc,
1103
+                    );
1104
+               }
1105
+
1106
+               $attach_id = null;
1107
+               // Resizor - add option to setting if required.
1108
+               $fragment  = str_replace( ' ', '%20', $v['url_fragment'] );
1109
+               $url       = $this->get_scaling_url( $image_sizes ) . $fragment;
1110
+               $attach_id = $this->attach_external_image2( $url, $parent_id, '', $v['label'], $postdata );
1111
+               if ( ! empty( $attach_id ) ) {
1112
+                    $this->found_attachments[ $attach_id ] = $url_filename;
1113
+                    add_post_meta( $attach_id, 'lsx_wetu_id', $v['url_fragment'], true );
1114
+                    return $attach_id;
1115
+               }
1116
+          }
1117
+          return false;
1118
+     }
1119
+
1120
+     public function attach_external_image2( $url = null, $post_id = null, $thumb = null, $filename = null, $post_data = array() ) {
1121
+          if ( ! $url || ! $post_id ) {
1122 1122
 return new WP_Error( 'missing', 'Need a valid URL and post ID...' ); }
1123
-		$att_id = false;
1124
-
1125
-		require_once( ABSPATH . 'wp-admin/includes/file.php' );
1126
-		require_once( ABSPATH . 'wp-admin/includes/media.php' );
1127
-		require_once( ABSPATH . 'wp-admin/includes/image.php' );
1128
-		// Download file to temp location, returns full server path to temp file.
1129
-
1130
-		$tmp   = tempnam( '/tmp', 'FOO' );
1131
-		$image = wp_remote_get( $url );
1132
-		if ( ! is_wp_error( $image ) && ! empty( $image ) && isset( $image['response'] ) && isset( $image['response']['code'] ) && 200 === $image['response']['code'] ) {
1133
-			file_put_contents( $tmp, $image['body'] );
1134
-			chmod( $tmp, '777' );
1135
-
1136
-			preg_match( '/[^\?]+\.(tif|TIFF|jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG|pdf|PDF|bmp|BMP)/', $url, $matches );    // fix file filename for query strings
1137
-			$url_filename = basename( $matches[0] );
1138
-			$url_filename = str_replace( '%20', '_', $url_filename );
1139
-			// extract filename from url for title
1140
-			$url_type = wp_check_filetype( $url_filename );                                           // determine file type (ext and mime/type)
1141
-
1142
-			// override filename if given, reconstruct server path.
1143
-			if ( ! empty( $filename ) && ' ' != $filename ) {
1144
-				$filename = sanitize_file_name( $filename );
1145
-				$tmppath = pathinfo( $tmp );
1146
-
1147
-				$extension = '';
1148
-				if ( isset( $tmppath['extension'] ) ) {
1149
-					$extension = $tmppath['extension'];
1150
-				}
1151
-
1152
-				$new = $tmppath['dirname'] . '/' . $filename . '.' . $extension;
1153
-				rename( $tmp, $new );                                                                 // renames temp file on server
1154
-				$tmp = $new;                                                                        // push new filename (in path) to be used in file array later
1155
-			}
1156
-
1157
-			// assemble file data (should be built like $_FILES since wp_handle_sideload() will be using).
1158
-			$file_array['tmp_name'] = $tmp;                                                         // full server path to temp file
1159
-
1160
-			if ( ! empty( $filename ) && ' ' != $filename ) {
1161
-				$file_array['name'] = $filename . '.' . $url_type['ext'];                           // user given filename for title, add original URL extension
1162
-			} else {
1163
-				$file_array['name'] = $url_filename;                                                // just use original URL filename
1164
-			}
1165
-
1166
-			// set additional wp_posts columns.
1167
-			if ( empty( $post_data['post_title'] ) ) {
1168
-
1169
-				$url_filename = str_replace( '%20', ' ', $url_filename );
1170
-
1171
-				$post_data['post_title'] = basename( $url_filename, '.' . $url_type['ext'] );         // just use the original filename (no extension)
1172
-			}
1173
-
1174
-			// make sure gets tied to parent.
1175
-			if ( empty( $post_data['post_parent'] ) ) {
1176
-				$post_data['post_parent'] = $post_id;
1177
-			}
1178
-
1179
-			// do the validation and storage stuff.
1180
-			$att_id = media_handle_sideload( $file_array, $post_id, null, $post_data );             // $post_data can override the items saved to wp_posts table, like post_mime_type, guid, post_parent, post_title, post_content, post_status
1181
-
1182
-			// If error storing permanently, unlink.
1183
-			if ( is_wp_error( $att_id ) ) {
1184
-				unlink( $file_array['tmp_name'] );
1185
-				return false;
1186
-			}
1187
-		}
1188
-		return $att_id;
1189
-	}
1190
-
1191
-	// AJAX FUNCTIONS
1192
-	/**
1193
-	 * Run through the accommodation grabbed from the DB.
1194
-	 */
1195
-	public function process_ajax_search() {
1196
-		$this->current_importer->process_ajax_search();
1197
-		die();
1198
-	}
1199
-
1200
-	/**
1201
-	 * Connect to wetu
1202
-	 */
1203
-	public function process_ajax_import() {
1204
-		$this->current_importer->process_ajax_import();
1205
-		die();
1206
-	}
1207
-
1208
-	/**
1209
-	 * Formats the row for the completed list.
1210
-	 */
1211
-	public function format_completed_row( $response ) {
1212
-		echo wp_kses_post( '<li class="post-' . $response . '"><span class="dashicons dashicons-yes"></span> <a target="_blank" href="' . get_permalink( $response ) . '">' . get_the_title( $response ) . '</a></li>' );
1213
-	}
1214
-
1215
-	/**
1216
-	 * Formats the error.
1217
-	 */
1218
-	public function format_error( $response ) {
1219
-		echo wp_kses_post( '<li class="post-error"><span class="dashicons dashicons-no"></span>' . $response . '</li>' );
1220
-	}
1221
-
1222
-	/**
1223
-	 * Does a multine search
1224
-	 */
1225
-	public function multineedle_stripos( $haystack, $needles, $offset = 0 ) {
1226
-		$found = false;
1227
-		$needle_count = count( $needles );
1228
-
1229
-		foreach ( $needles as $needle ) {
1230
-			if ( false !== stripos( $haystack, $needle, $offset ) ) {
1231
-				$found[] = true;
1232
-			}
1233
-		}
1234
-
1235
-		if ( false !== $found && count( $found ) === $needle_count ) {
1236
-			return true;
1237
-		} else {
1238
-			return false;
1239
-		}
1240
-	}
1241
-
1242
-	/**
1243
-	 * Grab all the current accommodation posts via the lsx_wetu_id field.
1244
-	 */
1245
-	public function find_current_accommodation( $post_type = 'accommodation' ) {
1246
-		global $wpdb;
1247
-		$return = array();
1248
-
1249
-		// @codingStandardsIgnoreStart
1250
-		$current_accommodation = $wpdb->get_results("
1123
+          $att_id = false;
1124
+
1125
+          require_once( ABSPATH . 'wp-admin/includes/file.php' );
1126
+          require_once( ABSPATH . 'wp-admin/includes/media.php' );
1127
+          require_once( ABSPATH . 'wp-admin/includes/image.php' );
1128
+          // Download file to temp location, returns full server path to temp file.
1129
+
1130
+          $tmp   = tempnam( '/tmp', 'FOO' );
1131
+          $image = wp_remote_get( $url );
1132
+          if ( ! is_wp_error( $image ) && ! empty( $image ) && isset( $image['response'] ) && isset( $image['response']['code'] ) && 200 === $image['response']['code'] ) {
1133
+               file_put_contents( $tmp, $image['body'] );
1134
+               chmod( $tmp, '777' );
1135
+
1136
+               preg_match( '/[^\?]+\.(tif|TIFF|jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG|pdf|PDF|bmp|BMP)/', $url, $matches );    // fix file filename for query strings
1137
+               $url_filename = basename( $matches[0] );
1138
+               $url_filename = str_replace( '%20', '_', $url_filename );
1139
+               // extract filename from url for title
1140
+               $url_type = wp_check_filetype( $url_filename );                                           // determine file type (ext and mime/type)
1141
+
1142
+               // override filename if given, reconstruct server path.
1143
+               if ( ! empty( $filename ) && ' ' != $filename ) {
1144
+                    $filename = sanitize_file_name( $filename );
1145
+                    $tmppath = pathinfo( $tmp );
1146
+
1147
+                    $extension = '';
1148
+                    if ( isset( $tmppath['extension'] ) ) {
1149
+                         $extension = $tmppath['extension'];
1150
+                    }
1151
+
1152
+                    $new = $tmppath['dirname'] . '/' . $filename . '.' . $extension;
1153
+                    rename( $tmp, $new );                                                                 // renames temp file on server
1154
+                    $tmp = $new;                                                                        // push new filename (in path) to be used in file array later
1155
+               }
1156
+
1157
+               // assemble file data (should be built like $_FILES since wp_handle_sideload() will be using).
1158
+               $file_array['tmp_name'] = $tmp;                                                         // full server path to temp file
1159
+
1160
+               if ( ! empty( $filename ) && ' ' != $filename ) {
1161
+                    $file_array['name'] = $filename . '.' . $url_type['ext'];                           // user given filename for title, add original URL extension
1162
+               } else {
1163
+                    $file_array['name'] = $url_filename;                                                // just use original URL filename
1164
+               }
1165
+
1166
+               // set additional wp_posts columns.
1167
+               if ( empty( $post_data['post_title'] ) ) {
1168
+
1169
+                    $url_filename = str_replace( '%20', ' ', $url_filename );
1170
+
1171
+                    $post_data['post_title'] = basename( $url_filename, '.' . $url_type['ext'] );         // just use the original filename (no extension)
1172
+               }
1173
+
1174
+               // make sure gets tied to parent.
1175
+               if ( empty( $post_data['post_parent'] ) ) {
1176
+                    $post_data['post_parent'] = $post_id;
1177
+               }
1178
+
1179
+               // do the validation and storage stuff.
1180
+               $att_id = media_handle_sideload( $file_array, $post_id, null, $post_data );             // $post_data can override the items saved to wp_posts table, like post_mime_type, guid, post_parent, post_title, post_content, post_status
1181
+
1182
+               // If error storing permanently, unlink.
1183
+               if ( is_wp_error( $att_id ) ) {
1184
+                    unlink( $file_array['tmp_name'] );
1185
+                    return false;
1186
+               }
1187
+          }
1188
+          return $att_id;
1189
+     }
1190
+
1191
+     // AJAX FUNCTIONS
1192
+     /**
1193
+      * Run through the accommodation grabbed from the DB.
1194
+      */
1195
+     public function process_ajax_search() {
1196
+          $this->current_importer->process_ajax_search();
1197
+          die();
1198
+     }
1199
+
1200
+     /**
1201
+      * Connect to wetu
1202
+      */
1203
+     public function process_ajax_import() {
1204
+          $this->current_importer->process_ajax_import();
1205
+          die();
1206
+     }
1207
+
1208
+     /**
1209
+      * Formats the row for the completed list.
1210
+      */
1211
+     public function format_completed_row( $response ) {
1212
+          echo wp_kses_post( '<li class="post-' . $response . '"><span class="dashicons dashicons-yes"></span> <a target="_blank" href="' . get_permalink( $response ) . '">' . get_the_title( $response ) . '</a></li>' );
1213
+     }
1214
+
1215
+     /**
1216
+      * Formats the error.
1217
+      */
1218
+     public function format_error( $response ) {
1219
+          echo wp_kses_post( '<li class="post-error"><span class="dashicons dashicons-no"></span>' . $response . '</li>' );
1220
+     }
1221
+
1222
+     /**
1223
+      * Does a multine search
1224
+      */
1225
+     public function multineedle_stripos( $haystack, $needles, $offset = 0 ) {
1226
+          $found = false;
1227
+          $needle_count = count( $needles );
1228
+
1229
+          foreach ( $needles as $needle ) {
1230
+               if ( false !== stripos( $haystack, $needle, $offset ) ) {
1231
+                    $found[] = true;
1232
+               }
1233
+          }
1234
+
1235
+          if ( false !== $found && count( $found ) === $needle_count ) {
1236
+               return true;
1237
+          } else {
1238
+               return false;
1239
+          }
1240
+     }
1241
+
1242
+     /**
1243
+      * Grab all the current accommodation posts via the lsx_wetu_id field.
1244
+      */
1245
+     public function find_current_accommodation( $post_type = 'accommodation' ) {
1246
+          global $wpdb;
1247
+          $return = array();
1248
+
1249
+          // @codingStandardsIgnoreStart
1250
+          $current_accommodation = $wpdb->get_results("
1251 1251
 			SELECT key1.post_id,key1.meta_value
1252 1252
 			FROM {$wpdb->postmeta} key1
1253 1253
 
@@ -1259,128 +1259,128 @@  discard block
 block discarded – undo
1259 1259
 
1260 1260
 			LIMIT 0,5000
1261 1261
 		");
1262
-		// @codingStandardsIgnoreEnd
1263
-
1264
-		if ( null !== $current_accommodation && ! empty( $current_accommodation ) ) {
1265
-			foreach ( $current_accommodation as $accom ) {
1266
-				$return[ $accom->meta_value ] = $accom;
1267
-			}
1268
-		}
1269
-
1270
-		return $return;
1271
-	}
1272
-
1273
-	/**
1274
-	 * Set the Video date
1275
-	 */
1276
-	public function set_video_data( $data, $id ) {
1277
-		if ( ! empty( $data[0]['content']['youtube_videos'] ) && is_array( $data[0]['content']['youtube_videos'] ) ) {
1278
-			$videos = false;
1279
-
1280
-			foreach ( $data[0]['content']['youtube_videos'] as $video ) {
1281
-				$temp_video = array();
1282
-
1283
-				if ( isset( $video['label'] ) ) {
1284
-					$temp_video['title'] = $video['label'];
1285
-				}
1286
-				if ( isset( $video['description'] ) ) {
1287
-					$temp_video['description'] = strip_tags( $video['description'] );
1288
-				}
1289
-				if ( isset( $video['url'] ) ) {
1290
-					$temp_video['url'] = $video['url'];
1291
-				}
1292
-
1293
-				$temp_video['thumbnail'] = '';
1294
-				$videos[] = $temp_video;
1295
-			}
1296
-
1297
-			if ( false !== $id && '0' !== $id ) {
1298
-				delete_post_meta( $id, 'videos' );
1299
-			}
1300
-
1301
-			foreach ( $videos as $video ) {
1302
-				add_post_meta( $id, 'videos', $video, false );
1303
-			}
1304
-		}
1305
-	}
1306
-
1307
-	public function shuffle_assoc( &$array ) {
1308
-		$new = array();
1309
-		$keys = array_keys( $array );
1310
-
1311
-		shuffle( $keys );
1312
-
1313
-		foreach ( $keys as $key ) {
1314
-			$new[ $key ] = $array[ $key ];
1315
-		}
1316
-
1317
-		$array = $new;
1318
-
1319
-		return true;
1320
-	}
1321
-
1322
-	/**
1323
-	 * Save the list of Tours into an option
1324
-	 */
1325
-	public function update_options() {
1326
-		$own = '';
1327
-		$options = array();
1328
-		delete_option( 'lsx_ti_tours_api_options' );
1329
-
1330
-		if ( isset( $_GET['own'] ) ) {
1331
-			$this->current_importer->url_qs .= '&own=true';
1332
-			$options[] = 'own';
1333
-		}
1334
-
1335
-		if ( isset( $_GET['type'] ) && 'allitineraries' !== $_GET['type'] ) {
1336
-			$this->current_importer->url_qs .= '&type=' . $_GET['type'];
1337
-			$options[] = $_GET['type'];
1338
-		} else {
1339
-			$options[] = 'sample';
1340
-			$this->current_importer->url_qs .= '&type=sample';
1341
-		}
1342
-
1343
-		$url = str_replace( 'Pins', 'Itinerary', $this->current_importer->url . '/V8/List?' . $this->current_importer->url_qs );
1344
-		$url .= '&results=2000';
1345
-		add_option( 'lsx_ti_tours_api_options', $options );
1346
-		$data = wp_remote_get( $url );
1347
-		$tours = json_decode( wp_remote_retrieve_body( $data ), true );
1348
-
1349
-		if ( isset( $tours['error'] ) ) {
1350
-			return $tours['error'];
1351
-		} elseif ( isset( $tours['itineraries'] ) && ! empty( $tours['itineraries'] ) ) {
1352
-			set_transient( 'lsx_ti_tours', $tours['itineraries'], 60 * 60 * 4 );
1353
-			return true;
1354
-		}
1355
-	}
1356
-
1357
-	/**
1358
-	 * Gets the post_id from the key
1359
-	 *
1360
-	 * @param boolean $wetu_id
1361
-	 * @return string
1362
-	 */
1363
-	public function get_post_id_by_key_value( $wetu_id = false ) {
1364
-		global $wpdb;
1365
-		$id = false;
1366
-		if ( false !== $wetu_id && '' !== $wetu_id ) {
1367
-			$result = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM `$wpdb->postmeta` WHERE `meta_key` = 'lsx_wetu_id' AND `meta_value` = '%s'", array( $wetu_id ) ) );
1368
-			if ( false !== $result && ! empty( $result ) ) {
1369
-				$id = $result;
1370
-			}
1371
-		}
1372
-		return $id;
1373
-	}
1374
-	/**
1375
-	 * Set the team memberon each item.
1376
-	 */
1377
-	public function set_team_member( $id, $team_members ) {
1378
-		delete_post_meta( $id, 'team_to_' . $this->tab_slug );
1379
-
1380
-		foreach ( $team_members as $team ) {
1381
-			add_post_meta( $id, 'team_to_' . $this->tab_slug, $team );
1382
-		}
1383
-	}
1262
+          // @codingStandardsIgnoreEnd
1263
+
1264
+          if ( null !== $current_accommodation && ! empty( $current_accommodation ) ) {
1265
+               foreach ( $current_accommodation as $accom ) {
1266
+                    $return[ $accom->meta_value ] = $accom;
1267
+               }
1268
+          }
1269
+
1270
+          return $return;
1271
+     }
1272
+
1273
+     /**
1274
+      * Set the Video date
1275
+      */
1276
+     public function set_video_data( $data, $id ) {
1277
+          if ( ! empty( $data[0]['content']['youtube_videos'] ) && is_array( $data[0]['content']['youtube_videos'] ) ) {
1278
+               $videos = false;
1279
+
1280
+               foreach ( $data[0]['content']['youtube_videos'] as $video ) {
1281
+                    $temp_video = array();
1282
+
1283
+                    if ( isset( $video['label'] ) ) {
1284
+                         $temp_video['title'] = $video['label'];
1285
+                    }
1286
+                    if ( isset( $video['description'] ) ) {
1287
+                         $temp_video['description'] = strip_tags( $video['description'] );
1288
+                    }
1289
+                    if ( isset( $video['url'] ) ) {
1290
+                         $temp_video['url'] = $video['url'];
1291
+                    }
1292
+
1293
+                    $temp_video['thumbnail'] = '';
1294
+                    $videos[] = $temp_video;
1295
+               }
1296
+
1297
+               if ( false !== $id && '0' !== $id ) {
1298
+                    delete_post_meta( $id, 'videos' );
1299
+               }
1300
+
1301
+               foreach ( $videos as $video ) {
1302
+                    add_post_meta( $id, 'videos', $video, false );
1303
+               }
1304
+          }
1305
+     }
1306
+
1307
+     public function shuffle_assoc( &$array ) {
1308
+          $new = array();
1309
+          $keys = array_keys( $array );
1310
+
1311
+          shuffle( $keys );
1312
+
1313
+          foreach ( $keys as $key ) {
1314
+               $new[ $key ] = $array[ $key ];
1315
+          }
1316
+
1317
+          $array = $new;
1318
+
1319
+          return true;
1320
+     }
1321
+
1322
+     /**
1323
+      * Save the list of Tours into an option
1324
+      */
1325
+     public function update_options() {
1326
+          $own = '';
1327
+          $options = array();
1328
+          delete_option( 'lsx_ti_tours_api_options' );
1329
+
1330
+          if ( isset( $_GET['own'] ) ) {
1331
+               $this->current_importer->url_qs .= '&own=true';
1332
+               $options[] = 'own';
1333
+          }
1334
+
1335
+          if ( isset( $_GET['type'] ) && 'allitineraries' !== $_GET['type'] ) {
1336
+               $this->current_importer->url_qs .= '&type=' . $_GET['type'];
1337
+               $options[] = $_GET['type'];
1338
+          } else {
1339
+               $options[] = 'sample';
1340
+               $this->current_importer->url_qs .= '&type=sample';
1341
+          }
1342
+
1343
+          $url = str_replace( 'Pins', 'Itinerary', $this->current_importer->url . '/V8/List?' . $this->current_importer->url_qs );
1344
+          $url .= '&results=2000';
1345
+          add_option( 'lsx_ti_tours_api_options', $options );
1346
+          $data = wp_remote_get( $url );
1347
+          $tours = json_decode( wp_remote_retrieve_body( $data ), true );
1348
+
1349
+          if ( isset( $tours['error'] ) ) {
1350
+               return $tours['error'];
1351
+          } elseif ( isset( $tours['itineraries'] ) && ! empty( $tours['itineraries'] ) ) {
1352
+               set_transient( 'lsx_ti_tours', $tours['itineraries'], 60 * 60 * 4 );
1353
+               return true;
1354
+          }
1355
+     }
1356
+
1357
+     /**
1358
+      * Gets the post_id from the key
1359
+      *
1360
+      * @param boolean $wetu_id
1361
+      * @return string
1362
+      */
1363
+     public function get_post_id_by_key_value( $wetu_id = false ) {
1364
+          global $wpdb;
1365
+          $id = false;
1366
+          if ( false !== $wetu_id && '' !== $wetu_id ) {
1367
+               $result = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM `$wpdb->postmeta` WHERE `meta_key` = 'lsx_wetu_id' AND `meta_value` = '%s'", array( $wetu_id ) ) );
1368
+               if ( false !== $result && ! empty( $result ) ) {
1369
+                    $id = $result;
1370
+               }
1371
+          }
1372
+          return $id;
1373
+     }
1374
+     /**
1375
+      * Set the team memberon each item.
1376
+      */
1377
+     public function set_team_member( $id, $team_members ) {
1378
+          delete_post_meta( $id, 'team_to_' . $this->tab_slug );
1379
+
1380
+          foreach ( $team_members as $team ) {
1381
+               add_post_meta( $id, 'team_to_' . $this->tab_slug, $team );
1382
+          }
1383
+     }
1384 1384
 }
1385 1385
 
1386 1386
 $lsx_wetu_importer = new LSX_WETU_Importer();
Please login to merge, or discard this patch.
classes/class-lsx-wetu-importer-tours.php 1 patch
Indentation   +1232 added lines, -1232 removed lines patch added patch discarded remove patch
@@ -9,109 +9,109 @@  discard block
 block discarded – undo
9 9
 
10 10
 class LSX_WETU_Importer_Tours 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 = 'tour';
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
-	 * Holds a list of any current accommodation
41
-	 *
42
-	 * @since 0.0.1
43
-	 *
44
-	 * @var      string
45
-	 */
46
-	public $current_accommodation = false;
47
-
48
-	/**
49
-	 * Holds a list of any current destinations
50
-	 *
51
-	 * @since 0.0.1
52
-	 *
53
-	 * @var      string
54
-	 */
55
-	public $current_destinations = false;
56
-
57
-	/**
58
-	 * Holds a list of the destination and the image it needs to grab.
59
-	 *
60
-	 * @since 0.0.1
61
-	 *
62
-	 * @var      string
63
-	 */
64
-	public $destination_images = false;
65
-
66
-	/**
67
-	 * Options
68
-	 *
69
-	 * @since 0.0.1
70
-	 *
71
-	 * @var      string
72
-	 */
73
-	public $options = false;
74
-
75
-	/**
76
-	 * The fields you wish to import
77
-	 *
78
-	 * @since 0.0.1
79
-	 *
80
-	 * @var      string
81
-	 */
82
-	public $tour_options = false;
83
-
84
-	/**
85
-	 * Initialize the plugin by setting localization, filters, and administration functions.
86
-	 *
87
-	 * @since 1.0.0
88
-	 *
89
-	 * @access private
90
-	 */
91
-	public function __construct() {
92
-		$this->set_variables();
93
-	}
94
-
95
-	/**
96
-	 * Sets the variables used throughout the plugin.
97
-	 */
98
-	public function set_variables() {
99
-		parent::set_variables();
100
-		if ( false !== $this->api_key ) {
101
-			$this->url    = 'https://wetu.com/API/Itinerary/' . $this->api_key;
102
-			$this->url_qs = '';
103
-		}
104
-		$tour_options = get_option( 'lsx_wetu_importer_tour_settings', false );
105
-		if ( false !== $tour_options ) {
106
-			$this->tour_options = $tour_options;
107
-		}
108
-	}
109
-
110
-	/**
111
-	 * Display the importer administration screen
112
-	 */
113
-	public function display_page() {
114
-		?>
12
+     /**
13
+      * The url to list items from WETU
14
+      *
15
+      * @since 0.0.1
16
+      *
17
+      * @var      string
18
+      */
19
+     public $tab_slug = 'tour';
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
+      * Holds a list of any current accommodation
41
+      *
42
+      * @since 0.0.1
43
+      *
44
+      * @var      string
45
+      */
46
+     public $current_accommodation = false;
47
+
48
+     /**
49
+      * Holds a list of any current destinations
50
+      *
51
+      * @since 0.0.1
52
+      *
53
+      * @var      string
54
+      */
55
+     public $current_destinations = false;
56
+
57
+     /**
58
+      * Holds a list of the destination and the image it needs to grab.
59
+      *
60
+      * @since 0.0.1
61
+      *
62
+      * @var      string
63
+      */
64
+     public $destination_images = false;
65
+
66
+     /**
67
+      * Options
68
+      *
69
+      * @since 0.0.1
70
+      *
71
+      * @var      string
72
+      */
73
+     public $options = false;
74
+
75
+     /**
76
+      * The fields you wish to import
77
+      *
78
+      * @since 0.0.1
79
+      *
80
+      * @var      string
81
+      */
82
+     public $tour_options = false;
83
+
84
+     /**
85
+      * Initialize the plugin by setting localization, filters, and administration functions.
86
+      *
87
+      * @since 1.0.0
88
+      *
89
+      * @access private
90
+      */
91
+     public function __construct() {
92
+          $this->set_variables();
93
+     }
94
+
95
+     /**
96
+      * Sets the variables used throughout the plugin.
97
+      */
98
+     public function set_variables() {
99
+          parent::set_variables();
100
+          if ( false !== $this->api_key ) {
101
+               $this->url    = 'https://wetu.com/API/Itinerary/' . $this->api_key;
102
+               $this->url_qs = '';
103
+          }
104
+          $tour_options = get_option( 'lsx_wetu_importer_tour_settings', false );
105
+          if ( false !== $tour_options ) {
106
+               $this->tour_options = $tour_options;
107
+          }
108
+     }
109
+
110
+     /**
111
+      * Display the importer administration screen
112
+      */
113
+     public function display_page() {
114
+          ?>
115 115
 		<div class="wrap">
116 116
 
117 117
 			<div class="tablenav top">
@@ -225,19 +225,19 @@  discard block
 block discarded – undo
225 225
 			</div>
226 226
 		</div>
227 227
 		<?php
228
-	}
229
-
230
-	/**
231
-	 * Displays the options for the form.
232
-	 *
233
-	 * @return void
234
-	 */
235
-	public function update_options_form() {
236
-		$form_options = get_option( 'lsx_ti_tours_api_options' );
237
-		if ( false === $form_options ) {
238
-			$form_options = array( 'sample' );
239
-		}
240
-		?>
228
+     }
229
+
230
+     /**
231
+      * Displays the options for the form.
232
+      *
233
+      * @return void
234
+      */
235
+     public function update_options_form() {
236
+          $form_options = get_option( 'lsx_ti_tours_api_options' );
237
+          if ( false === $form_options ) {
238
+               $form_options = array( 'sample' );
239
+          }
240
+          ?>
241 241
 		<form method="get" class="tour-refresh-form">
242 242
 			<input type="hidden" name="page" value="<?php echo esc_attr( $this->plugin_slug ); ?>" />
243 243
 			<input type="hidden" name="tab" value="tour" />
@@ -247,13 +247,13 @@  discard block
 block discarded – undo
247 247
 			<select name="type">
248 248
 				<option 
249 249
                 <?php 
250
-                if ( in_array( 'personal', $form_options ) ) {
250
+                    if ( in_array( 'personal', $form_options ) ) {
251 251
 echo esc_attr( 'selected="selected"' ); } 
252 252
 ?>
253 253
 value="personal"><?php esc_html_e( 'Personal', 'lsx-wetu-importer' ); ?></option>
254 254
 				<option 
255 255
                 <?php 
256
-                if ( in_array( 'sample', $form_options ) ) {
256
+                    if ( in_array( 'sample', $form_options ) ) {
257 257
 echo esc_attr( 'selected="selected"' ); } 
258 258
 ?>
259 259
 value="sample"><?php esc_html_e( 'Sample', 'lsx-wetu-importer' ); ?></option>
@@ -261,16 +261,16 @@  discard block
 block discarded – undo
261 261
 			<input class="button submit" type="submit" value="<?php esc_attr_e( 'Refresh', 'lsx-wetu-importer' ); ?>" />
262 262
 		</form>
263 263
 		<?php
264
-	}
264
+     }
265 265
 
266
-	/**
267
-	 * Grab all the current tour posts via the lsx_wetu_id field.
268
-	 */
269
-	public function find_current_tours() {
270
-		global $wpdb;
271
-		$return = array();
266
+     /**
267
+      * Grab all the current tour posts via the lsx_wetu_id field.
268
+      */
269
+     public function find_current_tours() {
270
+          global $wpdb;
271
+          $return = array();
272 272
 
273
-		$current_tours = $wpdb->get_results("
273
+          $current_tours = $wpdb->get_results("
274 274
 			SELECT key1.post_id,key1.meta_value,key2.post_title
275 275
 			FROM {$wpdb->postmeta} key1
276 276
 
@@ -283,136 +283,136 @@  discard block
 block discarded – undo
283 283
 			LIMIT 0,500
284 284
 		");
285 285
 
286
-		if ( null !== $current_tours && ! empty( $current_tours ) ) {
287
-			foreach ( $current_tours as $tour ) {
288
-				$return[ $tour->meta_value ] = $tour;
289
-			}
290
-		}
291
-
292
-		return $return;
293
-	}
294
-
295
-	/**
296
-	 * Run through the accommodation grabbed from the DB.
297
-	 */
298
-	public function process_ajax_search() {
299
-		$return = false;
300
-		check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
301
-
302
-		if ( isset( $_POST['action'] ) && 'lsx_tour_importer' === $_POST['action'] && isset( $_POST['type'] ) && $_POST['type'] === $this->tab_slug ) {
303
-			$tours = get_transient( 'lsx_ti_tours' );
304
-
305
-			if ( false !== $tours ) {
306
-				$searched_items = false;
307
-				if ( isset( $_POST['keyword'] ) ) {
308
-					$keyphrases = array_map( 'sanitize_text_field', wp_unslash( $_POST['keyword'] ) );
309
-				} else {
310
-					$keyphrases = array( 0 );
311
-				}
312
-
313
-				if ( ! is_array( $keyphrases ) ) {
314
-					$keyphrases = array( $keyphrases );
315
-				}
316
-				foreach ( $keyphrases as &$keyword ) {
317
-					$keyword = ltrim( rtrim( $keyword ) );
318
-				}
319
-
320
-				$post_status = false;
321
-				if ( in_array( 'publish', $keyphrases ) ) {
322
-					$post_status = 'publish';
323
-				}
324
-				if ( in_array( 'pending', $keyphrases ) ) {
325
-					$post_status = 'pending';
326
-				}
327
-				if ( in_array( 'draft', $keyphrases ) ) {
328
-					$post_status = 'draft';
329
-				}
330
-				if ( in_array( 'import', $keyphrases ) ) {
331
-					$post_status = 'import';
332
-				}
333
-
334
-				if ( ! empty( $tours ) ) {
335
-					$current_tours = $this->find_current_tours();
336
-
337
-					foreach ( $tours as $row_key => $row ) {
338
-						if ( isset( $row['is_disabled'] ) && true === $row['is_disabled'] ) {
339
-							continue;
340
-						}
341
-
342
-						// If this is a current tour, add its ID to the row.
343
-						$row['post_id'] = 0;
344
-						$row['post_title'] = $row['name'];
345
-
346
-						if ( false !== $current_tours && array_key_exists( $row['identifier'], $current_tours ) ) {
347
-							$row['post_id'] = $current_tours[ $row['identifier'] ]->post_id;
348
-							$row['post_title'] = $current_tours[ $row['identifier'] ]->post_title;
349
-						}
350
-
351
-						// If we are searching for.
352
-						if ( false !== $post_status ) {
353
-							if ( 'import' === $post_status ) {
354
-
355
-								if ( 0 !== $row['post_id'] ) {
356
-									continue;
357
-								} else {
358
-									$searched_items[ sanitize_title( $row['name'] ) . '-' . $row['identifier'] ] = $this->format_row( $row, $row_key );
359
-								}
360
-							} else {
361
-								if ( 0 === $row['post_id'] ) {
362
-									continue;
363
-								} else {
364
-									$current_status = get_post_status( $row['post_id'] );
365
-
366
-									if ( $current_status !== $post_status ) {
367
-										continue;
368
-									}
369
-								}
370
-
371
-								$searched_items[ sanitize_title( $row['name'] ) . '-' . $row['identifier'] ] = $this->format_row( $row, $row_key );
372
-							}
373
-						} else {
374
-							// Search through each keyword.
375
-							foreach ( $keyphrases as $keyphrase ) {
376
-
377
-								// Make sure the keyphrase is turned into an array.
378
-								$keywords = explode( ' ', $keyphrase );
379
-								if ( ! is_array( $keywords ) ) {
380
-									$keywords = array( $keywords );
381
-								}
382
-
383
-								if ( $this->multineedle_stripos( ltrim( rtrim( $row['name'] ) ), $keywords ) !== false ) {
384
-									$searched_items[ sanitize_title( $row['name'] ) . '-' . $row['identifier'] ] = $this->format_row( $row, $row_key );
385
-								} else if ( $this->multineedle_stripos( ltrim( rtrim( $row['reference_number'] ) ), $keywords ) !== false ) {
386
-									$searched_items[ sanitize_title( $row['name'] ) . '-' . $row['identifier'] ] = $this->format_row( $row, $row_key );
387
-								} else if ( $this->multineedle_stripos( ltrim( rtrim( $row['identifier_key'] ) ), $keywords ) !== false ) {
388
-									$searched_items[ sanitize_title( $row['name'] ) . '-' . $row['identifier'] ] = $this->format_row( $row, $row_key );
389
-								}
390
-							}
391
-						}
392
-					}
393
-				}
394
-
395
-				if ( false !== $searched_items ) {
396
-					$return = implode( $searched_items );
397
-				}
398
-			}
399
-			print_r( $return );
400
-			die();
401
-		}
402
-	}
403
-
404
-	/**
405
-	 * Formats the row for output on the screen.
406
-	 */
407
-	public function format_row( $row = false, $row_key = '' ) {
408
-		if ( false !== $row ) {
409
-			$status = 'import';
410
-
411
-			if ( 0 !== $row['post_id'] ) {
412
-				$status = '<a href="' . admin_url( '/post.php?post=' . $row['post_id'] . '&action=edit' ) . '" target="_blank">' . get_post_status( $row['post_id'] ) . '</a>';
413
-			}
414
-
415
-			$row_html = '
286
+          if ( null !== $current_tours && ! empty( $current_tours ) ) {
287
+               foreach ( $current_tours as $tour ) {
288
+                    $return[ $tour->meta_value ] = $tour;
289
+               }
290
+          }
291
+
292
+          return $return;
293
+     }
294
+
295
+     /**
296
+      * Run through the accommodation grabbed from the DB.
297
+      */
298
+     public function process_ajax_search() {
299
+          $return = false;
300
+          check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
301
+
302
+          if ( isset( $_POST['action'] ) && 'lsx_tour_importer' === $_POST['action'] && isset( $_POST['type'] ) && $_POST['type'] === $this->tab_slug ) {
303
+               $tours = get_transient( 'lsx_ti_tours' );
304
+
305
+               if ( false !== $tours ) {
306
+                    $searched_items = false;
307
+                    if ( isset( $_POST['keyword'] ) ) {
308
+                         $keyphrases = array_map( 'sanitize_text_field', wp_unslash( $_POST['keyword'] ) );
309
+                    } else {
310
+                         $keyphrases = array( 0 );
311
+                    }
312
+
313
+                    if ( ! is_array( $keyphrases ) ) {
314
+                         $keyphrases = array( $keyphrases );
315
+                    }
316
+                    foreach ( $keyphrases as &$keyword ) {
317
+                         $keyword = ltrim( rtrim( $keyword ) );
318
+                    }
319
+
320
+                    $post_status = false;
321
+                    if ( in_array( 'publish', $keyphrases ) ) {
322
+                         $post_status = 'publish';
323
+                    }
324
+                    if ( in_array( 'pending', $keyphrases ) ) {
325
+                         $post_status = 'pending';
326
+                    }
327
+                    if ( in_array( 'draft', $keyphrases ) ) {
328
+                         $post_status = 'draft';
329
+                    }
330
+                    if ( in_array( 'import', $keyphrases ) ) {
331
+                         $post_status = 'import';
332
+                    }
333
+
334
+                    if ( ! empty( $tours ) ) {
335
+                         $current_tours = $this->find_current_tours();
336
+
337
+                         foreach ( $tours as $row_key => $row ) {
338
+                              if ( isset( $row['is_disabled'] ) && true === $row['is_disabled'] ) {
339
+                                   continue;
340
+                              }
341
+
342
+                              // If this is a current tour, add its ID to the row.
343
+                              $row['post_id'] = 0;
344
+                              $row['post_title'] = $row['name'];
345
+
346
+                              if ( false !== $current_tours && array_key_exists( $row['identifier'], $current_tours ) ) {
347
+                                   $row['post_id'] = $current_tours[ $row['identifier'] ]->post_id;
348
+                                   $row['post_title'] = $current_tours[ $row['identifier'] ]->post_title;
349
+                              }
350
+
351
+                              // If we are searching for.
352
+                              if ( false !== $post_status ) {
353
+                                   if ( 'import' === $post_status ) {
354
+
355
+                                        if ( 0 !== $row['post_id'] ) {
356
+                                             continue;
357
+                                        } else {
358
+                                             $searched_items[ sanitize_title( $row['name'] ) . '-' . $row['identifier'] ] = $this->format_row( $row, $row_key );
359
+                                        }
360
+                                   } else {
361
+                                        if ( 0 === $row['post_id'] ) {
362
+                                             continue;
363
+                                        } else {
364
+                                             $current_status = get_post_status( $row['post_id'] );
365
+
366
+                                             if ( $current_status !== $post_status ) {
367
+                                                  continue;
368
+                                             }
369
+                                        }
370
+
371
+                                        $searched_items[ sanitize_title( $row['name'] ) . '-' . $row['identifier'] ] = $this->format_row( $row, $row_key );
372
+                                   }
373
+                              } else {
374
+                                   // Search through each keyword.
375
+                                   foreach ( $keyphrases as $keyphrase ) {
376
+
377
+                                        // Make sure the keyphrase is turned into an array.
378
+                                        $keywords = explode( ' ', $keyphrase );
379
+                                        if ( ! is_array( $keywords ) ) {
380
+                                             $keywords = array( $keywords );
381
+                                        }
382
+
383
+                                        if ( $this->multineedle_stripos( ltrim( rtrim( $row['name'] ) ), $keywords ) !== false ) {
384
+                                             $searched_items[ sanitize_title( $row['name'] ) . '-' . $row['identifier'] ] = $this->format_row( $row, $row_key );
385
+                                        } else if ( $this->multineedle_stripos( ltrim( rtrim( $row['reference_number'] ) ), $keywords ) !== false ) {
386
+                                             $searched_items[ sanitize_title( $row['name'] ) . '-' . $row['identifier'] ] = $this->format_row( $row, $row_key );
387
+                                        } else if ( $this->multineedle_stripos( ltrim( rtrim( $row['identifier_key'] ) ), $keywords ) !== false ) {
388
+                                             $searched_items[ sanitize_title( $row['name'] ) . '-' . $row['identifier'] ] = $this->format_row( $row, $row_key );
389
+                                        }
390
+                                   }
391
+                              }
392
+                         }
393
+                    }
394
+
395
+                    if ( false !== $searched_items ) {
396
+                         $return = implode( $searched_items );
397
+                    }
398
+               }
399
+               print_r( $return );
400
+               die();
401
+          }
402
+     }
403
+
404
+     /**
405
+      * Formats the row for output on the screen.
406
+      */
407
+     public function format_row( $row = false, $row_key = '' ) {
408
+          if ( false !== $row ) {
409
+               $status = 'import';
410
+
411
+               if ( 0 !== $row['post_id'] ) {
412
+                    $status = '<a href="' . admin_url( '/post.php?post=' . $row['post_id'] . '&action=edit' ) . '" target="_blank">' . get_post_status( $row['post_id'] ) . '</a>';
413
+               }
414
+
415
+               $row_html = '
416 416
 			<tr class="post-' . $row['post_id'] . ' type-tour" id="post-' . $row['post_id'] . '">
417 417
 				<td class="check-column">
418 418
 					<label for="cb-select-' . $row['identifier'] . '" class="screen-reader-text">' . $row['post_title'] . '</label>
@@ -434,982 +434,982 @@  discard block
 block discarded – undo
434 434
 					' . $row['identifier'] . '
435 435
 				</td>
436 436
 			</tr>';
437
-			return $row_html;
438
-		}
439
-	}
440
-
441
-	/**
442
-	 * Connect to wetu
443
-	 */
444
-	public function process_ajax_import( $force = false ) {
445
-		$return = false;
446
-		check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
447
-		if ( isset( $_POST['action'] ) && 'lsx_import_items' === $_POST['action'] && isset( $_POST['type'] ) && $_POST['type'] === $this->tab_slug && isset( $_POST['wetu_id'] ) ) {
448
-
449
-			$wetu_id = sanitize_text_field( $_POST['wetu_id'] );
450
-			if ( isset( $_POST['post_id'] ) ) {
451
-				$post_id = sanitize_text_field( $_POST['post_id'] );
452
-			} else {
453
-				$post_id = 0;
454
-			}
455
-
456
-			delete_option( 'lsx_wetu_importer_tour_settings' );
457
-
458
-			if ( isset( $_POST['team_members'] ) ) {
459
-				$team_members = array_map( 'sanitize_text_field', wp_unslash( $_POST['team_members'] ) );
460
-			} else {
461
-				$team_members = false;
462
-			}
463
-
464
-			if ( isset( $_POST['content'] ) && is_array( $_POST['content'] ) && ! empty( $_POST['content'] ) ) {
465
-				$content = array_map( 'sanitize_text_field', wp_unslash( $_POST['content'] ) );
466
-				add_option( 'lsx_wetu_importer_tour_settings', $content );
467
-			} else {
468
-				$content = false;
469
-			}
470
-			$jdata = wp_remote_get( 'https://wetu.com/API/Itinerary/V8/Get?id=' . $wetu_id );
471
-
472
-			if ( ! is_wp_error( $jdata ) && ! empty( $jdata ) && isset( $jdata['response'] ) && isset( $jdata['response']['code'] ) && 200 === $jdata['response']['code'] ) {
473
-				$jdata = json_decode( $jdata['body'], true );
474
-				$return = $this->import_row( $jdata, $wetu_id, $post_id, $team_members, $content );
475
-				$this->format_completed_row( $return );
476
-				$this->save_queue();
477
-				$this->cleanup_posts();
478
-				$this->attach_destination_images( $content );
479
-				$this->clean_attached_destinations( $return );
480
-			} else {
481
-				$this->format_error( esc_html__( 'There was a problem importing your tour, please try again.', 'lsx-wetu-importer' ) );
482
-			}
483
-		}
484
-	}
485
-
486
-	/**
487
-	 * Amends the tours destinations instead of replace.
488
-	 *
489
-	 * @param $id string
490
-	 * @return void
491
-	 */
492
-	public function clean_attached_destinations( $id ) {
493
-		$current_connections = get_post_meta( $id, 'destination_to_tour', false );
494
-		delete_post_meta( $id, 'destination_to_tour' );
495
-		$current_connections = array_unique( $current_connections );
496
-
497
-		foreach ( $current_connections as $connection ) {
498
-			add_post_meta( $id, 'destination_to_tour', $connection, false );
499
-		}
500
-	}
501
-
502
-	/**
503
-	 * Connect to wetu
504
-	 *
505
-	 * @param $data array
506
-	 * @param $wetu_id string
507
-	 */
508
-	public function import_row( $data, $wetu_id, $id = 0, $team_members = false, $importable_content = array(), $old1 = false, $old2 = false ) {
509
-		$post_name = '';
510
-		$data_post_content = '';
511
-		$data_post_excerpt = '';
512
-
513
-		$current_post = get_post( $id );
514
-
515
-		$post = array(
516
-			'post_type' => 'tour',
517
-		);
518
-
519
-		$content_used_general_description = false;
520
-
521
-		if ( ! empty( $importable_content ) && in_array( 'description', $importable_content ) ) {
522
-			$data_post_content = $current_post->post_content;
523
-			if ( isset( $data['summary'] ) && ! empty( $data['summary'] ) ) {
524
-				$data_post_content = $data['summary'];
525
-			}
526
-			$post['post_content'] = $data_post_content;
527
-		}
528
-
529
-		// Create or update the post.
530
-		if ( false !== $id && '0' !== $id ) {
531
-			$post['ID'] = $id;
532
-			$post['post_status'] = 'publish';
533
-			if ( isset( $this->options ) && 'on' !== $this->options['disable_accommodation_title'] ) {
534
-				$post['post_title'] = $data['name'];
535
-			}
536
-			$id = wp_update_post( $post );
537
-		} else {
538
-			// Set the name.
539
-			if ( isset( $data['name'] ) ) {
540
-				$post_name = wp_unique_post_slug( sanitize_title( $data['name'] ), $id, 'draft', 'tour', 0 );
541
-			}
542
-
543
-			if ( ! isset( $post['post_content'] ) ) {
544
-				$post['post_content'] = ' ';
545
-			}
546
-
547
-			$post['post_name']   = $post_name;
548
-			$post['post_title']  = $data['name'];
549
-			$post['post_status'] = 'publish';
550
-			$id = wp_insert_post( $post );
551
-
552
-			// Save the WETU ID and the Last date it was modified.
553
-			if ( false !== $id ) {
554
-				add_post_meta( $id, 'lsx_wetu_id', $wetu_id );
555
-				add_post_meta( $id, 'lsx_wetu_modified_date', strtotime( $data['last_modified'] ) );
556
-			}
557
-		}
558
-
559
-		// Set reference number.
560
-		$this->set_reference_number( $data, $id );
561
-
562
-		// Set the team member if it is there.
563
-		if ( post_type_exists( 'team' ) && false !== $team_members && '' !== $team_members ) {
564
-			$this->set_team_member( $id, $team_members );
565
-		}
566
-
567
-		// Set the price.
568
-		if ( false !== $importable_content && in_array( 'price', $importable_content ) ) {
569
-			$this->set_price( $data, $id );
570
-		}
571
-
572
-		// Set the Duration.
573
-		if ( false !== $importable_content && in_array( 'duration', $importable_content ) ) {
574
-			$this->set_duration( $data, $id );
575
-		}
576
-
577
-		// Set the Group Size.
578
-		if ( false !== $importable_content && in_array( 'group_size', $importable_content ) ) {
579
-			$this->set_group_size( $data, $id );
580
-		}
581
-
582
-		// Set the Group Size.
583
-		if ( false !== $importable_content && in_array( 'tags', $importable_content ) ) {
584
-			$this->set_travel_styles( $id, $data );
585
-		}
586
-
587
-		// Set the Start and End Point Destinations.
588
-		if ( false !== $importable_content && in_array( 'start_end_point', $importable_content ) ) {
589
-			$this->set_start_end_point( $data, $id );
590
-		}
591
-
592
-		if ( false !== $importable_content && in_array( 'itineraries', $importable_content ) && isset( $data['legs'] ) && ! empty( $data['legs'] ) ) {
593
-			$this->process_itineraries( $data, $id, $importable_content );
594
-		}
595
-
596
-		if ( in_array( 'map', $importable_content ) && isset( $data['routes'] ) && ! empty( $data['routes'] ) ) {
597
-			$this->set_map_data( $data, $id );
598
-		}
599
-
600
-		return $id;
601
-	}
602
-
603
-	/**
604
-	 * A loop which runs through each leg on the tour.
605
-	 */
606
-	public function process_itineraries( $data, $id, $importable_content ) {
607
-		$day_counter = 1;
608
-		$leg_counter = 0;
609
-
610
-		delete_post_meta( $id, 'itinerary' );
611
-
612
-		if ( false !== $importable_content && in_array( 'accommodation', $importable_content ) ) {
613
-			delete_post_meta( $id, 'accommodation_to_tour' );
614
-		}
615
-
616
-		foreach ( $data['legs'] as $leg ) {
617
-
618
-			// Itinerary Accommodation.
619
-			$current_accommodation = false;
620
-			$current_destination = false;
621
-			if ( 'Mobile' !== $leg['type'] ) {
622
-				if ( false !== $importable_content && in_array( 'accommodation', $importable_content ) ) {
623
-					$current_accommodation = $this->set_accommodation( $leg, $id );
624
-				}
625
-				if ( false !== $importable_content && in_array( 'destination', $importable_content ) ) {
626
-					$current_destination = $this->set_destination( $leg, $id, $leg_counter );
627
-				}
628
-			}
629
-
630
-			// If the Nights are the same mount of days in the array,  then it isnt "By Destination".
631
-			if ( ( 1 <= (int) $leg['nights'] && isset( $leg['periods'] ) ) || 0 === $leg['itinerary_leg_id'] ) {
632
-
633
-				foreach ( $leg['periods'] as $day_key => $day ) {
634
-					$current_day = array();
635
-
636
-					// If this is a moble tented solution.
637
-					$next_day_count = $day_counter + (int) $day['days'];
638
-
639
-					if ( ( isset( $leg['stops'] ) && 'Mobile' !== $leg['type'] ) || ( 1 < (int) $day['days'] ) ) {
640
-						$day_count_label = ' - ' . ( $next_day_count - 1 );
641
-					} else {
642
-						$day_count_label = '';
643
-					}
644
-					$current_day['title'] = esc_attr( 'Day ', 'lsx-wetu-importer' ) . $day_counter . $day_count_label;
645
-
646
-					// Description.
647
-					if ( false !== $importable_content && in_array( 'itinerary_description', $importable_content ) && isset( $day['notes'] ) ) {
648
-						$current_day['description'] = $day['notes'];
649
-					} else {
650
-						$current_day['description'] = '';
651
-					}
652
-
653
-					// Itinerary Gallery.
654
-					if ( false !== $importable_content && in_array( 'itinerary_gallery', $importable_content ) && isset( $day['images'] ) ) {
655
-						$current_day['featured_image'] = '';
656
-					} else {
657
-						$current_day['featured_image'] = '';
658
-					}
659
-
660
-					// If its a mobile safari, we need to get the destination and accommodation data from the stops.
661
-					if ( 'Mobile' === $leg['type'] ) {
662
-						$current_destination   = $this->get_mobile_destination( $day, $leg, $id );
663
-						$current_accommodation = $this->get_mobile_accommodation( $day, $leg, $id );
664
-					}
665
-
666
-					// Accommodation.
667
-					if ( false !== $current_accommodation ) {
668
-						$current_day['accommodation_to_tour'] = array( $current_accommodation );
669
-					} else {
670
-						$current_day['accommodation_to_tour'] = array();
671
-					}
672
-
673
-					// Destination.
674
-					if ( false !== $current_destination ) {
675
-						$current_day['destination_to_tour'] = array( $current_destination );
676
-					} else {
677
-						$current_day['destination_to_tour'] = array();
678
-					}
679
-
680
-					// Included.
681
-					if ( false !== $importable_content && in_array( 'itinerary_included', $importable_content ) && isset( $day['included'] ) && '' !== $day['included'] ) {
682
-						$current_day['included'] = $day['included'];
683
-					} else {
684
-						$current_day['included'] = '';
685
-					}
686
-
687
-					// Excluded.
688
-					if ( false !== $importable_content && in_array( 'itinerary_excluded', $importable_content ) && isset( $day['excluded'] ) && '' !== $day['excluded'] ) {
689
-						$current_day['excluded'] = $day['excluded'];
690
-					} else {
691
-						$current_day['excluded'] = '';
692
-					}
693
-
694
-					// Excluded.
695
-					if ( false !== $importable_content && in_array( 'room_basis', $importable_content ) && isset( $day['room_basis'] ) && '' !== $day['room_basis'] ) {
696
-						$current_day['room_basis'] = $day['room_basis'];
697
-					} else {
698
-						$current_day['room_basis'] = '';
699
-					}
700
-
701
-					// Excluded.
702
-					if ( false !== $importable_content && in_array( 'drinks_basis', $importable_content ) && isset( $day['drinks_basis'] ) && '' !== $day['drinks_basis'] ) {
703
-						$current_day['drinks_basis'] = $day['drinks_basis'];
704
-					} else {
705
-						$current_day['drinks_basis'] = '';
706
-					}
707
-
708
-					$this->set_itinerary_day( $current_day, $id );
709
-					$day_counter = $next_day_count;
710
-				}
711
-			} else {
712
-				// This is for the by destination.
713
-
714
-				$current_day = array();
715
-				$next_day_count = $day_counter + (int) $leg['nights'];
716
-				$day_count_label = $next_day_count - 1;
717
-
718
-				$current_day['title'] = esc_attr( 'Day ', 'lsx-wetu-importer' ) . $day_counter;
719
-
720
-				if ( 0 !== (int) $leg['nights'] ) {
721
-					$current_day['title'] .= ' - ' . $day_count_label;
722
-				}
723
-
724
-				// Description.
725
-				if ( false !== $importable_content && in_array( 'itinerary_description', $importable_content ) && isset( $leg['notes'] ) ) {
726
-					$current_day['description'] = $leg['notes'];
727
-				} else {
728
-					$current_day['description'] = '';
729
-				}
730
-
731
-				// Itinerary Gallery.
732
-				if ( false !== $importable_content && in_array( 'itinerary_gallery', $importable_content ) && isset( $leg['images'] ) ) {
733
-					$current_day['featured_image'] = '';
734
-				} else {
735
-					$current_day['featured_image'] = '';
736
-				}
737
-
738
-				// Accommodation.
739
-				if ( false !== $current_accommodation ) {
740
-					$current_day['accommodation_to_tour'] = array( $current_accommodation );
741
-				} else {
742
-					$current_day['accommodation_to_tour'] = array();
743
-				}
744
-
745
-				// Destination.
746
-				if ( false !== $current_destination ) {
747
-					$current_day['destination_to_tour'] = array( $current_destination );
748
-				} else {
749
-					$current_day['destination_to_tour'] = array();
750
-				}
751
-
752
-				// Included.
753
-				if ( false !== $importable_content && in_array( 'itinerary_included', $importable_content ) && isset( $leg['included'] ) && '' !== $leg['included'] ) {
754
-					$current_day['included'] = $leg['included'];
755
-				} else {
756
-					$current_day['included'] = '';
757
-				}
758
-
759
-				// Excluded.
760
-				if ( false !== $importable_content && in_array( 'itinerary_excluded', $importable_content ) && isset( $leg['excluded'] ) && '' !== $leg['excluded'] ) {
761
-					$current_day['excluded'] = $leg['excluded'];
762
-				} else {
763
-					$current_day['excluded'] = '';
764
-				}
765
-
766
-				// Excluded.
767
-				if ( false !== $importable_content && in_array( 'room_basis', $importable_content ) && isset( $leg['room_basis'] ) && '' !== $leg['room_basis'] ) {
768
-					$current_day['room_basis'] = $leg['room_basis'];
769
-				} else {
770
-					$current_day['room_basis'] = '';
771
-				}
772
-
773
-				// Excluded.
774
-				if ( false !== $importable_content && in_array( 'drinks_basis', $importable_content ) && isset( $leg['drinks_basis'] ) && '' !== $leg['drinks_basis'] ) {
775
-					$current_day['drinks_basis'] = $leg['drinks_basis'];
776
-				} else {
777
-					$current_day['drinks_basis'] = '';
778
-				}
779
-
780
-				$this->set_itinerary_day( $current_day, $id );
781
-				$day_counter = $next_day_count;
782
-			}
783
-			$leg_counter++;
784
-		}
785
-	}
786
-
787
-	/**
788
-	 * Sets the departs from and ends in points on the tours.
789
-	 *
790
-	 * @param array $data
791
-	 * @param string $id
792
-	 * @return void
793
-	 */
794
-	public function set_start_end_point( $data, $id ) {
795
-		delete_post_meta( $id, 'departs_from' );
796
-		delete_post_meta( $id, 'ends_in' );
797
-		$departs_from = false;
798
-		$ends_in      = false;
799
-
800
-		$args = array(
801
-			'points'      => $data['legs'],
802
-			'start_index' => 0,
803
-			'end_index'   => count( $data['legs'] ) - 2,
804
-		);
805
-		$args = apply_filters( 'lsx_wetu_start_end_args', $args, $data );
806
-
807
-		if ( ! empty( $args['points'] ) && is_array( $args['points'] ) ) {
808
-			$leg_counter = 0;
809
-
810
-			foreach ( $args['points'] as $point ) {
811
-				// If we are in the first leg,  and the destination was attached then save it as the departure field.
812
-				if ( $leg_counter === $args['start_index'] ) {
813
-					$departs_from_destination = $this->set_country( $point['destination_content_entity_id'], $id );
814
-					if ( false !== $departs_from_destination ) {
815
-						$departs_from = $departs_from_destination;
816
-					}
817
-				}
818
-				// If its the last leg then save it as the ends in.
819
-				if ( $leg_counter === $args['end_index'] ) {
820
-					$ends_in = $point['destination_content_entity_id'];
821
-				}
822
-				$leg_counter++;
823
-			}
824
-
825
-			$departs_from = apply_filters( 'lsx_wetu_departs_from_id', $departs_from, $data, $this );
826
-			if ( false !== $departs_from ) {
827
-				add_post_meta( $id, 'departs_from', $departs_from, true );
828
-			}
829
-
830
-			if ( false !== $ends_in ) {
831
-				$ends_in             = apply_filters( 'lsx_wetu_ends_in_id', $ends_in, $data, $this );
832
-				$ends_in_destination = $this->set_country( $ends_in, $id );
833
-				if ( false !== $ends_in_destination ) {
834
-					add_post_meta( $id, 'ends_in', $ends_in_destination, true );
835
-				}
836
-			}
837
-		}
838
-	}
839
-
840
-	/**
841
-	 * Gets the destination for the mobile camp.
842
-	 *
843
-	 * @param $day
844
-	 * @param $leg
845
-	 * @return void
846
-	 */
847
-	public function get_mobile_destination( $day, $leg, $id ) {
848
-		$current_destination = false;
849
-		$current_day = (int) $day['period_start_day'];
850
-		if ( isset( $leg['stops'] ) ) {
851
-			foreach ( $leg['stops'] as $stop ) {
852
-				$arrival_day = (int) $stop['arrival_day'];
853
-				$departure_day = (int) $stop['departure_day'];
854
-				if ( $arrival_day <= $current_day && $current_day < $departure_day ) {
855
-					$current_destination = $this->set_destination( $stop, $id, 0 );
856
-				}
857
-			}
858
-		}
859
-		return $current_destination;
860
-	}
861
-
862
-	/**
863
-	 * Gets the accommodation for the mobile camp.
864
-	 *
865
-	 * @param $day
866
-	 * @param $leg
867
-	 * @return void
868
-	 */
869
-	public function get_mobile_accommodation( $day, $leg, $id ) {
870
-		$current_accommodation = false;
871
-		$current_day = (int) $day['period_start_day'];
872
-		if ( isset( $leg['stops'] ) ) {
873
-			foreach ( $leg['stops'] as $stop ) {
874
-				$arrival_day = (int) $stop['arrival_day'];
875
-				$departure_day = (int) $stop['departure_day'];
876
-				if ( $arrival_day <= $current_day && $current_day < $departure_day ) {
877
-					$current_accommodation = $this->set_accommodation( $stop, $id, 0 );
878
-				}
879
-			}
880
-		}
881
-		return $current_accommodation;
882
-	}
883
-
884
-	/**
885
-	 * Run through your routes and save the points as a KML file.
886
-	 */
887
-	public function set_map_data( $data, $id, $zoom = 9 ) {
888
-		if ( ! empty( $data['routes'] ) ) {
889
-			delete_post_meta( $id, 'wetu_map_points' );
890
-
891
-			$points = array();
892
-
893
-			foreach ( $data['routes'] as $route ) {
894
-
895
-				if ( isset( $route['points'] ) && '' !== $route['points'] ) {
896
-
897
-					$temp_points = explode( ';', $route['points'] );
898
-					$point_counter = count( $temp_points );
899
-
900
-					for ( $x = 0; $x <= $point_counter; $x++ ) {
901
-						$y = $x + 1;
902
-						$points[] = $temp_points[ $x ] . ',' . $temp_points[ $y ];
903
-						$x++;
904
-					}
905
-				}
906
-			}
907
-
908
-			if ( ! empty( $points ) ) {
909
-				$this->save_custom_field( implode( ' ', $points ), 'wetu_map_points', $id, false, true );
910
-			}
911
-		}
912
-
913
-	}
914
-
915
-	// CLASS SPECIFIC FUNCTIONS.
916
-
917
-	/**
918
-	 * Set the Itinerary Day.
919
-	 */
920
-	public function set_itinerary_day( $day, $id ) {
921
-		$this->save_custom_field( $day, 'itinerary', $id, false, false );
922
-	}
923
-
924
-	/**
925
-	 * Set the ref number
926
-	 */
927
-	public function set_reference_number( $data, $id ) {
928
-		if ( isset( $data['reference_number'] ) && '' !== $data['reference_number'] ) {
929
-			$this->save_custom_field( $data['reference_number'], 'lsx_wetu_ref', $id );
930
-		}
931
-	}
932
-
933
-	/**
934
-	 * Set the price.
935
-	 */
936
-	public function set_price( $data, $id ) {
937
-		// Price.
938
-		if ( isset( $data['price'] ) && '' !== $data['price'] ) {
939
-			$price = $data['price'];
940
-			if ( false === apply_filters( 'lsx_wetu_importer_disable_tour_price_filter', false ) ) {
941
-				$price = preg_replace( '/[^0-9,.]/', '', $price );
942
-			}
943
-			$meta_key = apply_filters( 'lsx_wetu_importer_price_meta_key', 'price' );
944
-			$this->save_custom_field( $price, $meta_key, $id );
945
-		}
946
-
947
-		// Price includes.
948
-		if ( isset( $data['price_includes'] ) && '' !== $data['price_includes'] ) {
949
-			$meta_key = apply_filters( 'lsx_wetu_importer_included_meta_key', 'included' );
950
-			$this->save_custom_field( $data['price_includes'], $meta_key, $id );
951
-		}
952
-
953
-		// Price Excludes.
954
-		if ( isset( $data['price_excludes'] ) && '' !== $data['price_excludes'] ) {
955
-			$meta_key = apply_filters( 'lsx_wetu_importer_not_included_meta_key', 'not_included' );
956
-			$this->save_custom_field( $data['price_excludes'], $meta_key, $id );
957
-		}
958
-	}
959
-
960
-	/**
961
-	 * Set the duration.
962
-	 */
963
-	public function set_duration( $data, $id ) {
964
-		if ( isset( $data['days'] ) && ! empty( $data['days'] ) ) {
965
-			$price = $data['days'];
966
-			$price = preg_replace( '/[^0-9,.]/', '', $price );
967
-			$this->save_custom_field( $price, 'duration', $id );
968
-		}
969
-	}
970
-
971
-	/**
972
-	 * Set the group size
973
-	 */
974
-	public function set_group_size( $data, $id ) {
975
-		if ( isset( $data['group_size'] ) && ! empty( $data['group_size'] ) ) {
976
-			$group_size = $data['group_size'];
977
-			$this->save_custom_field( $group_size, 'group_size', $id );
978
-		}
979
-	}
980
-
981
-	/**
982
-	 * Takes the WETU tags and sets the Travel Styles.
983
-	 *
984
-	 * @param string $id
985
-	 * @param array $travel_styles
986
-	 * @return void
987
-	 */
988
-	public function set_travel_styles( $id, $data ) {
989
-		$tags = apply_filters( 'lsx_wetu_importer_tour_travel_styles', $data['tags'] );
990
-		if ( isset( $data['tags'] ) && ! empty( $tags ) ) {
991
-			foreach ( $tags as $tag ) {
992
-				$this->set_term( $id, $tag, 'travel-style' );
993
-			}
994
-		}
995
-	}
996
-
997
-	/**
998
-	 * Connects the Accommodation if its available
999
-	 */
1000
-	public function set_accommodation( $day, $id ) {
1001
-		$ac_id = false;
1002
-		$this->current_accommodation = $this->find_current_accommodation();
1003
-
1004
-		if ( isset( $day['content_entity_id'] ) && ! empty( $day['content_entity_id'] ) ) {
1005
-			if ( false !== $this->current_accommodation && ! empty( $this->current_accommodation ) && array_key_exists( $day['content_entity_id'], $this->current_accommodation ) ) {
1006
-				$ac_id = $this->current_accommodation[ $day['content_entity_id'] ];
1007
-			} else {
1008
-				$ac_id = wp_insert_post(array(
1009
-					'post_type' => 'accommodation',
1010
-					'post_status' => 'draft',
1011
-					'post_title' => $day['content_entity_id'],
1012
-				));
1013
-
1014
-				$this->save_custom_field( $day['content_entity_id'], 'lsx_wetu_id', $ac_id );
1015
-			}
1016
-
1017
-			if ( '' !== $ac_id && false !== $ac_id ) {
1018
-				$this->save_custom_field( $ac_id, 'accommodation_to_tour', $id, false, false );
1019
-				$this->save_custom_field( $id, 'tour_to_accommodation', $ac_id, false, false );
1020
-				$this->queue_item( $ac_id );
1021
-			}
1022
-		}
1023
-		return $ac_id;
1024
-	}
1025
-
1026
-	/**
1027
-	 * Grab all the current accommodation posts via the lsx_wetu_id field.
1028
-	 *
1029
-	 * @param $post_type string
1030
-	 * @return boolean / array
1031
-	 */
1032
-	public function find_current_accommodation( $post_type = 'accommodation' ) {
1033
-		global $wpdb;
1034
-		$accommodation = parent::find_current_accommodation( $post_type );
1035
-		$return = false;
1036
-
1037
-		if ( ! empty( $accommodation ) ) {
1038
-			foreach ( $accommodation as $key => $acc ) {
1039
-				$return[ $acc->meta_value ] = $acc->post_id;
1040
-			}
1041
-		}
1042
-
1043
-		return $return;
1044
-	}
1045
-
1046
-	/**
1047
-	 * Grab all the current accommodation posts via the lsx_wetu_id field.
1048
-	 * @return boolean / array
1049
-	 */
1050
-	public function find_current_destinations() {
1051
-		return $this->find_current_accommodation( 'destination' );
1052
-	}
1053
-
1054
-	/**
1055
-	 * Connects the destinations post type
1056
-	 *
1057
-	 * @param $day array
1058
-	 * @param $id string
1059
-	 * @return boolean / string
1060
-	 */
1061
-	public function set_destination( $day, $id, $leg_counter ) {
1062
-		$dest_id    = false;
1063
-		$country_id = false;
1064
-
1065
-		$this->current_destinations = $this->find_current_destinations();
1066
-
1067
-		if ( isset( $day['destination_content_entity_id'] ) && ! empty( $day['destination_content_entity_id'] ) ) {
1068
-			if ( false !== $this->current_destinations && ! empty( $this->current_destinations ) && array_key_exists( $day['destination_content_entity_id'], $this->current_destinations ) ) {
1069
-				$dest_id = $this->current_destinations[ $day['destination_content_entity_id'] ];
1070
-
1071
-				//TODO Check for attachments here.
1072
-				$this->destination_images[ $id ][] = array( $dest_id, $day['destination_content_entity_id'] );
1073
-
1074
-				//Check if there is a country asigned.
1075
-				$potential_id = wp_get_post_parent_id( $dest_id );
1076
-				$country_wetu_id = get_post_meta( $potential_id, 'lsx_wetu_id', true );
1077
-
1078
-				if ( false !== $country_wetu_id ) {
1079
-					$country_id = $this->set_country( $country_wetu_id, $id );
1080
-					//$this->destination_images[ $id ][] = array( $id, $country_wetu_id );
1081
-				}
1082
-			} else {
1083
-				$destination_json = wp_remote_get( 'https://wetu.com/API/Pins/' . $this->api_key . '/Get?ids=' . $day['destination_content_entity_id'] );
1084
-
1085
-				if ( ! is_wp_error( $destination_json ) && ! empty( $destination_json ) && isset( $destination_json['response'] ) && isset( $destination_json['response']['code'] ) && 200 === $destination_json['response']['code'] ) {
1086
-
1087
-					$destination_data = json_decode( $destination_json['body'], true );
1088
-
1089
-					if ( ! empty( $destination_data ) && ! isset( $destination_data['error'] ) ) {
1090
-						$destination_title = $day['destination_content_entity_id'];
1091
-
1092
-						if ( isset( $destination_data[0]['name'] ) ) {
1093
-							$destination_title = $destination_data[0]['name'];
1094
-						}
1095
-
1096
-						if ( isset( $destination_data[0]['map_object_id'] ) && isset( $destination_data[0]['position']['country_content_entity_id'] )
1097
-							&& $destination_data[0]['map_object_id'] !== $destination_data[0]['position']['country_content_entity_id'] ) {
1098
-
1099
-							$country_id = $this->set_country( $destination_data[0]['position']['country_content_entity_id'], $id );
1100
-							// Save the destination so we can grab the tour featured image and banner from them.
1101
-						}
1102
-
1103
-						$dest_post = array(
1104
-							'post_type' => 'destination',
1105
-							'post_status' => 'draft',
1106
-							'post_title' => $destination_title,
1107
-						);
1108
-
1109
-						if ( false !== $country_id ) {
1110
-							$dest_post['post_parent'] = $country_id;
1111
-						}
1112
-						$dest_id = wp_insert_post( $dest_post );
1113
-
1114
-						// Make sure we register the.
1115
-						$this->current_destinations[ $day['destination_content_entity_id'] ] = $dest_id;
1116
-
1117
-						// If there are images attached then use the destination.
1118
-						if ( isset( $destination_data[0]['content']['images'] ) && ! empty( $destination_data[0]['content']['images'] ) ) {
1119
-							$this->destination_images[ $id ][] = array( $dest_id, $day['destination_content_entity_id'] );
1120
-						}
1121
-
1122
-						$this->save_custom_field( $day['destination_content_entity_id'], 'lsx_wetu_id', $dest_id );
1123
-					}
1124
-				}
1125
-			}
1126
-
1127
-			if ( '' !== $dest_id && false !== $dest_id ) {
1128
-				$this->save_custom_field( $dest_id, 'destination_to_tour', $id, false, false );
1129
-				$this->save_custom_field( $id, 'tour_to_destination', $dest_id, false, false );
1130
-
1131
-				//Save the item to display in the queue
1132
-				$this->queue_item( $dest_id );
1133
-
1134
-				//Save the item to clean up the amount of connections.
1135
-				$this->cleanup_posts[ $dest_id ] = 'tour_to_destination';
1136
-
1137
-				//Add this relation info so we can make sure certain items are set as countries.
1138
-				if ( 0 !== $country_id && false !== $country_id ) {
1139
-					$this->relation_meta[ $dest_id ] = $country_id;
1140
-					$this->relation_meta[ $country_id ] = 0;
1141
-				} else {
1142
-					$this->relation_meta[ $dest_id ] = 0;
1143
-				}
1144
-			}
1145
-		}
1146
-		return $dest_id;
1147
-	}
1148
-
1149
-	/**
1150
-	 * Connects the destinations post type
1151
-	 *
1152
-	 * @param $dest_id string
1153
-	 * @param $country_id array
1154
-	 * @param $id string
1155
-	 *
1156
-	 * @return string
1157
-	 */
1158
-	public function set_country( $country_wetu_id, $id ) {
1159
-		$country_id = false;
1160
-		$this->current_destinations = $this->find_current_destinations();
1161
-
1162
-		if ( false !== $this->current_destinations && ! empty( $this->current_destinations ) && array_key_exists( $country_wetu_id, $this->current_destinations ) ) {
1163
-			$country_id = $this->current_destinations[ $country_wetu_id ];
1164
-			$this->destination_images[ $id ][] = array( $country_id, $country_wetu_id );
1165
-		} else {
1166
-			$country_json = wp_remote_get( 'https://wetu.com/API/Pins/' . $this->api_key . '/Get?ids=' . $country_wetu_id );
1167
-
1168
-			if ( ! is_wp_error( $country_json ) && ! empty( $country_json ) && isset( $country_json['response'] ) && isset( $country_json['response']['code'] ) && 200 === $country_json['response']['code'] ) {
1169
-				$country_data = json_decode( $country_json['body'], true );
1170
-
1171
-				// Format the title of the destination if its available,  otherwise default to the WETU ID.
1172
-				$country_title = $country_wetu_id;
1173
-
1174
-				if ( isset( $country_data[0]['name'] ) ) {
1175
-					$country_title = $country_data[0]['name'];
1176
-				}
1177
-
1178
-				$country_id = wp_insert_post( array(
1179
-					'post_type' => 'destination',
1180
-					'post_status' => 'draft',
1181
-					'post_title' => $country_title,
1182
-				));
1183
-
1184
-				//add the country to the current destination stack
1185
-				$this->current_destinations[ $country_wetu_id ] = $country_id;
1186
-
1187
-				// Check if there are images and save fore use later.
1188
-				if ( isset( $country_data[0]['content']['images'] ) && ! empty( $country_data[0]['content']['images'] ) ) {
1189
-					$this->destination_images[ $id ][] = array( $country_id, $country_wetu_id );
1190
-				}
1191
-
1192
-				//Save the wetu field
1193
-				$this->save_custom_field( $country_wetu_id, 'lsx_wetu_id', $country_id );
1194
-			}
1195
-		}
1196
-
1197
-		if ( '' !== $country_id && false !== $country_id ) {
1198
-			$this->save_custom_field( $country_id, 'destination_to_tour', $id, false, false );
1199
-			$this->save_custom_field( $id, 'tour_to_destination', $country_id, false, false );
1200
-			$this->queue_item( $country_id );
1201
-			$this->cleanup_posts[ $country_id ] = 'tour_to_destination';
1202
-
1203
-			return $country_id;
1204
-		}
1205
-	}
1206
-
1207
-	/**
1208
-	 * Connects the destinations post type
1209
-	 *
1210
-	 * @param $dest_id string
1211
-	 * @param $country_id array
1212
-	 * @param $id string
1213
-	 *
1214
-	 * @return string
1215
-	 */
1216
-	public function attach_destination_images( $importable_content = array() ) {
1217
-		if ( false !== $this->destination_images ) {
1218
-			$this->shuffle_assoc( $this->destination_images );
1219
-			foreach ( $this->destination_images as $tour => $destinations ) {
1220
-				shuffle( $destinations );
1221
-				$image_set = false;
1222
-				$forced = false;
1223
-
1224
-				foreach ( $destinations as $destination ) {
1225
-					if ( false === $image_set && false === $forced ) {
1226
-						$url = 'https://wetu.com/API/Pins/' . $this->api_key;
1227
-
1228
-						$url_qs = '';
1229
-						$jdata = wp_remote_get( $url . '/Get?' . $url_qs . '&ids=' . $destination[1] );
1230
-
1231
-						if ( ! is_wp_error( $jdata ) && ! empty( $jdata ) && isset( $jdata['response'] ) && isset( $jdata['response']['code'] ) && 200 === $jdata['response']['code'] ) {
1232
-							$adata = json_decode( $jdata['body'], true );
1233
-
1234
-							if ( ! empty( $adata ) && ! empty( $adata[0]['content']['images'] ) ) {
1235
-								$this->find_attachments( $destination[0] );
1236
-
1237
-								// Set the featured image.
1238
-								if ( false !== $importable_content && in_array( 'featured_image', $importable_content ) ) {
1239
-									$image_set = $this->set_featured_image( $adata, $tour );
1240
-									if ( false !== $importable_content && in_array( 'banner_image', $importable_content ) ) {
1241
-										$image_set = $this->set_banner_image( $adata, $tour );
1242
-										$forced = true;
1243
-									}
1244
-									continue;
1245
-								}
1246
-								if ( false !== $importable_content && in_array( 'banner_image', $importable_content ) ) {
1247
-									$image_set = $this->set_banner_image( $adata, $tour );
1248
-								}
1249
-							}
1250
-						}
1251
-					} else {
1252
-						continue;
1253
-					}
1254
-				}
1255
-			}
1256
-		}
1257
-	}
1258
-
1259
-	/**
1260
-	 * Creates the main gallery data
1261
-	 */
1262
-	public function set_featured_image( $data, $id ) {
1263
-		$image_set = false;
1264
-		$counter = 0;
1265
-
1266
-		if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) {
1267
-			$images_array = $data[0]['content']['images'];
1268
-
1269
-			if ( 'on' === $this->options['enable_tour_featured_random'] ) {
1270
-				shuffle( $images_array );
1271
-			}
1272
-
1273
-			foreach ( $images_array as $v ) {
1274
-
1275
-				if ( true === $image_set ) {
1276
-					$counter++;
1277
-					continue;
1278
-				}
1279
-
1280
-				if ( ! $this->check_if_image_is_used( $v ) ) {
1281
-					$temp_featured_image = $this->attach_image( $v, $id );
1282
-
1283
-					if ( false !== $temp_featured_image ) {
1284
-						$this->featured_image = $temp_featured_image;
1285
-						delete_post_meta( $id, '_thumbnail_id' );
1286
-						add_post_meta( $id, '_thumbnail_id', $this->featured_image, true );
1287
-						$image_set = true;
1288
-					}
1289
-				}
1290
-
1291
-				$counter++;
1292
-			}
1293
-		}
1294
-		return $image_set;
1295
-	}
1296
-
1297
-	/**
1298
-	 * Sets a banner image
1299
-	 */
1300
-	public function set_banner_image( $data, $id, $content = array( 'none' ) ) {
1301
-		$image_set = false;
1302
-		$counter = 0;
1303
-
1304
-		if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) {
1305
-
1306
-			foreach ( $data[0]['content']['images'] as $v ) {
1307
-				/*print_r('<pre>');
437
+               return $row_html;
438
+          }
439
+     }
440
+
441
+     /**
442
+      * Connect to wetu
443
+      */
444
+     public function process_ajax_import( $force = false ) {
445
+          $return = false;
446
+          check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
447
+          if ( isset( $_POST['action'] ) && 'lsx_import_items' === $_POST['action'] && isset( $_POST['type'] ) && $_POST['type'] === $this->tab_slug && isset( $_POST['wetu_id'] ) ) {
448
+
449
+               $wetu_id = sanitize_text_field( $_POST['wetu_id'] );
450
+               if ( isset( $_POST['post_id'] ) ) {
451
+                    $post_id = sanitize_text_field( $_POST['post_id'] );
452
+               } else {
453
+                    $post_id = 0;
454
+               }
455
+
456
+               delete_option( 'lsx_wetu_importer_tour_settings' );
457
+
458
+               if ( isset( $_POST['team_members'] ) ) {
459
+                    $team_members = array_map( 'sanitize_text_field', wp_unslash( $_POST['team_members'] ) );
460
+               } else {
461
+                    $team_members = false;
462
+               }
463
+
464
+               if ( isset( $_POST['content'] ) && is_array( $_POST['content'] ) && ! empty( $_POST['content'] ) ) {
465
+                    $content = array_map( 'sanitize_text_field', wp_unslash( $_POST['content'] ) );
466
+                    add_option( 'lsx_wetu_importer_tour_settings', $content );
467
+               } else {
468
+                    $content = false;
469
+               }
470
+               $jdata = wp_remote_get( 'https://wetu.com/API/Itinerary/V8/Get?id=' . $wetu_id );
471
+
472
+               if ( ! is_wp_error( $jdata ) && ! empty( $jdata ) && isset( $jdata['response'] ) && isset( $jdata['response']['code'] ) && 200 === $jdata['response']['code'] ) {
473
+                    $jdata = json_decode( $jdata['body'], true );
474
+                    $return = $this->import_row( $jdata, $wetu_id, $post_id, $team_members, $content );
475
+                    $this->format_completed_row( $return );
476
+                    $this->save_queue();
477
+                    $this->cleanup_posts();
478
+                    $this->attach_destination_images( $content );
479
+                    $this->clean_attached_destinations( $return );
480
+               } else {
481
+                    $this->format_error( esc_html__( 'There was a problem importing your tour, please try again.', 'lsx-wetu-importer' ) );
482
+               }
483
+          }
484
+     }
485
+
486
+     /**
487
+      * Amends the tours destinations instead of replace.
488
+      *
489
+      * @param $id string
490
+      * @return void
491
+      */
492
+     public function clean_attached_destinations( $id ) {
493
+          $current_connections = get_post_meta( $id, 'destination_to_tour', false );
494
+          delete_post_meta( $id, 'destination_to_tour' );
495
+          $current_connections = array_unique( $current_connections );
496
+
497
+          foreach ( $current_connections as $connection ) {
498
+               add_post_meta( $id, 'destination_to_tour', $connection, false );
499
+          }
500
+     }
501
+
502
+     /**
503
+      * Connect to wetu
504
+      *
505
+      * @param $data array
506
+      * @param $wetu_id string
507
+      */
508
+     public function import_row( $data, $wetu_id, $id = 0, $team_members = false, $importable_content = array(), $old1 = false, $old2 = false ) {
509
+          $post_name = '';
510
+          $data_post_content = '';
511
+          $data_post_excerpt = '';
512
+
513
+          $current_post = get_post( $id );
514
+
515
+          $post = array(
516
+               'post_type' => 'tour',
517
+          );
518
+
519
+          $content_used_general_description = false;
520
+
521
+          if ( ! empty( $importable_content ) && in_array( 'description', $importable_content ) ) {
522
+               $data_post_content = $current_post->post_content;
523
+               if ( isset( $data['summary'] ) && ! empty( $data['summary'] ) ) {
524
+                    $data_post_content = $data['summary'];
525
+               }
526
+               $post['post_content'] = $data_post_content;
527
+          }
528
+
529
+          // Create or update the post.
530
+          if ( false !== $id && '0' !== $id ) {
531
+               $post['ID'] = $id;
532
+               $post['post_status'] = 'publish';
533
+               if ( isset( $this->options ) && 'on' !== $this->options['disable_accommodation_title'] ) {
534
+                    $post['post_title'] = $data['name'];
535
+               }
536
+               $id = wp_update_post( $post );
537
+          } else {
538
+               // Set the name.
539
+               if ( isset( $data['name'] ) ) {
540
+                    $post_name = wp_unique_post_slug( sanitize_title( $data['name'] ), $id, 'draft', 'tour', 0 );
541
+               }
542
+
543
+               if ( ! isset( $post['post_content'] ) ) {
544
+                    $post['post_content'] = ' ';
545
+               }
546
+
547
+               $post['post_name']   = $post_name;
548
+               $post['post_title']  = $data['name'];
549
+               $post['post_status'] = 'publish';
550
+               $id = wp_insert_post( $post );
551
+
552
+               // Save the WETU ID and the Last date it was modified.
553
+               if ( false !== $id ) {
554
+                    add_post_meta( $id, 'lsx_wetu_id', $wetu_id );
555
+                    add_post_meta( $id, 'lsx_wetu_modified_date', strtotime( $data['last_modified'] ) );
556
+               }
557
+          }
558
+
559
+          // Set reference number.
560
+          $this->set_reference_number( $data, $id );
561
+
562
+          // Set the team member if it is there.
563
+          if ( post_type_exists( 'team' ) && false !== $team_members && '' !== $team_members ) {
564
+               $this->set_team_member( $id, $team_members );
565
+          }
566
+
567
+          // Set the price.
568
+          if ( false !== $importable_content && in_array( 'price', $importable_content ) ) {
569
+               $this->set_price( $data, $id );
570
+          }
571
+
572
+          // Set the Duration.
573
+          if ( false !== $importable_content && in_array( 'duration', $importable_content ) ) {
574
+               $this->set_duration( $data, $id );
575
+          }
576
+
577
+          // Set the Group Size.
578
+          if ( false !== $importable_content && in_array( 'group_size', $importable_content ) ) {
579
+               $this->set_group_size( $data, $id );
580
+          }
581
+
582
+          // Set the Group Size.
583
+          if ( false !== $importable_content && in_array( 'tags', $importable_content ) ) {
584
+               $this->set_travel_styles( $id, $data );
585
+          }
586
+
587
+          // Set the Start and End Point Destinations.
588
+          if ( false !== $importable_content && in_array( 'start_end_point', $importable_content ) ) {
589
+               $this->set_start_end_point( $data, $id );
590
+          }
591
+
592
+          if ( false !== $importable_content && in_array( 'itineraries', $importable_content ) && isset( $data['legs'] ) && ! empty( $data['legs'] ) ) {
593
+               $this->process_itineraries( $data, $id, $importable_content );
594
+          }
595
+
596
+          if ( in_array( 'map', $importable_content ) && isset( $data['routes'] ) && ! empty( $data['routes'] ) ) {
597
+               $this->set_map_data( $data, $id );
598
+          }
599
+
600
+          return $id;
601
+     }
602
+
603
+     /**
604
+      * A loop which runs through each leg on the tour.
605
+      */
606
+     public function process_itineraries( $data, $id, $importable_content ) {
607
+          $day_counter = 1;
608
+          $leg_counter = 0;
609
+
610
+          delete_post_meta( $id, 'itinerary' );
611
+
612
+          if ( false !== $importable_content && in_array( 'accommodation', $importable_content ) ) {
613
+               delete_post_meta( $id, 'accommodation_to_tour' );
614
+          }
615
+
616
+          foreach ( $data['legs'] as $leg ) {
617
+
618
+               // Itinerary Accommodation.
619
+               $current_accommodation = false;
620
+               $current_destination = false;
621
+               if ( 'Mobile' !== $leg['type'] ) {
622
+                    if ( false !== $importable_content && in_array( 'accommodation', $importable_content ) ) {
623
+                         $current_accommodation = $this->set_accommodation( $leg, $id );
624
+                    }
625
+                    if ( false !== $importable_content && in_array( 'destination', $importable_content ) ) {
626
+                         $current_destination = $this->set_destination( $leg, $id, $leg_counter );
627
+                    }
628
+               }
629
+
630
+               // If the Nights are the same mount of days in the array,  then it isnt "By Destination".
631
+               if ( ( 1 <= (int) $leg['nights'] && isset( $leg['periods'] ) ) || 0 === $leg['itinerary_leg_id'] ) {
632
+
633
+                    foreach ( $leg['periods'] as $day_key => $day ) {
634
+                         $current_day = array();
635
+
636
+                         // If this is a moble tented solution.
637
+                         $next_day_count = $day_counter + (int) $day['days'];
638
+
639
+                         if ( ( isset( $leg['stops'] ) && 'Mobile' !== $leg['type'] ) || ( 1 < (int) $day['days'] ) ) {
640
+                              $day_count_label = ' - ' . ( $next_day_count - 1 );
641
+                         } else {
642
+                              $day_count_label = '';
643
+                         }
644
+                         $current_day['title'] = esc_attr( 'Day ', 'lsx-wetu-importer' ) . $day_counter . $day_count_label;
645
+
646
+                         // Description.
647
+                         if ( false !== $importable_content && in_array( 'itinerary_description', $importable_content ) && isset( $day['notes'] ) ) {
648
+                              $current_day['description'] = $day['notes'];
649
+                         } else {
650
+                              $current_day['description'] = '';
651
+                         }
652
+
653
+                         // Itinerary Gallery.
654
+                         if ( false !== $importable_content && in_array( 'itinerary_gallery', $importable_content ) && isset( $day['images'] ) ) {
655
+                              $current_day['featured_image'] = '';
656
+                         } else {
657
+                              $current_day['featured_image'] = '';
658
+                         }
659
+
660
+                         // If its a mobile safari, we need to get the destination and accommodation data from the stops.
661
+                         if ( 'Mobile' === $leg['type'] ) {
662
+                              $current_destination   = $this->get_mobile_destination( $day, $leg, $id );
663
+                              $current_accommodation = $this->get_mobile_accommodation( $day, $leg, $id );
664
+                         }
665
+
666
+                         // Accommodation.
667
+                         if ( false !== $current_accommodation ) {
668
+                              $current_day['accommodation_to_tour'] = array( $current_accommodation );
669
+                         } else {
670
+                              $current_day['accommodation_to_tour'] = array();
671
+                         }
672
+
673
+                         // Destination.
674
+                         if ( false !== $current_destination ) {
675
+                              $current_day['destination_to_tour'] = array( $current_destination );
676
+                         } else {
677
+                              $current_day['destination_to_tour'] = array();
678
+                         }
679
+
680
+                         // Included.
681
+                         if ( false !== $importable_content && in_array( 'itinerary_included', $importable_content ) && isset( $day['included'] ) && '' !== $day['included'] ) {
682
+                              $current_day['included'] = $day['included'];
683
+                         } else {
684
+                              $current_day['included'] = '';
685
+                         }
686
+
687
+                         // Excluded.
688
+                         if ( false !== $importable_content && in_array( 'itinerary_excluded', $importable_content ) && isset( $day['excluded'] ) && '' !== $day['excluded'] ) {
689
+                              $current_day['excluded'] = $day['excluded'];
690
+                         } else {
691
+                              $current_day['excluded'] = '';
692
+                         }
693
+
694
+                         // Excluded.
695
+                         if ( false !== $importable_content && in_array( 'room_basis', $importable_content ) && isset( $day['room_basis'] ) && '' !== $day['room_basis'] ) {
696
+                              $current_day['room_basis'] = $day['room_basis'];
697
+                         } else {
698
+                              $current_day['room_basis'] = '';
699
+                         }
700
+
701
+                         // Excluded.
702
+                         if ( false !== $importable_content && in_array( 'drinks_basis', $importable_content ) && isset( $day['drinks_basis'] ) && '' !== $day['drinks_basis'] ) {
703
+                              $current_day['drinks_basis'] = $day['drinks_basis'];
704
+                         } else {
705
+                              $current_day['drinks_basis'] = '';
706
+                         }
707
+
708
+                         $this->set_itinerary_day( $current_day, $id );
709
+                         $day_counter = $next_day_count;
710
+                    }
711
+               } else {
712
+                    // This is for the by destination.
713
+
714
+                    $current_day = array();
715
+                    $next_day_count = $day_counter + (int) $leg['nights'];
716
+                    $day_count_label = $next_day_count - 1;
717
+
718
+                    $current_day['title'] = esc_attr( 'Day ', 'lsx-wetu-importer' ) . $day_counter;
719
+
720
+                    if ( 0 !== (int) $leg['nights'] ) {
721
+                         $current_day['title'] .= ' - ' . $day_count_label;
722
+                    }
723
+
724
+                    // Description.
725
+                    if ( false !== $importable_content && in_array( 'itinerary_description', $importable_content ) && isset( $leg['notes'] ) ) {
726
+                         $current_day['description'] = $leg['notes'];
727
+                    } else {
728
+                         $current_day['description'] = '';
729
+                    }
730
+
731
+                    // Itinerary Gallery.
732
+                    if ( false !== $importable_content && in_array( 'itinerary_gallery', $importable_content ) && isset( $leg['images'] ) ) {
733
+                         $current_day['featured_image'] = '';
734
+                    } else {
735
+                         $current_day['featured_image'] = '';
736
+                    }
737
+
738
+                    // Accommodation.
739
+                    if ( false !== $current_accommodation ) {
740
+                         $current_day['accommodation_to_tour'] = array( $current_accommodation );
741
+                    } else {
742
+                         $current_day['accommodation_to_tour'] = array();
743
+                    }
744
+
745
+                    // Destination.
746
+                    if ( false !== $current_destination ) {
747
+                         $current_day['destination_to_tour'] = array( $current_destination );
748
+                    } else {
749
+                         $current_day['destination_to_tour'] = array();
750
+                    }
751
+
752
+                    // Included.
753
+                    if ( false !== $importable_content && in_array( 'itinerary_included', $importable_content ) && isset( $leg['included'] ) && '' !== $leg['included'] ) {
754
+                         $current_day['included'] = $leg['included'];
755
+                    } else {
756
+                         $current_day['included'] = '';
757
+                    }
758
+
759
+                    // Excluded.
760
+                    if ( false !== $importable_content && in_array( 'itinerary_excluded', $importable_content ) && isset( $leg['excluded'] ) && '' !== $leg['excluded'] ) {
761
+                         $current_day['excluded'] = $leg['excluded'];
762
+                    } else {
763
+                         $current_day['excluded'] = '';
764
+                    }
765
+
766
+                    // Excluded.
767
+                    if ( false !== $importable_content && in_array( 'room_basis', $importable_content ) && isset( $leg['room_basis'] ) && '' !== $leg['room_basis'] ) {
768
+                         $current_day['room_basis'] = $leg['room_basis'];
769
+                    } else {
770
+                         $current_day['room_basis'] = '';
771
+                    }
772
+
773
+                    // Excluded.
774
+                    if ( false !== $importable_content && in_array( 'drinks_basis', $importable_content ) && isset( $leg['drinks_basis'] ) && '' !== $leg['drinks_basis'] ) {
775
+                         $current_day['drinks_basis'] = $leg['drinks_basis'];
776
+                    } else {
777
+                         $current_day['drinks_basis'] = '';
778
+                    }
779
+
780
+                    $this->set_itinerary_day( $current_day, $id );
781
+                    $day_counter = $next_day_count;
782
+               }
783
+               $leg_counter++;
784
+          }
785
+     }
786
+
787
+     /**
788
+      * Sets the departs from and ends in points on the tours.
789
+      *
790
+      * @param array $data
791
+      * @param string $id
792
+      * @return void
793
+      */
794
+     public function set_start_end_point( $data, $id ) {
795
+          delete_post_meta( $id, 'departs_from' );
796
+          delete_post_meta( $id, 'ends_in' );
797
+          $departs_from = false;
798
+          $ends_in      = false;
799
+
800
+          $args = array(
801
+               'points'      => $data['legs'],
802
+               'start_index' => 0,
803
+               'end_index'   => count( $data['legs'] ) - 2,
804
+          );
805
+          $args = apply_filters( 'lsx_wetu_start_end_args', $args, $data );
806
+
807
+          if ( ! empty( $args['points'] ) && is_array( $args['points'] ) ) {
808
+               $leg_counter = 0;
809
+
810
+               foreach ( $args['points'] as $point ) {
811
+                    // If we are in the first leg,  and the destination was attached then save it as the departure field.
812
+                    if ( $leg_counter === $args['start_index'] ) {
813
+                         $departs_from_destination = $this->set_country( $point['destination_content_entity_id'], $id );
814
+                         if ( false !== $departs_from_destination ) {
815
+                              $departs_from = $departs_from_destination;
816
+                         }
817
+                    }
818
+                    // If its the last leg then save it as the ends in.
819
+                    if ( $leg_counter === $args['end_index'] ) {
820
+                         $ends_in = $point['destination_content_entity_id'];
821
+                    }
822
+                    $leg_counter++;
823
+               }
824
+
825
+               $departs_from = apply_filters( 'lsx_wetu_departs_from_id', $departs_from, $data, $this );
826
+               if ( false !== $departs_from ) {
827
+                    add_post_meta( $id, 'departs_from', $departs_from, true );
828
+               }
829
+
830
+               if ( false !== $ends_in ) {
831
+                    $ends_in             = apply_filters( 'lsx_wetu_ends_in_id', $ends_in, $data, $this );
832
+                    $ends_in_destination = $this->set_country( $ends_in, $id );
833
+                    if ( false !== $ends_in_destination ) {
834
+                         add_post_meta( $id, 'ends_in', $ends_in_destination, true );
835
+                    }
836
+               }
837
+          }
838
+     }
839
+
840
+     /**
841
+      * Gets the destination for the mobile camp.
842
+      *
843
+      * @param $day
844
+      * @param $leg
845
+      * @return void
846
+      */
847
+     public function get_mobile_destination( $day, $leg, $id ) {
848
+          $current_destination = false;
849
+          $current_day = (int) $day['period_start_day'];
850
+          if ( isset( $leg['stops'] ) ) {
851
+               foreach ( $leg['stops'] as $stop ) {
852
+                    $arrival_day = (int) $stop['arrival_day'];
853
+                    $departure_day = (int) $stop['departure_day'];
854
+                    if ( $arrival_day <= $current_day && $current_day < $departure_day ) {
855
+                         $current_destination = $this->set_destination( $stop, $id, 0 );
856
+                    }
857
+               }
858
+          }
859
+          return $current_destination;
860
+     }
861
+
862
+     /**
863
+      * Gets the accommodation for the mobile camp.
864
+      *
865
+      * @param $day
866
+      * @param $leg
867
+      * @return void
868
+      */
869
+     public function get_mobile_accommodation( $day, $leg, $id ) {
870
+          $current_accommodation = false;
871
+          $current_day = (int) $day['period_start_day'];
872
+          if ( isset( $leg['stops'] ) ) {
873
+               foreach ( $leg['stops'] as $stop ) {
874
+                    $arrival_day = (int) $stop['arrival_day'];
875
+                    $departure_day = (int) $stop['departure_day'];
876
+                    if ( $arrival_day <= $current_day && $current_day < $departure_day ) {
877
+                         $current_accommodation = $this->set_accommodation( $stop, $id, 0 );
878
+                    }
879
+               }
880
+          }
881
+          return $current_accommodation;
882
+     }
883
+
884
+     /**
885
+      * Run through your routes and save the points as a KML file.
886
+      */
887
+     public function set_map_data( $data, $id, $zoom = 9 ) {
888
+          if ( ! empty( $data['routes'] ) ) {
889
+               delete_post_meta( $id, 'wetu_map_points' );
890
+
891
+               $points = array();
892
+
893
+               foreach ( $data['routes'] as $route ) {
894
+
895
+                    if ( isset( $route['points'] ) && '' !== $route['points'] ) {
896
+
897
+                         $temp_points = explode( ';', $route['points'] );
898
+                         $point_counter = count( $temp_points );
899
+
900
+                         for ( $x = 0; $x <= $point_counter; $x++ ) {
901
+                              $y = $x + 1;
902
+                              $points[] = $temp_points[ $x ] . ',' . $temp_points[ $y ];
903
+                              $x++;
904
+                         }
905
+                    }
906
+               }
907
+
908
+               if ( ! empty( $points ) ) {
909
+                    $this->save_custom_field( implode( ' ', $points ), 'wetu_map_points', $id, false, true );
910
+               }
911
+          }
912
+
913
+     }
914
+
915
+     // CLASS SPECIFIC FUNCTIONS.
916
+
917
+     /**
918
+      * Set the Itinerary Day.
919
+      */
920
+     public function set_itinerary_day( $day, $id ) {
921
+          $this->save_custom_field( $day, 'itinerary', $id, false, false );
922
+     }
923
+
924
+     /**
925
+      * Set the ref number
926
+      */
927
+     public function set_reference_number( $data, $id ) {
928
+          if ( isset( $data['reference_number'] ) && '' !== $data['reference_number'] ) {
929
+               $this->save_custom_field( $data['reference_number'], 'lsx_wetu_ref', $id );
930
+          }
931
+     }
932
+
933
+     /**
934
+      * Set the price.
935
+      */
936
+     public function set_price( $data, $id ) {
937
+          // Price.
938
+          if ( isset( $data['price'] ) && '' !== $data['price'] ) {
939
+               $price = $data['price'];
940
+               if ( false === apply_filters( 'lsx_wetu_importer_disable_tour_price_filter', false ) ) {
941
+                    $price = preg_replace( '/[^0-9,.]/', '', $price );
942
+               }
943
+               $meta_key = apply_filters( 'lsx_wetu_importer_price_meta_key', 'price' );
944
+               $this->save_custom_field( $price, $meta_key, $id );
945
+          }
946
+
947
+          // Price includes.
948
+          if ( isset( $data['price_includes'] ) && '' !== $data['price_includes'] ) {
949
+               $meta_key = apply_filters( 'lsx_wetu_importer_included_meta_key', 'included' );
950
+               $this->save_custom_field( $data['price_includes'], $meta_key, $id );
951
+          }
952
+
953
+          // Price Excludes.
954
+          if ( isset( $data['price_excludes'] ) && '' !== $data['price_excludes'] ) {
955
+               $meta_key = apply_filters( 'lsx_wetu_importer_not_included_meta_key', 'not_included' );
956
+               $this->save_custom_field( $data['price_excludes'], $meta_key, $id );
957
+          }
958
+     }
959
+
960
+     /**
961
+      * Set the duration.
962
+      */
963
+     public function set_duration( $data, $id ) {
964
+          if ( isset( $data['days'] ) && ! empty( $data['days'] ) ) {
965
+               $price = $data['days'];
966
+               $price = preg_replace( '/[^0-9,.]/', '', $price );
967
+               $this->save_custom_field( $price, 'duration', $id );
968
+          }
969
+     }
970
+
971
+     /**
972
+      * Set the group size
973
+      */
974
+     public function set_group_size( $data, $id ) {
975
+          if ( isset( $data['group_size'] ) && ! empty( $data['group_size'] ) ) {
976
+               $group_size = $data['group_size'];
977
+               $this->save_custom_field( $group_size, 'group_size', $id );
978
+          }
979
+     }
980
+
981
+     /**
982
+      * Takes the WETU tags and sets the Travel Styles.
983
+      *
984
+      * @param string $id
985
+      * @param array $travel_styles
986
+      * @return void
987
+      */
988
+     public function set_travel_styles( $id, $data ) {
989
+          $tags = apply_filters( 'lsx_wetu_importer_tour_travel_styles', $data['tags'] );
990
+          if ( isset( $data['tags'] ) && ! empty( $tags ) ) {
991
+               foreach ( $tags as $tag ) {
992
+                    $this->set_term( $id, $tag, 'travel-style' );
993
+               }
994
+          }
995
+     }
996
+
997
+     /**
998
+      * Connects the Accommodation if its available
999
+      */
1000
+     public function set_accommodation( $day, $id ) {
1001
+          $ac_id = false;
1002
+          $this->current_accommodation = $this->find_current_accommodation();
1003
+
1004
+          if ( isset( $day['content_entity_id'] ) && ! empty( $day['content_entity_id'] ) ) {
1005
+               if ( false !== $this->current_accommodation && ! empty( $this->current_accommodation ) && array_key_exists( $day['content_entity_id'], $this->current_accommodation ) ) {
1006
+                    $ac_id = $this->current_accommodation[ $day['content_entity_id'] ];
1007
+               } else {
1008
+                    $ac_id = wp_insert_post(array(
1009
+                         'post_type' => 'accommodation',
1010
+                         'post_status' => 'draft',
1011
+                         'post_title' => $day['content_entity_id'],
1012
+                    ));
1013
+
1014
+                    $this->save_custom_field( $day['content_entity_id'], 'lsx_wetu_id', $ac_id );
1015
+               }
1016
+
1017
+               if ( '' !== $ac_id && false !== $ac_id ) {
1018
+                    $this->save_custom_field( $ac_id, 'accommodation_to_tour', $id, false, false );
1019
+                    $this->save_custom_field( $id, 'tour_to_accommodation', $ac_id, false, false );
1020
+                    $this->queue_item( $ac_id );
1021
+               }
1022
+          }
1023
+          return $ac_id;
1024
+     }
1025
+
1026
+     /**
1027
+      * Grab all the current accommodation posts via the lsx_wetu_id field.
1028
+      *
1029
+      * @param $post_type string
1030
+      * @return boolean / array
1031
+      */
1032
+     public function find_current_accommodation( $post_type = 'accommodation' ) {
1033
+          global $wpdb;
1034
+          $accommodation = parent::find_current_accommodation( $post_type );
1035
+          $return = false;
1036
+
1037
+          if ( ! empty( $accommodation ) ) {
1038
+               foreach ( $accommodation as $key => $acc ) {
1039
+                    $return[ $acc->meta_value ] = $acc->post_id;
1040
+               }
1041
+          }
1042
+
1043
+          return $return;
1044
+     }
1045
+
1046
+     /**
1047
+      * Grab all the current accommodation posts via the lsx_wetu_id field.
1048
+      * @return boolean / array
1049
+      */
1050
+     public function find_current_destinations() {
1051
+          return $this->find_current_accommodation( 'destination' );
1052
+     }
1053
+
1054
+     /**
1055
+      * Connects the destinations post type
1056
+      *
1057
+      * @param $day array
1058
+      * @param $id string
1059
+      * @return boolean / string
1060
+      */
1061
+     public function set_destination( $day, $id, $leg_counter ) {
1062
+          $dest_id    = false;
1063
+          $country_id = false;
1064
+
1065
+          $this->current_destinations = $this->find_current_destinations();
1066
+
1067
+          if ( isset( $day['destination_content_entity_id'] ) && ! empty( $day['destination_content_entity_id'] ) ) {
1068
+               if ( false !== $this->current_destinations && ! empty( $this->current_destinations ) && array_key_exists( $day['destination_content_entity_id'], $this->current_destinations ) ) {
1069
+                    $dest_id = $this->current_destinations[ $day['destination_content_entity_id'] ];
1070
+
1071
+                    //TODO Check for attachments here.
1072
+                    $this->destination_images[ $id ][] = array( $dest_id, $day['destination_content_entity_id'] );
1073
+
1074
+                    //Check if there is a country asigned.
1075
+                    $potential_id = wp_get_post_parent_id( $dest_id );
1076
+                    $country_wetu_id = get_post_meta( $potential_id, 'lsx_wetu_id', true );
1077
+
1078
+                    if ( false !== $country_wetu_id ) {
1079
+                         $country_id = $this->set_country( $country_wetu_id, $id );
1080
+                         //$this->destination_images[ $id ][] = array( $id, $country_wetu_id );
1081
+                    }
1082
+               } else {
1083
+                    $destination_json = wp_remote_get( 'https://wetu.com/API/Pins/' . $this->api_key . '/Get?ids=' . $day['destination_content_entity_id'] );
1084
+
1085
+                    if ( ! is_wp_error( $destination_json ) && ! empty( $destination_json ) && isset( $destination_json['response'] ) && isset( $destination_json['response']['code'] ) && 200 === $destination_json['response']['code'] ) {
1086
+
1087
+                         $destination_data = json_decode( $destination_json['body'], true );
1088
+
1089
+                         if ( ! empty( $destination_data ) && ! isset( $destination_data['error'] ) ) {
1090
+                              $destination_title = $day['destination_content_entity_id'];
1091
+
1092
+                              if ( isset( $destination_data[0]['name'] ) ) {
1093
+                                   $destination_title = $destination_data[0]['name'];
1094
+                              }
1095
+
1096
+                              if ( isset( $destination_data[0]['map_object_id'] ) && isset( $destination_data[0]['position']['country_content_entity_id'] )
1097
+                                   && $destination_data[0]['map_object_id'] !== $destination_data[0]['position']['country_content_entity_id'] ) {
1098
+
1099
+                                   $country_id = $this->set_country( $destination_data[0]['position']['country_content_entity_id'], $id );
1100
+                                   // Save the destination so we can grab the tour featured image and banner from them.
1101
+                              }
1102
+
1103
+                              $dest_post = array(
1104
+                                   'post_type' => 'destination',
1105
+                                   'post_status' => 'draft',
1106
+                                   'post_title' => $destination_title,
1107
+                              );
1108
+
1109
+                              if ( false !== $country_id ) {
1110
+                                   $dest_post['post_parent'] = $country_id;
1111
+                              }
1112
+                              $dest_id = wp_insert_post( $dest_post );
1113
+
1114
+                              // Make sure we register the.
1115
+                              $this->current_destinations[ $day['destination_content_entity_id'] ] = $dest_id;
1116
+
1117
+                              // If there are images attached then use the destination.
1118
+                              if ( isset( $destination_data[0]['content']['images'] ) && ! empty( $destination_data[0]['content']['images'] ) ) {
1119
+                                   $this->destination_images[ $id ][] = array( $dest_id, $day['destination_content_entity_id'] );
1120
+                              }
1121
+
1122
+                              $this->save_custom_field( $day['destination_content_entity_id'], 'lsx_wetu_id', $dest_id );
1123
+                         }
1124
+                    }
1125
+               }
1126
+
1127
+               if ( '' !== $dest_id && false !== $dest_id ) {
1128
+                    $this->save_custom_field( $dest_id, 'destination_to_tour', $id, false, false );
1129
+                    $this->save_custom_field( $id, 'tour_to_destination', $dest_id, false, false );
1130
+
1131
+                    //Save the item to display in the queue
1132
+                    $this->queue_item( $dest_id );
1133
+
1134
+                    //Save the item to clean up the amount of connections.
1135
+                    $this->cleanup_posts[ $dest_id ] = 'tour_to_destination';
1136
+
1137
+                    //Add this relation info so we can make sure certain items are set as countries.
1138
+                    if ( 0 !== $country_id && false !== $country_id ) {
1139
+                         $this->relation_meta[ $dest_id ] = $country_id;
1140
+                         $this->relation_meta[ $country_id ] = 0;
1141
+                    } else {
1142
+                         $this->relation_meta[ $dest_id ] = 0;
1143
+                    }
1144
+               }
1145
+          }
1146
+          return $dest_id;
1147
+     }
1148
+
1149
+     /**
1150
+      * Connects the destinations post type
1151
+      *
1152
+      * @param $dest_id string
1153
+      * @param $country_id array
1154
+      * @param $id string
1155
+      *
1156
+      * @return string
1157
+      */
1158
+     public function set_country( $country_wetu_id, $id ) {
1159
+          $country_id = false;
1160
+          $this->current_destinations = $this->find_current_destinations();
1161
+
1162
+          if ( false !== $this->current_destinations && ! empty( $this->current_destinations ) && array_key_exists( $country_wetu_id, $this->current_destinations ) ) {
1163
+               $country_id = $this->current_destinations[ $country_wetu_id ];
1164
+               $this->destination_images[ $id ][] = array( $country_id, $country_wetu_id );
1165
+          } else {
1166
+               $country_json = wp_remote_get( 'https://wetu.com/API/Pins/' . $this->api_key . '/Get?ids=' . $country_wetu_id );
1167
+
1168
+               if ( ! is_wp_error( $country_json ) && ! empty( $country_json ) && isset( $country_json['response'] ) && isset( $country_json['response']['code'] ) && 200 === $country_json['response']['code'] ) {
1169
+                    $country_data = json_decode( $country_json['body'], true );
1170
+
1171
+                    // Format the title of the destination if its available,  otherwise default to the WETU ID.
1172
+                    $country_title = $country_wetu_id;
1173
+
1174
+                    if ( isset( $country_data[0]['name'] ) ) {
1175
+                         $country_title = $country_data[0]['name'];
1176
+                    }
1177
+
1178
+                    $country_id = wp_insert_post( array(
1179
+                         'post_type' => 'destination',
1180
+                         'post_status' => 'draft',
1181
+                         'post_title' => $country_title,
1182
+                    ));
1183
+
1184
+                    //add the country to the current destination stack
1185
+                    $this->current_destinations[ $country_wetu_id ] = $country_id;
1186
+
1187
+                    // Check if there are images and save fore use later.
1188
+                    if ( isset( $country_data[0]['content']['images'] ) && ! empty( $country_data[0]['content']['images'] ) ) {
1189
+                         $this->destination_images[ $id ][] = array( $country_id, $country_wetu_id );
1190
+                    }
1191
+
1192
+                    //Save the wetu field
1193
+                    $this->save_custom_field( $country_wetu_id, 'lsx_wetu_id', $country_id );
1194
+               }
1195
+          }
1196
+
1197
+          if ( '' !== $country_id && false !== $country_id ) {
1198
+               $this->save_custom_field( $country_id, 'destination_to_tour', $id, false, false );
1199
+               $this->save_custom_field( $id, 'tour_to_destination', $country_id, false, false );
1200
+               $this->queue_item( $country_id );
1201
+               $this->cleanup_posts[ $country_id ] = 'tour_to_destination';
1202
+
1203
+               return $country_id;
1204
+          }
1205
+     }
1206
+
1207
+     /**
1208
+      * Connects the destinations post type
1209
+      *
1210
+      * @param $dest_id string
1211
+      * @param $country_id array
1212
+      * @param $id string
1213
+      *
1214
+      * @return string
1215
+      */
1216
+     public function attach_destination_images( $importable_content = array() ) {
1217
+          if ( false !== $this->destination_images ) {
1218
+               $this->shuffle_assoc( $this->destination_images );
1219
+               foreach ( $this->destination_images as $tour => $destinations ) {
1220
+                    shuffle( $destinations );
1221
+                    $image_set = false;
1222
+                    $forced = false;
1223
+
1224
+                    foreach ( $destinations as $destination ) {
1225
+                         if ( false === $image_set && false === $forced ) {
1226
+                              $url = 'https://wetu.com/API/Pins/' . $this->api_key;
1227
+
1228
+                              $url_qs = '';
1229
+                              $jdata = wp_remote_get( $url . '/Get?' . $url_qs . '&ids=' . $destination[1] );
1230
+
1231
+                              if ( ! is_wp_error( $jdata ) && ! empty( $jdata ) && isset( $jdata['response'] ) && isset( $jdata['response']['code'] ) && 200 === $jdata['response']['code'] ) {
1232
+                                   $adata = json_decode( $jdata['body'], true );
1233
+
1234
+                                   if ( ! empty( $adata ) && ! empty( $adata[0]['content']['images'] ) ) {
1235
+                                        $this->find_attachments( $destination[0] );
1236
+
1237
+                                        // Set the featured image.
1238
+                                        if ( false !== $importable_content && in_array( 'featured_image', $importable_content ) ) {
1239
+                                             $image_set = $this->set_featured_image( $adata, $tour );
1240
+                                             if ( false !== $importable_content && in_array( 'banner_image', $importable_content ) ) {
1241
+                                                  $image_set = $this->set_banner_image( $adata, $tour );
1242
+                                                  $forced = true;
1243
+                                             }
1244
+                                             continue;
1245
+                                        }
1246
+                                        if ( false !== $importable_content && in_array( 'banner_image', $importable_content ) ) {
1247
+                                             $image_set = $this->set_banner_image( $adata, $tour );
1248
+                                        }
1249
+                                   }
1250
+                              }
1251
+                         } else {
1252
+                              continue;
1253
+                         }
1254
+                    }
1255
+               }
1256
+          }
1257
+     }
1258
+
1259
+     /**
1260
+      * Creates the main gallery data
1261
+      */
1262
+     public function set_featured_image( $data, $id ) {
1263
+          $image_set = false;
1264
+          $counter = 0;
1265
+
1266
+          if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) {
1267
+               $images_array = $data[0]['content']['images'];
1268
+
1269
+               if ( 'on' === $this->options['enable_tour_featured_random'] ) {
1270
+                    shuffle( $images_array );
1271
+               }
1272
+
1273
+               foreach ( $images_array as $v ) {
1274
+
1275
+                    if ( true === $image_set ) {
1276
+                         $counter++;
1277
+                         continue;
1278
+                    }
1279
+
1280
+                    if ( ! $this->check_if_image_is_used( $v ) ) {
1281
+                         $temp_featured_image = $this->attach_image( $v, $id );
1282
+
1283
+                         if ( false !== $temp_featured_image ) {
1284
+                              $this->featured_image = $temp_featured_image;
1285
+                              delete_post_meta( $id, '_thumbnail_id' );
1286
+                              add_post_meta( $id, '_thumbnail_id', $this->featured_image, true );
1287
+                              $image_set = true;
1288
+                         }
1289
+                    }
1290
+
1291
+                    $counter++;
1292
+               }
1293
+          }
1294
+          return $image_set;
1295
+     }
1296
+
1297
+     /**
1298
+      * Sets a banner image
1299
+      */
1300
+     public function set_banner_image( $data, $id, $content = array( 'none' ) ) {
1301
+          $image_set = false;
1302
+          $counter = 0;
1303
+
1304
+          if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) {
1305
+
1306
+               foreach ( $data[0]['content']['images'] as $v ) {
1307
+                    /*print_r('<pre>');
1308 1308
 				print_r( $v );
1309 1309
 				print_r('</pre>');*/
1310 1310
 
1311
-				if ( true === $image_set || 0 === $counter ) {
1312
-					$counter++;
1313
-					continue;
1314
-				}
1315
-
1316
-				if ( ! $this->check_if_image_is_used( $v ) ) {
1317
-					$temp_banner = $this->attach_image( $v, $id, array(
1318
-						'width' => '1920',
1319
-						'height' => '600',
1320
-						'cropping' => 'c',
1321
-					) );
1322
-
1323
-					if ( false !== $temp_banner ) {
1324
-						$this->banner_image = $temp_banner;
1325
-
1326
-						delete_post_meta( $id, 'image_group' );
1327
-
1328
-						$new_banner = array(
1329
-							'banner_image' => array(
1330
-								'cmb-field-0' => $this->banner_image,
1331
-							),
1332
-						);
1333
-						add_post_meta( $id, 'image_group', $new_banner, true );
1334
-						$image_set = true;
1335
-					}
1336
-				}
1337
-				$counter++;
1338
-			}
1339
-		}
1340
-
1341
-		return $image_set;
1342
-	}
1343
-
1344
-	/**
1345
-	 * Grabs all of the current used featured images on the site.
1346
-	 */
1347
-	public function check_if_image_is_used( $v ) {
1348
-		global $wpdb;
1349
-		$return = false;
1350
-
1351
-		$results = $wpdb->get_results(
1352
-			$wpdb->prepare(
1353
-				"SELECT post_id
1311
+                    if ( true === $image_set || 0 === $counter ) {
1312
+                         $counter++;
1313
+                         continue;
1314
+                    }
1315
+
1316
+                    if ( ! $this->check_if_image_is_used( $v ) ) {
1317
+                         $temp_banner = $this->attach_image( $v, $id, array(
1318
+                              'width' => '1920',
1319
+                              'height' => '600',
1320
+                              'cropping' => 'c',
1321
+                         ) );
1322
+
1323
+                         if ( false !== $temp_banner ) {
1324
+                              $this->banner_image = $temp_banner;
1325
+
1326
+                              delete_post_meta( $id, 'image_group' );
1327
+
1328
+                              $new_banner = array(
1329
+                                   'banner_image' => array(
1330
+                                        'cmb-field-0' => $this->banner_image,
1331
+                                   ),
1332
+                              );
1333
+                              add_post_meta( $id, 'image_group', $new_banner, true );
1334
+                              $image_set = true;
1335
+                         }
1336
+                    }
1337
+                    $counter++;
1338
+               }
1339
+          }
1340
+
1341
+          return $image_set;
1342
+     }
1343
+
1344
+     /**
1345
+      * Grabs all of the current used featured images on the site.
1346
+      */
1347
+     public function check_if_image_is_used( $v ) {
1348
+          global $wpdb;
1349
+          $return = false;
1350
+
1351
+          $results = $wpdb->get_results(
1352
+               $wpdb->prepare(
1353
+                    "SELECT post_id
1354 1354
 				 FROM {$wpdb->postmeta}
1355 1355
 				 WHERE meta_value = '%s'
1356 1356
 				 AND meta_key = 'lsx_wetu_id'
1357 1357
 				",
1358
-				array( $value )
1359
-			)
1360
-		);
1361
-		$attached_tours = array();
1362
-		if ( ! empty( $results ) ) {
1363
-			foreach ( $results as $result ) {
1364
-				if ( 'tour' === get_post_type( $result['post_id'] ) ) {
1365
-					$attached_tours[] = $result['post_id'];
1366
-				}
1367
-			}
1368
-		}
1369
-		if ( ! empty( $attached_tours ) ) {
1370
-			$return = true;
1371
-		}
1372
-		return $return;
1373
-	}
1374
-
1375
-	/**
1376
-	 * Que an item to be saved.
1377
-	 *
1378
-	 * @param   $id     int
1379
-	 */
1380
-	public function queue_item( $id ) {
1381
-		if ( is_array( $this->import_queue ) && ! in_array( $id, $this->import_queue ) ) {
1382
-			$this->import_queue[] = $id;
1383
-		} else {
1384
-			$this->import_queue[] = $id;
1385
-		}
1386
-	}
1387
-
1388
-	/**
1389
-	 * Saves the queue to the option.
1390
-	 */
1391
-	public function save_queue() {
1392
-		if ( ! empty( $this->import_queue ) ) {
1393
-			if ( ! empty( $this->queued_imports ) ) {
1394
-				$saved_imports = array_merge( $this->queued_imports, $this->import_queue );
1395
-			} else {
1396
-				$saved_imports = $this->import_queue;
1397
-			}
1398
-
1399
-			delete_option( 'lsx_wetu_importer_que' );
1400
-
1401
-			if ( ! empty( $saved_imports ) ) {
1402
-				$saved_imports = array_unique( $saved_imports );
1403
-				update_option( 'lsx_wetu_importer_que', $saved_imports );
1404
-			}
1405
-		}
1406
-	}
1407
-
1408
-	/**
1409
-	 * The header of the item list
1410
-	 */
1411
-	public function table_header() {
1412
-		?>
1358
+                    array( $value )
1359
+               )
1360
+          );
1361
+          $attached_tours = array();
1362
+          if ( ! empty( $results ) ) {
1363
+               foreach ( $results as $result ) {
1364
+                    if ( 'tour' === get_post_type( $result['post_id'] ) ) {
1365
+                         $attached_tours[] = $result['post_id'];
1366
+                    }
1367
+               }
1368
+          }
1369
+          if ( ! empty( $attached_tours ) ) {
1370
+               $return = true;
1371
+          }
1372
+          return $return;
1373
+     }
1374
+
1375
+     /**
1376
+      * Que an item to be saved.
1377
+      *
1378
+      * @param   $id     int
1379
+      */
1380
+     public function queue_item( $id ) {
1381
+          if ( is_array( $this->import_queue ) && ! in_array( $id, $this->import_queue ) ) {
1382
+               $this->import_queue[] = $id;
1383
+          } else {
1384
+               $this->import_queue[] = $id;
1385
+          }
1386
+     }
1387
+
1388
+     /**
1389
+      * Saves the queue to the option.
1390
+      */
1391
+     public function save_queue() {
1392
+          if ( ! empty( $this->import_queue ) ) {
1393
+               if ( ! empty( $this->queued_imports ) ) {
1394
+                    $saved_imports = array_merge( $this->queued_imports, $this->import_queue );
1395
+               } else {
1396
+                    $saved_imports = $this->import_queue;
1397
+               }
1398
+
1399
+               delete_option( 'lsx_wetu_importer_que' );
1400
+
1401
+               if ( ! empty( $saved_imports ) ) {
1402
+                    $saved_imports = array_unique( $saved_imports );
1403
+                    update_option( 'lsx_wetu_importer_que', $saved_imports );
1404
+               }
1405
+          }
1406
+     }
1407
+
1408
+     /**
1409
+      * The header of the item list
1410
+      */
1411
+     public function table_header() {
1412
+          ?>
1413 1413
 		<thead>
1414 1414
 		<tr>
1415 1415
 			<th class="manage-column column-cb check-column" id="cb" scope="col">
@@ -1424,13 +1424,13 @@  discard block
 block discarded – undo
1424 1424
 		</tr>
1425 1425
 		</thead>
1426 1426
 		<?php
1427
-	}
1427
+     }
1428 1428
 
1429
-	/**
1430
-	 * The footer of the item list
1431
-	 */
1432
-	public function table_footer() {
1433
-		?>
1429
+     /**
1430
+      * The footer of the item list
1431
+      */
1432
+     public function table_footer() {
1433
+          ?>
1434 1434
 		<tfoot>
1435 1435
 		<tr>
1436 1436
 			<th class="manage-column column-cb check-column" id="cb" scope="col">
@@ -1445,5 +1445,5 @@  discard block
 block discarded – undo
1445 1445
 		</tr>
1446 1446
 		</tfoot>
1447 1447
 		<?php
1448
-	}
1448
+     }
1449 1449
 }
Please login to merge, or discard this patch.
classes/class-lsx-wetu-importer-banner-integration.php 1 patch
Indentation   +203 added lines, -203 removed lines patch added patch discarded remove patch
@@ -9,32 +9,32 @@  discard block
 block discarded – undo
9 9
 
10 10
 class LSX_WETU_Importer_Banner_Integration 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 = 'banners';
20
-
21
-	/**
22
-	 * Initialize the plugin by setting localization, filters, and administration functions.
23
-	 *
24
-	 * @since 1.0.0
25
-	 *
26
-	 * @access private
27
-	 */
28
-	public function __construct() {
29
-		add_action( 'wp_ajax_lsx_import_sync_banners', array( $this, 'sync_new_banner' ) );
30
-		add_action( 'wp_ajax_nopriv_lsx_import_sync_banners', array( $this, 'sync_new_banner' ) );
31
-	}
32
-
33
-	/**
34
-	 * Display the importer administration screen
35
-	 */
36
-	public function display_page() {
37
-		?>
12
+     /**
13
+      * The url to list items from WETU
14
+      *
15
+      * @since 0.0.1
16
+      *
17
+      * @var      string
18
+      */
19
+     public $tab_slug = 'banners';
20
+
21
+     /**
22
+      * Initialize the plugin by setting localization, filters, and administration functions.
23
+      *
24
+      * @since 1.0.0
25
+      *
26
+      * @access private
27
+      */
28
+     public function __construct() {
29
+          add_action( 'wp_ajax_lsx_import_sync_banners', array( $this, 'sync_new_banner' ) );
30
+          add_action( 'wp_ajax_nopriv_lsx_import_sync_banners', array( $this, 'sync_new_banner' ) );
31
+     }
32
+
33
+     /**
34
+      * Display the importer administration screen
35
+      */
36
+     public function display_page() {
37
+          ?>
38 38
 		<div class="wrap">
39 39
 			<h2><?php esc_html_e( 'Download new banners straight from WETU', 'lsx-wetu-importer' ); ?></h2>
40 40
 
@@ -58,67 +58,67 @@  discard block
 block discarded – undo
58 58
 					</thead>
59 59
 
60 60
 					<?php
61
-						$accommodation_args = array(
62
-							'post_type' => 'accommodation',
63
-							'post_status' => array( 'publish', 'pending', 'draft', 'future', 'private' ),
64
-							'nopagin' => 'true',
65
-							'posts_per_page' => '1000',
66
-							'meta_query' => array(
67
-								'relation' => 'AND',
68
-								array(
69
-									'key' => 'lsx_wetu_id',
70
-									'compare' => 'EXISTS',
71
-								),
72
-								array(
73
-									'key' => 'image_group',
74
-									'compare' => 'EXISTS',
75
-								),
76
-								array(
77
-									'key' => 'image_group',
78
-									'value' => 'a:1:{s:12:"banner_image";a:0:{}}',
79
-									'compare' => '!=',
80
-								),
81
-							),
82
-						);
83
-						$accommodation = new WP_Query( $accommodation_args );
84
-					?>
61
+                              $accommodation_args = array(
62
+                                   'post_type' => 'accommodation',
63
+                                   'post_status' => array( 'publish', 'pending', 'draft', 'future', 'private' ),
64
+                                   'nopagin' => 'true',
65
+                                   'posts_per_page' => '1000',
66
+                                   'meta_query' => array(
67
+                                        'relation' => 'AND',
68
+                                        array(
69
+                                             'key' => 'lsx_wetu_id',
70
+                                             'compare' => 'EXISTS',
71
+                                        ),
72
+                                        array(
73
+                                             'key' => 'image_group',
74
+                                             'compare' => 'EXISTS',
75
+                                        ),
76
+                                        array(
77
+                                             'key' => 'image_group',
78
+                                             'value' => 'a:1:{s:12:"banner_image";a:0:{}}',
79
+                                             'compare' => '!=',
80
+                                        ),
81
+                                   ),
82
+                              );
83
+                              $accommodation = new WP_Query( $accommodation_args );
84
+                         ?>
85 85
 
86 86
 					<tbody id="the-list">
87 87
 						<?php
88
-							if ( $accommodation->have_posts() ) {
89
-								while ( $accommodation->have_posts() ) {
90
-									$accommodation->the_post();
91
-									?>
88
+                                   if ( $accommodation->have_posts() ) {
89
+                                        while ( $accommodation->have_posts() ) {
90
+                                             $accommodation->the_post();
91
+                                             ?>
92 92
 									<tr class="post-<?php the_ID(); ?> type-tour status-none" id="post-<?php the_ID(); ?>">
93 93
 									<?php
94
-									$banner_size_appropriate = false;
95
-									$min_width = '1920';
96
-									$min_height = '500';
94
+                                             $banner_size_appropriate = false;
95
+                                             $min_width = '1920';
96
+                                             $min_height = '500';
97 97
 
98
-									$img_group = get_post_meta( get_the_ID(), 'image_group', true );
98
+                                             $img_group = get_post_meta( get_the_ID(), 'image_group', true );
99 99
 
100
-									$thumbnails_html = false;
100
+                                             $thumbnails_html = false;
101 101
 
102
-									if ( false !== $img_group ) {
103
-										foreach ( $img_group['banner_image'] as $banner_image ) {
104
-											$large = wp_get_attachment_image_src( $banner_image, 'full' );
105
-											$real_width = $large[1];
106
-											$real_height = $large[2];
102
+                                             if ( false !== $img_group ) {
103
+                                                  foreach ( $img_group['banner_image'] as $banner_image ) {
104
+                                                       $large = wp_get_attachment_image_src( $banner_image, 'full' );
105
+                                                       $real_width = $large[1];
106
+                                                       $real_height = $large[2];
107 107
 
108
-											$status = 'optimized';
109
-											if ( $real_width < intval( $real_width ) ) {
110
-												$status = 'width not enough.';
111
-												}
108
+                                                       $status = 'optimized';
109
+                                                       if ( $real_width < intval( $real_width ) ) {
110
+                                                            $status = 'width not enough.';
111
+                                                            }
112 112
 
113
-											$thumbnail = wp_get_attachment_image_src( $banner_image, 'thumbnail' );
114
-											$thumbnails_html[] = '
113
+                                                       $thumbnail = wp_get_attachment_image_src( $banner_image, 'thumbnail' );
114
+                                                       $thumbnails_html[] = '
115 115
 													<div style="display:block;float:left;">
116 116
 														<img src="' . $thumbnail[0] . '" />
117 117
 														<p style="text-align:center;">' . $real_width . 'px by ' . $real_height . 'px</p>
118 118
 													</div>';
119
-											}
120
-										}
121
-									?>
119
+                                                       }
120
+                                                  }
121
+                                             ?>
122 122
 									<th class="check-column" scope="row">
123 123
 										<label for="cb-select-<?php the_ID(); ?>" class="screen-reader-text"></label>
124 124
 										<input type="checkbox" data-identifier="<?php the_ID(); ?>" value="<?php the_ID(); ?>" name="post[]" id="cb-select-<?php the_ID(); ?>">
@@ -127,25 +127,25 @@  discard block
 block discarded – undo
127 127
 										<td class="post-title page-title column-title">
128 128
                                         <?php 
129 129
                                         echo '<a href="' . esc_url( admin_url( '/post.php?post=' . get_the_ID() . '&action=edit' ) ) . '" target="_blank">';
130
-										the_title();
131
-										echo '</a>'; 
130
+                                                  the_title();
131
+                                                  echo '</a>'; 
132 132
                                         ?>
133 133
                                         </td>
134 134
 
135 135
 										<td colspan="2" class="thumbnails column-thumbnails">
136 136
 										<?php
137
-											if ( false !== $thumbnails_html ) {
138
-												echo wp_kses_post( implode( '', $thumbnails_html ) );
139
-											} else {
140
-												echo '<p>There was an error retrieving your images.</p>';
141
-											}
142
-										?>
137
+                                                       if ( false !== $thumbnails_html ) {
138
+                                                            echo wp_kses_post( implode( '', $thumbnails_html ) );
139
+                                                       } else {
140
+                                                            echo '<p>There was an error retrieving your images.</p>';
141
+                                                       }
142
+                                                  ?>
143 143
 										</td>
144 144
 									</tr>
145 145
 							<?php 
146 146
                               }
147
-							}
148
-						?>
147
+                                   }
148
+                              ?>
149 149
 					</tbody>
150 150
 
151 151
 					<tfoot>
@@ -166,125 +166,125 @@  discard block
 block discarded – undo
166 166
 			</form>
167 167
 		</div>
168 168
 		<?php
169
-	}
170
-
171
-	/**
172
-	 * Creates the main gallery data
173
-	 */
174
-	public function sync_new_banner() {
175
-		check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
176
-		if ( isset( $_POST['action'] ) && 'lsx_import_sync_banners' === $_POST['action'] && isset( $_POST['post_id'] ) ) {
177
-
178
-			$post_id = sanitize_text_field( $_POST['post_id'] );
179
-			$banners       = get_post_meta( $post_id, 'image_group', true );
180
-			$this->wetu_id = get_post_meta( $post_id, 'lsx_wetu_id', true );
181
-
182
-			$new_banner_array = false;
183
-			$array_index = 0;
184
-
185
-			foreach ( $banners['banner_image'] as $banner_image ) {
186
-				$image_id = $this->attach_external_image2( $this->format_wetu_url( $banner_image ), array(), $post_id );
187
-				if ( null !== $image_id && '' !== $image_id ) {
188
-					$new_banner_array['banner_image'][ 'cmb-field-' . $array_index ] = $image_id;
189
-					$array_index++;
190
-				}
191
-			}
192
-
193
-			if ( false !== $new_banner_array ) {
194
-				delete_post_meta( $post_id, 'image_group' );
195
-				add_post_meta( $post_id, 'image_group', $new_banner_array, true );
196
-				echo true;
197
-			} else {
198
-				echo false;
199
-			}
200
-		} else {
201
-			echo false;
202
-		}
203
-
204
-		die();
205
-	}
206
-
207
-	/**
208
-	 * formats the url
209
-	 */
210
-	public function format_wetu_url( $post_id ) {
211
-		return 'https://wetu.com/ImageHandler/c1920x800/' . $this->wetu_id . '/' . $this->format_filename( $post_id );
212
-	}
213
-
214
-	/**
215
-	 * formats the filename
216
-	 */
217
-	public function format_filename( $post_id ) {
218
-		$base = str_replace( '_', ' ', get_the_title( $post_id ) );
219
-		$base = rawurlencode( $base );
220
-		$type = get_post_mime_type( $post_id );
221
-
222
-		switch ( $type ) {
223
-			case 'image/jpeg':
224
-				return $base . '.jpg';
225
-			break;
226
-			case 'image/png':
227
-				return $base . '.png';
228
-			break;
229
-			case 'image/gif':
230
-				return $base . '.gif';
231
-			break;
232
-			default:
233
-				return false;
234
-		}
235
-	}
236
-
237
-	public function attach_external_image2( $url = null, $post_data = array(), $post_id = '' ) {
238
-		if ( ! $url ) {
169
+     }
170
+
171
+     /**
172
+      * Creates the main gallery data
173
+      */
174
+     public function sync_new_banner() {
175
+          check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
176
+          if ( isset( $_POST['action'] ) && 'lsx_import_sync_banners' === $_POST['action'] && isset( $_POST['post_id'] ) ) {
177
+
178
+               $post_id = sanitize_text_field( $_POST['post_id'] );
179
+               $banners       = get_post_meta( $post_id, 'image_group', true );
180
+               $this->wetu_id = get_post_meta( $post_id, 'lsx_wetu_id', true );
181
+
182
+               $new_banner_array = false;
183
+               $array_index = 0;
184
+
185
+               foreach ( $banners['banner_image'] as $banner_image ) {
186
+                    $image_id = $this->attach_external_image2( $this->format_wetu_url( $banner_image ), array(), $post_id );
187
+                    if ( null !== $image_id && '' !== $image_id ) {
188
+                         $new_banner_array['banner_image'][ 'cmb-field-' . $array_index ] = $image_id;
189
+                         $array_index++;
190
+                    }
191
+               }
192
+
193
+               if ( false !== $new_banner_array ) {
194
+                    delete_post_meta( $post_id, 'image_group' );
195
+                    add_post_meta( $post_id, 'image_group', $new_banner_array, true );
196
+                    echo true;
197
+               } else {
198
+                    echo false;
199
+               }
200
+          } else {
201
+               echo false;
202
+          }
203
+
204
+          die();
205
+     }
206
+
207
+     /**
208
+      * formats the url
209
+      */
210
+     public function format_wetu_url( $post_id ) {
211
+          return 'https://wetu.com/ImageHandler/c1920x800/' . $this->wetu_id . '/' . $this->format_filename( $post_id );
212
+     }
213
+
214
+     /**
215
+      * formats the filename
216
+      */
217
+     public function format_filename( $post_id ) {
218
+          $base = str_replace( '_', ' ', get_the_title( $post_id ) );
219
+          $base = rawurlencode( $base );
220
+          $type = get_post_mime_type( $post_id );
221
+
222
+          switch ( $type ) {
223
+               case 'image/jpeg':
224
+                    return $base . '.jpg';
225
+               break;
226
+               case 'image/png':
227
+                    return $base . '.png';
228
+               break;
229
+               case 'image/gif':
230
+                    return $base . '.gif';
231
+               break;
232
+               default:
233
+                    return false;
234
+          }
235
+     }
236
+
237
+     public function attach_external_image2( $url = null, $post_data = array(), $post_id = '' ) {
238
+          if ( ! $url ) {
239 239
 return new WP_Error( 'missing', 'Need a valid URL' ); }
240
-		$att_id = false;
241
-
242
-		require_once( ABSPATH . 'wp-admin/includes/file.php' );
243
-		require_once( ABSPATH . 'wp-admin/includes/media.php' );
244
-		require_once( ABSPATH . 'wp-admin/includes/image.php' );
245
-
246
-		$tmp   = tempnam( '/tmp', 'FOO' );
247
-		$image = wp_remote_get( $url );
248
-
249
-		if ( ! empty( $image ) && isset( $image['response'] ) && isset( $image['response']['code'] ) && 200 === $image['response']['code'] ) {
250
-			file_put_contents( $tmp, $image['body'] );
251
-			chmod( $tmp, '777' );
252
-
253
-			preg_match( '/[^\?]+\.(tif|TIFF|jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG|pdf|PDF|bmp|BMP)/', $url, $matches );
254
-			$url_filename = basename( $matches[0] );
255
-			$url_filename = str_replace( '%20', '_', $url_filename );
256
-			// extract filename from url for title.
257
-			$url_type = wp_check_filetype( $url_filename );
258
-
259
-			// assemble file data (should be built like $_FILES since wp_handle_sideload() will be using).
260
-			$file_array['tmp_name'] = $tmp;
261
-
262
-			if ( ! empty( $filename ) && ' ' != $filename ) {
263
-				$file_array['name'] = $filename . '.' . $url_type['ext'];
264
-			} else {
265
-				$file_array['name'] = $url_filename;
266
-			}
267
-
268
-			// set additional wp_posts columns.
269
-			if ( empty( $post_data['post_title'] ) ) {
270
-				$url_filename = str_replace( '%20', ' ', $url_filename );
271
-				$post_data['post_title'] = basename( $url_filename, '.' . $url_type['ext'] );
272
-			}
273
-
274
-			// make sure gets tied to parent.
275
-			if ( empty( $post_data['post_parent'] ) ) {
276
-				$post_data['post_parent'] = $post_id;
277
-			}
278
-
279
-			// do the validation and storage stuff.
280
-			$att_id = media_handle_sideload( $file_array, $post_id, null, $post_data );
281
-
282
-			// If error storing permanently, unlink.
283
-			if ( is_wp_error( $att_id ) ) {
284
-				unlink( $file_array['tmp_name'] );
285
-				return false;
286
-			}
287
-		}
288
-		return $att_id;
289
-	}
240
+          $att_id = false;
241
+
242
+          require_once( ABSPATH . 'wp-admin/includes/file.php' );
243
+          require_once( ABSPATH . 'wp-admin/includes/media.php' );
244
+          require_once( ABSPATH . 'wp-admin/includes/image.php' );
245
+
246
+          $tmp   = tempnam( '/tmp', 'FOO' );
247
+          $image = wp_remote_get( $url );
248
+
249
+          if ( ! empty( $image ) && isset( $image['response'] ) && isset( $image['response']['code'] ) && 200 === $image['response']['code'] ) {
250
+               file_put_contents( $tmp, $image['body'] );
251
+               chmod( $tmp, '777' );
252
+
253
+               preg_match( '/[^\?]+\.(tif|TIFF|jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG|pdf|PDF|bmp|BMP)/', $url, $matches );
254
+               $url_filename = basename( $matches[0] );
255
+               $url_filename = str_replace( '%20', '_', $url_filename );
256
+               // extract filename from url for title.
257
+               $url_type = wp_check_filetype( $url_filename );
258
+
259
+               // assemble file data (should be built like $_FILES since wp_handle_sideload() will be using).
260
+               $file_array['tmp_name'] = $tmp;
261
+
262
+               if ( ! empty( $filename ) && ' ' != $filename ) {
263
+                    $file_array['name'] = $filename . '.' . $url_type['ext'];
264
+               } else {
265
+                    $file_array['name'] = $url_filename;
266
+               }
267
+
268
+               // set additional wp_posts columns.
269
+               if ( empty( $post_data['post_title'] ) ) {
270
+                    $url_filename = str_replace( '%20', ' ', $url_filename );
271
+                    $post_data['post_title'] = basename( $url_filename, '.' . $url_type['ext'] );
272
+               }
273
+
274
+               // make sure gets tied to parent.
275
+               if ( empty( $post_data['post_parent'] ) ) {
276
+                    $post_data['post_parent'] = $post_id;
277
+               }
278
+
279
+               // do the validation and storage stuff.
280
+               $att_id = media_handle_sideload( $file_array, $post_id, null, $post_data );
281
+
282
+               // If error storing permanently, unlink.
283
+               if ( is_wp_error( $att_id ) ) {
284
+                    unlink( $file_array['tmp_name'] );
285
+                    return false;
286
+               }
287
+          }
288
+          return $att_id;
289
+     }
290 290
 }
Please login to merge, or discard this patch.
classes/class-lsx-wetu-importer-connect-accommodation.php 1 patch
Indentation   +144 added lines, -144 removed lines patch added patch discarded remove patch
@@ -9,51 +9,51 @@  discard block
 block discarded – undo
9 9
 
10 10
 class LSX_WETU_Importer_Connect_Accommodation extends LSX_WETU_Importer_Admin {
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 = 'connect_accommodation';
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
-	 * Initialize the plugin by setting localization, filters, and administration functions.
32
-	 *
33
-	 * @since 1.0.0
34
-	 *
35
-	 * @access private
36
-	 */
37
-	public function __construct() {
38
-		$temp_options = get_option( '_lsx-to_settings', false );
39
-
40
-		if ( false !== $temp_options && isset( $temp_options[ $this->plugin_slug ] ) && ! empty( $temp_options[ $this->plugin_slug ] ) ) {
41
-			$this->options = $temp_options[ $this->plugin_slug ];
42
-		}
43
-
44
-		$this->url = 'http://wetu.com/API/Pins/' . $this->options['api_key'] . '/List';
45
-
46
-		add_action( 'lsx_tour_importer_admin_tab_' . $this->tab_slug, array( $this, 'display_page' ) );
47
-		add_action( 'wp_ajax_lsx_import_connect_accommodation', array( $this, 'process_connection' ) );
48
-		add_action( 'wp_ajax_nopriv_lsx_import_connect_accommodation', array( $this, 'process_connection' ) );
49
-	}
50
-
51
-	/**
52
-	 * Display the importer administration screen
53
-	 */
54
-	public function display_page() {
55
-		global $post;
56
-		?>
12
+     /**
13
+      * The url to list items from WETU
14
+      *
15
+      * @since 0.0.1
16
+      *
17
+      * @var      string
18
+      */
19
+     public $tab_slug = 'connect_accommodation';
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
+      * Initialize the plugin by setting localization, filters, and administration functions.
32
+      *
33
+      * @since 1.0.0
34
+      *
35
+      * @access private
36
+      */
37
+     public function __construct() {
38
+          $temp_options = get_option( '_lsx-to_settings', false );
39
+
40
+          if ( false !== $temp_options && isset( $temp_options[ $this->plugin_slug ] ) && ! empty( $temp_options[ $this->plugin_slug ] ) ) {
41
+               $this->options = $temp_options[ $this->plugin_slug ];
42
+          }
43
+
44
+          $this->url = 'http://wetu.com/API/Pins/' . $this->options['api_key'] . '/List';
45
+
46
+          add_action( 'lsx_tour_importer_admin_tab_' . $this->tab_slug, array( $this, 'display_page' ) );
47
+          add_action( 'wp_ajax_lsx_import_connect_accommodation', array( $this, 'process_connection' ) );
48
+          add_action( 'wp_ajax_nopriv_lsx_import_connect_accommodation', array( $this, 'process_connection' ) );
49
+     }
50
+
51
+     /**
52
+      * Display the importer administration screen
53
+      */
54
+     public function display_page() {
55
+          global $post;
56
+          ?>
57 57
 		<div class="wrap">
58 58
 			<h3><span class="dashicons dashicons-admin-multisite"></span> <?php esc_html_e( 'Connect your Accommodation', 'lsx-wetu-importer' ); ?></h3>
59 59
 
@@ -67,38 +67,38 @@  discard block
 block discarded – undo
67 67
 				</div>
68 68
 
69 69
 				<?php
70
-					$loose_accommodation = $this->find_current_accommodation();
71
-				?>
70
+                         $loose_accommodation = $this->find_current_accommodation();
71
+                    ?>
72 72
 				<p><input class="button button-primary connect" type="button" value="<?php esc_html_e( 'Connect', 'lsx-wetu-importer' ); ?>" /></p>
73 73
 				<table class="wp-list-table widefat fixed posts">
74 74
 					<?php $this->table_header(); ?>
75 75
 
76 76
 					<tbody>
77 77
 						<?php 
78
-                        if ( false !== $loose_accommodation ) {
79
-
80
-							$loose_args = array(
81
-								'post_type' => 'accommodation',
82
-								'post_status' => array( 'publish', 'pending' ),
83
-								'nopagin' => true,
84
-								'post__in' => $loose_accommodation,
85
-							);
86
-							$loose_accommodation_query = new WP_Query( $loose_args );
87
-							$accommodation = get_transient( 'lsx_ti_accommodation' );
88
-							$identifier = '';
89
-
90
-							if ( $loose_accommodation_query->have_posts() && false !== $accommodation ) {
91
-								while ( $loose_accommodation_query->have_posts() ) {
92
-									$loose_accommodation_query->the_post();
93
-
94
-									foreach ( $accommodation as $row_key => $row ) {
95
-										if ( stripos( ltrim( rtrim( $row->name ) ), $post->post_title ) !== false ) {
96
-											$identifier = $row->id;
97
-										} else {
98
-											continue;
99
-										}
100
-									}
101
-									?>
78
+                         if ( false !== $loose_accommodation ) {
79
+
80
+                                   $loose_args = array(
81
+                                        'post_type' => 'accommodation',
82
+                                        'post_status' => array( 'publish', 'pending' ),
83
+                                        'nopagin' => true,
84
+                                        'post__in' => $loose_accommodation,
85
+                                   );
86
+                                   $loose_accommodation_query = new WP_Query( $loose_args );
87
+                                   $accommodation = get_transient( 'lsx_ti_accommodation' );
88
+                                   $identifier = '';
89
+
90
+                                   if ( $loose_accommodation_query->have_posts() && false !== $accommodation ) {
91
+                                        while ( $loose_accommodation_query->have_posts() ) {
92
+                                             $loose_accommodation_query->the_post();
93
+
94
+                                             foreach ( $accommodation as $row_key => $row ) {
95
+                                                  if ( stripos( ltrim( rtrim( $row->name ) ), $post->post_title ) !== false ) {
96
+                                                       $identifier = $row->id;
97
+                                                  } else {
98
+                                                       continue;
99
+                                                  }
100
+                                             }
101
+                                             ?>
102 102
 									<tr class="post-<?php the_ID(); ?> type-accommodation status-none" id="post-<?php the_ID(); ?>">
103 103
 										<th class="check-column" scope="row">
104 104
 											<label for="cb-select-<?php the_ID(); ?>" class="screen-reader-text"><?php the_title(); ?></label>
@@ -109,15 +109,15 @@  discard block
 block discarded – undo
109 109
 										</td>
110 110
 										<td class="excerpt column-excerpt">
111 111
 											<?php
112
-												echo wp_kses_post( strip_tags( get_the_excerpt() ) );
113
-											?>
112
+                                                            echo wp_kses_post( strip_tags( get_the_excerpt() ) );
113
+                                                       ?>
114 114
 										</td>
115 115
 									</tr>
116 116
 						<?php 
117
-                          }
118
-							}
119
-						} 
120
-                        ?>
117
+                              }
118
+                                   }
119
+                              } 
120
+                         ?>
121 121
 					</tbody>
122 122
 
123 123
 					<?php $this->table_footer(); ?>
@@ -135,13 +135,13 @@  discard block
 block discarded – undo
135 135
 			</div>
136 136
 		</div>
137 137
 		<?php
138
-	}
138
+     }
139 139
 
140
-	/**
141
-	 * The header of the item list
142
-	 */
143
-	public function table_header() {
144
-	?>
140
+     /**
141
+      * The header of the item list
142
+      */
143
+     public function table_header() {
144
+     ?>
145 145
 		<thead>
146 146
 			<tr>
147 147
 				<th style="" class="manage-column column-cb check-column" id="cb" scope="col">
@@ -153,13 +153,13 @@  discard block
 block discarded – undo
153 153
 			</tr>
154 154
 		</thead>
155 155
 	<?php
156
-	}
156
+     }
157 157
 
158
-	/**
159
-	 * The footer of the item list
160
-	 */
161
-	public function table_footer() {
162
-	?>
158
+     /**
159
+      * The footer of the item list
160
+      */
161
+     public function table_footer() {
162
+     ?>
163 163
 		<tfoot>
164 164
 			<tr>
165 165
 				<th style="" class="manage-column column-cb check-column" id="cb" scope="col">
@@ -171,23 +171,23 @@  discard block
 block discarded – undo
171 171
 			</tr>
172 172
 		</tfoot>
173 173
 	<?php
174
-	}
174
+     }
175 175
 
176
-	/**
177
-	 * Grab all the current accommodation posts via the lsx_wetu_id field.
178
-	 */
179
-	public function find_current_accommodation() {
180
-		global $wpdb;
181
-		$return = false;
176
+     /**
177
+      * Grab all the current accommodation posts via the lsx_wetu_id field.
178
+      */
179
+     public function find_current_accommodation() {
180
+          global $wpdb;
181
+          $return = false;
182 182
 
183
-		$all_accommodation = $wpdb->get_results("
183
+          $all_accommodation = $wpdb->get_results("
184 184
 			SELECT ID
185 185
 			FROM {$wpdb->posts}
186 186
 			WHERE post_type = 'accommodation'
187 187
 			LIMIT 0,500
188 188
 		", ARRAY_A);
189 189
 
190
-		$current_accommodation = $wpdb->get_results("
190
+          $current_accommodation = $wpdb->get_results("
191 191
 			SELECT key1.post_id
192 192
 			FROM {$wpdb->postmeta} key1
193 193
 
@@ -200,52 +200,52 @@  discard block
 block discarded – undo
200 200
 			LIMIT 0,500
201 201
 		", ARRAY_A);
202 202
 
203
-		if ( null !== $all_accommodation && ! empty( $all_accommodation ) ) {
204
-			//remove the extra accommodation
205
-			if ( null !== $current_accommodation && ! empty( $current_accommodation ) ) {
206
-				$all_accommodation = array_diff( $this->format_array( $all_accommodation, 'ID' ), $this->format_array( $current_accommodation, 'post_id' ) );
207
-			} elseif ( null !== $current_accommodation && empty( $current_accommodation ) ) {
208
-				$all_accommodation = $this->format_array( $current_accommodation, 'post_id' );
209
-			}
210
-
211
-			$return = $all_accommodation;
212
-		}
213
-
214
-		return $return;
215
-	}
216
-
217
-	/**
218
-	 * format the array
219
-	 */
220
-	public function format_array( $array, $key ) {
221
-		$new_array = array();
222
-
223
-		foreach ( $array as $value ) {
224
-			$new_array[] = $value[ $key ];
225
-		}
226
-
227
-		return $new_array;
228
-	}
229
-
230
-	/**
231
-	 * Run through the accommodation an connect them.
232
-	 */
233
-	public function process_connection() {
234
-		$return = false;
235
-		check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
236
-		if ( isset( $_POST['action'] ) && 'lsx_import_connect_accommodation' === $_POST['action'] && isset( $_POST['type'] ) && $_POST['type'] === $this->tab_slug && isset( $_POST['post_id'] ) && isset( $_POST['wetu_id'] ) ) {
237
-			$post_id     = false;
238
-			$matching_id = false;
239
-			$post_id     = sanitize_text_field( $_POST['post_id'] );
240
-			$matching_id = sanitize_text_field( $_POST['wetu_id'] );
241
-
242
-			add_post_meta( $post_id, 'lsx_wetu_id', $matching_id );
243
-			$return = '<li class="post-' . $post_id . '"><span class="dashicons dashicons-yes"></span> <a target="_blank" href="' . get_permalink( $post_id ) . '">' . get_the_title( $post_id ) . '</a></li>';
244
-		}
245
-
246
-		print_r( $return );
247
-		die();
248
-	}
203
+          if ( null !== $all_accommodation && ! empty( $all_accommodation ) ) {
204
+               //remove the extra accommodation
205
+               if ( null !== $current_accommodation && ! empty( $current_accommodation ) ) {
206
+                    $all_accommodation = array_diff( $this->format_array( $all_accommodation, 'ID' ), $this->format_array( $current_accommodation, 'post_id' ) );
207
+               } elseif ( null !== $current_accommodation && empty( $current_accommodation ) ) {
208
+                    $all_accommodation = $this->format_array( $current_accommodation, 'post_id' );
209
+               }
210
+
211
+               $return = $all_accommodation;
212
+          }
213
+
214
+          return $return;
215
+     }
216
+
217
+     /**
218
+      * format the array
219
+      */
220
+     public function format_array( $array, $key ) {
221
+          $new_array = array();
222
+
223
+          foreach ( $array as $value ) {
224
+               $new_array[] = $value[ $key ];
225
+          }
226
+
227
+          return $new_array;
228
+     }
229
+
230
+     /**
231
+      * Run through the accommodation an connect them.
232
+      */
233
+     public function process_connection() {
234
+          $return = false;
235
+          check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
236
+          if ( isset( $_POST['action'] ) && 'lsx_import_connect_accommodation' === $_POST['action'] && isset( $_POST['type'] ) && $_POST['type'] === $this->tab_slug && isset( $_POST['post_id'] ) && isset( $_POST['wetu_id'] ) ) {
237
+               $post_id     = false;
238
+               $matching_id = false;
239
+               $post_id     = sanitize_text_field( $_POST['post_id'] );
240
+               $matching_id = sanitize_text_field( $_POST['wetu_id'] );
241
+
242
+               add_post_meta( $post_id, 'lsx_wetu_id', $matching_id );
243
+               $return = '<li class="post-' . $post_id . '"><span class="dashicons dashicons-yes"></span> <a target="_blank" href="' . get_permalink( $post_id ) . '">' . get_the_title( $post_id ) . '</a></li>';
244
+          }
245
+
246
+          print_r( $return );
247
+          die();
248
+     }
249 249
 
250 250
 }
251 251
 
Please login to merge, or discard this patch.
classes/class-lsx-wetu-importer-accommodation.php 1 patch
Indentation   +680 added lines, -680 removed lines patch added patch discarded remove patch
@@ -9,95 +9,95 @@  discard block
 block discarded – undo
9 9
 
10 10
 class LSX_WETU_Importer_Accommodation 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 = 'accommodation';
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 $accommodation_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
-
74
-		// ** This request only works with API KEY **
75
-		//if ( false !== $this->api_username && false !== $this->api_password ) {
76
-		//	$this->url    = 'https://wetu.com/API/Pins/';
77
-		//	$this->url_qs = 'username=' . $this->api_username . '&password=' . $this->api_password;
78
-		//} elseif ( false !== $this->api_key ) {
79
-			$this->url    = 'https://wetu.com/API/Pins/' . $this->api_key;
80
-			$this->url_qs = 'all=include';
81
-		//}
82
-
83
-		$temp_options = get_option( '_lsx-to_settings', false );
84
-
85
-		if ( false !== $temp_options && isset( $temp_options[ $this->plugin_slug ] ) && ! empty( $temp_options[ $this->plugin_slug ] ) ) {
86
-			$this->options = $temp_options[ $this->plugin_slug ];
87
-		}
88
-
89
-		$accommodation_options = get_option( 'lsx_wetu_importer_accommodation_settings', false );
90
-
91
-		if ( false !== $accommodation_options ) {
92
-			$this->accommodation_options = $accommodation_options;
93
-		}
94
-	}
95
-
96
-	/**
97
-	 * Display the importer administration screen
98
-	 */
99
-	public function display_page() {
100
-		?>
12
+     /**
13
+      * The url to list items from WETU
14
+      *
15
+      * @since 0.0.1
16
+      *
17
+      * @var      string
18
+      */
19
+     public $tab_slug = 'accommodation';
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 $accommodation_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
+
74
+          // ** This request only works with API KEY **
75
+          //if ( false !== $this->api_username && false !== $this->api_password ) {
76
+          //	$this->url    = 'https://wetu.com/API/Pins/';
77
+          //	$this->url_qs = 'username=' . $this->api_username . '&password=' . $this->api_password;
78
+          //} elseif ( false !== $this->api_key ) {
79
+               $this->url    = 'https://wetu.com/API/Pins/' . $this->api_key;
80
+               $this->url_qs = 'all=include';
81
+          //}
82
+
83
+          $temp_options = get_option( '_lsx-to_settings', false );
84
+
85
+          if ( false !== $temp_options && isset( $temp_options[ $this->plugin_slug ] ) && ! empty( $temp_options[ $this->plugin_slug ] ) ) {
86
+               $this->options = $temp_options[ $this->plugin_slug ];
87
+          }
88
+
89
+          $accommodation_options = get_option( 'lsx_wetu_importer_accommodation_settings', false );
90
+
91
+          if ( false !== $accommodation_options ) {
92
+               $this->accommodation_options = $accommodation_options;
93
+          }
94
+     }
95
+
96
+     /**
97
+      * Display the importer administration screen
98
+      */
99
+     public function display_page() {
100
+          ?>
101 101
 		<div class="wrap">
102 102
 
103 103
 			<div class="tablenav top">
@@ -189,8 +189,8 @@  discard block
 block discarded – undo
189 189
 						<div style="width:30%;display:block;float:left;">
190 190
 							<h3><?php esc_html_e( 'Assign a Safari Brand' ); ?></h3>
191 191
 							<?php
192
-								echo wp_kses_post( $this->taxonomy_checkboxes( 'accommodation-brand', $this->accommodation_options ) );
193
-							?>
192
+                                        echo wp_kses_post( $this->taxonomy_checkboxes( 'accommodation-brand', $this->accommodation_options ) );
193
+                                   ?>
194 194
 						</div>
195 195
 
196 196
 						<br clear="both" />
@@ -220,142 +220,142 @@  discard block
 block discarded – undo
220 220
 			</div>
221 221
 		</div>
222 222
 		<?php
223
-	}
224
-
225
-	/**
226
-	 * Run through the accommodation grabbed from the DB.
227
-	 */
228
-	public function process_ajax_search() {
229
-		$return = false;
230
-		check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
231
-		if ( isset( $_POST['action'] ) && 'lsx_tour_importer' === $_POST['action'] && isset( $_POST['type'] ) && 'accommodation' === $_POST['type'] ) {
232
-
233
-			$searched_items = false;
234
-			if ( isset( $_POST['keyword'] ) ) {
235
-				$keyphrases = array_map( 'sanitize_text_field', wp_unslash( $_POST['keyword'] ) );
236
-			} else {
237
-				$keyphrases = array( 0 );
238
-			}
239
-
240
-			if ( ! is_array( $keyphrases ) ) {
241
-				$keyphrases = array( $keyphrases );
242
-			}
243
-			foreach ( $keyphrases as &$keyword ) {
244
-				$keyword = ltrim( rtrim( $keyword ) );
245
-			}
246
-
247
-			$post_status = false;
248
-
249
-			if ( in_array( 'publish', $keyphrases ) ) {
250
-				$post_status = 'publish';
251
-			}
252
-			if ( in_array( 'pending', $keyphrases ) ) {
253
-				$post_status = 'pending';
254
-			}
255
-			if ( in_array( 'draft', $keyphrases ) ) {
256
-				$post_status = 'draft';
257
-			}
258
-			if ( in_array( 'import', $keyphrases ) ) {
259
-				$post_status = 'import';
260
-			}
261
-
262
-			// If there is a post status use it.
263
-			if ( false !== $post_status ) {
264
-
265
-				$accommodation = array();
266
-				$current_accommodation = $this->find_current_accommodation();
267
-				if ( ! empty( $current_accommodation ) ) {
268
-					foreach ( $current_accommodation as $cs_key => $ccs_id ) {
269
-						$accommodation[] = $this->prepare_row_attributes( $cs_key, $ccs_id->post_id );
270
-					}
271
-				}
272
-
273
-				// Run through each accommodation and use it.
274
-				if ( ! empty( $accommodation ) ) {
275
-					foreach ( $accommodation as $row_key => $row ) {
276
-						$row['post_title'] = $row['name'];
277
-						if ( 'import' === $post_status ) {
278
-							if ( is_array( $this->queued_imports ) && in_array( $row['post_id'], $this->queued_imports ) ) {
279
-								$current_status = get_post_status( $row['post_id'] );
280
-								if ( 'draft' === $current_status ) {
281
-									$searched_items[ sanitize_title( $row['name'] ) . '-' . $row['id'] ] = $this->format_row( $row );
282
-								}
283
-							} else {
284
-								continue;
285
-							}
286
-						} else {
287
-							if ( 0 === $row['post_id'] ) {
288
-								continue;
289
-							} else {
290
-								$current_status = get_post_status( $row['post_id'] );
291
-								if ( $current_status !== $post_status ) {
292
-									continue;
293
-								}
294
-							}
295
-							$searched_items[ sanitize_title( $row['name'] ) . '-' . $row['id'] ] = $this->format_row( $row, $row_key );
296
-						}
297
-					}
298
-				}
299
-			} else {
300
-				$key_string_search = implode( '+', $keyphrases );
301
-				$search_data       = wp_remote_get( $this->url . '/Search/' . $key_string_search );
302
-				if ( ! empty( $search_data ) && isset( $search_data['response'] ) && isset( $search_data['response']['code'] ) && 200 === $search_data['response']['code'] ) {
303
-
304
-					$search_data = json_decode( $search_data['body'], true );
305
-					foreach ( $search_data as $sdata_key => $sdata ) {
306
-
307
-						if ( 'Destination' === trim( $sdata['type'] ) || 'Activity' === trim( $sdata['type'] ) || 'Restaurant' === trim( $sdata['type'] ) || 'None' === trim( $sdata['type'] ) || 'Site / Attraction' === trim( $sdata['type'] ) || '' === trim( $sdata['type'] ) ) {
308
-							continue;
309
-						}
310
-
311
-						$temp_id = $this->get_post_id_by_key_value( $sdata['id'] );
312
-						if ( false === $temp_id ) {
313
-							$sdata['post_id'] = 0;
314
-							$sdata['post_title'] = $sdata['name'];
315
-						} else {
316
-							$sdata['post_id'] = $temp_id;
317
-							$sdata['post_title'] = get_the_title( $temp_id );
318
-						}
319
-						$searched_items[ sanitize_title( $sdata['name'] ) . '-' . $sdata['id'] ] = $this->format_row( $sdata, $sdata_key );
320
-					}
321
-				}
322
-			}
323
-
324
-			if ( false !== $searched_items ) {
325
-				$return = implode( $searched_items );
326
-			}
327
-			print_r( $return );
328
-		}
329
-
330
-		die();
331
-	}
332
-
333
-	public function prepare_row_attributes( $cs_key, $ccs_id ) {
334
-		$row_item = array(
335
-			'id' => $cs_key,
336
-			'type' => 'Accommodation',
337
-			'name' => get_the_title( $ccs_id ),
338
-			'last_modified' => date( 'Y-m-d', strtotime( 'now' ) ),
339
-			'post_id' => $ccs_id,
340
-		);
341
-		return $row_item;
342
-	}
343
-
344
-	/**
345
-	 * Formats the row for output on the screen.
346
-	 *
347
-	 * @param boolean $row the current row to format.
348
-	 * @return void
349
-	 */
350
-	public function format_row( $row = false, $row_key = '' ) {
351
-		if ( false !== $row ) {
352
-
353
-			$status = 'import';
354
-			if ( 0 !== $row['post_id'] ) {
355
-				$status = '<a href="' . admin_url( '/post.php?post=' . $row['post_id'] . '&action=edit' ) . '" target="_blank">' . get_post_status( $row['post_id'] ) . '</a>';
356
-			}
357
-
358
-			$row_html = '
223
+     }
224
+
225
+     /**
226
+      * Run through the accommodation grabbed from the DB.
227
+      */
228
+     public function process_ajax_search() {
229
+          $return = false;
230
+          check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
231
+          if ( isset( $_POST['action'] ) && 'lsx_tour_importer' === $_POST['action'] && isset( $_POST['type'] ) && 'accommodation' === $_POST['type'] ) {
232
+
233
+               $searched_items = false;
234
+               if ( isset( $_POST['keyword'] ) ) {
235
+                    $keyphrases = array_map( 'sanitize_text_field', wp_unslash( $_POST['keyword'] ) );
236
+               } else {
237
+                    $keyphrases = array( 0 );
238
+               }
239
+
240
+               if ( ! is_array( $keyphrases ) ) {
241
+                    $keyphrases = array( $keyphrases );
242
+               }
243
+               foreach ( $keyphrases as &$keyword ) {
244
+                    $keyword = ltrim( rtrim( $keyword ) );
245
+               }
246
+
247
+               $post_status = false;
248
+
249
+               if ( in_array( 'publish', $keyphrases ) ) {
250
+                    $post_status = 'publish';
251
+               }
252
+               if ( in_array( 'pending', $keyphrases ) ) {
253
+                    $post_status = 'pending';
254
+               }
255
+               if ( in_array( 'draft', $keyphrases ) ) {
256
+                    $post_status = 'draft';
257
+               }
258
+               if ( in_array( 'import', $keyphrases ) ) {
259
+                    $post_status = 'import';
260
+               }
261
+
262
+               // If there is a post status use it.
263
+               if ( false !== $post_status ) {
264
+
265
+                    $accommodation = array();
266
+                    $current_accommodation = $this->find_current_accommodation();
267
+                    if ( ! empty( $current_accommodation ) ) {
268
+                         foreach ( $current_accommodation as $cs_key => $ccs_id ) {
269
+                              $accommodation[] = $this->prepare_row_attributes( $cs_key, $ccs_id->post_id );
270
+                         }
271
+                    }
272
+
273
+                    // Run through each accommodation and use it.
274
+                    if ( ! empty( $accommodation ) ) {
275
+                         foreach ( $accommodation as $row_key => $row ) {
276
+                              $row['post_title'] = $row['name'];
277
+                              if ( 'import' === $post_status ) {
278
+                                   if ( is_array( $this->queued_imports ) && in_array( $row['post_id'], $this->queued_imports ) ) {
279
+                                        $current_status = get_post_status( $row['post_id'] );
280
+                                        if ( 'draft' === $current_status ) {
281
+                                             $searched_items[ sanitize_title( $row['name'] ) . '-' . $row['id'] ] = $this->format_row( $row );
282
+                                        }
283
+                                   } else {
284
+                                        continue;
285
+                                   }
286
+                              } else {
287
+                                   if ( 0 === $row['post_id'] ) {
288
+                                        continue;
289
+                                   } else {
290
+                                        $current_status = get_post_status( $row['post_id'] );
291
+                                        if ( $current_status !== $post_status ) {
292
+                                             continue;
293
+                                        }
294
+                                   }
295
+                                   $searched_items[ sanitize_title( $row['name'] ) . '-' . $row['id'] ] = $this->format_row( $row, $row_key );
296
+                              }
297
+                         }
298
+                    }
299
+               } else {
300
+                    $key_string_search = implode( '+', $keyphrases );
301
+                    $search_data       = wp_remote_get( $this->url . '/Search/' . $key_string_search );
302
+                    if ( ! empty( $search_data ) && isset( $search_data['response'] ) && isset( $search_data['response']['code'] ) && 200 === $search_data['response']['code'] ) {
303
+
304
+                         $search_data = json_decode( $search_data['body'], true );
305
+                         foreach ( $search_data as $sdata_key => $sdata ) {
306
+
307
+                              if ( 'Destination' === trim( $sdata['type'] ) || 'Activity' === trim( $sdata['type'] ) || 'Restaurant' === trim( $sdata['type'] ) || 'None' === trim( $sdata['type'] ) || 'Site / Attraction' === trim( $sdata['type'] ) || '' === trim( $sdata['type'] ) ) {
308
+                                   continue;
309
+                              }
310
+
311
+                              $temp_id = $this->get_post_id_by_key_value( $sdata['id'] );
312
+                              if ( false === $temp_id ) {
313
+                                   $sdata['post_id'] = 0;
314
+                                   $sdata['post_title'] = $sdata['name'];
315
+                              } else {
316
+                                   $sdata['post_id'] = $temp_id;
317
+                                   $sdata['post_title'] = get_the_title( $temp_id );
318
+                              }
319
+                              $searched_items[ sanitize_title( $sdata['name'] ) . '-' . $sdata['id'] ] = $this->format_row( $sdata, $sdata_key );
320
+                         }
321
+                    }
322
+               }
323
+
324
+               if ( false !== $searched_items ) {
325
+                    $return = implode( $searched_items );
326
+               }
327
+               print_r( $return );
328
+          }
329
+
330
+          die();
331
+     }
332
+
333
+     public function prepare_row_attributes( $cs_key, $ccs_id ) {
334
+          $row_item = array(
335
+               'id' => $cs_key,
336
+               'type' => 'Accommodation',
337
+               'name' => get_the_title( $ccs_id ),
338
+               'last_modified' => date( 'Y-m-d', strtotime( 'now' ) ),
339
+               'post_id' => $ccs_id,
340
+          );
341
+          return $row_item;
342
+     }
343
+
344
+     /**
345
+      * Formats the row for output on the screen.
346
+      *
347
+      * @param boolean $row the current row to format.
348
+      * @return void
349
+      */
350
+     public function format_row( $row = false, $row_key = '' ) {
351
+          if ( false !== $row ) {
352
+
353
+               $status = 'import';
354
+               if ( 0 !== $row['post_id'] ) {
355
+                    $status = '<a href="' . admin_url( '/post.php?post=' . $row['post_id'] . '&action=edit' ) . '" target="_blank">' . get_post_status( $row['post_id'] ) . '</a>';
356
+               }
357
+
358
+               $row_html = '
359 359
 			<tr class="post-' . $row['post_id'] . ' type-tour" id="post-' . $row['post_id'] . '">
360 360
 				<th class="check-column" scope="row">
361 361
 					<label for="cb-select-' . $row['id'] . '" class="screen-reader-text">' . $row['name'] . '</label>
@@ -374,457 +374,457 @@  discard block
 block discarded – undo
374 374
 					' . $row['id'] . '
375 375
 				</td>
376 376
 			</tr>';
377
-			return $row_html;
378
-		}
379
-	}
380
-
381
-	/**
382
-	 * Saves the queue to the option.
383
-	 */
384
-	public function remove_from_queue( $id ) {
385
-		if ( ! empty( $this->queued_imports ) ) {
386
-			$key = array_search( $id, $this->queued_imports );
387
-			if ( false !== $key ) {
388
-				unset( $this->queued_imports[ $key ] );
389
-
390
-				delete_option( 'lsx_wetu_importer_que' );
391
-				update_option( 'lsx_wetu_importer_que', $this->queued_imports );
392
-			}
393
-		}
394
-	}
395
-
396
-	/**
397
-	 * Connect to wetu
398
-	 */
399
-	public function process_ajax_import() {
400
-		$return = false;
401
-		check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
402
-
403
-		if ( isset( $_POST['action'] ) && 'lsx_import_items' === $_POST['action'] && isset( $_POST['type'] ) && 'accommodation' === $_POST['type'] && isset( $_POST['wetu_id'] ) ) {
404
-
405
-			$wetu_id = sanitize_text_field( $_POST['wetu_id'] );
406
-			if ( isset( $_POST['post_id'] ) ) {
407
-				$post_id = sanitize_text_field( $_POST['post_id'] );
408
-			} else {
409
-				$post_id = 0;
410
-			}
411
-
412
-			if ( isset( $_POST['team_members'] ) ) {
413
-				$team_members = array_map( 'sanitize_text_field', wp_unslash( $_POST['team_members'] ) );
414
-			} else {
415
-				$team_members = false;
416
-			}
417
-
418
-			if ( isset( $_POST['safari_brands'] ) ) {
419
-				$safari_brands = array_map( 'sanitize_text_field', wp_unslash( $_POST['safari_brands'] ) );
420
-			} else {
421
-				$safari_brands = false;
422
-			}
423
-			delete_option( 'lsx_wetu_importer_accommodation_settings' );
424
-
425
-			if ( isset( $_POST['content'] ) && is_array( $_POST['content'] ) && ! empty( $_POST['content'] ) ) {
426
-				$content = array_map( 'sanitize_text_field', wp_unslash( $_POST['content'] ) );
427
-				add_option( 'lsx_wetu_importer_accommodation_settings', $content );
428
-			} else {
429
-				$content = false;
430
-			}
431
-
432
-			$jdata = wp_remote_get( $this->url . '/Get?' . $this->url_qs . '&ids=' . $wetu_id );
433
-
434
-			if ( ! empty( $jdata ) && isset( $jdata['response'] ) && isset( $jdata['response']['code'] ) && 200 === $jdata['response']['code'] ) {
435
-				$adata = json_decode( $jdata['body'], true );
436
-				$return = $this->import_row( $adata, $wetu_id, $post_id, $team_members, $content, $safari_brands );
437
-				$this->format_completed_row( $return );
438
-				$this->remove_from_queue( $return );
439
-				$this->cleanup_posts();
440
-			} else {
441
-				$this->format_error( esc_html__( 'There was a problem importing your accommodation, please try refreshing the page.', 'lsx-wetu-importer' ) );
442
-			}
443
-		}
444
-	}
445
-
446
-	/**
447
-	 * Connect to wetu
448
-	 */
449
-	public function import_row( $data, $wetu_id, $id = 0, $team_members = false, $importable_content = array(), $safari_brands = false ) {
450
-		$post_name = '';
451
-		$data_post_content = '';
452
-		$data_post_excerpt = '';
453
-
454
-		$post = array(
455
-			'post_type' => 'accommodation',
456
-		);
457
-		$content_used_general_description = false;
458
-
459
-		// Set the post_content.
460
-		if ( ! empty( $importable_content ) && in_array( 'description', $importable_content ) ) {
461
-			if ( isset( $data[0]['content']['extended_description'] ) ) {
462
-				$data_post_content = $data[0]['content']['extended_description'];
463
-			} elseif ( isset( $data[0]['content']['general_description'] ) ) {
464
-				$data_post_content = $data[0]['content']['general_description'];
465
-				$content_used_general_description = true;
466
-			} elseif ( isset( $data[0]['content']['teaser_description'] ) ) {
467
-				$data_post_content = $data[0]['content']['teaser_description'];
468
-			}
469
-
470
-			if ( isset( $this->options['disable_accommodation_filtering'] ) && 'on' === $this->options['disable_accommodation_filtering'] ) {
471
-				$post['post_content'] = $data_post_content;
472
-			} else {
473
-				$post['post_content'] = wp_strip_all_tags( $data_post_content );
474
-			}
475
-		}
476
-
477
-		// set the post_excerpt.
478
-		if ( ! empty( $importable_content ) && in_array( 'excerpt', $importable_content ) ) {
479
-			if ( isset( $data[0]['content']['teaser_description'] ) ) {
480
-				$data_post_excerpt = $data[0]['content']['teaser_description'];
481
-			} elseif ( isset( $data[0]['content']['general_description'] ) && false === $content_used_general_description ) {
482
-				$data_post_excerpt = $data[0]['content']['general_description'];
483
-			}
484
-
485
-			$post['post_excerpt'] = $data_post_excerpt;
486
-		}
487
-
488
-		if ( false !== $id && '0' !== $id ) {
489
-			$post['ID'] = $id;
490
-
491
-			if ( isset( $this->options ) && 'on' !== $this->options['disable_accommodation_title'] && isset( $data[0]['name'] ) ) {
492
-				$post['post_title'] = $data[0]['name'];
493
-				$post['post_name'] = wp_unique_post_slug( sanitize_title( $data[0]['name'] ), $id, 'draft', 'accommodation', 0 );
494
-			}
495
-
496
-			$post['post_status'] = 'publish';
497
-
498
-			$id = wp_update_post( $post );
499
-			$prev_date = get_post_meta( $id, 'lsx_wetu_modified_date', true );
500
-			update_post_meta( $id, 'lsx_wetu_modified_date', strtotime( $data[0]['last_modified'] ), $prev_date );
501
-		} else {
502
-			// Set the name.
503
-			if ( isset( $data[0]['name'] ) ) {
504
-				$post_name = wp_unique_post_slug( sanitize_title( $data[0]['name'] ), $id, 'draft', 'accommodation', 0 );
505
-			}
506
-
507
-			$post['post_name']   = $post_name;
508
-			$post['post_title']  = $data[0]['name'];
509
-			$post['post_status'] = 'publish';
510
-			$id                  = wp_insert_post( $post );
511
-
512
-			// Save the WETU ID and the Last date it was modified.
513
-			if ( false !== $id ) {
514
-				add_post_meta( $id, 'lsx_wetu_id', $wetu_id );
515
-				add_post_meta( $id, 'lsx_wetu_modified_date', strtotime( $data[0]['last_modified'] ) );
516
-			}
517
-		}
518
-
519
-		// Setup some default for use in the import.
520
-		if ( false !== $importable_content && ( in_array( 'gallery', $importable_content ) || in_array( 'banner_image', $importable_content ) || in_array( 'featured_image', $importable_content ) ) ) {
521
-			$this->find_attachments( $id );
522
-		}
523
-
524
-		// Set the team member if it is there.
525
-		if ( post_type_exists( 'team' ) && false !== $team_members && '' !== $team_members ) {
526
-			$this->set_team_member( $id, $team_members );
527
-		}
528
-
529
-		// Set the safari brand.
530
-		if ( false !== $safari_brands && '' !== $safari_brands ) {
531
-			$this->set_safari_brands( $id, $safari_brands );
532
-		}
533
-
534
-		$this->set_map_data( $data, $id, 9 );
535
-
536
-		if ( post_type_exists( 'destination' ) && false !== $importable_content && in_array( 'destination', $importable_content ) ) {
537
-			$this->connect_destinations( $data, $id );
538
-		}
539
-
540
-		if ( false !== $importable_content && in_array( 'category', $importable_content ) ) {
541
-			$this->set_taxonomy_style( $data, $id );
542
-		}
543
-
544
-		// Set the Room Data.
545
-		if ( false !== $importable_content && in_array( 'rooms', $importable_content ) ) {
546
-			$this->set_room_data( $data, $id );
547
-		}
548
-
549
-		// Set the rating.
550
-		if ( false !== $importable_content && in_array( 'rating', $importable_content ) ) {
551
-			$this->set_rating( $data, $id );
552
-		}
553
-
554
-		// Set the checkin checkout data.
555
-		if ( false !== $importable_content && in_array( 'checkin', $importable_content ) ) {
556
-			$this->set_checkin_checkout( $data, $id );
557
-		}
558
-
559
-		// Set the Spoken Languages.
560
-		if ( false !== $importable_content && in_array( 'spoken_languages', $importable_content ) ) {
561
-			$this->set_spoken_languages( $data, $id );
562
-		}
563
-
564
-		// Set the friendly options.
565
-		if ( false !== $importable_content && in_array( 'friendly', $importable_content ) ) {
566
-			$this->set_friendly( $data, $id );
567
-		}
568
-
569
-		// Set the special_interests.
570
-		if ( false !== $importable_content && in_array( 'special_interests', $importable_content ) ) {
571
-			$this->set_special_interests( $data, $id );
572
-		}
573
-
574
-		// Import the videos.
575
-		if ( false !== $importable_content && in_array( 'videos', $importable_content ) ) {
576
-			$this->set_video_data( $data, $id );
577
-		}
578
-
579
-		// Import the facilities.
580
-		if ( false !== $importable_content && in_array( 'facilities', $importable_content ) ) {
581
-			$this->set_facilities( $data, $id );
582
-		}
583
-
584
-		// Set the featured image.
585
-		if ( false !== $importable_content && in_array( 'featured_image', $importable_content ) ) {
586
-			$this->set_featured_image( $data, $id );
587
-		}
588
-
589
-		if ( false !== $importable_content && in_array( 'banner_image', $importable_content ) ) {
590
-			$this->set_banner_image( $data, $id );
591
-		}
592
-
593
-		// Import the main gallery.
594
-		if ( false !== $importable_content && in_array( 'gallery', $importable_content ) ) {
595
-			$this->create_main_gallery( $data, $id );
596
-		}
597
-
598
-		return $id;
599
-	}
600
-
601
-	/**
602
-	 * Set the safari brand
603
-	 */
604
-	public function set_safari_brands( $id, $safari_brands ) {
605
-		foreach ( $safari_brands as $safari_brand ) {
606
-			wp_set_object_terms( $id, intval( $safari_brand ), 'accommodation-brand', true );
607
-		}
608
-	}
609
-
610
-	/**
611
-	 * Connects the destinations post type
612
-	 */
613
-	public function connect_destinations( $data, $id ) {
614
-		if ( isset( $data[0]['position'] ) ) {
615
-			$destinations = false;
616
-
617
-			if ( isset( $data[0]['position']['country'] ) ) {
618
-				$destinations['country'] = $data[0]['position']['country'];
619
-			}
620
-
621
-			if ( isset( $data[0]['position']['destination'] ) ) {
622
-				$destinations['destination'] = $data[0]['position']['destination'];
623
-			}
624
-
625
-			if ( false !== $destinations ) {
626
-				$prev_values = get_post_meta( $id, 'destination_to_accommodation', false );
627
-
628
-				if ( false === $prev_values || ! is_array( $prev_values ) ) {
629
-					$prev_values = array();
630
-				}
631
-
632
-				delete_post_meta( $id, 'destination_to_accommodation', $prev_values );
633
-				$destinations = array_unique( $destinations );
634
-
635
-				foreach ( $destinations as $key => $value ) {
636
-					$destination = get_page_by_title( ltrim( rtrim( $value ) ), 'OBJECT', 'destination' );
637
-					if ( null !== $destination ) {
638
-						if ( ! in_array( $destination->ID, $prev_values ) ) {
639
-							add_post_meta( $id, 'destination_to_accommodation', $destination->ID, false );
640
-							add_post_meta( $destination->ID, 'accommodation_to_destination', $id, false );
641
-							$this->cleanup_posts[ $destination->ID ] = 'accommodation_to_destination';
642
-						}
643
-					}
644
-				}
645
-			}
646
-		}
647
-	}
648
-
649
-	/**
650
-	 * Set the Travel Style
651
-	 */
652
-	public function set_taxonomy_style( $data, $id ) {
653
-		$terms = false;
654
-
655
-		if ( isset( $data[0]['category'] ) ) {
656
-			$term = term_exists( trim( $data[0]['category'] ), 'accommodation-type' );
657
-			if ( ! $term ) {
658
-				$term = wp_insert_term( trim( $data[0]['category'] ), 'accommodation-type' );
659
-
660
-				if ( is_wp_error( $term ) ) {
661
-					echo wp_kses_post( $term->get_error_message() );
662
-				}
663
-			} else {
664
-				wp_set_object_terms( $id, intval( $term['term_id'] ), 'accommodation-type', true );
665
-			}
666
-		} else {
667
-			wp_set_object_terms( $id, intval( $term['term_id'] ), 'accommodation-type', true );
668
-		}
669
-	}
670
-
671
-	/**
672
-	 * Saves the room data
673
-	 */
674
-	public function set_room_data( $data, $id ) {
675
-		if ( ! empty( $data[0]['rooms'] ) && is_array( $data[0]['rooms'] ) ) {
676
-			$rooms = false;
677
-
678
-			foreach ( $data[0]['rooms'] as $room ) {
679
-				$temp_room = array();
680
-
681
-				if ( isset( $room['name'] ) ) {
682
-					$temp_room['title'] = $room['name'];
683
-				}
684
-
685
-				if ( isset( $room['description'] ) ) {
686
-					$temp_room['description'] = strip_tags( $room['description'] );
687
-				}
688
-
689
-				$temp_room['price'] = 0;
690
-				$temp_room['type']  = 'room';
691
-
692
-				if ( ! empty( $room['images'] ) && is_array( $room['images'] ) ) {
693
-					$temp_room['gallery'] = array();
694
-					$temp_room['gallery'][] = $this->attach_image( $room['images'][0], $id );
695
-				}
696
-				$rooms[] = $temp_room;
697
-			}
698
-
699
-			if ( false !== $id && '0' !== $id ) {
700
-				delete_post_meta( $id, 'units' );
701
-			}
702
-
703
-			foreach ( $rooms as $room ) {
704
-				add_post_meta( $id, 'units', $room, false );
705
-			}
706
-
707
-			if ( isset( $data[0]['features'] ) && isset( $data[0]['features']['rooms'] ) ) {
708
-				$room_count = $data[0]['features']['rooms'];
709
-			} else {
710
-				$room_count = count( $data[0]['rooms'] );
711
-			}
712
-
713
-			if ( false !== $id && '0' !== $id ) {
714
-				$prev_rooms = get_post_meta( $id, 'number_of_rooms', true );
715
-				update_post_meta( $id, 'number_of_rooms', $room_count, $prev_rooms );
716
-			} else {
717
-				add_post_meta( $id, 'number_of_rooms', $room_count, true );
718
-			}
719
-		}
720
-	}
721
-
722
-	/**
723
-	 * Set the ratings
724
-	 */
725
-	public function set_rating( $data, $id ) {
726
-		if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['star_authority'] ) ) {
727
-			$rating_type = $data[0]['features']['star_authority'];
728
-		} else {
729
-			$rating_type = 'Unspecified2';
730
-		}
731
-
732
-		$this->save_custom_field( $rating_type, 'rating_type', $id );
733
-
734
-		if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['stars'] ) ) {
735
-			$this->save_custom_field( $data[0]['features']['stars'], 'rating', $id, true );
736
-		}
737
-	}
738
-
739
-	/**
740
-	 * Set the spoken_languages
741
-	 */
742
-	public function set_spoken_languages( $data, $id ) {
743
-		if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['spoken_languages'] ) && ! empty( $data[0]['features']['spoken_languages'] ) ) {
744
-			$languages = false;
745
-
746
-			foreach ( $data[0]['features']['spoken_languages'] as $spoken_language ) {
747
-				$languages[] = sanitize_title( $spoken_language );
748
-			}
749
-
750
-			if ( false !== $languages ) {
751
-				$this->save_custom_field( $languages, 'spoken_languages', $id );
752
-			}
753
-		}
754
-	}
755
-
756
-	/**
757
-	 * Set the friendly
758
-	 */
759
-	public function set_friendly( $data, $id ) {
760
-		if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['suggested_visitor_types'] ) && ! empty( $data[0]['features']['suggested_visitor_types'] ) ) {
761
-			$friendly_options = false;
762
-
763
-			foreach ( $data[0]['features']['suggested_visitor_types'] as $visitor_type ) {
764
-				$friendly_options[] = sanitize_title( $visitor_type );
765
-			}
766
-
767
-			if ( false !== $friendly_options ) {
768
-				$this->save_custom_field( $friendly_options, 'suggested_visitor_types', $id );
769
-			}
770
-		}
771
-	}
772
-
773
-	/**
774
-	 * Set the special interests
775
-	 */
776
-	public function set_special_interests( $data, $id ) {
777
-		if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['special_interests'] ) && ! empty( $data[0]['features']['special_interests'] ) ) {
778
-			$interests = false;
779
-
780
-			foreach ( $data[0]['features']['special_interests'] as $special_interest ) {
781
-				$interests[] = sanitize_title( $special_interest );
782
-			}
783
-
784
-			if ( false !== $interests ) {
785
-				$this->save_custom_field( $interests, 'special_interests', $id );
786
-			}
787
-		}
788
-	}
789
-
790
-	/**
791
-	 * Set the Check in and Check out Date
792
-	 */
793
-	public function set_checkin_checkout( $data, $id ) {
794
-		if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['check_in_time'] ) ) {
795
-			$time = str_replace( 'h', ':', $data[0]['features']['check_in_time'] );
796
-			$time = date( 'h:ia', strtotime( $time ) );
797
-			$this->save_custom_field( $time, 'checkin_time', $id );
798
-		}
799
-
800
-		if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['check_out_time'] ) ) {
801
-			$time = str_replace( 'h', ':', $data[0]['features']['check_out_time'] );
802
-			$time = date( 'h:ia', strtotime( $time ) );
803
-			$this->save_custom_field( $time, 'checkout_time', $id );
804
-		}
805
-	}
806
-
807
-	/**
808
-	 * Set the Facilities
809
-	 */
810
-	public function set_facilities( $data, $id ) {
811
-		$parent_facilities = array(
812
-			'available_services' => 'Available Services',
813
-			'property_facilities' => 'Property Facilities',
814
-			'room_facilities' => 'Room Facilities',
815
-			'activities_on_site' => 'Activities on Site',
816
-		);
817
-
818
-		foreach ( $parent_facilities as $key => $label ) {
819
-			$terms = false;
820
-
821
-			if ( isset( $data[0]['features'] ) && isset( $data[0]['features'][ $key ] ) ) {
822
-				$parent_id = $this->set_term( $id, $label, 'facility' );
823
-			}
824
-
825
-			foreach ( $data[0]['features'][ $key ] as $child_facility ) {
826
-				$this->set_term( $id, $child_facility, 'facility', $parent_id );
827
-			}
828
-		}
829
-	}
377
+               return $row_html;
378
+          }
379
+     }
380
+
381
+     /**
382
+      * Saves the queue to the option.
383
+      */
384
+     public function remove_from_queue( $id ) {
385
+          if ( ! empty( $this->queued_imports ) ) {
386
+               $key = array_search( $id, $this->queued_imports );
387
+               if ( false !== $key ) {
388
+                    unset( $this->queued_imports[ $key ] );
389
+
390
+                    delete_option( 'lsx_wetu_importer_que' );
391
+                    update_option( 'lsx_wetu_importer_que', $this->queued_imports );
392
+               }
393
+          }
394
+     }
395
+
396
+     /**
397
+      * Connect to wetu
398
+      */
399
+     public function process_ajax_import() {
400
+          $return = false;
401
+          check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
402
+
403
+          if ( isset( $_POST['action'] ) && 'lsx_import_items' === $_POST['action'] && isset( $_POST['type'] ) && 'accommodation' === $_POST['type'] && isset( $_POST['wetu_id'] ) ) {
404
+
405
+               $wetu_id = sanitize_text_field( $_POST['wetu_id'] );
406
+               if ( isset( $_POST['post_id'] ) ) {
407
+                    $post_id = sanitize_text_field( $_POST['post_id'] );
408
+               } else {
409
+                    $post_id = 0;
410
+               }
411
+
412
+               if ( isset( $_POST['team_members'] ) ) {
413
+                    $team_members = array_map( 'sanitize_text_field', wp_unslash( $_POST['team_members'] ) );
414
+               } else {
415
+                    $team_members = false;
416
+               }
417
+
418
+               if ( isset( $_POST['safari_brands'] ) ) {
419
+                    $safari_brands = array_map( 'sanitize_text_field', wp_unslash( $_POST['safari_brands'] ) );
420
+               } else {
421
+                    $safari_brands = false;
422
+               }
423
+               delete_option( 'lsx_wetu_importer_accommodation_settings' );
424
+
425
+               if ( isset( $_POST['content'] ) && is_array( $_POST['content'] ) && ! empty( $_POST['content'] ) ) {
426
+                    $content = array_map( 'sanitize_text_field', wp_unslash( $_POST['content'] ) );
427
+                    add_option( 'lsx_wetu_importer_accommodation_settings', $content );
428
+               } else {
429
+                    $content = false;
430
+               }
431
+
432
+               $jdata = wp_remote_get( $this->url . '/Get?' . $this->url_qs . '&ids=' . $wetu_id );
433
+
434
+               if ( ! empty( $jdata ) && isset( $jdata['response'] ) && isset( $jdata['response']['code'] ) && 200 === $jdata['response']['code'] ) {
435
+                    $adata = json_decode( $jdata['body'], true );
436
+                    $return = $this->import_row( $adata, $wetu_id, $post_id, $team_members, $content, $safari_brands );
437
+                    $this->format_completed_row( $return );
438
+                    $this->remove_from_queue( $return );
439
+                    $this->cleanup_posts();
440
+               } else {
441
+                    $this->format_error( esc_html__( 'There was a problem importing your accommodation, please try refreshing the page.', 'lsx-wetu-importer' ) );
442
+               }
443
+          }
444
+     }
445
+
446
+     /**
447
+      * Connect to wetu
448
+      */
449
+     public function import_row( $data, $wetu_id, $id = 0, $team_members = false, $importable_content = array(), $safari_brands = false ) {
450
+          $post_name = '';
451
+          $data_post_content = '';
452
+          $data_post_excerpt = '';
453
+
454
+          $post = array(
455
+               'post_type' => 'accommodation',
456
+          );
457
+          $content_used_general_description = false;
458
+
459
+          // Set the post_content.
460
+          if ( ! empty( $importable_content ) && in_array( 'description', $importable_content ) ) {
461
+               if ( isset( $data[0]['content']['extended_description'] ) ) {
462
+                    $data_post_content = $data[0]['content']['extended_description'];
463
+               } elseif ( isset( $data[0]['content']['general_description'] ) ) {
464
+                    $data_post_content = $data[0]['content']['general_description'];
465
+                    $content_used_general_description = true;
466
+               } elseif ( isset( $data[0]['content']['teaser_description'] ) ) {
467
+                    $data_post_content = $data[0]['content']['teaser_description'];
468
+               }
469
+
470
+               if ( isset( $this->options['disable_accommodation_filtering'] ) && 'on' === $this->options['disable_accommodation_filtering'] ) {
471
+                    $post['post_content'] = $data_post_content;
472
+               } else {
473
+                    $post['post_content'] = wp_strip_all_tags( $data_post_content );
474
+               }
475
+          }
476
+
477
+          // set the post_excerpt.
478
+          if ( ! empty( $importable_content ) && in_array( 'excerpt', $importable_content ) ) {
479
+               if ( isset( $data[0]['content']['teaser_description'] ) ) {
480
+                    $data_post_excerpt = $data[0]['content']['teaser_description'];
481
+               } elseif ( isset( $data[0]['content']['general_description'] ) && false === $content_used_general_description ) {
482
+                    $data_post_excerpt = $data[0]['content']['general_description'];
483
+               }
484
+
485
+               $post['post_excerpt'] = $data_post_excerpt;
486
+          }
487
+
488
+          if ( false !== $id && '0' !== $id ) {
489
+               $post['ID'] = $id;
490
+
491
+               if ( isset( $this->options ) && 'on' !== $this->options['disable_accommodation_title'] && isset( $data[0]['name'] ) ) {
492
+                    $post['post_title'] = $data[0]['name'];
493
+                    $post['post_name'] = wp_unique_post_slug( sanitize_title( $data[0]['name'] ), $id, 'draft', 'accommodation', 0 );
494
+               }
495
+
496
+               $post['post_status'] = 'publish';
497
+
498
+               $id = wp_update_post( $post );
499
+               $prev_date = get_post_meta( $id, 'lsx_wetu_modified_date', true );
500
+               update_post_meta( $id, 'lsx_wetu_modified_date', strtotime( $data[0]['last_modified'] ), $prev_date );
501
+          } else {
502
+               // Set the name.
503
+               if ( isset( $data[0]['name'] ) ) {
504
+                    $post_name = wp_unique_post_slug( sanitize_title( $data[0]['name'] ), $id, 'draft', 'accommodation', 0 );
505
+               }
506
+
507
+               $post['post_name']   = $post_name;
508
+               $post['post_title']  = $data[0]['name'];
509
+               $post['post_status'] = 'publish';
510
+               $id                  = wp_insert_post( $post );
511
+
512
+               // Save the WETU ID and the Last date it was modified.
513
+               if ( false !== $id ) {
514
+                    add_post_meta( $id, 'lsx_wetu_id', $wetu_id );
515
+                    add_post_meta( $id, 'lsx_wetu_modified_date', strtotime( $data[0]['last_modified'] ) );
516
+               }
517
+          }
518
+
519
+          // Setup some default for use in the import.
520
+          if ( false !== $importable_content && ( in_array( 'gallery', $importable_content ) || in_array( 'banner_image', $importable_content ) || in_array( 'featured_image', $importable_content ) ) ) {
521
+               $this->find_attachments( $id );
522
+          }
523
+
524
+          // Set the team member if it is there.
525
+          if ( post_type_exists( 'team' ) && false !== $team_members && '' !== $team_members ) {
526
+               $this->set_team_member( $id, $team_members );
527
+          }
528
+
529
+          // Set the safari brand.
530
+          if ( false !== $safari_brands && '' !== $safari_brands ) {
531
+               $this->set_safari_brands( $id, $safari_brands );
532
+          }
533
+
534
+          $this->set_map_data( $data, $id, 9 );
535
+
536
+          if ( post_type_exists( 'destination' ) && false !== $importable_content && in_array( 'destination', $importable_content ) ) {
537
+               $this->connect_destinations( $data, $id );
538
+          }
539
+
540
+          if ( false !== $importable_content && in_array( 'category', $importable_content ) ) {
541
+               $this->set_taxonomy_style( $data, $id );
542
+          }
543
+
544
+          // Set the Room Data.
545
+          if ( false !== $importable_content && in_array( 'rooms', $importable_content ) ) {
546
+               $this->set_room_data( $data, $id );
547
+          }
548
+
549
+          // Set the rating.
550
+          if ( false !== $importable_content && in_array( 'rating', $importable_content ) ) {
551
+               $this->set_rating( $data, $id );
552
+          }
553
+
554
+          // Set the checkin checkout data.
555
+          if ( false !== $importable_content && in_array( 'checkin', $importable_content ) ) {
556
+               $this->set_checkin_checkout( $data, $id );
557
+          }
558
+
559
+          // Set the Spoken Languages.
560
+          if ( false !== $importable_content && in_array( 'spoken_languages', $importable_content ) ) {
561
+               $this->set_spoken_languages( $data, $id );
562
+          }
563
+
564
+          // Set the friendly options.
565
+          if ( false !== $importable_content && in_array( 'friendly', $importable_content ) ) {
566
+               $this->set_friendly( $data, $id );
567
+          }
568
+
569
+          // Set the special_interests.
570
+          if ( false !== $importable_content && in_array( 'special_interests', $importable_content ) ) {
571
+               $this->set_special_interests( $data, $id );
572
+          }
573
+
574
+          // Import the videos.
575
+          if ( false !== $importable_content && in_array( 'videos', $importable_content ) ) {
576
+               $this->set_video_data( $data, $id );
577
+          }
578
+
579
+          // Import the facilities.
580
+          if ( false !== $importable_content && in_array( 'facilities', $importable_content ) ) {
581
+               $this->set_facilities( $data, $id );
582
+          }
583
+
584
+          // Set the featured image.
585
+          if ( false !== $importable_content && in_array( 'featured_image', $importable_content ) ) {
586
+               $this->set_featured_image( $data, $id );
587
+          }
588
+
589
+          if ( false !== $importable_content && in_array( 'banner_image', $importable_content ) ) {
590
+               $this->set_banner_image( $data, $id );
591
+          }
592
+
593
+          // Import the main gallery.
594
+          if ( false !== $importable_content && in_array( 'gallery', $importable_content ) ) {
595
+               $this->create_main_gallery( $data, $id );
596
+          }
597
+
598
+          return $id;
599
+     }
600
+
601
+     /**
602
+      * Set the safari brand
603
+      */
604
+     public function set_safari_brands( $id, $safari_brands ) {
605
+          foreach ( $safari_brands as $safari_brand ) {
606
+               wp_set_object_terms( $id, intval( $safari_brand ), 'accommodation-brand', true );
607
+          }
608
+     }
609
+
610
+     /**
611
+      * Connects the destinations post type
612
+      */
613
+     public function connect_destinations( $data, $id ) {
614
+          if ( isset( $data[0]['position'] ) ) {
615
+               $destinations = false;
616
+
617
+               if ( isset( $data[0]['position']['country'] ) ) {
618
+                    $destinations['country'] = $data[0]['position']['country'];
619
+               }
620
+
621
+               if ( isset( $data[0]['position']['destination'] ) ) {
622
+                    $destinations['destination'] = $data[0]['position']['destination'];
623
+               }
624
+
625
+               if ( false !== $destinations ) {
626
+                    $prev_values = get_post_meta( $id, 'destination_to_accommodation', false );
627
+
628
+                    if ( false === $prev_values || ! is_array( $prev_values ) ) {
629
+                         $prev_values = array();
630
+                    }
631
+
632
+                    delete_post_meta( $id, 'destination_to_accommodation', $prev_values );
633
+                    $destinations = array_unique( $destinations );
634
+
635
+                    foreach ( $destinations as $key => $value ) {
636
+                         $destination = get_page_by_title( ltrim( rtrim( $value ) ), 'OBJECT', 'destination' );
637
+                         if ( null !== $destination ) {
638
+                              if ( ! in_array( $destination->ID, $prev_values ) ) {
639
+                                   add_post_meta( $id, 'destination_to_accommodation', $destination->ID, false );
640
+                                   add_post_meta( $destination->ID, 'accommodation_to_destination', $id, false );
641
+                                   $this->cleanup_posts[ $destination->ID ] = 'accommodation_to_destination';
642
+                              }
643
+                         }
644
+                    }
645
+               }
646
+          }
647
+     }
648
+
649
+     /**
650
+      * Set the Travel Style
651
+      */
652
+     public function set_taxonomy_style( $data, $id ) {
653
+          $terms = false;
654
+
655
+          if ( isset( $data[0]['category'] ) ) {
656
+               $term = term_exists( trim( $data[0]['category'] ), 'accommodation-type' );
657
+               if ( ! $term ) {
658
+                    $term = wp_insert_term( trim( $data[0]['category'] ), 'accommodation-type' );
659
+
660
+                    if ( is_wp_error( $term ) ) {
661
+                         echo wp_kses_post( $term->get_error_message() );
662
+                    }
663
+               } else {
664
+                    wp_set_object_terms( $id, intval( $term['term_id'] ), 'accommodation-type', true );
665
+               }
666
+          } else {
667
+               wp_set_object_terms( $id, intval( $term['term_id'] ), 'accommodation-type', true );
668
+          }
669
+     }
670
+
671
+     /**
672
+      * Saves the room data
673
+      */
674
+     public function set_room_data( $data, $id ) {
675
+          if ( ! empty( $data[0]['rooms'] ) && is_array( $data[0]['rooms'] ) ) {
676
+               $rooms = false;
677
+
678
+               foreach ( $data[0]['rooms'] as $room ) {
679
+                    $temp_room = array();
680
+
681
+                    if ( isset( $room['name'] ) ) {
682
+                         $temp_room['title'] = $room['name'];
683
+                    }
684
+
685
+                    if ( isset( $room['description'] ) ) {
686
+                         $temp_room['description'] = strip_tags( $room['description'] );
687
+                    }
688
+
689
+                    $temp_room['price'] = 0;
690
+                    $temp_room['type']  = 'room';
691
+
692
+                    if ( ! empty( $room['images'] ) && is_array( $room['images'] ) ) {
693
+                         $temp_room['gallery'] = array();
694
+                         $temp_room['gallery'][] = $this->attach_image( $room['images'][0], $id );
695
+                    }
696
+                    $rooms[] = $temp_room;
697
+               }
698
+
699
+               if ( false !== $id && '0' !== $id ) {
700
+                    delete_post_meta( $id, 'units' );
701
+               }
702
+
703
+               foreach ( $rooms as $room ) {
704
+                    add_post_meta( $id, 'units', $room, false );
705
+               }
706
+
707
+               if ( isset( $data[0]['features'] ) && isset( $data[0]['features']['rooms'] ) ) {
708
+                    $room_count = $data[0]['features']['rooms'];
709
+               } else {
710
+                    $room_count = count( $data[0]['rooms'] );
711
+               }
712
+
713
+               if ( false !== $id && '0' !== $id ) {
714
+                    $prev_rooms = get_post_meta( $id, 'number_of_rooms', true );
715
+                    update_post_meta( $id, 'number_of_rooms', $room_count, $prev_rooms );
716
+               } else {
717
+                    add_post_meta( $id, 'number_of_rooms', $room_count, true );
718
+               }
719
+          }
720
+     }
721
+
722
+     /**
723
+      * Set the ratings
724
+      */
725
+     public function set_rating( $data, $id ) {
726
+          if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['star_authority'] ) ) {
727
+               $rating_type = $data[0]['features']['star_authority'];
728
+          } else {
729
+               $rating_type = 'Unspecified2';
730
+          }
731
+
732
+          $this->save_custom_field( $rating_type, 'rating_type', $id );
733
+
734
+          if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['stars'] ) ) {
735
+               $this->save_custom_field( $data[0]['features']['stars'], 'rating', $id, true );
736
+          }
737
+     }
738
+
739
+     /**
740
+      * Set the spoken_languages
741
+      */
742
+     public function set_spoken_languages( $data, $id ) {
743
+          if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['spoken_languages'] ) && ! empty( $data[0]['features']['spoken_languages'] ) ) {
744
+               $languages = false;
745
+
746
+               foreach ( $data[0]['features']['spoken_languages'] as $spoken_language ) {
747
+                    $languages[] = sanitize_title( $spoken_language );
748
+               }
749
+
750
+               if ( false !== $languages ) {
751
+                    $this->save_custom_field( $languages, 'spoken_languages', $id );
752
+               }
753
+          }
754
+     }
755
+
756
+     /**
757
+      * Set the friendly
758
+      */
759
+     public function set_friendly( $data, $id ) {
760
+          if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['suggested_visitor_types'] ) && ! empty( $data[0]['features']['suggested_visitor_types'] ) ) {
761
+               $friendly_options = false;
762
+
763
+               foreach ( $data[0]['features']['suggested_visitor_types'] as $visitor_type ) {
764
+                    $friendly_options[] = sanitize_title( $visitor_type );
765
+               }
766
+
767
+               if ( false !== $friendly_options ) {
768
+                    $this->save_custom_field( $friendly_options, 'suggested_visitor_types', $id );
769
+               }
770
+          }
771
+     }
772
+
773
+     /**
774
+      * Set the special interests
775
+      */
776
+     public function set_special_interests( $data, $id ) {
777
+          if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['special_interests'] ) && ! empty( $data[0]['features']['special_interests'] ) ) {
778
+               $interests = false;
779
+
780
+               foreach ( $data[0]['features']['special_interests'] as $special_interest ) {
781
+                    $interests[] = sanitize_title( $special_interest );
782
+               }
783
+
784
+               if ( false !== $interests ) {
785
+                    $this->save_custom_field( $interests, 'special_interests', $id );
786
+               }
787
+          }
788
+     }
789
+
790
+     /**
791
+      * Set the Check in and Check out Date
792
+      */
793
+     public function set_checkin_checkout( $data, $id ) {
794
+          if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['check_in_time'] ) ) {
795
+               $time = str_replace( 'h', ':', $data[0]['features']['check_in_time'] );
796
+               $time = date( 'h:ia', strtotime( $time ) );
797
+               $this->save_custom_field( $time, 'checkin_time', $id );
798
+          }
799
+
800
+          if ( ! empty( $data[0]['features'] ) && isset( $data[0]['features']['check_out_time'] ) ) {
801
+               $time = str_replace( 'h', ':', $data[0]['features']['check_out_time'] );
802
+               $time = date( 'h:ia', strtotime( $time ) );
803
+               $this->save_custom_field( $time, 'checkout_time', $id );
804
+          }
805
+     }
806
+
807
+     /**
808
+      * Set the Facilities
809
+      */
810
+     public function set_facilities( $data, $id ) {
811
+          $parent_facilities = array(
812
+               'available_services' => 'Available Services',
813
+               'property_facilities' => 'Property Facilities',
814
+               'room_facilities' => 'Room Facilities',
815
+               'activities_on_site' => 'Activities on Site',
816
+          );
817
+
818
+          foreach ( $parent_facilities as $key => $label ) {
819
+               $terms = false;
820
+
821
+               if ( isset( $data[0]['features'] ) && isset( $data[0]['features'][ $key ] ) ) {
822
+                    $parent_id = $this->set_term( $id, $label, 'facility' );
823
+               }
824
+
825
+               foreach ( $data[0]['features'][ $key ] as $child_facility ) {
826
+                    $this->set_term( $id, $child_facility, 'facility', $parent_id );
827
+               }
828
+          }
829
+     }
830 830
 }
Please login to merge, or discard this patch.