Passed
Push — master ( 137d4f...a3ad7c )
by Chris
05:11 queued 02:24
created
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.
classes/class-lsx-wetu-importer-settings.php 1 patch
Indentation   +187 added lines, -187 removed lines patch added patch discarded remove patch
@@ -14,82 +14,82 @@  discard block
 block discarded – undo
14 14
  */
15 15
 class LSX_WETU_Importer_Settings {
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
-	 * Holds the default settings.
26
-	 *
27
-	 * @var array
28
-	 */
29
-	public $defaults = array();
24
+     /**
25
+      * Holds the default settings.
26
+      *
27
+      * @var array
28
+      */
29
+     public $defaults = array();
30 30
 
31
-	/**
32
-	 * Holds the settings fields available.
33
-	 *
34
-	 * @var array
35
-	 */
36
-	public $fields = array();
31
+     /**
32
+      * Holds the settings fields available.
33
+      *
34
+      * @var array
35
+      */
36
+     public $fields = array();
37 37
 
38
-	/**
39
-	 * Initialize the plugin by setting localization, filters, and administration functions.
40
-	 *
41
-	 * @since 1.0.0
42
-	 *
43
-	 * @access private
44
-	 */
45
-	public function __construct() {
46
-		$this->defaults = array(
47
-			'api_key'                            => '',
48
-			'disable_tour_title'                 => '',
49
-			'disable_tour_descriptions'          => '',
50
-			'disable_tour_tags'                  => 'on',
51
-			'enable_tour_featured_random'        => '',
52
-			'disable_accommodation_title'        => '',
53
-			'disable_accommodation_descriptions' => '',
54
-			'disable_accommodation_filtering'    => '',
55
-			'disable_accommodation_excerpts'     => '',
56
-			'disable_destination_title'          => '',
57
-			'disable_destination_descriptions'   => '',
58
-			'image_replacing'                    => 'on',
59
-			'image_limit'                        => '15',
60
-			'image_scaling'                      => 'on',
61
-			'width'                              => '800',
62
-			'height'                             => '600',
63
-			'scaling'                            => 'h',
64
-			'enable_tour_ref_column'             => '',
65
-		);
66
-		$this->fields   = array_keys( $this->defaults );
67
-		add_action( 'admin_init', array( $this, 'save_options' ) );
68
-	}
38
+     /**
39
+      * Initialize the plugin by setting localization, filters, and administration functions.
40
+      *
41
+      * @since 1.0.0
42
+      *
43
+      * @access private
44
+      */
45
+     public function __construct() {
46
+          $this->defaults = array(
47
+               'api_key'                            => '',
48
+               'disable_tour_title'                 => '',
49
+               'disable_tour_descriptions'          => '',
50
+               'disable_tour_tags'                  => 'on',
51
+               'enable_tour_featured_random'        => '',
52
+               'disable_accommodation_title'        => '',
53
+               'disable_accommodation_descriptions' => '',
54
+               'disable_accommodation_filtering'    => '',
55
+               'disable_accommodation_excerpts'     => '',
56
+               'disable_destination_title'          => '',
57
+               'disable_destination_descriptions'   => '',
58
+               'image_replacing'                    => 'on',
59
+               'image_limit'                        => '15',
60
+               'image_scaling'                      => 'on',
61
+               'width'                              => '800',
62
+               'height'                             => '600',
63
+               'scaling'                            => 'h',
64
+               'enable_tour_ref_column'             => '',
65
+          );
66
+          $this->fields   = array_keys( $this->defaults );
67
+          add_action( 'admin_init', array( $this, 'save_options' ) );
68
+     }
69 69
 
70
-	/**
71
-	 * Return an instance of this class.
72
-	 *
73
-	 * @return  object
74
-	 */
75
-	public static function get_instance() {
76
-		// If the single instance hasn't been set, set it now.
77
-		if ( ! isset( self::$instance ) ) {
78
-			self::$instance = new self();
79
-		}
80
-		return self::$instance;
81
-	}
70
+     /**
71
+      * Return an instance of this class.
72
+      *
73
+      * @return  object
74
+      */
75
+     public static function get_instance() {
76
+          // If the single instance hasn't been set, set it now.
77
+          if ( ! isset( self::$instance ) ) {
78
+               self::$instance = new self();
79
+          }
80
+          return self::$instance;
81
+     }
82 82
 
83
-	/**
84
-	 * Display the importer welcome screen
85
-	 */
86
-	public function display_page() {
87
-		$options = lsx_wetu_get_options();
88
-		foreach ( $options as $key => $value ) {
89
-			$value = trim( $value );
90
-		}
91
-		$options = wp_parse_args( $options, $this->defaults );
92
-		?>
83
+     /**
84
+      * Display the importer welcome screen
85
+      */
86
+     public function display_page() {
87
+          $options = lsx_wetu_get_options();
88
+          foreach ( $options as $key => $value ) {
89
+               $value = trim( $value );
90
+          }
91
+          $options = wp_parse_args( $options, $this->defaults );
92
+          ?>
93 93
 		<div class="wrap">
94 94
 			<form method="post" class="">
95 95
 				<?php wp_nonce_field( 'lsx_wetu_importer_save', 'lsx_wetu_importer_save_options' ); ?>
@@ -103,10 +103,10 @@  discard block
 block discarded – undo
103 103
 							<td>
104 104
 								<input data-toggle="tooltip" data-placement="top" title="The API key can be found on your My Account page of your WETU account." type="text" value="
105 105
                                 <?php
106
-								if ( isset( $options['api_key'] ) ) {
107
-									echo esc_attr( $options['api_key'] );
108
-								}
109
-								?>
106
+                                        if ( isset( $options['api_key'] ) ) {
107
+                                             echo esc_attr( $options['api_key'] );
108
+                                        }
109
+                                        ?>
110 110
                                 " name="api_key" />
111 111
 							</td>
112 112
 						</tr>
@@ -123,10 +123,10 @@  discard block
 block discarded – undo
123 123
 							<td>
124 124
 								<input type="checkbox"
125 125
 								<?php
126
-								if ( isset( $options['disable_tour_title'] ) && '' !== $options['disable_tour_title'] ) {
127
-									echo esc_attr( 'checked="checked"' );
128
-								}
129
-								?>
126
+                                        if ( isset( $options['disable_tour_title'] ) && '' !== $options['disable_tour_title'] ) {
127
+                                             echo esc_attr( 'checked="checked"' );
128
+                                        }
129
+                                        ?>
130 130
 								name="disable_tour_title" />
131 131
 
132 132
 								<small><?php esc_html_e( 'If you are going to manage your tour descriptions on this site and not on WETU then enable this setting.', 'lsx-wetu-importer' ); ?></small>
@@ -139,10 +139,10 @@  discard block
 block discarded – undo
139 139
 							<td>
140 140
 								<input type="checkbox"
141 141
 								<?php
142
-								if ( isset( $options['disable_tour_descriptions'] ) && '' !== $options['disable_tour_descriptions'] ) {
143
-									echo esc_attr( 'checked="checked"' );
144
-								}
145
-								?>
142
+                                        if ( isset( $options['disable_tour_descriptions'] ) && '' !== $options['disable_tour_descriptions'] ) {
143
+                                             echo esc_attr( 'checked="checked"' );
144
+                                        }
145
+                                        ?>
146 146
 								name="disable_tour_descriptions" />
147 147
 
148 148
 								<small><?php esc_html_e( 'If you are going to manage your tour descriptions on this site and not on WETU then enable this setting.', 'lsx-wetu-importer' ); ?></small>
@@ -155,10 +155,10 @@  discard block
 block discarded – undo
155 155
 							<td>
156 156
 								<input type="checkbox"
157 157
 								<?php
158
-								if ( isset( $options['disable_tour_tags'] ) && '' !== $options['disable_tour_tags'] ) {
159
-									echo esc_attr( 'checked="checked"' );
160
-								}
161
-								?>
158
+                                        if ( isset( $options['disable_tour_tags'] ) && '' !== $options['disable_tour_tags'] ) {
159
+                                             echo esc_attr( 'checked="checked"' );
160
+                                        }
161
+                                        ?>
162 162
 								name="disable_tour_tags" />
163 163
 
164 164
 								<small><?php esc_html_e( 'Disable this is you dont want the option available on the import screen.', 'lsx-wetu-importer' ); ?></small>
@@ -172,10 +172,10 @@  discard block
 block discarded – undo
172 172
 							<td>
173 173
 								<input type="checkbox"
174 174
 								<?php
175
-								if ( isset( $options['enable_tour_ref_column'] ) && '' !== $options['enable_tour_ref_column'] ) {
176
-									echo esc_attr( 'checked="checked"' );
177
-								}
178
-								?>
175
+                                        if ( isset( $options['enable_tour_ref_column'] ) && '' !== $options['enable_tour_ref_column'] ) {
176
+                                             echo esc_attr( 'checked="checked"' );
177
+                                        }
178
+                                        ?>
179 179
 								name="enable_tour_ref_column" />
180 180
 								<small><?php esc_html_e( 'Enables the use of the WETU Reference Column for better tours management.', 'lsx-wetu-importer' ); ?></small>
181 181
 							</td>
@@ -188,10 +188,10 @@  discard block
 block discarded – undo
188 188
 							<td>
189 189
 								<input type="checkbox"
190 190
 								<?php
191
-								if ( isset( $options['enable_tour_featured_random'] ) && '' !== $options['enable_tour_featured_random'] ) {
192
-									echo esc_attr( 'checked="checked"' );
193
-								}
194
-								?>
191
+                                        if ( isset( $options['enable_tour_featured_random'] ) && '' !== $options['enable_tour_featured_random'] ) {
192
+                                             echo esc_attr( 'checked="checked"' );
193
+                                        }
194
+                                        ?>
195 195
 								name="enable_tour_featured_random" />
196 196
 								<small><?php esc_html_e( 'This will randomize the featured image from the destination gallery.', 'lsx-wetu-importer' ); ?></small>
197 197
 							</td>
@@ -210,10 +210,10 @@  discard block
 block discarded – undo
210 210
 							<td>
211 211
 								<input type="checkbox"
212 212
 								<?php
213
-								if ( isset( $options['disable_accommodation_title'] ) && '' !== $options['disable_accommodation_title'] ) {
214
-									echo esc_attr( 'checked="checked"' );
215
-								}
216
-								?>
213
+                                        if ( isset( $options['disable_accommodation_title'] ) && '' !== $options['disable_accommodation_title'] ) {
214
+                                             echo esc_attr( 'checked="checked"' );
215
+                                        }
216
+                                        ?>
217 217
 								name="disable_accommodation_title" />
218 218
 
219 219
 								<small><?php esc_html_e( 'If you are going to manage your tour descriptions on this site and not on WETU then enable this setting.', 'lsx-wetu-importer' ); ?></small>
@@ -226,10 +226,10 @@  discard block
 block discarded – undo
226 226
 							<td>
227 227
 								<input type="checkbox"
228 228
 								<?php
229
-								if ( isset( $options['disable_accommodation_descriptions'] ) && '' !== $options['disable_accommodation_descriptions'] ) {
230
-									echo esc_attr( 'checked="checked"' );
231
-								}
232
-								?>
229
+                                        if ( isset( $options['disable_accommodation_descriptions'] ) && '' !== $options['disable_accommodation_descriptions'] ) {
230
+                                             echo esc_attr( 'checked="checked"' );
231
+                                        }
232
+                                        ?>
233 233
 								name="disable_accommodation_descriptions" />
234 234
 								<small><?php esc_html_e( 'If you are going to edit the accommodation descriptions imported then enable this setting.', 'lsx-wetu-importer' ); ?></small>
235 235
 							</td>
@@ -241,10 +241,10 @@  discard block
 block discarded – undo
241 241
 							<td>
242 242
 								<input type="checkbox"
243 243
 								<?php
244
-								if ( isset( $options['disable_accommodation_filtering'] ) && '' !== $options['disable_accommodation_filtering'] ) {
245
-									echo esc_attr( 'checked="checked"' );
246
-								}
247
-								?>
244
+                                        if ( isset( $options['disable_accommodation_filtering'] ) && '' !== $options['disable_accommodation_filtering'] ) {
245
+                                             echo esc_attr( 'checked="checked"' );
246
+                                        }
247
+                                        ?>
248 248
 								name="disable_accommodation_filtering" />
249 249
 								<small><?php esc_html_e( 'This will stop the HTML from being stripped out of the description.', 'lsx-wetu-importer' ); ?></small>
250 250
 							</td>
@@ -257,10 +257,10 @@  discard block
 block discarded – undo
257 257
 							<td>
258 258
 								<input type="checkbox"
259 259
 								<?php
260
-								if ( isset( $options['disable_accommodation_excerpts'] ) && '' !== $options['disable_accommodation_excerpts'] ) {
261
-									echo esc_attr( 'checked="checked"' );
262
-								}
263
-								?>
260
+                                        if ( isset( $options['disable_accommodation_excerpts'] ) && '' !== $options['disable_accommodation_excerpts'] ) {
261
+                                             echo esc_attr( 'checked="checked"' );
262
+                                        }
263
+                                        ?>
264 264
 								name="disable_accommodation_excerpts" />
265 265
 								<small><?php esc_html_e( 'If you are going to edit the accommodation excerpts then enable this setting.', 'lsx-wetu-importer' ); ?></small>
266 266
 							</td>
@@ -279,10 +279,10 @@  discard block
 block discarded – undo
279 279
 							<td>
280 280
 								<input type="checkbox"
281 281
 								<?php
282
-								if ( isset( $options['disable_destination_title'] ) && '' !== $options['disable_destination_title'] ) {
283
-									echo esc_attr( 'checked="checked"' );
284
-								}
285
-								?>
282
+                                        if ( isset( $options['disable_destination_title'] ) && '' !== $options['disable_destination_title'] ) {
283
+                                             echo esc_attr( 'checked="checked"' );
284
+                                        }
285
+                                        ?>
286 286
 								name="disable_destination_title" />
287 287
 
288 288
 								<small><?php esc_html_e( 'If you are going to manage your tour descriptions on this site and not on WETU then enable this setting.', 'lsx-wetu-importer' ); ?></small>
@@ -295,10 +295,10 @@  discard block
 block discarded – undo
295 295
 							<td>
296 296
 								<input type="checkbox"
297 297
 								<?php
298
-								if ( isset( $options['disable_destination_descriptions'] ) && '' !== $options['disable_destination_descriptions'] ) {
299
-									echo esc_attr( 'checked="checked"' );
300
-								}
301
-								?>
298
+                                        if ( isset( $options['disable_destination_descriptions'] ) && '' !== $options['disable_destination_descriptions'] ) {
299
+                                             echo esc_attr( 'checked="checked"' );
300
+                                        }
301
+                                        ?>
302 302
 								name="disable_destination_descriptions" />
303 303
 								<small><?php esc_html_e( 'If you are going to edit the destination descriptions on this site then enable this setting.', 'lsx-wetu-importer' ); ?></small>
304 304
 							</td>
@@ -317,10 +317,10 @@  discard block
 block discarded – undo
317 317
 							<td>
318 318
 								<input type="checkbox"
319 319
 								<?php
320
-								if ( isset( $options['image_replacing'] ) && '' !== $options['image_replacing'] ) {
321
-									echo esc_attr( 'checked="checked"' );
322
-								}
323
-								?>
320
+                                        if ( isset( $options['image_replacing'] ) && '' !== $options['image_replacing'] ) {
321
+                                             echo esc_attr( 'checked="checked"' );
322
+                                        }
323
+                                        ?>
324 324
 								name="image_replacing" />
325 325
 								<p><?php esc_html_e( 'Do you want your images to be replaced on each import.', 'lsx-wetu-importer' ); ?></p>
326 326
 							</td>
@@ -332,10 +332,10 @@  discard block
 block discarded – undo
332 332
 							<td>
333 333
 								<input placeholder="" type="text" value="
334 334
                                 <?php
335
-								if ( isset( $options['image_limit'] ) && '' !== $options['image_limit'] ) {
336
-									echo esc_attr( $options['image_limit'] );
337
-								}
338
-								?>
335
+                                        if ( isset( $options['image_limit'] ) && '' !== $options['image_limit'] ) {
336
+                                             echo esc_attr( $options['image_limit'] );
337
+                                        }
338
+                                        ?>
339 339
                                 "
340 340
 								name="image_limit" />
341 341
 							</td>
@@ -348,10 +348,10 @@  discard block
 block discarded – undo
348 348
 							<td>
349 349
 								<input type="checkbox"
350 350
 								<?php
351
-								if ( isset( $options['image_scaling'] ) && '' !== $options['image_scaling'] ) {
352
-									echo esc_attr( 'checked="checked"' );
353
-								}
354
-								?>
351
+                                        if ( isset( $options['image_scaling'] ) && '' !== $options['image_scaling'] ) {
352
+                                             echo esc_attr( 'checked="checked"' );
353
+                                        }
354
+                                        ?>
355 355
 								name="image_scaling" />
356 356
 							</td>
357 357
 						</tr>
@@ -362,10 +362,10 @@  discard block
 block discarded – undo
362 362
 							<td>
363 363
 								<input placeholder="800" type="text" value="
364 364
                                 <?php
365
-								if ( isset( $options['width'] ) && '' !== $options['width'] ) {
366
-									echo esc_attr( $options['width'] );
367
-								}
368
-								?>
365
+                                        if ( isset( $options['width'] ) && '' !== $options['width'] ) {
366
+                                             echo esc_attr( $options['width'] );
367
+                                        }
368
+                                        ?>
369 369
                                 "
370 370
 								name="width" />
371 371
 							</td>
@@ -377,10 +377,10 @@  discard block
 block discarded – undo
377 377
 							<td>
378 378
 								<input placeholder="600" type="text" value="
379 379
                                 <?php
380
-								if ( isset( $options['height'] ) && '' !== $options['height'] ) {
381
-									echo esc_attr( $options['height'] );
382
-								}
383
-								?>
380
+                                        if ( isset( $options['height'] ) && '' !== $options['height'] ) {
381
+                                             echo esc_attr( $options['height'] );
382
+                                        }
383
+                                        ?>
384 384
                                 "
385 385
 								name="height" />
386 386
 							</td>
@@ -393,52 +393,52 @@  discard block
 block discarded – undo
393 393
 							<td>
394 394
 								<input type="radio"
395 395
 								<?php
396
-								if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'raw' === $options['scaling'] ) {
397
-									echo esc_attr( 'checked="checked"' );
398
-								}
399
-								?>
396
+                                        if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'raw' === $options['scaling'] ) {
397
+                                             echo esc_attr( 'checked="checked"' );
398
+                                        }
399
+                                        ?>
400 400
 								name="scaling" value="raw" /> <?php esc_html_e( 'Get the Full size image, no cropping takes place.', 'lsx-wetu-importer' ); ?><br />
401 401
 								<input type="radio"
402 402
 								<?php
403
-								if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'c' === $options['scaling'] ) {
404
-									echo esc_attr( 'checked="checked"' );
405
-								}
406
-								?>
403
+                                        if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'c' === $options['scaling'] ) {
404
+                                             echo esc_attr( 'checked="checked"' );
405
+                                        }
406
+                                        ?>
407 407
 								name="scaling"  value="c" /> <?php esc_html_e( 'Crop image to fit fully into the frame, Crop is taken from middle, preserving as much of the image as possible.', 'lsx-wetu-importer' ); ?><br />
408 408
 								<input type="radio"
409 409
 								<?php
410
-								if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'h' === $options['scaling'] ) {
411
-									echo esc_attr( 'checked="checked"' );
412
-								}
413
-								?>
410
+                                        if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'h' === $options['scaling'] ) {
411
+                                             echo esc_attr( 'checked="checked"' );
412
+                                        }
413
+                                        ?>
414 414
 								name="scaling"  value="h" /> <?php esc_html_e( 'Crop image to fit fully into the frame, but resize to height first, then crop on width if needed', 'lsx-wetu-importer' ); ?><br />
415 415
 								<input type="radio"
416 416
 								<?php
417
-								if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'w' === $options['scaling'] ) {
418
-									echo esc_attr( 'checked="checked"' );
419
-								}
420
-								?>
417
+                                        if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'w' === $options['scaling'] ) {
418
+                                             echo esc_attr( 'checked="checked"' );
419
+                                        }
420
+                                        ?>
421 421
 								name="scaling"  value="w" /> <?php esc_html_e( 'Crop image to fit fully into the frame, but resize to width first, then crop on height if needed', 'lsx-wetu-importer' ); ?><br />
422 422
 								<input type="radio"
423 423
 								<?php
424
-								if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'nf' === $options['scaling'] ) {
425
-									echo esc_attr( 'checked="checked"' );
426
-								}
427
-								?>
424
+                                        if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'nf' === $options['scaling'] ) {
425
+                                             echo esc_attr( 'checked="checked"' );
426
+                                        }
427
+                                        ?>
428 428
 								name="scaling"  value="nf" /> <?php esc_html_e( 'Resize the image to fit within the frame. but pad the image with white to ensure the resolution matches the frame', 'lsx-wetu-importer' ); ?><br />
429 429
 								<input type="radio"
430 430
 								<?php
431
-								if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'n' === $options['scaling'] ) {
432
-									echo esc_attr( 'checked="checked"' );
433
-								}
434
-								?>
431
+                                        if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'n' === $options['scaling'] ) {
432
+                                             echo esc_attr( 'checked="checked"' );
433
+                                        }
434
+                                        ?>
435 435
 								name="scaling"  value="n" /> <?php esc_html_e( 'Resize the image to fit within the frame. but do not upscale the image.', 'lsx-wetu-importer' ); ?><br />
436 436
 								<input type="radio"
437 437
 								<?php
438
-								if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'W' === $options['scaling'] ) {
439
-									echo esc_attr( 'checked="checked"' );
440
-								}
441
-								?>
438
+                                        if ( isset( $options['scaling'] ) && '' !== $options['scaling'] && 'W' === $options['scaling'] ) {
439
+                                             echo esc_attr( 'checked="checked"' );
440
+                                        }
441
+                                        ?>
442 442
 								name="scaling"  value="W" /> <?php esc_html_e( 'Resize the image to fit within the frame. Image will not exceed specified dimensions', 'lsx-wetu-importer' ); ?>
443 443
 							</td>
444 444
 						</tr>
@@ -448,25 +448,25 @@  discard block
 block discarded – undo
448 448
 			</form>
449 449
 		</div>
450 450
 		<?php
451
-	}
451
+     }
452 452
 
453
-	/**
454
-	 * Save the options fields
455
-	 *
456
-	 * @return void
457
-	 */
458
-	public function save_options() {
459
-		if ( ! isset( $_POST['lsx_wetu_importer_save_options'] ) || ! wp_verify_nonce( $_POST['lsx_wetu_importer_save_options'], 'lsx_wetu_importer_save' ) ) {
460
-			return;
461
-		}
462
-		$data_to_save = array();
463
-		foreach ( $this->defaults as $key => $field ) {
464
-			if ( isset( $_POST[ $key ] ) ) {
465
-				$data_to_save[ $key ] = sanitize_text_field( $_POST[ $key ] );
466
-			} else {
467
-				$data_to_save[ $key ] = '';
468
-			}
469
-		}
470
-		update_option( 'lsx_wetu_importer_settings', $data_to_save );
471
-	}
453
+     /**
454
+      * Save the options fields
455
+      *
456
+      * @return void
457
+      */
458
+     public function save_options() {
459
+          if ( ! isset( $_POST['lsx_wetu_importer_save_options'] ) || ! wp_verify_nonce( $_POST['lsx_wetu_importer_save_options'], 'lsx_wetu_importer_save' ) ) {
460
+               return;
461
+          }
462
+          $data_to_save = array();
463
+          foreach ( $this->defaults as $key => $field ) {
464
+               if ( isset( $_POST[ $key ] ) ) {
465
+                    $data_to_save[ $key ] = sanitize_text_field( $_POST[ $key ] );
466
+               } else {
467
+                    $data_to_save[ $key ] = '';
468
+               }
469
+          }
470
+          update_option( 'lsx_wetu_importer_settings', $data_to_save );
471
+     }
472 472
 }
Please login to merge, or discard this patch.