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