@@ -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 | } |
@@ -13,467 +13,467 @@ discard block |
||
13 | 13 | */ |
14 | 14 | class LSX_WETU_Importer { |
15 | 15 | |
16 | - /** |
|
17 | - * Holds class instance |
|
18 | - * |
|
19 | - * @since 1.0.0 |
|
20 | - * |
|
21 | - * @var object|Module_Template |
|
22 | - */ |
|
23 | - protected static $instance = null; |
|
24 | - |
|
25 | - /** |
|
26 | - * The slug for this plugin |
|
27 | - * |
|
28 | - * @since 0.0.1 |
|
29 | - * |
|
30 | - * @var string |
|
31 | - */ |
|
32 | - public $plugin_slug = 'lsx-wetu-importer'; |
|
33 | - |
|
34 | - /** |
|
35 | - * The url to list items from WETU |
|
36 | - * |
|
37 | - * @since 0.0.1 |
|
38 | - * |
|
39 | - * @var string |
|
40 | - */ |
|
41 | - public $tab_slug = 'default'; |
|
42 | - |
|
43 | - /** |
|
44 | - * The options for the plugin |
|
45 | - * |
|
46 | - * @since 0.0.1 |
|
47 | - * |
|
48 | - * @var string |
|
49 | - */ |
|
50 | - public $options = false; |
|
51 | - |
|
52 | - /** |
|
53 | - * The url to import images from WETU |
|
54 | - * |
|
55 | - * @since 0.0.1 |
|
56 | - * |
|
57 | - * @var string |
|
58 | - */ |
|
59 | - public $import_scaling_url = false; |
|
60 | - |
|
61 | - /** |
|
62 | - * scale the images on import or not |
|
63 | - * |
|
64 | - * @since 0.0.1 |
|
65 | - * |
|
66 | - * @var boolean |
|
67 | - */ |
|
68 | - public $scale_images = false; |
|
69 | - |
|
70 | - /** |
|
71 | - * The WETU API Key |
|
72 | - */ |
|
73 | - public $api_key = false; |
|
74 | - |
|
75 | - /** |
|
76 | - * The post types this works with. |
|
77 | - */ |
|
78 | - public $post_types = array(); |
|
79 | - |
|
80 | - /** |
|
81 | - * The previously attached images |
|
82 | - * |
|
83 | - * @var array() |
|
84 | - */ |
|
85 | - public $found_attachments = array(); |
|
86 | - |
|
87 | - /** |
|
88 | - * The gallery ids for the found attachements |
|
89 | - * |
|
90 | - * @var array() |
|
91 | - */ |
|
92 | - public $gallery_meta = array(); |
|
93 | - |
|
94 | - /** |
|
95 | - * The post ids to clean up (make sure the connected items are only singular) |
|
96 | - * |
|
97 | - * @var array() |
|
98 | - */ |
|
99 | - public $cleanup_posts = array(); |
|
100 | - |
|
101 | - /** |
|
102 | - * A post => parent relationship array. |
|
103 | - * |
|
104 | - * @var array() |
|
105 | - */ |
|
106 | - public $relation_meta = array(); |
|
107 | - |
|
108 | - /** |
|
109 | - * Image Limit |
|
110 | - * |
|
111 | - * @var int |
|
112 | - */ |
|
113 | - public $image_limit = false; |
|
114 | - |
|
115 | - /** |
|
116 | - * the featured image id |
|
117 | - * |
|
118 | - * @var int |
|
119 | - */ |
|
120 | - public $featured_image = false; |
|
121 | - |
|
122 | - /** |
|
123 | - * the banner image |
|
124 | - * |
|
125 | - * @var int |
|
126 | - */ |
|
127 | - public $banner_image = false; |
|
128 | - |
|
129 | - /** |
|
130 | - * Holds the current import to display |
|
131 | - * |
|
132 | - * @var int |
|
133 | - */ |
|
134 | - public $current_importer = false; |
|
135 | - |
|
136 | - /** |
|
137 | - * if you ran a tour import then you will have accommodation and destination queued to sync as well. |
|
138 | - * |
|
139 | - * @var int |
|
140 | - */ |
|
141 | - public $queued_imports = array(); |
|
142 | - |
|
143 | - /** |
|
144 | - * An Array to hold the items to queue |
|
145 | - * |
|
146 | - * @var int |
|
147 | - */ |
|
148 | - public $import_queue = array(); |
|
149 | - |
|
150 | - /** |
|
151 | - * Holds the current post that is being imported. Use to check the content and excerpt. |
|
152 | - * |
|
153 | - * @var int |
|
154 | - */ |
|
155 | - public $current_post = false; |
|
156 | - |
|
157 | - /** |
|
158 | - * Holds the accommodation settings |
|
159 | - * |
|
160 | - * @var int |
|
161 | - */ |
|
162 | - public $accommodation_settings = false; |
|
163 | - |
|
164 | - /** |
|
165 | - * Holds the tour settings |
|
166 | - * |
|
167 | - * @var int |
|
168 | - */ |
|
169 | - public $tour_settings = false; |
|
170 | - |
|
171 | - /** |
|
172 | - * Holds the destination settings |
|
173 | - * |
|
174 | - * @var int |
|
175 | - */ |
|
176 | - public $destination_settings = false; |
|
177 | - |
|
178 | - /** |
|
179 | - * Hold the flag to let you know if the debug is enabled or not. |
|
180 | - * |
|
181 | - * @var int |
|
182 | - */ |
|
183 | - public $debug_enabled = false; |
|
184 | - |
|
185 | - /** |
|
186 | - * Hold the post columns object |
|
187 | - * |
|
188 | - * @var object LSX_WETU_Importer_Post_Columns() |
|
189 | - */ |
|
190 | - public $post_columns = false; |
|
191 | - |
|
192 | - /** |
|
193 | - * Initialize the plugin by setting localization, filters, and administration functions. |
|
194 | - * |
|
195 | - * @since 1.0.0 |
|
196 | - * |
|
197 | - * @access private |
|
198 | - */ |
|
199 | - public function __construct() { |
|
200 | - add_action( 'admin_init', array( $this, 'compatible_version_check' ) ); |
|
201 | - require_once LSX_WETU_IMPORTER_PATH . 'includes/helpers.php'; |
|
202 | - |
|
203 | - // Don't run anything else in the plugin, if we're on an incompatible PHP version. |
|
204 | - if ( ! self::compatible_version() ) { |
|
205 | - return; |
|
206 | - } |
|
207 | - |
|
208 | - $this->set_variables(); |
|
209 | - |
|
210 | - add_action( 'init', array( $this, 'load_plugin_textdomain' ) ); |
|
211 | - add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ), 11 ); |
|
212 | - add_action( 'admin_menu', array( $this, 'register_importer_page' ), 20 ); |
|
213 | - |
|
214 | - require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-welcome.php'; |
|
215 | - require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-accommodation.php'; |
|
216 | - require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-destination.php'; |
|
217 | - require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-tours.php'; |
|
218 | - require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-settings.php'; |
|
219 | - if ( isset( $this->options ) && isset( $this->options['enable_tour_ref_column'] ) && '' !== $this->options['enable_tour_ref_column'] ) { |
|
220 | - require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-post-columns.php'; |
|
221 | - $this->post_columns = LSX_WETU_Importer_Post_Columns::get_instance(); |
|
222 | - } |
|
223 | - |
|
224 | - add_action( 'init', array( $this, 'load_class' ) ); |
|
225 | - |
|
226 | - if ( 'default' !== $this->tab_slug ) { |
|
227 | - add_action( 'wp_ajax_lsx_tour_importer', array( $this, 'process_ajax_search' ) ); |
|
228 | - add_action( 'wp_ajax_nopriv_lsx_tour_importer', array( $this, 'process_ajax_search' ) ); |
|
229 | - |
|
230 | - add_action( 'wp_ajax_lsx_import_items', array( $this, 'process_ajax_import' ) ); |
|
231 | - add_action( 'wp_ajax_nopriv_lsx_import_items', array( $this, 'process_ajax_import' ) ); |
|
232 | - } |
|
233 | - |
|
234 | - //delete_transient( 'lsx_ti_tours' ); |
|
235 | - } |
|
236 | - |
|
237 | - // ACTIVATION FUNCTIONS. |
|
238 | - |
|
239 | - /** |
|
240 | - * Load the plugin text domain for translation. |
|
241 | - * |
|
242 | - * @since 1.0.0 |
|
243 | - */ |
|
244 | - public function load_plugin_textdomain() { |
|
245 | - load_plugin_textdomain( 'lsx-wetu-importer', false, basename( LSX_WETU_IMPORTER_PATH ) . '/languages' ); |
|
246 | - } |
|
247 | - |
|
248 | - /** |
|
249 | - * Sets the variables used throughout the plugin. |
|
250 | - */ |
|
251 | - public function set_variables() { |
|
252 | - $this->post_types = array( 'accommodation', 'destination', 'tour' ); |
|
253 | - $options = lsx_wetu_get_options(); |
|
254 | - |
|
255 | - // Set the options. |
|
256 | - $this->options = $options; |
|
257 | - |
|
258 | - $temp_options = get_option( '_lsx-to_settings', false ); |
|
259 | - if ( false !== $temp_options ) { |
|
260 | - $this->accommodation_settings = $temp_options['accommodation']; |
|
261 | - $this->tour_settings = $temp_options['tour']; |
|
262 | - $this->destination_settings = $temp_options['destination']; |
|
263 | - } |
|
264 | - |
|
265 | - $this->api_key = false; |
|
266 | - |
|
267 | - if ( ! defined( 'WETU_API_KEY' ) ) { |
|
268 | - if ( isset( $options['api_key'] ) && '' !== $options['api_key'] ) { |
|
269 | - $this->api_key = $options['api_key']; |
|
270 | - } |
|
271 | - } else { |
|
272 | - $this->api_key = WETU_API_KEY; |
|
273 | - } |
|
274 | - |
|
275 | - // Set the tab slug. |
|
276 | - // @codingStandardsIgnoreLine |
|
277 | - if ( isset( $_GET['tab'] ) || ( defined( 'DOING_AJAX' ) && isset( $_POST['type'] ) ) ) { |
|
278 | - if ( isset( $_GET['tab'] ) ) { |
|
279 | - $this->tab_slug = sanitize_text_field( $_GET['tab'] ); |
|
280 | - } else { |
|
281 | - // @codingStandardsIgnoreLine |
|
282 | - $this->tab_slug = sanitize_text_field( $_POST['type'] ); |
|
283 | - } |
|
284 | - } |
|
285 | - |
|
286 | - // If any tours were queued. |
|
287 | - $this->queued_imports = get_option( 'lsx_wetu_importer_que', array() ); |
|
288 | - |
|
289 | - // Set the scaling options. |
|
290 | - if ( isset( $this->options ) && isset( $this->options['image_scaling'] ) ) { |
|
291 | - $this->scale_images = true; |
|
292 | - |
|
293 | - $width = '1024'; |
|
294 | - if ( isset( $this->options['width'] ) && '' !== $this->options['width'] ) { |
|
295 | - $width = $this->options['width']; |
|
296 | - } |
|
297 | - |
|
298 | - $height = '768'; |
|
299 | - if ( isset( $this->options['height'] ) && '' !== $this->options['height'] ) { |
|
300 | - $height = $this->options['height']; |
|
301 | - } |
|
302 | - |
|
303 | - $cropping = 'w'; |
|
304 | - if ( isset( $this->options['cropping'] ) && '' !== $this->options['cropping'] ) { |
|
305 | - $cropping = $this->options['cropping']; |
|
306 | - } |
|
307 | - |
|
308 | - $this->image_scaling_url = 'https://wetu.com/ImageHandler/' . $cropping . $width . 'x' . $height . '/'; |
|
309 | - } |
|
310 | - |
|
311 | - if ( isset( $this->options ) && isset( $this->options['image_limit'] ) && '' !== $this->options['image_limit'] ) { |
|
312 | - $this->image_limit = $this->options['image_limit']; |
|
313 | - } |
|
314 | - } |
|
315 | - |
|
316 | - // COMPATABILITY FUNCTIONS. |
|
317 | - |
|
318 | - /** |
|
319 | - * On plugin activation |
|
320 | - * |
|
321 | - * @since 1.0.0 |
|
322 | - */ |
|
323 | - public static function register_activation_hook() { |
|
324 | - self::compatible_version_check_on_activation(); |
|
325 | - } |
|
326 | - |
|
327 | - /** |
|
328 | - * Check if the PHP version is compatible. |
|
329 | - * |
|
330 | - * @since 1.0.0 |
|
331 | - */ |
|
332 | - public static function compatible_version() { |
|
333 | - if ( version_compare( PHP_VERSION, '5.6', '<' ) ) { |
|
334 | - return false; |
|
335 | - } |
|
336 | - |
|
337 | - return true; |
|
338 | - } |
|
339 | - |
|
340 | - /** |
|
341 | - * The backup sanity check, in case the plugin is activated in a weird way, |
|
342 | - * or the versions change after activation. |
|
343 | - * |
|
344 | - * @since 1.0.0 |
|
345 | - */ |
|
346 | - public function compatible_version_check() { |
|
347 | - if ( ! self::compatible_version() ) { |
|
348 | - if ( is_plugin_active( plugin_basename( LSX_WETU_IMPORTER_CORE ) ) ) { |
|
349 | - deactivate_plugins( plugin_basename( LSX_WETU_IMPORTER_CORE ) ); |
|
350 | - add_action( 'admin_notices', array( $this, 'compatible_version_notice' ) ); |
|
351 | - |
|
352 | - if ( isset( $_GET['activate'] ) ) { |
|
353 | - unset( $_GET['activate'] ); |
|
354 | - } |
|
355 | - } |
|
356 | - } |
|
357 | - } |
|
358 | - |
|
359 | - /** |
|
360 | - * Display the notice related with the older version from PHP. |
|
361 | - * |
|
362 | - * @since 1.0.0 |
|
363 | - */ |
|
364 | - public function compatible_version_notice() { |
|
365 | - $class = 'notice notice-error'; |
|
366 | - $message = esc_html__( 'LSX Importer for Wetu Plugin requires PHP 5.6 or higher.', 'lsx-wetu-importer' ); |
|
367 | - printf( '<div class="%1$s"><p>%2$s</p></div>', esc_html( $class ), esc_html( $message ) ); |
|
368 | - } |
|
369 | - |
|
370 | - /** |
|
371 | - * The primary sanity check, automatically disable the plugin on activation if it doesn't |
|
372 | - * meet minimum requirements. |
|
373 | - * |
|
374 | - * @since 1.0.0 |
|
375 | - */ |
|
376 | - public static function compatible_version_check_on_activation() { |
|
377 | - if ( ! self::compatible_version() ) { |
|
378 | - deactivate_plugins( plugin_basename( LSX_WETU_IMPORTER_CORE ) ); |
|
379 | - wp_die( esc_html__( 'LSX Importer for Wetu Plugin requires PHP 5.6 or higher.', 'lsx-wetu-importer' ) ); |
|
380 | - } |
|
381 | - } |
|
382 | - |
|
383 | - // DISPLAY FUNCTIONS. |
|
384 | - |
|
385 | - /** |
|
386 | - * Load the importer class you want to use |
|
387 | - */ |
|
388 | - public function load_class() { |
|
389 | - switch ( $this->tab_slug ) { |
|
390 | - case 'accommodation': |
|
391 | - $this->current_importer = new LSX_WETU_Importer_Accommodation(); |
|
392 | - break; |
|
393 | - |
|
394 | - case 'destination': |
|
395 | - $this->current_importer = new LSX_WETU_Importer_Destination(); |
|
396 | - break; |
|
397 | - |
|
398 | - case 'tour': |
|
399 | - $this->current_importer = new LSX_WETU_Importer_Tours(); |
|
400 | - break; |
|
401 | - |
|
402 | - case 'settings': |
|
403 | - $this->current_importer = LSX_WETU_Importer_Settings::get_instance(); |
|
404 | - break; |
|
405 | - |
|
406 | - default: |
|
407 | - $this->current_importer = LSX_WETU_Importer_Welcome::get_instance(); |
|
408 | - break; |
|
409 | - } |
|
410 | - } |
|
411 | - |
|
412 | - /** |
|
413 | - * Registers the admin page which will house the importer form. |
|
414 | - */ |
|
415 | - public function register_importer_page() { |
|
416 | - add_submenu_page( 'tour-operator', esc_html__( 'Importer', 'tour-operator' ), esc_html__( 'Importer', 'tour-operator' ), 'manage_options', 'lsx-wetu-importer', array( $this, 'display_page' ) ); |
|
417 | - } |
|
418 | - |
|
419 | - /** |
|
420 | - * Enqueue the JS needed to contact wetu and return your result. |
|
421 | - */ |
|
422 | - public function admin_scripts() { |
|
423 | - if ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) { |
|
424 | - $min = ''; |
|
425 | - } else { |
|
426 | - $min = '.min'; |
|
427 | - } |
|
428 | - |
|
429 | - $min = ''; |
|
430 | - |
|
431 | - if ( is_admin() && isset( $_GET['page'] ) && $this->plugin_slug === $_GET['page'] ) { |
|
432 | - |
|
433 | - //wp_enqueue_style( 'datatables', LSX_WETU_IMPORTER_URL . 'assets/css/datatables' . $min . '.css', LSX_WETU_IMPORTER_VER, true ); |
|
434 | - wp_enqueue_style( 'lsx-wetu-importer-style', LSX_WETU_IMPORTER_URL . 'assets/css/lsx-wetu-importer.css', LSX_WETU_IMPORTER_VER, true ); |
|
435 | - |
|
436 | - if ( isset( $_GET['tab'] ) ) { |
|
437 | - wp_enqueue_script( 'datatables', LSX_WETU_IMPORTER_URL . 'assets/js/datatables' . $min . '.js', array( 'jquery' ), LSX_WETU_IMPORTER_VER, true ); |
|
438 | - wp_enqueue_script( 'lsx-wetu-importers-script', LSX_WETU_IMPORTER_URL . 'assets/js/lsx-wetu-importer' . $min . '.js', array( 'jquery', 'datatables' ), LSX_WETU_IMPORTER_VER, true ); |
|
439 | - |
|
440 | - wp_localize_script( |
|
441 | - 'lsx-wetu-importers-script', |
|
442 | - 'lsx_tour_importer_params', |
|
443 | - array( |
|
444 | - 'ajax_url' => admin_url( 'admin-ajax.php' ), |
|
445 | - 'ajax_nonce' => wp_create_nonce( 'lsx_wetu_ajax_action' ), |
|
446 | - ) |
|
447 | - ); |
|
448 | - } |
|
449 | - } |
|
450 | - } |
|
451 | - |
|
452 | - /** |
|
453 | - * Display the importer administration screen |
|
454 | - */ |
|
455 | - public function display_page() { |
|
456 | - ?> |
|
16 | + /** |
|
17 | + * Holds class instance |
|
18 | + * |
|
19 | + * @since 1.0.0 |
|
20 | + * |
|
21 | + * @var object|Module_Template |
|
22 | + */ |
|
23 | + protected static $instance = null; |
|
24 | + |
|
25 | + /** |
|
26 | + * The slug for this plugin |
|
27 | + * |
|
28 | + * @since 0.0.1 |
|
29 | + * |
|
30 | + * @var string |
|
31 | + */ |
|
32 | + public $plugin_slug = 'lsx-wetu-importer'; |
|
33 | + |
|
34 | + /** |
|
35 | + * The url to list items from WETU |
|
36 | + * |
|
37 | + * @since 0.0.1 |
|
38 | + * |
|
39 | + * @var string |
|
40 | + */ |
|
41 | + public $tab_slug = 'default'; |
|
42 | + |
|
43 | + /** |
|
44 | + * The options for the plugin |
|
45 | + * |
|
46 | + * @since 0.0.1 |
|
47 | + * |
|
48 | + * @var string |
|
49 | + */ |
|
50 | + public $options = false; |
|
51 | + |
|
52 | + /** |
|
53 | + * The url to import images from WETU |
|
54 | + * |
|
55 | + * @since 0.0.1 |
|
56 | + * |
|
57 | + * @var string |
|
58 | + */ |
|
59 | + public $import_scaling_url = false; |
|
60 | + |
|
61 | + /** |
|
62 | + * scale the images on import or not |
|
63 | + * |
|
64 | + * @since 0.0.1 |
|
65 | + * |
|
66 | + * @var boolean |
|
67 | + */ |
|
68 | + public $scale_images = false; |
|
69 | + |
|
70 | + /** |
|
71 | + * The WETU API Key |
|
72 | + */ |
|
73 | + public $api_key = false; |
|
74 | + |
|
75 | + /** |
|
76 | + * The post types this works with. |
|
77 | + */ |
|
78 | + public $post_types = array(); |
|
79 | + |
|
80 | + /** |
|
81 | + * The previously attached images |
|
82 | + * |
|
83 | + * @var array() |
|
84 | + */ |
|
85 | + public $found_attachments = array(); |
|
86 | + |
|
87 | + /** |
|
88 | + * The gallery ids for the found attachements |
|
89 | + * |
|
90 | + * @var array() |
|
91 | + */ |
|
92 | + public $gallery_meta = array(); |
|
93 | + |
|
94 | + /** |
|
95 | + * The post ids to clean up (make sure the connected items are only singular) |
|
96 | + * |
|
97 | + * @var array() |
|
98 | + */ |
|
99 | + public $cleanup_posts = array(); |
|
100 | + |
|
101 | + /** |
|
102 | + * A post => parent relationship array. |
|
103 | + * |
|
104 | + * @var array() |
|
105 | + */ |
|
106 | + public $relation_meta = array(); |
|
107 | + |
|
108 | + /** |
|
109 | + * Image Limit |
|
110 | + * |
|
111 | + * @var int |
|
112 | + */ |
|
113 | + public $image_limit = false; |
|
114 | + |
|
115 | + /** |
|
116 | + * the featured image id |
|
117 | + * |
|
118 | + * @var int |
|
119 | + */ |
|
120 | + public $featured_image = false; |
|
121 | + |
|
122 | + /** |
|
123 | + * the banner image |
|
124 | + * |
|
125 | + * @var int |
|
126 | + */ |
|
127 | + public $banner_image = false; |
|
128 | + |
|
129 | + /** |
|
130 | + * Holds the current import to display |
|
131 | + * |
|
132 | + * @var int |
|
133 | + */ |
|
134 | + public $current_importer = false; |
|
135 | + |
|
136 | + /** |
|
137 | + * if you ran a tour import then you will have accommodation and destination queued to sync as well. |
|
138 | + * |
|
139 | + * @var int |
|
140 | + */ |
|
141 | + public $queued_imports = array(); |
|
142 | + |
|
143 | + /** |
|
144 | + * An Array to hold the items to queue |
|
145 | + * |
|
146 | + * @var int |
|
147 | + */ |
|
148 | + public $import_queue = array(); |
|
149 | + |
|
150 | + /** |
|
151 | + * Holds the current post that is being imported. Use to check the content and excerpt. |
|
152 | + * |
|
153 | + * @var int |
|
154 | + */ |
|
155 | + public $current_post = false; |
|
156 | + |
|
157 | + /** |
|
158 | + * Holds the accommodation settings |
|
159 | + * |
|
160 | + * @var int |
|
161 | + */ |
|
162 | + public $accommodation_settings = false; |
|
163 | + |
|
164 | + /** |
|
165 | + * Holds the tour settings |
|
166 | + * |
|
167 | + * @var int |
|
168 | + */ |
|
169 | + public $tour_settings = false; |
|
170 | + |
|
171 | + /** |
|
172 | + * Holds the destination settings |
|
173 | + * |
|
174 | + * @var int |
|
175 | + */ |
|
176 | + public $destination_settings = false; |
|
177 | + |
|
178 | + /** |
|
179 | + * Hold the flag to let you know if the debug is enabled or not. |
|
180 | + * |
|
181 | + * @var int |
|
182 | + */ |
|
183 | + public $debug_enabled = false; |
|
184 | + |
|
185 | + /** |
|
186 | + * Hold the post columns object |
|
187 | + * |
|
188 | + * @var object LSX_WETU_Importer_Post_Columns() |
|
189 | + */ |
|
190 | + public $post_columns = false; |
|
191 | + |
|
192 | + /** |
|
193 | + * Initialize the plugin by setting localization, filters, and administration functions. |
|
194 | + * |
|
195 | + * @since 1.0.0 |
|
196 | + * |
|
197 | + * @access private |
|
198 | + */ |
|
199 | + public function __construct() { |
|
200 | + add_action( 'admin_init', array( $this, 'compatible_version_check' ) ); |
|
201 | + require_once LSX_WETU_IMPORTER_PATH . 'includes/helpers.php'; |
|
202 | + |
|
203 | + // Don't run anything else in the plugin, if we're on an incompatible PHP version. |
|
204 | + if ( ! self::compatible_version() ) { |
|
205 | + return; |
|
206 | + } |
|
207 | + |
|
208 | + $this->set_variables(); |
|
209 | + |
|
210 | + add_action( 'init', array( $this, 'load_plugin_textdomain' ) ); |
|
211 | + add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ), 11 ); |
|
212 | + add_action( 'admin_menu', array( $this, 'register_importer_page' ), 20 ); |
|
213 | + |
|
214 | + require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-welcome.php'; |
|
215 | + require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-accommodation.php'; |
|
216 | + require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-destination.php'; |
|
217 | + require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-tours.php'; |
|
218 | + require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-settings.php'; |
|
219 | + if ( isset( $this->options ) && isset( $this->options['enable_tour_ref_column'] ) && '' !== $this->options['enable_tour_ref_column'] ) { |
|
220 | + require_once LSX_WETU_IMPORTER_PATH . 'classes/class-lsx-wetu-importer-post-columns.php'; |
|
221 | + $this->post_columns = LSX_WETU_Importer_Post_Columns::get_instance(); |
|
222 | + } |
|
223 | + |
|
224 | + add_action( 'init', array( $this, 'load_class' ) ); |
|
225 | + |
|
226 | + if ( 'default' !== $this->tab_slug ) { |
|
227 | + add_action( 'wp_ajax_lsx_tour_importer', array( $this, 'process_ajax_search' ) ); |
|
228 | + add_action( 'wp_ajax_nopriv_lsx_tour_importer', array( $this, 'process_ajax_search' ) ); |
|
229 | + |
|
230 | + add_action( 'wp_ajax_lsx_import_items', array( $this, 'process_ajax_import' ) ); |
|
231 | + add_action( 'wp_ajax_nopriv_lsx_import_items', array( $this, 'process_ajax_import' ) ); |
|
232 | + } |
|
233 | + |
|
234 | + //delete_transient( 'lsx_ti_tours' ); |
|
235 | + } |
|
236 | + |
|
237 | + // ACTIVATION FUNCTIONS. |
|
238 | + |
|
239 | + /** |
|
240 | + * Load the plugin text domain for translation. |
|
241 | + * |
|
242 | + * @since 1.0.0 |
|
243 | + */ |
|
244 | + public function load_plugin_textdomain() { |
|
245 | + load_plugin_textdomain( 'lsx-wetu-importer', false, basename( LSX_WETU_IMPORTER_PATH ) . '/languages' ); |
|
246 | + } |
|
247 | + |
|
248 | + /** |
|
249 | + * Sets the variables used throughout the plugin. |
|
250 | + */ |
|
251 | + public function set_variables() { |
|
252 | + $this->post_types = array( 'accommodation', 'destination', 'tour' ); |
|
253 | + $options = lsx_wetu_get_options(); |
|
254 | + |
|
255 | + // Set the options. |
|
256 | + $this->options = $options; |
|
257 | + |
|
258 | + $temp_options = get_option( '_lsx-to_settings', false ); |
|
259 | + if ( false !== $temp_options ) { |
|
260 | + $this->accommodation_settings = $temp_options['accommodation']; |
|
261 | + $this->tour_settings = $temp_options['tour']; |
|
262 | + $this->destination_settings = $temp_options['destination']; |
|
263 | + } |
|
264 | + |
|
265 | + $this->api_key = false; |
|
266 | + |
|
267 | + if ( ! defined( 'WETU_API_KEY' ) ) { |
|
268 | + if ( isset( $options['api_key'] ) && '' !== $options['api_key'] ) { |
|
269 | + $this->api_key = $options['api_key']; |
|
270 | + } |
|
271 | + } else { |
|
272 | + $this->api_key = WETU_API_KEY; |
|
273 | + } |
|
274 | + |
|
275 | + // Set the tab slug. |
|
276 | + // @codingStandardsIgnoreLine |
|
277 | + if ( isset( $_GET['tab'] ) || ( defined( 'DOING_AJAX' ) && isset( $_POST['type'] ) ) ) { |
|
278 | + if ( isset( $_GET['tab'] ) ) { |
|
279 | + $this->tab_slug = sanitize_text_field( $_GET['tab'] ); |
|
280 | + } else { |
|
281 | + // @codingStandardsIgnoreLine |
|
282 | + $this->tab_slug = sanitize_text_field( $_POST['type'] ); |
|
283 | + } |
|
284 | + } |
|
285 | + |
|
286 | + // If any tours were queued. |
|
287 | + $this->queued_imports = get_option( 'lsx_wetu_importer_que', array() ); |
|
288 | + |
|
289 | + // Set the scaling options. |
|
290 | + if ( isset( $this->options ) && isset( $this->options['image_scaling'] ) ) { |
|
291 | + $this->scale_images = true; |
|
292 | + |
|
293 | + $width = '1024'; |
|
294 | + if ( isset( $this->options['width'] ) && '' !== $this->options['width'] ) { |
|
295 | + $width = $this->options['width']; |
|
296 | + } |
|
297 | + |
|
298 | + $height = '768'; |
|
299 | + if ( isset( $this->options['height'] ) && '' !== $this->options['height'] ) { |
|
300 | + $height = $this->options['height']; |
|
301 | + } |
|
302 | + |
|
303 | + $cropping = 'w'; |
|
304 | + if ( isset( $this->options['cropping'] ) && '' !== $this->options['cropping'] ) { |
|
305 | + $cropping = $this->options['cropping']; |
|
306 | + } |
|
307 | + |
|
308 | + $this->image_scaling_url = 'https://wetu.com/ImageHandler/' . $cropping . $width . 'x' . $height . '/'; |
|
309 | + } |
|
310 | + |
|
311 | + if ( isset( $this->options ) && isset( $this->options['image_limit'] ) && '' !== $this->options['image_limit'] ) { |
|
312 | + $this->image_limit = $this->options['image_limit']; |
|
313 | + } |
|
314 | + } |
|
315 | + |
|
316 | + // COMPATABILITY FUNCTIONS. |
|
317 | + |
|
318 | + /** |
|
319 | + * On plugin activation |
|
320 | + * |
|
321 | + * @since 1.0.0 |
|
322 | + */ |
|
323 | + public static function register_activation_hook() { |
|
324 | + self::compatible_version_check_on_activation(); |
|
325 | + } |
|
326 | + |
|
327 | + /** |
|
328 | + * Check if the PHP version is compatible. |
|
329 | + * |
|
330 | + * @since 1.0.0 |
|
331 | + */ |
|
332 | + public static function compatible_version() { |
|
333 | + if ( version_compare( PHP_VERSION, '5.6', '<' ) ) { |
|
334 | + return false; |
|
335 | + } |
|
336 | + |
|
337 | + return true; |
|
338 | + } |
|
339 | + |
|
340 | + /** |
|
341 | + * The backup sanity check, in case the plugin is activated in a weird way, |
|
342 | + * or the versions change after activation. |
|
343 | + * |
|
344 | + * @since 1.0.0 |
|
345 | + */ |
|
346 | + public function compatible_version_check() { |
|
347 | + if ( ! self::compatible_version() ) { |
|
348 | + if ( is_plugin_active( plugin_basename( LSX_WETU_IMPORTER_CORE ) ) ) { |
|
349 | + deactivate_plugins( plugin_basename( LSX_WETU_IMPORTER_CORE ) ); |
|
350 | + add_action( 'admin_notices', array( $this, 'compatible_version_notice' ) ); |
|
351 | + |
|
352 | + if ( isset( $_GET['activate'] ) ) { |
|
353 | + unset( $_GET['activate'] ); |
|
354 | + } |
|
355 | + } |
|
356 | + } |
|
357 | + } |
|
358 | + |
|
359 | + /** |
|
360 | + * Display the notice related with the older version from PHP. |
|
361 | + * |
|
362 | + * @since 1.0.0 |
|
363 | + */ |
|
364 | + public function compatible_version_notice() { |
|
365 | + $class = 'notice notice-error'; |
|
366 | + $message = esc_html__( 'LSX Importer for Wetu Plugin requires PHP 5.6 or higher.', 'lsx-wetu-importer' ); |
|
367 | + printf( '<div class="%1$s"><p>%2$s</p></div>', esc_html( $class ), esc_html( $message ) ); |
|
368 | + } |
|
369 | + |
|
370 | + /** |
|
371 | + * The primary sanity check, automatically disable the plugin on activation if it doesn't |
|
372 | + * meet minimum requirements. |
|
373 | + * |
|
374 | + * @since 1.0.0 |
|
375 | + */ |
|
376 | + public static function compatible_version_check_on_activation() { |
|
377 | + if ( ! self::compatible_version() ) { |
|
378 | + deactivate_plugins( plugin_basename( LSX_WETU_IMPORTER_CORE ) ); |
|
379 | + wp_die( esc_html__( 'LSX Importer for Wetu Plugin requires PHP 5.6 or higher.', 'lsx-wetu-importer' ) ); |
|
380 | + } |
|
381 | + } |
|
382 | + |
|
383 | + // DISPLAY FUNCTIONS. |
|
384 | + |
|
385 | + /** |
|
386 | + * Load the importer class you want to use |
|
387 | + */ |
|
388 | + public function load_class() { |
|
389 | + switch ( $this->tab_slug ) { |
|
390 | + case 'accommodation': |
|
391 | + $this->current_importer = new LSX_WETU_Importer_Accommodation(); |
|
392 | + break; |
|
393 | + |
|
394 | + case 'destination': |
|
395 | + $this->current_importer = new LSX_WETU_Importer_Destination(); |
|
396 | + break; |
|
397 | + |
|
398 | + case 'tour': |
|
399 | + $this->current_importer = new LSX_WETU_Importer_Tours(); |
|
400 | + break; |
|
401 | + |
|
402 | + case 'settings': |
|
403 | + $this->current_importer = LSX_WETU_Importer_Settings::get_instance(); |
|
404 | + break; |
|
405 | + |
|
406 | + default: |
|
407 | + $this->current_importer = LSX_WETU_Importer_Welcome::get_instance(); |
|
408 | + break; |
|
409 | + } |
|
410 | + } |
|
411 | + |
|
412 | + /** |
|
413 | + * Registers the admin page which will house the importer form. |
|
414 | + */ |
|
415 | + public function register_importer_page() { |
|
416 | + add_submenu_page( 'tour-operator', esc_html__( 'Importer', 'tour-operator' ), esc_html__( 'Importer', 'tour-operator' ), 'manage_options', 'lsx-wetu-importer', array( $this, 'display_page' ) ); |
|
417 | + } |
|
418 | + |
|
419 | + /** |
|
420 | + * Enqueue the JS needed to contact wetu and return your result. |
|
421 | + */ |
|
422 | + public function admin_scripts() { |
|
423 | + if ( defined( 'WP_DEBUG' ) && true === WP_DEBUG ) { |
|
424 | + $min = ''; |
|
425 | + } else { |
|
426 | + $min = '.min'; |
|
427 | + } |
|
428 | + |
|
429 | + $min = ''; |
|
430 | + |
|
431 | + if ( is_admin() && isset( $_GET['page'] ) && $this->plugin_slug === $_GET['page'] ) { |
|
432 | + |
|
433 | + //wp_enqueue_style( 'datatables', LSX_WETU_IMPORTER_URL . 'assets/css/datatables' . $min . '.css', LSX_WETU_IMPORTER_VER, true ); |
|
434 | + wp_enqueue_style( 'lsx-wetu-importer-style', LSX_WETU_IMPORTER_URL . 'assets/css/lsx-wetu-importer.css', LSX_WETU_IMPORTER_VER, true ); |
|
435 | + |
|
436 | + if ( isset( $_GET['tab'] ) ) { |
|
437 | + wp_enqueue_script( 'datatables', LSX_WETU_IMPORTER_URL . 'assets/js/datatables' . $min . '.js', array( 'jquery' ), LSX_WETU_IMPORTER_VER, true ); |
|
438 | + wp_enqueue_script( 'lsx-wetu-importers-script', LSX_WETU_IMPORTER_URL . 'assets/js/lsx-wetu-importer' . $min . '.js', array( 'jquery', 'datatables' ), LSX_WETU_IMPORTER_VER, true ); |
|
439 | + |
|
440 | + wp_localize_script( |
|
441 | + 'lsx-wetu-importers-script', |
|
442 | + 'lsx_tour_importer_params', |
|
443 | + array( |
|
444 | + 'ajax_url' => admin_url( 'admin-ajax.php' ), |
|
445 | + 'ajax_nonce' => wp_create_nonce( 'lsx_wetu_ajax_action' ), |
|
446 | + ) |
|
447 | + ); |
|
448 | + } |
|
449 | + } |
|
450 | + } |
|
451 | + |
|
452 | + /** |
|
453 | + * Display the importer administration screen |
|
454 | + */ |
|
455 | + public function display_page() { |
|
456 | + ?> |
|
457 | 457 | <div class="wrap"> |
458 | 458 | <?php |
459 | - $this->navigation( $this->tab_slug ); |
|
460 | - if ( 'default' !== $this->tab_slug && 'settings' !== $this->tab_slug ) { |
|
461 | - $this->wetu_status(); |
|
462 | - $this->post_status_navigation(); |
|
463 | - } |
|
464 | - $this->current_importer->display_page(); |
|
465 | - ?> |
|
459 | + $this->navigation( $this->tab_slug ); |
|
460 | + if ( 'default' !== $this->tab_slug && 'settings' !== $this->tab_slug ) { |
|
461 | + $this->wetu_status(); |
|
462 | + $this->post_status_navigation(); |
|
463 | + } |
|
464 | + $this->current_importer->display_page(); |
|
465 | + ?> |
|
466 | 466 | </div> |
467 | 467 | <?php |
468 | - } |
|
469 | - |
|
470 | - /** |
|
471 | - * Outputs the post status navigation |
|
472 | - * |
|
473 | - * @return void |
|
474 | - */ |
|
475 | - public function post_status_navigation() { |
|
476 | - ?> |
|
468 | + } |
|
469 | + |
|
470 | + /** |
|
471 | + * Outputs the post status navigation |
|
472 | + * |
|
473 | + * @return void |
|
474 | + */ |
|
475 | + public function post_status_navigation() { |
|
476 | + ?> |
|
477 | 477 | <ul class="subsubsub"> |
478 | 478 | <li class="searchform"><a class="current" href="#search"><?php esc_attr_e( 'Search', 'lsx-wetu-importer' ); ?></a> | </li> |
479 | 479 | <li class="publish"><a href="#publish"><?php esc_attr_e( 'Published', 'lsx-wetu-importer' ); ?> <span class="count"> (<?php echo esc_attr( lsx_wetu_get_post_count( $this->tab_slug, 'publish ' ) ); ?>)</span></a> | </li> |
@@ -488,13 +488,13 @@ discard block |
||
488 | 488 | </ul> |
489 | 489 | <a class="documentation" target="_blank"href="https://tour-operator.lsdev.biz/documentation/extension/wetu-importer/"><?php esc_attr_e( 'Documentation', 'lsx-wetu-importer' ); ?></a> |
490 | 490 | <?php |
491 | - } |
|
491 | + } |
|
492 | 492 | |
493 | - /** |
|
494 | - * Search Form |
|
495 | - */ |
|
496 | - public function search_form() { |
|
497 | - ?> |
|
493 | + /** |
|
494 | + * Search Form |
|
495 | + */ |
|
496 | + public function search_form() { |
|
497 | + ?> |
|
498 | 498 | <form class="ajax-form" id="<?php echo esc_attr( $this->plugin_slug ); ?>-search-form" method="get" action="tools.php" data-type="<?php echo esc_attr( $this->tab_slug ); ?>"> |
499 | 499 | <input type="hidden" name="page" value="<?php echo esc_attr( $this->tab_slug ); ?>" /> |
500 | 500 | |
@@ -520,13 +520,13 @@ discard block |
||
520 | 520 | <a class="button advanced-search-toggle" href="#"><?php esc_html_e( 'Bulk Search', 'lsx-wetu-importer' ); ?></a> |
521 | 521 | </form> |
522 | 522 | <?php |
523 | - } |
|
523 | + } |
|
524 | 524 | |
525 | - /** |
|
526 | - * The header of the item list |
|
527 | - */ |
|
528 | - public function table_header() { |
|
529 | - ?> |
|
525 | + /** |
|
526 | + * The header of the item list |
|
527 | + */ |
|
528 | + public function table_header() { |
|
529 | + ?> |
|
530 | 530 | <thead> |
531 | 531 | <tr> |
532 | 532 | <th style="" class="manage-column column-cb check-column no-sort" id="cb" scope="col"> |
@@ -540,13 +540,13 @@ discard block |
||
540 | 540 | </tr> |
541 | 541 | </thead> |
542 | 542 | <?php |
543 | - } |
|
543 | + } |
|
544 | 544 | |
545 | - /** |
|
546 | - * The footer of the item list |
|
547 | - */ |
|
548 | - public function table_footer() { |
|
549 | - ?> |
|
545 | + /** |
|
546 | + * The footer of the item list |
|
547 | + */ |
|
548 | + public function table_footer() { |
|
549 | + ?> |
|
550 | 550 | <tfoot> |
551 | 551 | <tr> |
552 | 552 | <th style="" class="manage-column column-cb check-column" id="cb" scope="col"> |
@@ -560,694 +560,694 @@ discard block |
||
560 | 560 | </tr> |
561 | 561 | </tfoot> |
562 | 562 | <?php |
563 | - } |
|
564 | - |
|
565 | - /** |
|
566 | - * Displays the importers navigation. |
|
567 | - * |
|
568 | - * @param $tab string |
|
569 | - */ |
|
570 | - public function navigation( $tab = '' ) { |
|
571 | - $post_types = array( |
|
572 | - 'tour' => esc_attr( 'Tours', 'lsx-wetu-importer' ), |
|
573 | - 'accommodation' => esc_attr( 'Accommodation', 'lsx-wetu-importer' ), |
|
574 | - 'destination' => esc_attr( 'Destinations', 'lsx-wetu-importer' ), |
|
575 | - ); |
|
576 | - |
|
577 | - echo wp_kses_post( '<div class="wp-filter">' ); |
|
578 | - echo wp_kses_post( '<ul class="filter-links">' ); |
|
579 | - echo wp_kses_post( '<li><a class="' . $this->itemd( $tab, 'default', 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '">' . esc_attr__( 'Home', 'lsx-wetu-importer' ) . '</a></li>' ); |
|
580 | - |
|
581 | - foreach ( $post_types as $post_type => $label ) { |
|
582 | - echo wp_kses_post( ' | <li><a class="' . $this->itemd( $tab, $post_type, 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '&tab=' . $post_type . '">' . $label . '</a></li>' ); |
|
583 | - } |
|
584 | - |
|
585 | - echo wp_kses_post( ' | <li><a class="' . $this->itemd( $tab, 'settings', 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '&tab=settings">' . esc_attr__( 'Settings', 'lsx-wetu-importer' ) . '</a></li>' ); |
|
586 | - echo wp_kses_post( '</ul> </div>' ); |
|
587 | - } |
|
588 | - |
|
589 | - /** |
|
590 | - * Wetu Status Bar. |
|
591 | - */ |
|
592 | - public function wetu_status() { |
|
593 | - $tours = get_transient( 'lsx_ti_tours' ); |
|
594 | - echo '<div class="wetu-status tour-wetu-status"><h3>' . esc_html__( 'Wetu Status', 'lsx-wetu-importer' ) . ' - '; |
|
595 | - |
|
596 | - if ( '' === $tours || false === $tours || isset( $_GET['refresh_tours'] ) ) { |
|
597 | - $result = $this->update_options(); |
|
598 | - if ( true === $result ) { |
|
599 | - echo '<span style="color:green;">' . esc_attr( 'Connected', 'lsx-wetu-importer' ) . '</span>'; |
|
600 | - echo ' - <small><a href="#">' . esc_attr( 'Refresh', 'lsx-wetu-importer' ) . '</a></small>'; |
|
601 | - } else { |
|
602 | - echo '<span style="color:red;">' . wp_kses_post( $result ) . '</span>'; |
|
603 | - } |
|
604 | - } else { |
|
605 | - echo '<span style="color:green;">' . esc_attr( 'Connected', 'lsx-wetu-importer' ) . '</span> - <small><a href="#">' . esc_attr( 'Refresh', 'lsx-wetu-importer' ) . '</a></small>'; |
|
606 | - } |
|
607 | - echo '</h3>'; |
|
608 | - echo '</div>'; |
|
609 | - } |
|
610 | - |
|
611 | - /** |
|
612 | - * Set_taxonomy with some terms |
|
613 | - */ |
|
614 | - public function team_member_checkboxes( $selected = array() ) { |
|
615 | - if ( post_type_exists( 'team' ) ) { |
|
616 | - ?> |
|
563 | + } |
|
564 | + |
|
565 | + /** |
|
566 | + * Displays the importers navigation. |
|
567 | + * |
|
568 | + * @param $tab string |
|
569 | + */ |
|
570 | + public function navigation( $tab = '' ) { |
|
571 | + $post_types = array( |
|
572 | + 'tour' => esc_attr( 'Tours', 'lsx-wetu-importer' ), |
|
573 | + 'accommodation' => esc_attr( 'Accommodation', 'lsx-wetu-importer' ), |
|
574 | + 'destination' => esc_attr( 'Destinations', 'lsx-wetu-importer' ), |
|
575 | + ); |
|
576 | + |
|
577 | + echo wp_kses_post( '<div class="wp-filter">' ); |
|
578 | + echo wp_kses_post( '<ul class="filter-links">' ); |
|
579 | + echo wp_kses_post( '<li><a class="' . $this->itemd( $tab, 'default', 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '">' . esc_attr__( 'Home', 'lsx-wetu-importer' ) . '</a></li>' ); |
|
580 | + |
|
581 | + foreach ( $post_types as $post_type => $label ) { |
|
582 | + echo wp_kses_post( ' | <li><a class="' . $this->itemd( $tab, $post_type, 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '&tab=' . $post_type . '">' . $label . '</a></li>' ); |
|
583 | + } |
|
584 | + |
|
585 | + echo wp_kses_post( ' | <li><a class="' . $this->itemd( $tab, 'settings', 'current', false ) . '" href="' . admin_url( 'admin.php' ) . '?page=' . $this->plugin_slug . '&tab=settings">' . esc_attr__( 'Settings', 'lsx-wetu-importer' ) . '</a></li>' ); |
|
586 | + echo wp_kses_post( '</ul> </div>' ); |
|
587 | + } |
|
588 | + |
|
589 | + /** |
|
590 | + * Wetu Status Bar. |
|
591 | + */ |
|
592 | + public function wetu_status() { |
|
593 | + $tours = get_transient( 'lsx_ti_tours' ); |
|
594 | + echo '<div class="wetu-status tour-wetu-status"><h3>' . esc_html__( 'Wetu Status', 'lsx-wetu-importer' ) . ' - '; |
|
595 | + |
|
596 | + if ( '' === $tours || false === $tours || isset( $_GET['refresh_tours'] ) ) { |
|
597 | + $result = $this->update_options(); |
|
598 | + if ( true === $result ) { |
|
599 | + echo '<span style="color:green;">' . esc_attr( 'Connected', 'lsx-wetu-importer' ) . '</span>'; |
|
600 | + echo ' - <small><a href="#">' . esc_attr( 'Refresh', 'lsx-wetu-importer' ) . '</a></small>'; |
|
601 | + } else { |
|
602 | + echo '<span style="color:red;">' . wp_kses_post( $result ) . '</span>'; |
|
603 | + } |
|
604 | + } else { |
|
605 | + echo '<span style="color:green;">' . esc_attr( 'Connected', 'lsx-wetu-importer' ) . '</span> - <small><a href="#">' . esc_attr( 'Refresh', 'lsx-wetu-importer' ) . '</a></small>'; |
|
606 | + } |
|
607 | + echo '</h3>'; |
|
608 | + echo '</div>'; |
|
609 | + } |
|
610 | + |
|
611 | + /** |
|
612 | + * Set_taxonomy with some terms |
|
613 | + */ |
|
614 | + public function team_member_checkboxes( $selected = array() ) { |
|
615 | + if ( post_type_exists( 'team' ) ) { |
|
616 | + ?> |
|
617 | 617 | <ul> |
618 | 618 | <?php |
619 | - $team_args = array( |
|
620 | - 'post_type' => 'team', |
|
621 | - 'post_status' => 'publish', |
|
622 | - 'nopagin' => true, |
|
623 | - 'fields' => 'ids', |
|
624 | - ); |
|
625 | - |
|
626 | - $team_members = new WP_Query( $team_args ); |
|
627 | - |
|
628 | - if ( $team_members->have_posts() ) { |
|
629 | - foreach ( $team_members->posts as $member ) { |
|
630 | - ?> |
|
619 | + $team_args = array( |
|
620 | + 'post_type' => 'team', |
|
621 | + 'post_status' => 'publish', |
|
622 | + 'nopagin' => true, |
|
623 | + 'fields' => 'ids', |
|
624 | + ); |
|
625 | + |
|
626 | + $team_members = new WP_Query( $team_args ); |
|
627 | + |
|
628 | + if ( $team_members->have_posts() ) { |
|
629 | + foreach ( $team_members->posts as $member ) { |
|
630 | + ?> |
|
631 | 631 | <li><input class="team" <?php $this->checked( $selected, $member ); ?> type="checkbox" value="<?php echo esc_attr( $member ); ?>" /> <?php echo wp_kses_post( get_the_title( $member ) ); ?></li> |
632 | 632 | <?php |
633 | - } |
|
634 | - } else { |
|
633 | + } |
|
634 | + } else { |
|
635 | 635 | ?> |
636 | 636 | <li><input class="team" type="checkbox" value="0" /> <?php esc_html_e( 'None', 'lsx-wetu-importer' ); ?></li> |
637 | 637 | <?php |
638 | 638 | } |
639 | - ?> |
|
639 | + ?> |
|
640 | 640 | </ul> |
641 | 641 | <?php |
642 | - } |
|
643 | - } |
|
644 | - |
|
645 | - |
|
646 | - // GENERAL FUNCTIONS. |
|
647 | - |
|
648 | - /** |
|
649 | - * Checks to see if an item is checked. |
|
650 | - * |
|
651 | - * @param $haystack array|string |
|
652 | - * @param $needle string |
|
653 | - * @param $echo bool |
|
654 | - */ |
|
655 | - public function checked( $haystack = false, $needle = '', $echo = true ) { |
|
656 | - $return = $this->itemd( $haystack, $needle, 'checked', false ); |
|
657 | - |
|
658 | - if ( '' !== $return ) { |
|
659 | - if ( true === $echo ) { |
|
660 | - echo wp_kses_post( $return ); |
|
661 | - } else { |
|
662 | - return $return; |
|
663 | - } |
|
664 | - } |
|
665 | - } |
|
666 | - |
|
667 | - /** |
|
668 | - * Checks to see if an item is checked. |
|
669 | - * |
|
670 | - * @param $haystack array|string |
|
671 | - * @param $needle string |
|
672 | - * @param $echo bool |
|
673 | - */ |
|
674 | - public function selected( $haystack = false, $needle = '', $echo = true ) { |
|
675 | - $return = $this->itemd( $haystack, $needle, 'selected' ); |
|
676 | - |
|
677 | - if ( '' !== $return ) { |
|
678 | - if ( true === $echo ) { |
|
679 | - echo wp_kses_post( $return ); |
|
680 | - } else { |
|
681 | - return $return; |
|
682 | - } |
|
683 | - } |
|
684 | - } |
|
685 | - |
|
686 | - /** |
|
687 | - * Checks to see if an item is selected. If $echo is false, it will return the $type if conditions are true. |
|
688 | - * |
|
689 | - * @param $haystack array|string |
|
690 | - * @param $needle string |
|
691 | - * @param $type string |
|
692 | - * @param $wrap bool |
|
693 | - * @return $html string |
|
694 | - */ |
|
695 | - public function itemd( $haystack = false, $needle = '', $type = '', $wrap = true ) { |
|
696 | - $html = ''; |
|
697 | - |
|
698 | - if ( '' !== $type ) { |
|
699 | - if ( ! is_array( $haystack ) ) { |
|
700 | - $haystack = array( $haystack ); |
|
701 | - } |
|
702 | - if ( in_array( $needle, $haystack ) ) { |
|
703 | - if ( true === $wrap || 'true' === $wrap ) { |
|
704 | - $html = $type . '="' . $type . '"'; |
|
705 | - } else { |
|
706 | - $html = $type; |
|
707 | - } |
|
708 | - } |
|
709 | - } |
|
710 | - |
|
711 | - return $html; |
|
712 | - } |
|
713 | - |
|
714 | - /** |
|
715 | - * Grabs any attachments for the current item |
|
716 | - */ |
|
717 | - public function find_attachments( $id = false ) { |
|
718 | - if ( false !== $id ) { |
|
719 | - if ( empty( $this->found_attachments ) ) { |
|
720 | - $attachments_args = array( |
|
721 | - 'post_parent' => $id, |
|
722 | - 'post_status' => 'inherit', |
|
723 | - 'post_type' => 'attachment', |
|
724 | - 'order' => 'ASC', |
|
725 | - 'nopagin' => 'true', |
|
726 | - 'posts_per_page' => '-1', |
|
727 | - ); |
|
728 | - |
|
729 | - $attachments = new WP_Query( $attachments_args ); |
|
730 | - |
|
731 | - if ( $attachments->have_posts() ) { |
|
732 | - foreach ( $attachments->posts as $attachment ) { |
|
733 | - $this->found_attachments[ $attachment->ID ] = str_replace( array( '.jpg', '.png', '.jpeg' ), '', $attachment->post_title ); |
|
734 | - } |
|
735 | - } |
|
736 | - } |
|
737 | - } |
|
738 | - } |
|
739 | - |
|
740 | - // CUSTOM FIELD FUNCTIONS. |
|
741 | - |
|
742 | - /** |
|
743 | - * Saves the room data |
|
744 | - */ |
|
745 | - public function save_custom_field( $value = false, $meta_key, $id, $decrease = false, $unique = true ) { |
|
746 | - if ( false !== $value ) { |
|
747 | - if ( false !== $decrease ) { |
|
748 | - $value = intval( $value ); |
|
749 | - $value--; |
|
750 | - } |
|
751 | - |
|
752 | - $prev = get_post_meta( $id, $meta_key, true ); |
|
753 | - |
|
754 | - if ( false !== $id && '0' !== $id && false !== $prev && true === $unique ) { |
|
755 | - update_post_meta( $id, $meta_key, $value, $prev ); |
|
756 | - } else { |
|
757 | - add_post_meta( $id, $meta_key, $value, $unique ); |
|
758 | - } |
|
759 | - } |
|
760 | - } |
|
761 | - |
|
762 | - /** |
|
763 | - * Grabs the custom fields, and resaves an array of unique items. |
|
764 | - */ |
|
765 | - public function cleanup_posts() { |
|
766 | - if ( ! empty( $this->cleanup_posts ) ) { |
|
767 | - |
|
768 | - foreach ( $this->cleanup_posts as $id => $key ) { |
|
769 | - $prev_items = get_post_meta( $id, $key, false ); |
|
770 | - $new_items = array_unique( $prev_items ); |
|
771 | - delete_post_meta( $id, $key ); |
|
772 | - |
|
773 | - foreach ( $new_items as $new_item ) { |
|
774 | - add_post_meta( $id, $key, $new_item, false ); |
|
775 | - } |
|
776 | - } |
|
777 | - } |
|
778 | - } |
|
779 | - |
|
780 | - // TAXONOMY FUNCTIONS. |
|
781 | - |
|
782 | - /** |
|
783 | - * Set_taxonomy with some terms |
|
784 | - */ |
|
785 | - public function set_taxonomy( $taxonomy, $terms, $id ) { |
|
786 | - $result = array(); |
|
787 | - |
|
788 | - if ( ! empty( $data ) ) { |
|
789 | - foreach ( $data as $k ) { |
|
790 | - if ( $id ) { |
|
791 | - $term = term_exists( trim( $k ), $tax ); |
|
792 | - if ( ! $term ) { |
|
793 | - $term = wp_insert_term( trim( $k ), $tax ); |
|
794 | - |
|
795 | - if ( is_wp_error( $term ) ) { |
|
796 | - echo wp_kses_post( $term->get_error_message() ); |
|
797 | - } else { |
|
798 | - wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true ); |
|
799 | - } |
|
800 | - } else { |
|
801 | - wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true ); |
|
802 | - } |
|
803 | - } else { |
|
804 | - $result[] = trim( $k ); |
|
805 | - } |
|
806 | - } |
|
807 | - } |
|
808 | - return $result; |
|
809 | - } |
|
810 | - |
|
811 | - /** |
|
812 | - * Sets the terms of the current post |
|
813 | - * |
|
814 | - * @param boolean $id |
|
815 | - * @param boolean $name |
|
816 | - * @param boolean $taxonomy |
|
817 | - * @param boolean $parent |
|
818 | - * @return void |
|
819 | - */ |
|
820 | - public function set_term( $id = false, $name = false, $taxonomy = false, $parent = false ) { |
|
821 | - $term = term_exists( $name, $taxonomy ); |
|
822 | - if ( ! $term ) { |
|
823 | - if ( false !== $parent ) { |
|
824 | - $parent = array( |
|
825 | - 'parent' => $parent, |
|
826 | - ); |
|
827 | - } |
|
828 | - $term = wp_insert_term( trim( $name ), $taxonomy, $parent ); |
|
829 | - |
|
830 | - if ( is_wp_error( $term ) ) { |
|
831 | - echo wp_kses_post( $term->get_error_message() ); |
|
832 | - } else { |
|
833 | - wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true ); |
|
834 | - } |
|
835 | - } else { |
|
836 | - wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true ); |
|
837 | - } |
|
838 | - |
|
839 | - return $term['term_id']; |
|
840 | - } |
|
841 | - |
|
842 | - /** |
|
843 | - * set_taxonomy with some terms |
|
844 | - */ |
|
845 | - public function taxonomy_checkboxes( $taxonomy = false, $selected = array() ) { |
|
846 | - $return = ''; |
|
847 | - |
|
848 | - if ( false !== $taxonomy ) { |
|
849 | - $return .= '<ul>'; |
|
850 | - $terms = get_terms( array( |
|
851 | - 'taxonomy' => $taxonomy, |
|
852 | - 'hide_empty' => false, |
|
853 | - ) ); |
|
854 | - |
|
855 | - if ( ! is_wp_error( $terms ) ) { |
|
856 | - foreach ( $terms as $term ) { |
|
857 | - $return .= '<li><input class="' . $taxonomy . '" ' . $this->checked( $selected, $term->term_id, false ) . ' type="checkbox" value="' . $term->term_id . '" /> ' . $term->name . '</li>'; |
|
858 | - } |
|
859 | - } else { |
|
860 | - $return .= '<li><input type="checkbox" value="" /> ' . __( 'None', 'lsx-wetu-importer' ) . '</li>'; |
|
861 | - } |
|
862 | - |
|
863 | - $return .= '</ul>'; |
|
864 | - } |
|
865 | - |
|
866 | - return $return; |
|
867 | - } |
|
868 | - |
|
869 | - // MAP FUNCTIONS |
|
870 | - |
|
871 | - /** |
|
872 | - * Saves the longitude and lattitude, as well as sets the map marker. |
|
873 | - */ |
|
874 | - public function set_map_data( $data, $id, $zoom = '10' ) { |
|
875 | - $longitude = false; |
|
876 | - $latitude = false; |
|
877 | - $address = false; |
|
878 | - |
|
879 | - if ( isset( $data[0]['position'] ) ) { |
|
880 | - if ( isset( $data[0]['position']['driving_latitude'] ) ) { |
|
881 | - $latitude = $data[0]['position']['driving_latitude']; |
|
882 | - } elseif ( isset( $data[0]['position']['latitude'] ) ) { |
|
883 | - $latitude = $data[0]['position']['latitude']; |
|
884 | - } |
|
885 | - |
|
886 | - if ( isset( $data[0]['position']['driving_longitude'] ) ) { |
|
887 | - $longitude = $data[0]['position']['driving_longitude']; |
|
888 | - } elseif ( isset( $data[0]['position']['longitude'] ) ) { |
|
889 | - $longitude = $data[0]['position']['longitude']; |
|
890 | - } |
|
891 | - } |
|
892 | - |
|
893 | - if ( isset( $data[0]['content'] ) && isset( $data[0]['content']['contact_information'] ) ) { |
|
894 | - if ( isset( $data[0]['content']['contact_information']['address'] ) ) { |
|
895 | - $address = strip_tags( $data[0]['content']['contact_information']['address'] ); |
|
896 | - $address = explode( "\n", $address ); |
|
897 | - |
|
898 | - foreach ( $address as $bitkey => $bit ) { |
|
899 | - $bit = ltrim( rtrim( $bit ) ); |
|
900 | - |
|
901 | - if ( false === $bit || '' === $bit || null === $bit || empty( $bit ) ) { |
|
902 | - unset( $address[ $bitkey ] ); |
|
903 | - } |
|
904 | - } |
|
905 | - |
|
906 | - $address = implode( ', ', $address ); |
|
907 | - $address = str_replace( ', , ', ', ', $address ); |
|
908 | - } |
|
909 | - } |
|
910 | - |
|
911 | - if ( false !== $longitude ) { |
|
912 | - $location_data = array( |
|
913 | - 'address' => (string) $address, |
|
914 | - 'lat' => (string) $latitude, |
|
915 | - 'long' => (string) $longitude, |
|
916 | - 'zoom' => (string) $zoom, |
|
917 | - 'elevation' => '', |
|
918 | - ); |
|
919 | - |
|
920 | - if ( false !== $id && '0' !== $id ) { |
|
921 | - $prev = get_post_meta( $id, 'location', true ); |
|
922 | - update_post_meta( $id, 'location', $location_data, $prev ); |
|
923 | - } else { |
|
924 | - add_post_meta( $id, 'location', $location_data, true ); |
|
925 | - } |
|
926 | - } |
|
927 | - } |
|
928 | - |
|
929 | - // IMAGE FUNCTIONS |
|
930 | - |
|
931 | - /** |
|
932 | - * Creates the main gallery data |
|
933 | - */ |
|
934 | - public function set_featured_image( $data, $id ) { |
|
935 | - if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) { |
|
936 | - $this->featured_image = $this->attach_image( $data[0]['content']['images'][0], $id, array( |
|
937 | - 'width' => '800', |
|
938 | - 'height' => '600', |
|
939 | - 'cropping' => 'h', |
|
940 | - ) ); |
|
941 | - |
|
942 | - if ( false !== $this->featured_image ) { |
|
943 | - delete_post_meta( $id, '_thumbnail_id' ); |
|
944 | - add_post_meta( $id, '_thumbnail_id', $this->featured_image, true ); |
|
945 | - } |
|
946 | - } |
|
947 | - } |
|
948 | - |
|
949 | - /** |
|
950 | - * Sets a banner image |
|
951 | - */ |
|
952 | - public function set_banner_image( $data, $id, $content = array( 'none' ) ) { |
|
953 | - if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) { |
|
954 | - if ( in_array( 'unique_banner_image', $content ) && isset( $data[0]['destination_image'] ) && is_array( $data[0]['destination_image'] ) ) { |
|
955 | - $temp_banner = $this->attach_image( $data[0]['destination_image'], $id, array( |
|
956 | - 'width' => '1920', |
|
957 | - 'height' => '600', |
|
958 | - 'cropping' => 'c', |
|
959 | - )); |
|
960 | - } else { |
|
961 | - $temp_banner = $this->attach_image( $data[0]['content']['images'][1], $id, array( |
|
962 | - 'width' => '1920', |
|
963 | - 'height' => '600', |
|
964 | - 'cropping' => 'c', |
|
965 | - )); |
|
966 | - } |
|
967 | - |
|
968 | - if ( false !== $temp_banner ) { |
|
969 | - $this->banner_image = $temp_banner; |
|
970 | - |
|
971 | - delete_post_meta( $id, 'image_group' ); |
|
972 | - |
|
973 | - $new_banner = array( |
|
974 | - 'banner_image' => array( |
|
975 | - 'cmb-field-0' => $this->banner_image, |
|
976 | - ), |
|
977 | - ); |
|
978 | - |
|
979 | - add_post_meta( $id, 'image_group', $new_banner, true ); |
|
980 | - } |
|
981 | - } |
|
982 | - } |
|
983 | - |
|
984 | - /** |
|
985 | - * Creates the main gallery data |
|
986 | - */ |
|
987 | - public function create_main_gallery( $data, $id ) { |
|
988 | - if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) { |
|
989 | - if ( isset( $this->options['image_replacing'] ) && 'on' === $this->options['image_replacing'] ) { |
|
990 | - $current_gallery = get_post_meta( $id, 'gallery', false ); |
|
991 | - |
|
992 | - if ( false !== $current_gallery && ! empty( $current_gallery ) ) { |
|
993 | - foreach ( $current_gallery as $g ) { |
|
994 | - delete_post_meta( $id, 'gallery', $g ); |
|
995 | - |
|
996 | - if ( 'attachment' === get_post_type( $g ) ) { |
|
997 | - wp_delete_attachment( $g, true ); |
|
998 | - } |
|
999 | - } |
|
1000 | - } |
|
1001 | - } |
|
1002 | - |
|
1003 | - $counter = 0; |
|
1004 | - |
|
1005 | - foreach ( $data[0]['content']['images'] as $image_data ) { |
|
1006 | - if ( ( 0 === $counter && false !== $this->featured_image ) || ( 1 === $counter && false !== $this->banner_image ) ) { |
|
1007 | - $counter++; |
|
1008 | - |
|
1009 | - if ( false !== $this->image_limit && false !== $this->image_limit ) { |
|
1010 | - $this->image_limit++; |
|
1011 | - } |
|
1012 | - |
|
1013 | - continue; |
|
1014 | - } |
|
1015 | - |
|
1016 | - if ( false !== $this->image_limit && $counter >= $this->image_limit ) { |
|
1017 | - continue; |
|
1018 | - } |
|
1019 | - |
|
1020 | - $this->gallery_meta[] = $this->attach_image( $image_data, $id ); |
|
1021 | - $counter++; |
|
1022 | - } |
|
1023 | - |
|
1024 | - if ( ! empty( $this->gallery_meta ) ) { |
|
1025 | - delete_post_meta( $id, 'gallery' ); |
|
1026 | - $this->gallery_meta = array_unique( $this->gallery_meta ); |
|
1027 | - |
|
1028 | - foreach ( $this->gallery_meta as $gallery_id ) { |
|
1029 | - if ( false !== $gallery_id && '' !== $gallery_id && ! is_array( $gallery_id ) ) { |
|
1030 | - add_post_meta( $id, 'gallery', $gallery_id, false ); |
|
1031 | - } |
|
1032 | - } |
|
1033 | - } |
|
1034 | - } |
|
1035 | - } |
|
1036 | - |
|
1037 | - /** |
|
1038 | - * search_form |
|
1039 | - */ |
|
1040 | - public function get_scaling_url( $args = array() ) { |
|
1041 | - $defaults = array( |
|
1042 | - 'width' => '1024', |
|
1043 | - 'height' => '768', |
|
1044 | - //'cropping' => 'w', |
|
1045 | - 'cropping' => 'h', |
|
1046 | - ); |
|
1047 | - |
|
1048 | - if ( false !== $this->options ) { |
|
1049 | - if ( isset( $this->options['width'] ) && '' !== $this->options['width'] ) { |
|
1050 | - $defaults['width'] = $this->options['width']; |
|
1051 | - } |
|
1052 | - |
|
1053 | - if ( isset( $this->options['height'] ) && '' !== $this->options['height'] ) { |
|
1054 | - $defaults['height'] = $this->options['height']; |
|
1055 | - } |
|
1056 | - |
|
1057 | - if ( isset( $this->options['cropping'] ) && '' !== $this->options['cropping'] ) { |
|
1058 | - $defaults['cropping'] = $this->options['cropping']; |
|
1059 | - } |
|
1060 | - } |
|
1061 | - |
|
1062 | - $args = wp_parse_args( $args, $defaults ); |
|
1063 | - $cropping = $args['cropping']; |
|
1064 | - $width = $args['width']; |
|
1065 | - $height = $args['height']; |
|
1066 | - |
|
1067 | - return 'https://wetu.com/ImageHandler/' . $cropping . $width . 'x' . $height . '/'; |
|
1068 | - } |
|
1069 | - |
|
1070 | - /** |
|
1071 | - * Attaches 1 image |
|
1072 | - */ |
|
1073 | - public function attach_image( $v = false, $parent_id, $image_sizes = false, $banner = false ) { |
|
1074 | - if ( false !== $v ) { |
|
1075 | - $temp_fragment = explode( '/', $v['url_fragment'] ); |
|
1076 | - $url_filename = $temp_fragment[ count( $temp_fragment ) - 1 ]; |
|
1077 | - $url_filename = str_replace( array( '.jpg', '.png', '.jpeg' ), '', $url_filename ); |
|
1078 | - $url_filename = trim( $url_filename ); |
|
1079 | - $title = $url_filename; |
|
1080 | - $url_filename = str_replace( ' ', '_', $url_filename ); |
|
1081 | - |
|
1082 | - if ( ! isset( $this->options['image_replacing'] ) && in_array( $url_filename, $this->found_attachments ) ) { |
|
1083 | - return array_search( $url_filename, $this->found_attachments ); |
|
1084 | - } |
|
1085 | - |
|
1086 | - $postdata = array(); |
|
1087 | - |
|
1088 | - if ( empty( $v['label'] ) ) { |
|
1089 | - $v['label'] = ''; |
|
1090 | - } |
|
1091 | - |
|
1092 | - if ( ! empty( $v['description'] ) ) { |
|
1093 | - $desc = wp_strip_all_tags( $v['description'] ); |
|
1094 | - $posdata = array( |
|
1095 | - 'post_excerpt' => $desc, |
|
1096 | - ); |
|
1097 | - } |
|
1098 | - |
|
1099 | - if ( ! empty( $v['section'] ) ) { |
|
1100 | - $desc = wp_strip_all_tags( $v['section'] ); |
|
1101 | - $posdata = array( |
|
1102 | - 'post_excerpt' => $desc, |
|
1103 | - ); |
|
1104 | - } |
|
1105 | - |
|
1106 | - $attach_id = null; |
|
1107 | - // Resizor - add option to setting if required. |
|
1108 | - $fragment = str_replace( ' ', '%20', $v['url_fragment'] ); |
|
1109 | - $url = $this->get_scaling_url( $image_sizes ) . $fragment; |
|
1110 | - $attach_id = $this->attach_external_image2( $url, $parent_id, '', $v['label'], $postdata ); |
|
1111 | - if ( ! empty( $attach_id ) ) { |
|
1112 | - $this->found_attachments[ $attach_id ] = $url_filename; |
|
1113 | - add_post_meta( $attach_id, 'lsx_wetu_id', $v['url_fragment'], true ); |
|
1114 | - return $attach_id; |
|
1115 | - } |
|
1116 | - } |
|
1117 | - return false; |
|
1118 | - } |
|
1119 | - |
|
1120 | - public function attach_external_image2( $url = null, $post_id = null, $thumb = null, $filename = null, $post_data = array() ) { |
|
1121 | - if ( ! $url || ! $post_id ) { |
|
642 | + } |
|
643 | + } |
|
644 | + |
|
645 | + |
|
646 | + // GENERAL FUNCTIONS. |
|
647 | + |
|
648 | + /** |
|
649 | + * Checks to see if an item is checked. |
|
650 | + * |
|
651 | + * @param $haystack array|string |
|
652 | + * @param $needle string |
|
653 | + * @param $echo bool |
|
654 | + */ |
|
655 | + public function checked( $haystack = false, $needle = '', $echo = true ) { |
|
656 | + $return = $this->itemd( $haystack, $needle, 'checked', false ); |
|
657 | + |
|
658 | + if ( '' !== $return ) { |
|
659 | + if ( true === $echo ) { |
|
660 | + echo wp_kses_post( $return ); |
|
661 | + } else { |
|
662 | + return $return; |
|
663 | + } |
|
664 | + } |
|
665 | + } |
|
666 | + |
|
667 | + /** |
|
668 | + * Checks to see if an item is checked. |
|
669 | + * |
|
670 | + * @param $haystack array|string |
|
671 | + * @param $needle string |
|
672 | + * @param $echo bool |
|
673 | + */ |
|
674 | + public function selected( $haystack = false, $needle = '', $echo = true ) { |
|
675 | + $return = $this->itemd( $haystack, $needle, 'selected' ); |
|
676 | + |
|
677 | + if ( '' !== $return ) { |
|
678 | + if ( true === $echo ) { |
|
679 | + echo wp_kses_post( $return ); |
|
680 | + } else { |
|
681 | + return $return; |
|
682 | + } |
|
683 | + } |
|
684 | + } |
|
685 | + |
|
686 | + /** |
|
687 | + * Checks to see if an item is selected. If $echo is false, it will return the $type if conditions are true. |
|
688 | + * |
|
689 | + * @param $haystack array|string |
|
690 | + * @param $needle string |
|
691 | + * @param $type string |
|
692 | + * @param $wrap bool |
|
693 | + * @return $html string |
|
694 | + */ |
|
695 | + public function itemd( $haystack = false, $needle = '', $type = '', $wrap = true ) { |
|
696 | + $html = ''; |
|
697 | + |
|
698 | + if ( '' !== $type ) { |
|
699 | + if ( ! is_array( $haystack ) ) { |
|
700 | + $haystack = array( $haystack ); |
|
701 | + } |
|
702 | + if ( in_array( $needle, $haystack ) ) { |
|
703 | + if ( true === $wrap || 'true' === $wrap ) { |
|
704 | + $html = $type . '="' . $type . '"'; |
|
705 | + } else { |
|
706 | + $html = $type; |
|
707 | + } |
|
708 | + } |
|
709 | + } |
|
710 | + |
|
711 | + return $html; |
|
712 | + } |
|
713 | + |
|
714 | + /** |
|
715 | + * Grabs any attachments for the current item |
|
716 | + */ |
|
717 | + public function find_attachments( $id = false ) { |
|
718 | + if ( false !== $id ) { |
|
719 | + if ( empty( $this->found_attachments ) ) { |
|
720 | + $attachments_args = array( |
|
721 | + 'post_parent' => $id, |
|
722 | + 'post_status' => 'inherit', |
|
723 | + 'post_type' => 'attachment', |
|
724 | + 'order' => 'ASC', |
|
725 | + 'nopagin' => 'true', |
|
726 | + 'posts_per_page' => '-1', |
|
727 | + ); |
|
728 | + |
|
729 | + $attachments = new WP_Query( $attachments_args ); |
|
730 | + |
|
731 | + if ( $attachments->have_posts() ) { |
|
732 | + foreach ( $attachments->posts as $attachment ) { |
|
733 | + $this->found_attachments[ $attachment->ID ] = str_replace( array( '.jpg', '.png', '.jpeg' ), '', $attachment->post_title ); |
|
734 | + } |
|
735 | + } |
|
736 | + } |
|
737 | + } |
|
738 | + } |
|
739 | + |
|
740 | + // CUSTOM FIELD FUNCTIONS. |
|
741 | + |
|
742 | + /** |
|
743 | + * Saves the room data |
|
744 | + */ |
|
745 | + public function save_custom_field( $value = false, $meta_key, $id, $decrease = false, $unique = true ) { |
|
746 | + if ( false !== $value ) { |
|
747 | + if ( false !== $decrease ) { |
|
748 | + $value = intval( $value ); |
|
749 | + $value--; |
|
750 | + } |
|
751 | + |
|
752 | + $prev = get_post_meta( $id, $meta_key, true ); |
|
753 | + |
|
754 | + if ( false !== $id && '0' !== $id && false !== $prev && true === $unique ) { |
|
755 | + update_post_meta( $id, $meta_key, $value, $prev ); |
|
756 | + } else { |
|
757 | + add_post_meta( $id, $meta_key, $value, $unique ); |
|
758 | + } |
|
759 | + } |
|
760 | + } |
|
761 | + |
|
762 | + /** |
|
763 | + * Grabs the custom fields, and resaves an array of unique items. |
|
764 | + */ |
|
765 | + public function cleanup_posts() { |
|
766 | + if ( ! empty( $this->cleanup_posts ) ) { |
|
767 | + |
|
768 | + foreach ( $this->cleanup_posts as $id => $key ) { |
|
769 | + $prev_items = get_post_meta( $id, $key, false ); |
|
770 | + $new_items = array_unique( $prev_items ); |
|
771 | + delete_post_meta( $id, $key ); |
|
772 | + |
|
773 | + foreach ( $new_items as $new_item ) { |
|
774 | + add_post_meta( $id, $key, $new_item, false ); |
|
775 | + } |
|
776 | + } |
|
777 | + } |
|
778 | + } |
|
779 | + |
|
780 | + // TAXONOMY FUNCTIONS. |
|
781 | + |
|
782 | + /** |
|
783 | + * Set_taxonomy with some terms |
|
784 | + */ |
|
785 | + public function set_taxonomy( $taxonomy, $terms, $id ) { |
|
786 | + $result = array(); |
|
787 | + |
|
788 | + if ( ! empty( $data ) ) { |
|
789 | + foreach ( $data as $k ) { |
|
790 | + if ( $id ) { |
|
791 | + $term = term_exists( trim( $k ), $tax ); |
|
792 | + if ( ! $term ) { |
|
793 | + $term = wp_insert_term( trim( $k ), $tax ); |
|
794 | + |
|
795 | + if ( is_wp_error( $term ) ) { |
|
796 | + echo wp_kses_post( $term->get_error_message() ); |
|
797 | + } else { |
|
798 | + wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true ); |
|
799 | + } |
|
800 | + } else { |
|
801 | + wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true ); |
|
802 | + } |
|
803 | + } else { |
|
804 | + $result[] = trim( $k ); |
|
805 | + } |
|
806 | + } |
|
807 | + } |
|
808 | + return $result; |
|
809 | + } |
|
810 | + |
|
811 | + /** |
|
812 | + * Sets the terms of the current post |
|
813 | + * |
|
814 | + * @param boolean $id |
|
815 | + * @param boolean $name |
|
816 | + * @param boolean $taxonomy |
|
817 | + * @param boolean $parent |
|
818 | + * @return void |
|
819 | + */ |
|
820 | + public function set_term( $id = false, $name = false, $taxonomy = false, $parent = false ) { |
|
821 | + $term = term_exists( $name, $taxonomy ); |
|
822 | + if ( ! $term ) { |
|
823 | + if ( false !== $parent ) { |
|
824 | + $parent = array( |
|
825 | + 'parent' => $parent, |
|
826 | + ); |
|
827 | + } |
|
828 | + $term = wp_insert_term( trim( $name ), $taxonomy, $parent ); |
|
829 | + |
|
830 | + if ( is_wp_error( $term ) ) { |
|
831 | + echo wp_kses_post( $term->get_error_message() ); |
|
832 | + } else { |
|
833 | + wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true ); |
|
834 | + } |
|
835 | + } else { |
|
836 | + wp_set_object_terms( $id, intval( $term['term_id'] ), $taxonomy, true ); |
|
837 | + } |
|
838 | + |
|
839 | + return $term['term_id']; |
|
840 | + } |
|
841 | + |
|
842 | + /** |
|
843 | + * set_taxonomy with some terms |
|
844 | + */ |
|
845 | + public function taxonomy_checkboxes( $taxonomy = false, $selected = array() ) { |
|
846 | + $return = ''; |
|
847 | + |
|
848 | + if ( false !== $taxonomy ) { |
|
849 | + $return .= '<ul>'; |
|
850 | + $terms = get_terms( array( |
|
851 | + 'taxonomy' => $taxonomy, |
|
852 | + 'hide_empty' => false, |
|
853 | + ) ); |
|
854 | + |
|
855 | + if ( ! is_wp_error( $terms ) ) { |
|
856 | + foreach ( $terms as $term ) { |
|
857 | + $return .= '<li><input class="' . $taxonomy . '" ' . $this->checked( $selected, $term->term_id, false ) . ' type="checkbox" value="' . $term->term_id . '" /> ' . $term->name . '</li>'; |
|
858 | + } |
|
859 | + } else { |
|
860 | + $return .= '<li><input type="checkbox" value="" /> ' . __( 'None', 'lsx-wetu-importer' ) . '</li>'; |
|
861 | + } |
|
862 | + |
|
863 | + $return .= '</ul>'; |
|
864 | + } |
|
865 | + |
|
866 | + return $return; |
|
867 | + } |
|
868 | + |
|
869 | + // MAP FUNCTIONS |
|
870 | + |
|
871 | + /** |
|
872 | + * Saves the longitude and lattitude, as well as sets the map marker. |
|
873 | + */ |
|
874 | + public function set_map_data( $data, $id, $zoom = '10' ) { |
|
875 | + $longitude = false; |
|
876 | + $latitude = false; |
|
877 | + $address = false; |
|
878 | + |
|
879 | + if ( isset( $data[0]['position'] ) ) { |
|
880 | + if ( isset( $data[0]['position']['driving_latitude'] ) ) { |
|
881 | + $latitude = $data[0]['position']['driving_latitude']; |
|
882 | + } elseif ( isset( $data[0]['position']['latitude'] ) ) { |
|
883 | + $latitude = $data[0]['position']['latitude']; |
|
884 | + } |
|
885 | + |
|
886 | + if ( isset( $data[0]['position']['driving_longitude'] ) ) { |
|
887 | + $longitude = $data[0]['position']['driving_longitude']; |
|
888 | + } elseif ( isset( $data[0]['position']['longitude'] ) ) { |
|
889 | + $longitude = $data[0]['position']['longitude']; |
|
890 | + } |
|
891 | + } |
|
892 | + |
|
893 | + if ( isset( $data[0]['content'] ) && isset( $data[0]['content']['contact_information'] ) ) { |
|
894 | + if ( isset( $data[0]['content']['contact_information']['address'] ) ) { |
|
895 | + $address = strip_tags( $data[0]['content']['contact_information']['address'] ); |
|
896 | + $address = explode( "\n", $address ); |
|
897 | + |
|
898 | + foreach ( $address as $bitkey => $bit ) { |
|
899 | + $bit = ltrim( rtrim( $bit ) ); |
|
900 | + |
|
901 | + if ( false === $bit || '' === $bit || null === $bit || empty( $bit ) ) { |
|
902 | + unset( $address[ $bitkey ] ); |
|
903 | + } |
|
904 | + } |
|
905 | + |
|
906 | + $address = implode( ', ', $address ); |
|
907 | + $address = str_replace( ', , ', ', ', $address ); |
|
908 | + } |
|
909 | + } |
|
910 | + |
|
911 | + if ( false !== $longitude ) { |
|
912 | + $location_data = array( |
|
913 | + 'address' => (string) $address, |
|
914 | + 'lat' => (string) $latitude, |
|
915 | + 'long' => (string) $longitude, |
|
916 | + 'zoom' => (string) $zoom, |
|
917 | + 'elevation' => '', |
|
918 | + ); |
|
919 | + |
|
920 | + if ( false !== $id && '0' !== $id ) { |
|
921 | + $prev = get_post_meta( $id, 'location', true ); |
|
922 | + update_post_meta( $id, 'location', $location_data, $prev ); |
|
923 | + } else { |
|
924 | + add_post_meta( $id, 'location', $location_data, true ); |
|
925 | + } |
|
926 | + } |
|
927 | + } |
|
928 | + |
|
929 | + // IMAGE FUNCTIONS |
|
930 | + |
|
931 | + /** |
|
932 | + * Creates the main gallery data |
|
933 | + */ |
|
934 | + public function set_featured_image( $data, $id ) { |
|
935 | + if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) { |
|
936 | + $this->featured_image = $this->attach_image( $data[0]['content']['images'][0], $id, array( |
|
937 | + 'width' => '800', |
|
938 | + 'height' => '600', |
|
939 | + 'cropping' => 'h', |
|
940 | + ) ); |
|
941 | + |
|
942 | + if ( false !== $this->featured_image ) { |
|
943 | + delete_post_meta( $id, '_thumbnail_id' ); |
|
944 | + add_post_meta( $id, '_thumbnail_id', $this->featured_image, true ); |
|
945 | + } |
|
946 | + } |
|
947 | + } |
|
948 | + |
|
949 | + /** |
|
950 | + * Sets a banner image |
|
951 | + */ |
|
952 | + public function set_banner_image( $data, $id, $content = array( 'none' ) ) { |
|
953 | + if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) { |
|
954 | + if ( in_array( 'unique_banner_image', $content ) && isset( $data[0]['destination_image'] ) && is_array( $data[0]['destination_image'] ) ) { |
|
955 | + $temp_banner = $this->attach_image( $data[0]['destination_image'], $id, array( |
|
956 | + 'width' => '1920', |
|
957 | + 'height' => '600', |
|
958 | + 'cropping' => 'c', |
|
959 | + )); |
|
960 | + } else { |
|
961 | + $temp_banner = $this->attach_image( $data[0]['content']['images'][1], $id, array( |
|
962 | + 'width' => '1920', |
|
963 | + 'height' => '600', |
|
964 | + 'cropping' => 'c', |
|
965 | + )); |
|
966 | + } |
|
967 | + |
|
968 | + if ( false !== $temp_banner ) { |
|
969 | + $this->banner_image = $temp_banner; |
|
970 | + |
|
971 | + delete_post_meta( $id, 'image_group' ); |
|
972 | + |
|
973 | + $new_banner = array( |
|
974 | + 'banner_image' => array( |
|
975 | + 'cmb-field-0' => $this->banner_image, |
|
976 | + ), |
|
977 | + ); |
|
978 | + |
|
979 | + add_post_meta( $id, 'image_group', $new_banner, true ); |
|
980 | + } |
|
981 | + } |
|
982 | + } |
|
983 | + |
|
984 | + /** |
|
985 | + * Creates the main gallery data |
|
986 | + */ |
|
987 | + public function create_main_gallery( $data, $id ) { |
|
988 | + if ( is_array( $data[0]['content']['images'] ) && ! empty( $data[0]['content']['images'] ) ) { |
|
989 | + if ( isset( $this->options['image_replacing'] ) && 'on' === $this->options['image_replacing'] ) { |
|
990 | + $current_gallery = get_post_meta( $id, 'gallery', false ); |
|
991 | + |
|
992 | + if ( false !== $current_gallery && ! empty( $current_gallery ) ) { |
|
993 | + foreach ( $current_gallery as $g ) { |
|
994 | + delete_post_meta( $id, 'gallery', $g ); |
|
995 | + |
|
996 | + if ( 'attachment' === get_post_type( $g ) ) { |
|
997 | + wp_delete_attachment( $g, true ); |
|
998 | + } |
|
999 | + } |
|
1000 | + } |
|
1001 | + } |
|
1002 | + |
|
1003 | + $counter = 0; |
|
1004 | + |
|
1005 | + foreach ( $data[0]['content']['images'] as $image_data ) { |
|
1006 | + if ( ( 0 === $counter && false !== $this->featured_image ) || ( 1 === $counter && false !== $this->banner_image ) ) { |
|
1007 | + $counter++; |
|
1008 | + |
|
1009 | + if ( false !== $this->image_limit && false !== $this->image_limit ) { |
|
1010 | + $this->image_limit++; |
|
1011 | + } |
|
1012 | + |
|
1013 | + continue; |
|
1014 | + } |
|
1015 | + |
|
1016 | + if ( false !== $this->image_limit && $counter >= $this->image_limit ) { |
|
1017 | + continue; |
|
1018 | + } |
|
1019 | + |
|
1020 | + $this->gallery_meta[] = $this->attach_image( $image_data, $id ); |
|
1021 | + $counter++; |
|
1022 | + } |
|
1023 | + |
|
1024 | + if ( ! empty( $this->gallery_meta ) ) { |
|
1025 | + delete_post_meta( $id, 'gallery' ); |
|
1026 | + $this->gallery_meta = array_unique( $this->gallery_meta ); |
|
1027 | + |
|
1028 | + foreach ( $this->gallery_meta as $gallery_id ) { |
|
1029 | + if ( false !== $gallery_id && '' !== $gallery_id && ! is_array( $gallery_id ) ) { |
|
1030 | + add_post_meta( $id, 'gallery', $gallery_id, false ); |
|
1031 | + } |
|
1032 | + } |
|
1033 | + } |
|
1034 | + } |
|
1035 | + } |
|
1036 | + |
|
1037 | + /** |
|
1038 | + * search_form |
|
1039 | + */ |
|
1040 | + public function get_scaling_url( $args = array() ) { |
|
1041 | + $defaults = array( |
|
1042 | + 'width' => '1024', |
|
1043 | + 'height' => '768', |
|
1044 | + //'cropping' => 'w', |
|
1045 | + 'cropping' => 'h', |
|
1046 | + ); |
|
1047 | + |
|
1048 | + if ( false !== $this->options ) { |
|
1049 | + if ( isset( $this->options['width'] ) && '' !== $this->options['width'] ) { |
|
1050 | + $defaults['width'] = $this->options['width']; |
|
1051 | + } |
|
1052 | + |
|
1053 | + if ( isset( $this->options['height'] ) && '' !== $this->options['height'] ) { |
|
1054 | + $defaults['height'] = $this->options['height']; |
|
1055 | + } |
|
1056 | + |
|
1057 | + if ( isset( $this->options['cropping'] ) && '' !== $this->options['cropping'] ) { |
|
1058 | + $defaults['cropping'] = $this->options['cropping']; |
|
1059 | + } |
|
1060 | + } |
|
1061 | + |
|
1062 | + $args = wp_parse_args( $args, $defaults ); |
|
1063 | + $cropping = $args['cropping']; |
|
1064 | + $width = $args['width']; |
|
1065 | + $height = $args['height']; |
|
1066 | + |
|
1067 | + return 'https://wetu.com/ImageHandler/' . $cropping . $width . 'x' . $height . '/'; |
|
1068 | + } |
|
1069 | + |
|
1070 | + /** |
|
1071 | + * Attaches 1 image |
|
1072 | + */ |
|
1073 | + public function attach_image( $v = false, $parent_id, $image_sizes = false, $banner = false ) { |
|
1074 | + if ( false !== $v ) { |
|
1075 | + $temp_fragment = explode( '/', $v['url_fragment'] ); |
|
1076 | + $url_filename = $temp_fragment[ count( $temp_fragment ) - 1 ]; |
|
1077 | + $url_filename = str_replace( array( '.jpg', '.png', '.jpeg' ), '', $url_filename ); |
|
1078 | + $url_filename = trim( $url_filename ); |
|
1079 | + $title = $url_filename; |
|
1080 | + $url_filename = str_replace( ' ', '_', $url_filename ); |
|
1081 | + |
|
1082 | + if ( ! isset( $this->options['image_replacing'] ) && in_array( $url_filename, $this->found_attachments ) ) { |
|
1083 | + return array_search( $url_filename, $this->found_attachments ); |
|
1084 | + } |
|
1085 | + |
|
1086 | + $postdata = array(); |
|
1087 | + |
|
1088 | + if ( empty( $v['label'] ) ) { |
|
1089 | + $v['label'] = ''; |
|
1090 | + } |
|
1091 | + |
|
1092 | + if ( ! empty( $v['description'] ) ) { |
|
1093 | + $desc = wp_strip_all_tags( $v['description'] ); |
|
1094 | + $posdata = array( |
|
1095 | + 'post_excerpt' => $desc, |
|
1096 | + ); |
|
1097 | + } |
|
1098 | + |
|
1099 | + if ( ! empty( $v['section'] ) ) { |
|
1100 | + $desc = wp_strip_all_tags( $v['section'] ); |
|
1101 | + $posdata = array( |
|
1102 | + 'post_excerpt' => $desc, |
|
1103 | + ); |
|
1104 | + } |
|
1105 | + |
|
1106 | + $attach_id = null; |
|
1107 | + // Resizor - add option to setting if required. |
|
1108 | + $fragment = str_replace( ' ', '%20', $v['url_fragment'] ); |
|
1109 | + $url = $this->get_scaling_url( $image_sizes ) . $fragment; |
|
1110 | + $attach_id = $this->attach_external_image2( $url, $parent_id, '', $v['label'], $postdata ); |
|
1111 | + if ( ! empty( $attach_id ) ) { |
|
1112 | + $this->found_attachments[ $attach_id ] = $url_filename; |
|
1113 | + add_post_meta( $attach_id, 'lsx_wetu_id', $v['url_fragment'], true ); |
|
1114 | + return $attach_id; |
|
1115 | + } |
|
1116 | + } |
|
1117 | + return false; |
|
1118 | + } |
|
1119 | + |
|
1120 | + public function attach_external_image2( $url = null, $post_id = null, $thumb = null, $filename = null, $post_data = array() ) { |
|
1121 | + if ( ! $url || ! $post_id ) { |
|
1122 | 1122 | return new WP_Error( 'missing', 'Need a valid URL and post ID...' ); } |
1123 | - $att_id = false; |
|
1124 | - |
|
1125 | - require_once( ABSPATH . 'wp-admin/includes/file.php' ); |
|
1126 | - require_once( ABSPATH . 'wp-admin/includes/media.php' ); |
|
1127 | - require_once( ABSPATH . 'wp-admin/includes/image.php' ); |
|
1128 | - // Download file to temp location, returns full server path to temp file. |
|
1129 | - |
|
1130 | - $tmp = tempnam( '/tmp', 'FOO' ); |
|
1131 | - $image = wp_remote_get( $url ); |
|
1132 | - if ( ! is_wp_error( $image ) && ! empty( $image ) && isset( $image['response'] ) && isset( $image['response']['code'] ) && 200 === $image['response']['code'] ) { |
|
1133 | - file_put_contents( $tmp, $image['body'] ); |
|
1134 | - chmod( $tmp, '777' ); |
|
1135 | - |
|
1136 | - preg_match( '/[^\?]+\.(tif|TIFF|jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG|pdf|PDF|bmp|BMP)/', $url, $matches ); // fix file filename for query strings |
|
1137 | - $url_filename = basename( $matches[0] ); |
|
1138 | - $url_filename = str_replace( '%20', '_', $url_filename ); |
|
1139 | - // extract filename from url for title |
|
1140 | - $url_type = wp_check_filetype( $url_filename ); // determine file type (ext and mime/type) |
|
1141 | - |
|
1142 | - // override filename if given, reconstruct server path. |
|
1143 | - if ( ! empty( $filename ) && ' ' != $filename ) { |
|
1144 | - $filename = sanitize_file_name( $filename ); |
|
1145 | - $tmppath = pathinfo( $tmp ); |
|
1146 | - |
|
1147 | - $extension = ''; |
|
1148 | - if ( isset( $tmppath['extension'] ) ) { |
|
1149 | - $extension = $tmppath['extension']; |
|
1150 | - } |
|
1151 | - |
|
1152 | - $new = $tmppath['dirname'] . '/' . $filename . '.' . $extension; |
|
1153 | - rename( $tmp, $new ); // renames temp file on server |
|
1154 | - $tmp = $new; // push new filename (in path) to be used in file array later |
|
1155 | - } |
|
1156 | - |
|
1157 | - // assemble file data (should be built like $_FILES since wp_handle_sideload() will be using). |
|
1158 | - $file_array['tmp_name'] = $tmp; // full server path to temp file |
|
1159 | - |
|
1160 | - if ( ! empty( $filename ) && ' ' != $filename ) { |
|
1161 | - $file_array['name'] = $filename . '.' . $url_type['ext']; // user given filename for title, add original URL extension |
|
1162 | - } else { |
|
1163 | - $file_array['name'] = $url_filename; // just use original URL filename |
|
1164 | - } |
|
1165 | - |
|
1166 | - // set additional wp_posts columns. |
|
1167 | - if ( empty( $post_data['post_title'] ) ) { |
|
1168 | - |
|
1169 | - $url_filename = str_replace( '%20', ' ', $url_filename ); |
|
1170 | - |
|
1171 | - $post_data['post_title'] = basename( $url_filename, '.' . $url_type['ext'] ); // just use the original filename (no extension) |
|
1172 | - } |
|
1173 | - |
|
1174 | - // make sure gets tied to parent. |
|
1175 | - if ( empty( $post_data['post_parent'] ) ) { |
|
1176 | - $post_data['post_parent'] = $post_id; |
|
1177 | - } |
|
1178 | - |
|
1179 | - // do the validation and storage stuff. |
|
1180 | - $att_id = media_handle_sideload( $file_array, $post_id, null, $post_data ); // $post_data can override the items saved to wp_posts table, like post_mime_type, guid, post_parent, post_title, post_content, post_status |
|
1181 | - |
|
1182 | - // If error storing permanently, unlink. |
|
1183 | - if ( is_wp_error( $att_id ) ) { |
|
1184 | - unlink( $file_array['tmp_name'] ); |
|
1185 | - return false; |
|
1186 | - } |
|
1187 | - } |
|
1188 | - return $att_id; |
|
1189 | - } |
|
1190 | - |
|
1191 | - // AJAX FUNCTIONS |
|
1192 | - /** |
|
1193 | - * Run through the accommodation grabbed from the DB. |
|
1194 | - */ |
|
1195 | - public function process_ajax_search() { |
|
1196 | - $this->current_importer->process_ajax_search(); |
|
1197 | - die(); |
|
1198 | - } |
|
1199 | - |
|
1200 | - /** |
|
1201 | - * Connect to wetu |
|
1202 | - */ |
|
1203 | - public function process_ajax_import() { |
|
1204 | - $this->current_importer->process_ajax_import(); |
|
1205 | - die(); |
|
1206 | - } |
|
1207 | - |
|
1208 | - /** |
|
1209 | - * Formats the row for the completed list. |
|
1210 | - */ |
|
1211 | - public function format_completed_row( $response ) { |
|
1212 | - echo wp_kses_post( '<li class="post-' . $response . '"><span class="dashicons dashicons-yes"></span> <a target="_blank" href="' . get_permalink( $response ) . '">' . get_the_title( $response ) . '</a></li>' ); |
|
1213 | - } |
|
1214 | - |
|
1215 | - /** |
|
1216 | - * Formats the error. |
|
1217 | - */ |
|
1218 | - public function format_error( $response ) { |
|
1219 | - echo wp_kses_post( '<li class="post-error"><span class="dashicons dashicons-no"></span>' . $response . '</li>' ); |
|
1220 | - } |
|
1221 | - |
|
1222 | - /** |
|
1223 | - * Does a multine search |
|
1224 | - */ |
|
1225 | - public function multineedle_stripos( $haystack, $needles, $offset = 0 ) { |
|
1226 | - $found = false; |
|
1227 | - $needle_count = count( $needles ); |
|
1228 | - |
|
1229 | - foreach ( $needles as $needle ) { |
|
1230 | - if ( false !== stripos( $haystack, $needle, $offset ) ) { |
|
1231 | - $found[] = true; |
|
1232 | - } |
|
1233 | - } |
|
1234 | - |
|
1235 | - if ( false !== $found && count( $found ) === $needle_count ) { |
|
1236 | - return true; |
|
1237 | - } else { |
|
1238 | - return false; |
|
1239 | - } |
|
1240 | - } |
|
1241 | - |
|
1242 | - /** |
|
1243 | - * Grab all the current accommodation posts via the lsx_wetu_id field. |
|
1244 | - */ |
|
1245 | - public function find_current_accommodation( $post_type = 'accommodation' ) { |
|
1246 | - global $wpdb; |
|
1247 | - $return = array(); |
|
1248 | - |
|
1249 | - // @codingStandardsIgnoreStart |
|
1250 | - $current_accommodation = $wpdb->get_results(" |
|
1123 | + $att_id = false; |
|
1124 | + |
|
1125 | + require_once( ABSPATH . 'wp-admin/includes/file.php' ); |
|
1126 | + require_once( ABSPATH . 'wp-admin/includes/media.php' ); |
|
1127 | + require_once( ABSPATH . 'wp-admin/includes/image.php' ); |
|
1128 | + // Download file to temp location, returns full server path to temp file. |
|
1129 | + |
|
1130 | + $tmp = tempnam( '/tmp', 'FOO' ); |
|
1131 | + $image = wp_remote_get( $url ); |
|
1132 | + if ( ! is_wp_error( $image ) && ! empty( $image ) && isset( $image['response'] ) && isset( $image['response']['code'] ) && 200 === $image['response']['code'] ) { |
|
1133 | + file_put_contents( $tmp, $image['body'] ); |
|
1134 | + chmod( $tmp, '777' ); |
|
1135 | + |
|
1136 | + preg_match( '/[^\?]+\.(tif|TIFF|jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG|pdf|PDF|bmp|BMP)/', $url, $matches ); // fix file filename for query strings |
|
1137 | + $url_filename = basename( $matches[0] ); |
|
1138 | + $url_filename = str_replace( '%20', '_', $url_filename ); |
|
1139 | + // extract filename from url for title |
|
1140 | + $url_type = wp_check_filetype( $url_filename ); // determine file type (ext and mime/type) |
|
1141 | + |
|
1142 | + // override filename if given, reconstruct server path. |
|
1143 | + if ( ! empty( $filename ) && ' ' != $filename ) { |
|
1144 | + $filename = sanitize_file_name( $filename ); |
|
1145 | + $tmppath = pathinfo( $tmp ); |
|
1146 | + |
|
1147 | + $extension = ''; |
|
1148 | + if ( isset( $tmppath['extension'] ) ) { |
|
1149 | + $extension = $tmppath['extension']; |
|
1150 | + } |
|
1151 | + |
|
1152 | + $new = $tmppath['dirname'] . '/' . $filename . '.' . $extension; |
|
1153 | + rename( $tmp, $new ); // renames temp file on server |
|
1154 | + $tmp = $new; // push new filename (in path) to be used in file array later |
|
1155 | + } |
|
1156 | + |
|
1157 | + // assemble file data (should be built like $_FILES since wp_handle_sideload() will be using). |
|
1158 | + $file_array['tmp_name'] = $tmp; // full server path to temp file |
|
1159 | + |
|
1160 | + if ( ! empty( $filename ) && ' ' != $filename ) { |
|
1161 | + $file_array['name'] = $filename . '.' . $url_type['ext']; // user given filename for title, add original URL extension |
|
1162 | + } else { |
|
1163 | + $file_array['name'] = $url_filename; // just use original URL filename |
|
1164 | + } |
|
1165 | + |
|
1166 | + // set additional wp_posts columns. |
|
1167 | + if ( empty( $post_data['post_title'] ) ) { |
|
1168 | + |
|
1169 | + $url_filename = str_replace( '%20', ' ', $url_filename ); |
|
1170 | + |
|
1171 | + $post_data['post_title'] = basename( $url_filename, '.' . $url_type['ext'] ); // just use the original filename (no extension) |
|
1172 | + } |
|
1173 | + |
|
1174 | + // make sure gets tied to parent. |
|
1175 | + if ( empty( $post_data['post_parent'] ) ) { |
|
1176 | + $post_data['post_parent'] = $post_id; |
|
1177 | + } |
|
1178 | + |
|
1179 | + // do the validation and storage stuff. |
|
1180 | + $att_id = media_handle_sideload( $file_array, $post_id, null, $post_data ); // $post_data can override the items saved to wp_posts table, like post_mime_type, guid, post_parent, post_title, post_content, post_status |
|
1181 | + |
|
1182 | + // If error storing permanently, unlink. |
|
1183 | + if ( is_wp_error( $att_id ) ) { |
|
1184 | + unlink( $file_array['tmp_name'] ); |
|
1185 | + return false; |
|
1186 | + } |
|
1187 | + } |
|
1188 | + return $att_id; |
|
1189 | + } |
|
1190 | + |
|
1191 | + // AJAX FUNCTIONS |
|
1192 | + /** |
|
1193 | + * Run through the accommodation grabbed from the DB. |
|
1194 | + */ |
|
1195 | + public function process_ajax_search() { |
|
1196 | + $this->current_importer->process_ajax_search(); |
|
1197 | + die(); |
|
1198 | + } |
|
1199 | + |
|
1200 | + /** |
|
1201 | + * Connect to wetu |
|
1202 | + */ |
|
1203 | + public function process_ajax_import() { |
|
1204 | + $this->current_importer->process_ajax_import(); |
|
1205 | + die(); |
|
1206 | + } |
|
1207 | + |
|
1208 | + /** |
|
1209 | + * Formats the row for the completed list. |
|
1210 | + */ |
|
1211 | + public function format_completed_row( $response ) { |
|
1212 | + echo wp_kses_post( '<li class="post-' . $response . '"><span class="dashicons dashicons-yes"></span> <a target="_blank" href="' . get_permalink( $response ) . '">' . get_the_title( $response ) . '</a></li>' ); |
|
1213 | + } |
|
1214 | + |
|
1215 | + /** |
|
1216 | + * Formats the error. |
|
1217 | + */ |
|
1218 | + public function format_error( $response ) { |
|
1219 | + echo wp_kses_post( '<li class="post-error"><span class="dashicons dashicons-no"></span>' . $response . '</li>' ); |
|
1220 | + } |
|
1221 | + |
|
1222 | + /** |
|
1223 | + * Does a multine search |
|
1224 | + */ |
|
1225 | + public function multineedle_stripos( $haystack, $needles, $offset = 0 ) { |
|
1226 | + $found = false; |
|
1227 | + $needle_count = count( $needles ); |
|
1228 | + |
|
1229 | + foreach ( $needles as $needle ) { |
|
1230 | + if ( false !== stripos( $haystack, $needle, $offset ) ) { |
|
1231 | + $found[] = true; |
|
1232 | + } |
|
1233 | + } |
|
1234 | + |
|
1235 | + if ( false !== $found && count( $found ) === $needle_count ) { |
|
1236 | + return true; |
|
1237 | + } else { |
|
1238 | + return false; |
|
1239 | + } |
|
1240 | + } |
|
1241 | + |
|
1242 | + /** |
|
1243 | + * Grab all the current accommodation posts via the lsx_wetu_id field. |
|
1244 | + */ |
|
1245 | + public function find_current_accommodation( $post_type = 'accommodation' ) { |
|
1246 | + global $wpdb; |
|
1247 | + $return = array(); |
|
1248 | + |
|
1249 | + // @codingStandardsIgnoreStart |
|
1250 | + $current_accommodation = $wpdb->get_results(" |
|
1251 | 1251 | SELECT key1.post_id,key1.meta_value |
1252 | 1252 | FROM {$wpdb->postmeta} key1 |
1253 | 1253 | |
@@ -1259,128 +1259,128 @@ discard block |
||
1259 | 1259 | |
1260 | 1260 | LIMIT 0,5000 |
1261 | 1261 | "); |
1262 | - // @codingStandardsIgnoreEnd |
|
1263 | - |
|
1264 | - if ( null !== $current_accommodation && ! empty( $current_accommodation ) ) { |
|
1265 | - foreach ( $current_accommodation as $accom ) { |
|
1266 | - $return[ $accom->meta_value ] = $accom; |
|
1267 | - } |
|
1268 | - } |
|
1269 | - |
|
1270 | - return $return; |
|
1271 | - } |
|
1272 | - |
|
1273 | - /** |
|
1274 | - * Set the Video date |
|
1275 | - */ |
|
1276 | - public function set_video_data( $data, $id ) { |
|
1277 | - if ( ! empty( $data[0]['content']['youtube_videos'] ) && is_array( $data[0]['content']['youtube_videos'] ) ) { |
|
1278 | - $videos = false; |
|
1279 | - |
|
1280 | - foreach ( $data[0]['content']['youtube_videos'] as $video ) { |
|
1281 | - $temp_video = array(); |
|
1282 | - |
|
1283 | - if ( isset( $video['label'] ) ) { |
|
1284 | - $temp_video['title'] = $video['label']; |
|
1285 | - } |
|
1286 | - if ( isset( $video['description'] ) ) { |
|
1287 | - $temp_video['description'] = strip_tags( $video['description'] ); |
|
1288 | - } |
|
1289 | - if ( isset( $video['url'] ) ) { |
|
1290 | - $temp_video['url'] = $video['url']; |
|
1291 | - } |
|
1292 | - |
|
1293 | - $temp_video['thumbnail'] = ''; |
|
1294 | - $videos[] = $temp_video; |
|
1295 | - } |
|
1296 | - |
|
1297 | - if ( false !== $id && '0' !== $id ) { |
|
1298 | - delete_post_meta( $id, 'videos' ); |
|
1299 | - } |
|
1300 | - |
|
1301 | - foreach ( $videos as $video ) { |
|
1302 | - add_post_meta( $id, 'videos', $video, false ); |
|
1303 | - } |
|
1304 | - } |
|
1305 | - } |
|
1306 | - |
|
1307 | - public function shuffle_assoc( &$array ) { |
|
1308 | - $new = array(); |
|
1309 | - $keys = array_keys( $array ); |
|
1310 | - |
|
1311 | - shuffle( $keys ); |
|
1312 | - |
|
1313 | - foreach ( $keys as $key ) { |
|
1314 | - $new[ $key ] = $array[ $key ]; |
|
1315 | - } |
|
1316 | - |
|
1317 | - $array = $new; |
|
1318 | - |
|
1319 | - return true; |
|
1320 | - } |
|
1321 | - |
|
1322 | - /** |
|
1323 | - * Save the list of Tours into an option |
|
1324 | - */ |
|
1325 | - public function update_options() { |
|
1326 | - $own = ''; |
|
1327 | - $options = array(); |
|
1328 | - delete_option( 'lsx_ti_tours_api_options' ); |
|
1329 | - |
|
1330 | - if ( isset( $_GET['own'] ) ) { |
|
1331 | - $this->current_importer->url_qs .= '&own=true'; |
|
1332 | - $options[] = 'own'; |
|
1333 | - } |
|
1334 | - |
|
1335 | - if ( isset( $_GET['type'] ) && 'allitineraries' !== $_GET['type'] ) { |
|
1336 | - $this->current_importer->url_qs .= '&type=' . $_GET['type']; |
|
1337 | - $options[] = $_GET['type']; |
|
1338 | - } else { |
|
1339 | - $options[] = 'sample'; |
|
1340 | - $this->current_importer->url_qs .= '&type=sample'; |
|
1341 | - } |
|
1342 | - |
|
1343 | - $url = str_replace( 'Pins', 'Itinerary', $this->current_importer->url . '/V8/List?' . $this->current_importer->url_qs ); |
|
1344 | - $url .= '&results=2000'; |
|
1345 | - add_option( 'lsx_ti_tours_api_options', $options ); |
|
1346 | - $data = wp_remote_get( $url ); |
|
1347 | - $tours = json_decode( wp_remote_retrieve_body( $data ), true ); |
|
1348 | - |
|
1349 | - if ( isset( $tours['error'] ) ) { |
|
1350 | - return $tours['error']; |
|
1351 | - } elseif ( isset( $tours['itineraries'] ) && ! empty( $tours['itineraries'] ) ) { |
|
1352 | - set_transient( 'lsx_ti_tours', $tours['itineraries'], 60 * 60 * 4 ); |
|
1353 | - return true; |
|
1354 | - } |
|
1355 | - } |
|
1356 | - |
|
1357 | - /** |
|
1358 | - * Gets the post_id from the key |
|
1359 | - * |
|
1360 | - * @param boolean $wetu_id |
|
1361 | - * @return string |
|
1362 | - */ |
|
1363 | - public function get_post_id_by_key_value( $wetu_id = false ) { |
|
1364 | - global $wpdb; |
|
1365 | - $id = false; |
|
1366 | - if ( false !== $wetu_id && '' !== $wetu_id ) { |
|
1367 | - $result = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM `$wpdb->postmeta` WHERE `meta_key` = 'lsx_wetu_id' AND `meta_value` = '%s'", array( $wetu_id ) ) ); |
|
1368 | - if ( false !== $result && ! empty( $result ) ) { |
|
1369 | - $id = $result; |
|
1370 | - } |
|
1371 | - } |
|
1372 | - return $id; |
|
1373 | - } |
|
1374 | - /** |
|
1375 | - * Set the team memberon each item. |
|
1376 | - */ |
|
1377 | - public function set_team_member( $id, $team_members ) { |
|
1378 | - delete_post_meta( $id, 'team_to_' . $this->tab_slug ); |
|
1379 | - |
|
1380 | - foreach ( $team_members as $team ) { |
|
1381 | - add_post_meta( $id, 'team_to_' . $this->tab_slug, $team ); |
|
1382 | - } |
|
1383 | - } |
|
1262 | + // @codingStandardsIgnoreEnd |
|
1263 | + |
|
1264 | + if ( null !== $current_accommodation && ! empty( $current_accommodation ) ) { |
|
1265 | + foreach ( $current_accommodation as $accom ) { |
|
1266 | + $return[ $accom->meta_value ] = $accom; |
|
1267 | + } |
|
1268 | + } |
|
1269 | + |
|
1270 | + return $return; |
|
1271 | + } |
|
1272 | + |
|
1273 | + /** |
|
1274 | + * Set the Video date |
|
1275 | + */ |
|
1276 | + public function set_video_data( $data, $id ) { |
|
1277 | + if ( ! empty( $data[0]['content']['youtube_videos'] ) && is_array( $data[0]['content']['youtube_videos'] ) ) { |
|
1278 | + $videos = false; |
|
1279 | + |
|
1280 | + foreach ( $data[0]['content']['youtube_videos'] as $video ) { |
|
1281 | + $temp_video = array(); |
|
1282 | + |
|
1283 | + if ( isset( $video['label'] ) ) { |
|
1284 | + $temp_video['title'] = $video['label']; |
|
1285 | + } |
|
1286 | + if ( isset( $video['description'] ) ) { |
|
1287 | + $temp_video['description'] = strip_tags( $video['description'] ); |
|
1288 | + } |
|
1289 | + if ( isset( $video['url'] ) ) { |
|
1290 | + $temp_video['url'] = $video['url']; |
|
1291 | + } |
|
1292 | + |
|
1293 | + $temp_video['thumbnail'] = ''; |
|
1294 | + $videos[] = $temp_video; |
|
1295 | + } |
|
1296 | + |
|
1297 | + if ( false !== $id && '0' !== $id ) { |
|
1298 | + delete_post_meta( $id, 'videos' ); |
|
1299 | + } |
|
1300 | + |
|
1301 | + foreach ( $videos as $video ) { |
|
1302 | + add_post_meta( $id, 'videos', $video, false ); |
|
1303 | + } |
|
1304 | + } |
|
1305 | + } |
|
1306 | + |
|
1307 | + public function shuffle_assoc( &$array ) { |
|
1308 | + $new = array(); |
|
1309 | + $keys = array_keys( $array ); |
|
1310 | + |
|
1311 | + shuffle( $keys ); |
|
1312 | + |
|
1313 | + foreach ( $keys as $key ) { |
|
1314 | + $new[ $key ] = $array[ $key ]; |
|
1315 | + } |
|
1316 | + |
|
1317 | + $array = $new; |
|
1318 | + |
|
1319 | + return true; |
|
1320 | + } |
|
1321 | + |
|
1322 | + /** |
|
1323 | + * Save the list of Tours into an option |
|
1324 | + */ |
|
1325 | + public function update_options() { |
|
1326 | + $own = ''; |
|
1327 | + $options = array(); |
|
1328 | + delete_option( 'lsx_ti_tours_api_options' ); |
|
1329 | + |
|
1330 | + if ( isset( $_GET['own'] ) ) { |
|
1331 | + $this->current_importer->url_qs .= '&own=true'; |
|
1332 | + $options[] = 'own'; |
|
1333 | + } |
|
1334 | + |
|
1335 | + if ( isset( $_GET['type'] ) && 'allitineraries' !== $_GET['type'] ) { |
|
1336 | + $this->current_importer->url_qs .= '&type=' . $_GET['type']; |
|
1337 | + $options[] = $_GET['type']; |
|
1338 | + } else { |
|
1339 | + $options[] = 'sample'; |
|
1340 | + $this->current_importer->url_qs .= '&type=sample'; |
|
1341 | + } |
|
1342 | + |
|
1343 | + $url = str_replace( 'Pins', 'Itinerary', $this->current_importer->url . '/V8/List?' . $this->current_importer->url_qs ); |
|
1344 | + $url .= '&results=2000'; |
|
1345 | + add_option( 'lsx_ti_tours_api_options', $options ); |
|
1346 | + $data = wp_remote_get( $url ); |
|
1347 | + $tours = json_decode( wp_remote_retrieve_body( $data ), true ); |
|
1348 | + |
|
1349 | + if ( isset( $tours['error'] ) ) { |
|
1350 | + return $tours['error']; |
|
1351 | + } elseif ( isset( $tours['itineraries'] ) && ! empty( $tours['itineraries'] ) ) { |
|
1352 | + set_transient( 'lsx_ti_tours', $tours['itineraries'], 60 * 60 * 4 ); |
|
1353 | + return true; |
|
1354 | + } |
|
1355 | + } |
|
1356 | + |
|
1357 | + /** |
|
1358 | + * Gets the post_id from the key |
|
1359 | + * |
|
1360 | + * @param boolean $wetu_id |
|
1361 | + * @return string |
|
1362 | + */ |
|
1363 | + public function get_post_id_by_key_value( $wetu_id = false ) { |
|
1364 | + global $wpdb; |
|
1365 | + $id = false; |
|
1366 | + if ( false !== $wetu_id && '' !== $wetu_id ) { |
|
1367 | + $result = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM `$wpdb->postmeta` WHERE `meta_key` = 'lsx_wetu_id' AND `meta_value` = '%s'", array( $wetu_id ) ) ); |
|
1368 | + if ( false !== $result && ! empty( $result ) ) { |
|
1369 | + $id = $result; |
|
1370 | + } |
|
1371 | + } |
|
1372 | + return $id; |
|
1373 | + } |
|
1374 | + /** |
|
1375 | + * Set the team memberon each item. |
|
1376 | + */ |
|
1377 | + public function set_team_member( $id, $team_members ) { |
|
1378 | + delete_post_meta( $id, 'team_to_' . $this->tab_slug ); |
|
1379 | + |
|
1380 | + foreach ( $team_members as $team ) { |
|
1381 | + add_post_meta( $id, 'team_to_' . $this->tab_slug, $team ); |
|
1382 | + } |
|
1383 | + } |
|
1384 | 1384 | } |
1385 | 1385 | |
1386 | 1386 | $lsx_wetu_importer = new LSX_WETU_Importer(); |
@@ -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 | } |