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