PluginProbe
WP Directory Kit / 1.3.8
WP Directory Kit v1.3.8
1.5.9 1.5.7 1.5.6 1.5.5 1.5.4 1.5.3 trunk 1.1.0 1.1.6 1.1.8 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.8 All 37 releases
wpdirectorykit / application / controllers / Wdk_frontendajax.php

Wdk_frontendajax.php in WP Directory Kit 1.3.8, at application/controllers/Wdk_frontendajax.php

1,530 lines 75.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly;
3
4 class Wdk_frontendajax extends Winter_MVC_Controller {
5
6 public function __construct(){
7 if(defined( 'WP_DEBUG' ) && WP_DEBUG) {
8 ini_set('display_errors',1);
9 ini_set('display_startup_errors',1);
10 error_reporting(-1);
11 }
12
13 parent::__construct();
14
15 $this->data['is_ajax'] = true;
16
17 }
18
19 public function index(&$output=NULL, $atts=array())
20 {
21
22 }
23
24 public function map_infowindow() {
25 $this->load->load_helper('listing');
26 $this->load->model('listing_m');
27 $this->load->model('listingfield_m');
28
29 $data = array();
30 $data['message'] = '';
31 $listing_post_id = NULL;
32 if(isset($_POST['listing_post_id']))
33 $listing_post_id = sanitize_text_field($_POST['listing_post_id']);
34
35 $listing = $this->load->listing_m->get($listing_post_id, TRUE);
36
37 if(!empty($listing)) {
38 $data['popup_content'] = wdk_listing_card($listing, array('infobox' => true), false, '<div class="infobox map-box">%1$s<div>');
39 } else {
40 $data['popup_content'] = __( 'Listing is missing', 'wpdirectorykit' );
41 }
42
43 $data['success'] = true;
44
45 $this->output($data);
46 }
47
48 public function map_infowindow_dash() {
49 $this->load->load_helper('listing');
50 $this->load->model('listing_m');
51 $this->load->model('listingfield_m');
52
53 $data = array();
54 $data['message'] = '';
55 $listing_post_id = NULL;
56 if(isset($_POST['listing_post_id']))
57 $listing_post_id = sanitize_text_field($_POST['listing_post_id']);
58
59 $listing = $this->load->listing_m->get($listing_post_id, TRUE);
60
61 if(!empty($listing)) {
62 $data['popup_content'] = wdk_listing_card($listing, [], false, '<div class="infobox map-box">%1$s<div>', 'result_item_card_dash_edit');
63 } else {
64 $data['popup_content'] = __( 'Listing is missing', 'wpdirectorykit' );
65 }
66
67 $data['success'] = true;
68
69 $this->output($data);
70 }
71
72 public function treefieldid($output="", $atts=array(), $instance=NULL)
73 {
74 $this->load->load_helper('listing');
75 $this->load->model('listing_m');
76 $this->load->model('listingfield_m');
77
78 $data = array();
79 $data['message'] = __('No message returned!', 'wpdirectorykit');
80 $results = array();
81
82 $parameters = array();
83
84 foreach ($_POST as $key => $value) {
85 $parameters[$key] = sanitize_text_field($value);
86 }
87
88 $table_name = $table = $parameters['table'];
89
90 if(empty($parameters['empty_value']))
91 $parameters['empty_value'] = ' - ';
92
93 if(empty($parameters['limit']))
94 $parameters['limit'] = 10;
95
96 if(empty($parameters['attribute_id']))
97 $parameters['attribute_id'] = 'id';
98
99 if(empty($parameters['attribute_value']))
100 $parameters['attribute_value'] = 'address';
101
102 if(empty($parameters['offset']))
103 $parameters['offset'] = 0;
104
105 if(empty($parameters['sql_where']))
106 $parameters['sql_where'] = '';
107
108 if(empty($parameters['hide_fields']))
109 $parameters['hide_fields'] = '';
110
111 $start_id = '';
112 if(isset($parameters['start_id']))
113 $start_id = $parameters['start_id'];
114
115 if($parameters['offset'] == 0) // currently don't have load_more functionality'
116
117 if(!empty($parameters['empty_value']))
118 {
119 $results[0]['key'] = '';
120 $results[0]['value'] = sanitize_text_field($parameters['empty_value']);
121 }
122
123 // it's model
124
125 if($table == 'calendar_listing_m')
126 $table = 'listing_m';
127
128 $post_table = $this->db->prefix.'posts';
129
130 $table_name = substr($table,0, -2);
131
132 $attr_id = preg_replace("/[^0-9a-zA-Z_\-]/", "",sanitize_text_field($parameters['attribute_id']));
133 $attr_val = preg_replace("/[^0-9a-zA-Z_\-]/", "",sanitize_text_field($parameters['attribute_value']));
134
135
136 $attr_search = sanitize_text_field($parameters['search_term']);
137 $skip_id = intval($parameters['skip_id']);
138 $language_id = intval($parameters['language_id']);
139
140 if(empty($language_id))
141 $language_id = NULL;
142
143 $id_part="";
144 if(is_numeric($attr_search))
145 $id_part = "$attr_id=$attr_search OR ";
146
147 if($table == 'icons_list') {
148 $icons = $this->get_fa_icons();
149
150 $tree_results = array();
151
152 if(empty($attr_search)) {
153 $tree_results = $icons;
154 } else {
155 foreach ($icons as $c){
156 if (stripos($c, $attr_search) !== FALSE){
157 //if $c starts with $input, add to matches list
158 $tree_results[] = $c;
159 } else if (strcmp($attr_search, $c) < 0){
160 //$input comes after $c in alpha order
161 //since $colors is sorted, we know that we won't find any more matches
162 continue;
163 }
164 }
165 }
166 $tree_results = array_slice($tree_results,intval($parameters['offset']), intval($parameters['limit']));
167 // limit
168
169 } else {
170 $this->load->model($table);
171
172 $where = array();
173 if(!empty($attr_search)) {
174 $attr_val_sql = $attr_val;
175 if($attr_val == 'location_title') {
176 $this->load->model($table);
177 $attr_val_sql = $this->$table->_table_name.'.location_title';
178 } elseif($attr_val == 'category_title'){
179 $this->load->model($table);
180 $attr_val_sql = $this->$table->_table_name.'.category_title';
181 }
182
183 $where["($id_part $attr_val_sql LIKE '%$attr_search%')"] = NULL;
184 }
185
186 if(!empty($parameters['hide_fields'])) {
187 if($table == 'location_m') {
188 $sql_where = esc_sql($this->$table->_table_name.'.idlocation').' NOT IN ('.esc_sql(sanitize_text_field($parameters['hide_fields'])).')';
189 foreach (explode(',', $parameters['hide_fields']) as $key => $id) {
190 $sql_where .= ' AND CONCAT(",", '.$this->$table->_table_name.'.parent_path, ",") NOT LIKE CONCAT("%,", '.intval($id).', ",%")';
191 }
192
193 $where[$sql_where] = NULL;
194 }
195
196 if($table == 'category_m') {
197 $sql_where = esc_sql($this->$table->_table_name.'.idcategory').' NOT IN ('.esc_sql(sanitize_text_field($parameters['hide_fields'])).')';
198 foreach (explode(',', $parameters['hide_fields']) as $key => $id) {
199 $sql_where .= ' AND CONCAT(",", '.$this->$table->_table_name.'.parent_path, ",") NOT LIKE CONCAT("%,", '.intval($id).', ",%")';
200 }
201 $where[$sql_where] = NULL;
202 }
203 }
204
205 if(!empty($parameters['attr_search']))
206 $where[$parameters['attr_search']] = NULL;
207
208 if(isset($parameters['user_check']) && ($parameters['user_check'] == 'true' || $parameters['user_check'] == '1')) {
209 if($table == 'listing_m') {
210 if($parameters['table'] == 'calendar_listing_m') {
211 global $Winter_MVC_wdk_bookings;
212 $Winter_MVC_wdk_bookings->model('calendar_m');
213 $this->db->join($Winter_MVC_wdk_bookings->calendar_m->_table_name.' ON '.$post_table.'.ID = '.$Winter_MVC_wdk_bookings->calendar_m->_table_name.'.post_id');
214 }
215
216 $tree_results = $this->$table->get_pagination(intval($parameters['limit']),intval($parameters['offset']), $where, TRUE, get_current_user_id());
217 } else {
218
219 if(!empty($parameters['filter_ids'])){
220 $this->db->where(array( esc_sql($this->$table->_table_name.'.'.$this->$table->_primary_key).' IN ('.esc_sql($parameters['filter_ids']).')' => NULL));
221 }
222
223 $tree_results = $this->$table->get_pagination(intval($parameters['limit']),intval($parameters['offset']), $where );
224 }
225 } else {
226 if($parameters['table'] == 'calendar_listing_m') {
227 global $Winter_MVC_wdk_bookings;
228 $Winter_MVC_wdk_bookings->model('calendar_m');
229 $this->db->join($Winter_MVC_wdk_bookings->calendar_m->_table_name.' ON '.$post_table.'.ID = '.$Winter_MVC_wdk_bookings->calendar_m->_table_name.'.post_id');
230 }
231
232 if(!empty($parameters['filter_ids'])){
233 $this->db->where(array( esc_sql($this->$table->_table_name.'.'.$this->$table->_primary_key).' IN ('.esc_sql($parameters['filter_ids']).')' => NULL));
234 }
235
236 if($table == 'user_m') {
237 $like = "(meta_value LIKE '%wdk_%' )";
238 $tree_results = $this->$table->get_pagination(intval($parameters['limit']),intval($parameters['offset']), $where, NULL, $like);
239
240 } else {
241
242 if(method_exists($this->$table, 'get_pagination_simple')) {
243 if($table == 'location_m') {
244 $this->db->select('location_title, idlocation, level');
245 } else if($table == 'category_m') {
246 $this->db->select('category_title, idcategory, level');
247 }
248 $tree_results = $this->$table->get_pagination_simple(intval($parameters['limit']),intval($parameters['offset']), $where);
249 } else {
250 $tree_results = $this->$table->get_pagination(intval($parameters['limit']),intval($parameters['offset']), $where);
251 }
252 }
253 }
254
255 }
256
257 $ind_order=1;
258 foreach ($tree_results as $key=>$row)
259 {
260 $level_gen='';
261 if(empty($attr_search) && isset($row->level))
262 $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
263
264 $results[$ind_order]['key'] = wmvc_show_data($attr_id, $row);
265 if($table == 'listing_m') {
266 $results[$ind_order]['value'] = $level_gen
267 .'#'.wmvc_show_data($attr_id, $row).', '.wmvc_show_data($attr_val, $row);
268 } elseif($table == 'user_m') {
269 $results[$ind_order]['value'] = $level_gen
270 .'#'.wmvc_show_data($attr_id, $row).', '.wmvc_show_data($attr_val, $row).' ('.wmvc_show_data('user_email', $row).')';
271 } elseif($table == 'icons_list') {
272 $results[$ind_order]['key'] = $row;
273 if(defined('ELEMENTOR_ASSETS_URL')){
274 $results[$ind_order]['value'] = '<i class="'. $row.'"></i>&nbsp;&nbsp;'.$row;
275 } else {
276 $results[$ind_order]['value'] = $row;
277 }
278 } else {
279 $results[$ind_order]['value'] = $level_gen
280 .esc_html__(wmvc_show_data($attr_val, $row), 'wpdirectorykit');
281 }
282 $ind_order++;
283 }
284
285
286 // get current value by ID
287 $row=NULL;
288 if($table == 'icons_list') {
289 if(!empty($parameters['curr_id'])) {
290 $row = '<i class="'. $parameters['curr_id'].'"></i>&nbsp;&nbsp;'.$parameters['curr_id'];
291 }
292 } else {
293 if(!empty($parameters['curr_id']))
294 $row = $this->$table->get(intval($parameters['curr_id']), TRUE);
295 }
296
297 if($table == 'icons_list') {
298 $data['curr_val'] = $row;
299 }elseif(is_object($row))
300 {
301 $level_gen='';
302 if(isset($row->level))
303 $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
304
305 if($table == 'user_m') {
306 $data['curr_val'] = $level_gen
307 .wmvc_show_data(wmvc_show_data('attribute_value', $parameters), $row).' ('.wmvc_show_data('user_email', $row).')'.' #'.wmvc_show_data($attr_id, $row);
308 } else {
309 $data['curr_val'] = $level_gen
310 .esc_html__(wmvc_show_data(wmvc_show_data('attribute_value', $parameters), $row), 'wpdirectorykit');
311 }
312
313
314 //if(!empty($start_id) && $start_id == $parameters['curr_id'] && isset($parameters['sub_empty_value']) && !empty($parameters['sub_empty_value'])) $this->data['curr_val'] = wmvc_show_data('sub_empty_value', $parameters);
315 //elseif(!empty($start_id) && $start_id == $parameters['curr_id']) $this->data['curr_val'] = $parameters['empty_value'];
316 }
317 else
318 {
319 $data['curr_val'] = $parameters['empty_value'];
320 }
321
322 $this->data['success'] = true;
323
324 $data['results'] = $results;
325 //$data['sql'] = $this->db->last_query();
326 $this->output($data);
327 }
328
329 public function treefieldid_checkboxes($output="", $atts=array(), $instance=NULL)
330 {
331 $this->load->load_helper('listing');
332 $this->load->model('listing_m');
333 $this->load->model('listingfield_m');
334
335 $data = array();
336 $data['message'] = __('No message returned!', 'wpdirectorykit');
337 $results = array();
338
339 $parameters = array();
340
341 foreach ($_POST as $key => $value) {
342 $parameters[$key] = sanitize_text_field($value);
343 }
344
345 $table_name = $table = $parameters['table'];
346
347 if(empty($parameters['empty_value']))
348 $parameters['empty_value'] = ' - ';
349
350 if(empty($parameters['limit']))
351 $parameters['limit'] = 10;
352
353 if(empty($parameters['attribute_id']))
354 $parameters['attribute_id'] = 'id';
355
356 if(empty($parameters['attribute_value']))
357 $parameters['attribute_value'] = 'address';
358
359 if(empty($parameters['offset']))
360 $parameters['offset'] = 0;
361
362 if(empty($parameters['sql_where']))
363 $parameters['sql_where'] = '';
364
365 if(empty($parameters['hide_fields']))
366 $parameters['hide_fields'] = '';
367
368 $start_id = '';
369 if(isset($parameters['start_id']))
370 $start_id = $parameters['start_id'];
371
372 if($parameters['offset'] == 0) // currently don't have load_more functionality'
373
374 if(!empty($parameters['empty_value']))
375 {
376 $results[0]['key'] = '';
377 $results[0]['value'] = sanitize_text_field($parameters['empty_value']);
378 }
379
380 // it's model
381
382 if($table == 'calendar_listing_m')
383 $table = 'listing_m';
384
385 $table_name = substr($table,0, -2);
386 $attr_id = preg_replace("/[^0-9a-zA-Z_\-]/", "",sanitize_text_field($parameters['attribute_id']));
387 $attr_val = preg_replace("/[^0-9a-zA-Z_\-]/", "",sanitize_text_field($parameters['attribute_value']));
388
389 $attr_search = sanitize_text_field($parameters['search_term']);
390 $skip_id = intval($parameters['skip_id']);
391 $language_id = intval($parameters['language_id']);
392
393 if(empty($language_id))
394 $language_id = NULL;
395
396 $id_part="";
397 if(is_numeric($attr_search))
398 $id_part = "$attr_id=$attr_search OR ";
399
400 $this->load->model($table);
401
402 $where = array();
403 if(!empty($attr_search))
404 $where["($id_part $attr_val LIKE '%$attr_search%')"] = NULL;
405
406 if(isset($parameters['selected']) && !empty($parameters['selected'])) {
407
408 if(is_string($parameters['selected']) && strpos($parameters['selected'], ',') !== FALSE){
409 $selected = explode(',', $parameters['selected']);
410 } elseif(is_string($parameters['selected'])){
411 $selected = array($parameters['selected']);
412 }
413
414 $ids = array();
415 foreach($selected as $selected_item) {
416 if(!empty($selected_item) && is_intval($selected_item)) {
417 $ids [] = $selected_item;
418 }
419 }
420
421 /* where in */
422 if(!empty($ids)){
423 $this->db->order_by('FIELD('.$this->$table->_table_name.'.'.$this->$table->_primary_key.', '. implode(',', array_reverse($ids)) . ') DESC');
424 if(intval($parameters['limit']) < count($ids)) {
425 $parameters['limit'] = count($ids);
426 }
427 }
428 }
429
430 if(!empty($parameters['filter_ids'])){
431 $this->db->where(array( esc_sql($this->$table->_table_name.'.'.$this->$table->_primary_key).' IN ('.esc_sql($parameters['filter_ids']).')' => NULL));
432 }
433
434 if(!empty($parameters['hide_fields'])) {
435 if($table == 'location_m') {
436 $sql_where = esc_sql($this->$table->_table_name.'.idlocation').' NOT IN ('.esc_sql(sanitize_text_field($parameters['hide_fields'])).')';
437 foreach (explode(',', $parameters['hide_fields']) as $key => $id) {
438 $sql_where .= ' AND CONCAT(",", '.$this->$table->_table_name.'.parent_path, ",") NOT LIKE CONCAT("%,", '.intval($id).', ",%")';
439 }
440
441 $where[$sql_where] = NULL;
442 }
443
444 if($table == 'category_m') {
445 $sql_where = esc_sql($this->$table->_table_name.'.idcategory').' NOT IN ('.esc_sql(sanitize_text_field($parameters['hide_fields'])).')';
446 foreach (explode(',', $parameters['hide_fields']) as $key => $id) {
447 $sql_where .= ' AND CONCAT(",", '.$this->$table->_table_name.'.parent_path, ",") NOT LIKE CONCAT("%,", '.intval($id).', ",%")';
448 }
449 $where[$sql_where] = NULL;
450 }
451 }
452
453 $tree_results = $this->$table->get_pagination(intval($parameters['limit']),intval($parameters['offset']), $where);
454
455 $ind_order=1;
456 foreach ($tree_results as $key=>$row)
457 {
458 $level_gen='';
459 if(empty($attr_search) && isset($row->level))
460 $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
461
462 $results[$ind_order]['key'] = wmvc_show_data($attr_id, $row);
463 $results[$ind_order]['value'] = $level_gen
464 .esc_html__(wmvc_show_data($attr_val, $row), 'wpdirectorykit');
465 $ind_order++;
466 }
467
468 // get current value by ID
469 $row=NULL;
470 if(!empty($parameters['curr_id']))
471 $row = $this->$table->get(intval($parameters['curr_id']), TRUE);
472
473 if(is_object($row))
474 {
475 $level_gen='';
476 if(isset($row->level))
477 $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
478
479 $data['curr_val'] = $level_gen
480 .esc_html__(wmvc_show_data(wmvc_show_data('attribute_value', $parameters), $row), 'wpdirectorykit');
481
482 }
483 else
484 {
485 $data['curr_val'] = $parameters['empty_value'];
486 }
487
488 $this->data['success'] = true;
489
490 $data['results'] = $results;
491 //$data['sql'] = $this->db->last_query();
492 $this->output($data);
493 }
494
495 private function output($data, $print = TRUE) {
496 if($print) {
497 header('Pragma: no-cache');
498 header('Cache-Control: no-store, no-cache');
499 header('Content-Type: application/json; charset=utf8');
500 //header('Content-Length: '.$length); // special characters causing troubles
501 echo (wp_json_encode($data));
502 exit();
503 } else {
504 return $data;
505 }
506 }
507
508
509 public function select_2_ajax($output="", $atts=array(), $instance=NULL)
510 {
511 $this->load->load_helper('listing');
512 $this->load->model('listing_m');
513 $this->load->model('listingfield_m');
514
515 $data = array();
516 $data['message'] = __('No message returned!', 'wpdirectorykit');
517 $results = array();
518 $data['pagination'] = true;
519 $parameters = array();
520
521 foreach ($_POST as $key => $value) {
522 $parameters[$key] = sanitize_text_field($value);
523 }
524
525 if(empty($parameters['table'])) return false;
526
527 $model_name = $parameters['table'];
528
529 $key_column = '';
530 $print_column = '';
531
532 $search_column = '';
533 if(empty($parameters['columns_search'])) {
534 switch ($model_name) {
535 case 'category_m':
536 $this->load->model($model_name);
537 $search_column = $this->$model_name->_table_name.'.idcategory,'.$this->$model_name->_table_name.'.category_title';
538 break;
539 case 'location_m':
540 $this->load->model($model_name);
541 $search_column = $this->$model_name->_table_name.'.idlocation,'.$this->$model_name->_table_name.'.location_title';
542 break;
543
544 default:
545 # code...
546 break;
547 }
548
549 } else {
550 $search_column = $parameters['columns_search'];
551 }
552
553 if(empty($parameters['key_column'])) {
554 switch ($model_name) {
555 case 'category_m':
556 $key_column = 'idcategory';
557 break;
558 case 'location_m':
559 $key_column = 'idlocation';
560 break;
561
562 default:
563 # code...
564 break;
565 }
566 } else {
567 $key_column = $parameters['key_column'];
568 }
569
570 if(empty($parameters['print_column'])) {
571 switch ($model_name) {
572 case 'category_m':
573 $print_column = 'category_title';
574 break;
575 case 'location_m':
576 $print_column = 'location_title';
577 break;
578
579 default:
580 # code...
581 break;
582 }
583 } else {
584 $print_column = $parameters['print_column'];
585 }
586
587 $limit = 20;
588 if(!empty($parameters['limit'])) {
589 $limit = intval($parameters['limit']);
590 }
591
592 $offset = NULL;
593 if(!empty($parameters['page_result']) && $parameters['page_result'] > 1) {
594 $offset = (intval($parameters['page_result']) - 1) * $limit;
595 }
596
597 $this->load->model($model_name);
598
599 $where = array();
600 if(!empty($_POST['q']['term']) && !empty($search_column)) {
601 $sql_search = '';
602 foreach (explode(',', $search_column) as $column) {
603 if(empty($column)) continue;
604
605 if(!empty($sql_search))
606 $sql_search .= " OR ";
607
608 $sql_search .= " ".esc_sql($column)." LIKE '%".esc_sql($_POST['q']['term'])."%'";
609 }
610
611 $where ["($sql_search)"] = NULL;
612 }
613
614 $db_results_total = $this->$model_name->total($where);
615 $db_results = $this->$model_name->get_pagination($limit,$offset, $where);
616 $data['output'] = $db_results;
617
618 if (!$db_results) {
619 $data['errors'] = '';
620 } else {
621 foreach($db_results as $row) {
622
623 $level_gen='';
624 if(empty($attr_search) && isset($row->level))
625 $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
626
627 $results[] = [
628 'id'=> wmvc_show_data($key_column, $row),
629 'text'=> $level_gen.esc_html__(trim(wmvc_show_data($print_column, $row)), 'wpdirectorykit'),
630 ];
631 }
632
633 }
634
635 $data['success'] = true;
636
637 $data['results'] = $results;
638
639
640 if($db_results_total >= $limit + $offset) {
641 $data['pagination'] =[
642 "more"=> true
643 ];
644 }
645
646 //$data['sql'] = $this->db->last_query();
647 $this->output($data);
648 }
649
650 public function select_2_ajax_user($output="", $atts=array(), $instance=NULL)
651 {
652 $this->load->load_helper('listing');
653
654 $data = array();
655 $data['message'] = __('No message returned!', 'wpdirectorykit');
656 $results = array();
657 $data['pagination'] = true;
658 $parameters = array();
659
660 foreach ($_POST as $key => $value) {
661 $parameters[$key] = sanitize_text_field($value);
662 }
663
664 $model_name = 'user_m';
665
666 $key_column = '';
667 $print_column = '';
668
669 $limit = 20;
670 if(!empty($parameters['limit'])) {
671 $limit = intval($parameters['limit']);
672 }
673
674 $offset = NULL;
675 if(!empty($parameters['page_result']) && $parameters['page_result'] > 1) {
676 $offset = (intval($parameters['page_result']) - 1) * $limit;
677 }
678
679 $this->load->model($model_name);
680 $search_column = 'display_name,user_email,user_login,ID';
681 $where = array();
682 if(!empty($_POST['q']['term']) && !empty($search_column)) {
683 $sql_search = '';
684 foreach (explode(',', $search_column) as $column) {
685 if(empty($column)) continue;
686
687 if(!empty($sql_search))
688 $sql_search .= " OR ";
689
690 $sql_search .= " ".esc_sql($column)." LIKE '%".esc_sql($_POST['q']['term'])."%'";
691 }
692
693 $where ["($sql_search)"] = NULL;
694 }
695
696 $like = "(meta_value LIKE '%wdk_%' )";
697 $db_results_total = $this->$model_name->total($where, NULL, $like);
698
699 $db_results = $this->$model_name->get_pagination($limit,$offset, $where, NULL, $like);
700 $data['output'] = $db_results;
701
702 if (!$db_results) {
703 $data['errors'] = '';
704 } else {
705 foreach($db_results as $row) {
706
707 $level_gen='';
708 //if(empty($attr_search) && isset($row->level))
709 // $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
710
711 $results[] = [
712 'id'=> wmvc_show_data('ID', $row),
713 'text'=> $level_gen.trim(wmvc_show_data('display_name', $row)),
714 ];
715 }
716
717 }
718
719 $data['success'] = true;
720
721 $data['results'] = $results;
722 if($db_results_total >= $limit + $offset) {
723 $data['pagination'] =[
724 "more"=> true
725 ];
726 }
727
728 //$data['sql'] = $this->db->last_query();
729 $this->output($data);
730 }
731
732 public function wdk_tree_dropdowns($output="", $atts=array(), $instance=NULL)
733 {
734 $this->load->load_helper('listing');
735
736 $data = array();
737 $data['message'] = __('No message returned!', 'wpdirectorykit');
738 $results = array();
739 $parameters = array();
740
741 foreach ($_POST as $key => $value) {
742 $parameters[$key] = sanitize_text_field($value);
743 }
744
745 if(empty($parameters['table'])) return false;
746
747 switch ($parameters['table']) {
748 case 'category_id':
749 case 'search_category':
750 $model_name = 'category_m';
751 break;
752 case 'location_id':
753 case 'search_location':
754 $model_name = 'location_m';
755 break;
756 default:
757 # code...
758 break;
759 }
760
761 $key_column = '';
762 $print_column = '';
763 $current_id = '0';
764
765 if(!empty($parameters['id'])) {
766 $current_id = intval($parameters['id']);
767 }
768
769 if(empty($parameters['key_column'])) {
770 switch ($model_name) {
771 case 'category_m':
772 $key_column = 'idcategory';
773 break;
774 case 'location_m':
775 $key_column = 'idlocation';
776 break;
777
778 default:
779 # code...
780 break;
781 }
782 } else {
783 $key_column = $parameters['key_column'];
784 }
785
786 if(empty($parameters['print_column'])) {
787 switch ($model_name) {
788 case 'category_m':
789 $print_column = 'category_title';
790 break;
791 case 'location_m':
792 $print_column = 'location_title';
793 break;
794
795 default:
796 # code...
797 break;
798 }
799 } else {
800 $print_column = $parameters['print_column'];
801 }
802
803 $this->load->model($model_name);
804
805 $db_results = $this->$model_name->get_by(array('parent_id = '.$current_id => NULL));
806 $level = 5;
807
808 if(isset($db_results[0]->level)) {
809 $level = $db_results[0]->level;
810 }
811
812 $data['output'] = $db_results;
813
814 if (!$db_results) {
815 $data['errors'] = '';
816 } else {
817
818 if($model_name == 'category_m') {
819 $placeholder_texts = [
820 0 => esc_html__('Select Categories','wpdirectorykit'),
821 1 => esc_html__('Select Sub Categories','wpdirectorykit'),
822 2 => esc_html__('Select Sub Categories','wpdirectorykit'),
823 3 => esc_html__('Select Sub Categories','wpdirectorykit'),
824 4 => esc_html__('Select Sub Categories','wpdirectorykit'),
825 5 => esc_html__('Select Sub Categories','wpdirectorykit'),
826 ];
827 } else {
828 $placeholder_texts = [
829 0 => esc_html__('Select Country','wpdirectorykit'),
830 1 => esc_html__('Select City','wpdirectorykit'),
831 2 => esc_html__('Select Neighborhood','wpdirectorykit'),
832 3 => esc_html__('Select Sub Area','wpdirectorykit'),
833 4 => esc_html__('Select Sub Area','wpdirectorykit'),
834 5 => esc_html__('Select Sub Area','wpdirectorykit'),
835 ];
836 }
837
838 if(isset($placeholder_texts[$level])) {
839 $placeholder = $placeholder_texts[$level];
840 } else {
841 $placeholder = esc_html__('Select Sub Categories','wpdirectorykit');
842 }
843
844 $results[] = [
845 'id'=> '',
846 'text'=> $placeholder
847 ];
848
849 foreach($db_results as $row) {
850 $results[] = [
851 'id'=> wmvc_show_data($key_column, $row),
852 'text'=> esc_html__(trim(wmvc_show_data($print_column, $row)),'wpdirectorykit'),
853 ];
854 }
855
856 }
857
858 $data['success'] = true;
859 $data['results'] = $results;
860
861 //$data['sql'] = $this->db->last_query();
862 $this->output($data);
863 }
864
865
866 public function search_suggestion($output="", $atts=array(), $instance=NULL)
867 {
868 $this->load->load_helper('listing');
869 $this->load->model('category_m');
870 $this->load->model('location_m');
871 $this->load->model('listing_m');
872
873 $data = array();
874 $categories_limit = 5;
875 $categories_search_column = array('idcategory','category_title');
876 $locations_limit = 5;
877 $locations_search_column = array('idlocation','location_title');
878
879 $results = array();
880 /*
881 [
882 'field_key' => 'string',
883 'value' => 'string',
884 'print' => [
885 'html' => 'string',
886 'parsed_html' => [
887 'left_column' => 'string',
888 'middle_column' => 'string',
889 'right_column' => 'string',
890 ],
891 'parsed_content' => [
892 'icon_class' => 'string',
893 'title' => 'string',
894 'sub_title' => 'string',
895 'right_text' => 'string',
896 ]
897 ]
898 ]
899
900 */
901
902 $data['message'] = __('No message returned!', 'wpdirectorykit');
903
904 $parameters = array();
905 foreach ($_POST as $key => $value) {
906 $parameters[$key] = sanitize_text_field($value);
907 }
908
909 $search_text = '';
910 if(!empty($parameters['search']))
911 $search_text = trim($parameters['search']);
912
913 /* Categories */
914 $where = array();
915 if($search_text) {
916 $sql_search = '';
917 foreach ($categories_search_column as $column) {
918 if(!empty($sql_search))
919 $sql_search .= " OR ";
920
921 $sql_search .= " ".esc_sql($column)." LIKE '%".esc_sql($search_text)."%'";
922 }
923 $where ["($sql_search)"] = NULL;
924 $db_results = $this->category_m->get_pagination($categories_limit, NULL, $where);
925 } else {
926 $db_results = $this->category_m->get_pagination($categories_limit, NULL, array('parent_id = 0' => NULL));
927 }
928
929 if($db_results) foreach($db_results as $row) {
930 $results[] = [
931 'field_key' => 'search_category',
932 'value' => $row->category_title,
933 'print' => [
934 'parsed_content' => [
935 'icon_class' => (!empty(wmvc_show_data('font_icon_code', $row, false))) ? wmvc_show_data('font_icon_code', $row) : 'fa fa-tag',
936 'title' => esc_html__($row->category_title, 'wpdirectorykit'),
937 'sub_title' => '',
938 'right_text' => __('Category', 'wpdirectorykit')
939 ]
940 ]
941 ];
942 }
943
944 /* END Categories */
945
946 /* Locations */
947 $where = array();
948 if($search_text) {
949 $sql_search = '';
950 foreach ($locations_search_column as $column) {
951 if(!empty($sql_search))
952 $sql_search .= " OR ";
953
954 $sql_search .= " ".$this->db->prefix."wdk_locations.".esc_sql($column)." LIKE '%".esc_sql($search_text)."%'";
955 }
956 $where ["($sql_search)"] = NULL;
957
958 $select = $this->db->prefix.'wdk_locations.idlocation, '.$this->db->prefix.'wdk_locations.location_title';
959 $select .= ',location_1.location_title AS location_title_1';
960
961 $this->db->join($this->db->prefix.'wdk_locations AS location_1 ON '.$this->db->prefix.'wdk_locations.parent_id = location_1.idlocation', NULL, 'LEFT');
962 for($i = 2 ; $i <= 2; $i++) {
963 $select .= ',location_'.$i.'.location_title AS location_title_'.$i.'';
964 $this->db->join($this->db->prefix.'wdk_locations AS location_'.$i.' ON location_'.($i-1).'.parent_id = location_'.$i.'.idlocation', NULL, 'LEFT');
965 }
966 $this->db->select($select);
967 $db_results = $this->location_m->get_pagination($locations_limit, NULL, $where);
968 } else {
969 $db_results = $this->location_m->get_pagination($locations_limit, NULL, array('parent_id = 0' => NULL));
970 }
971
972 if($db_results) foreach($db_results as $row) {
973 $subtitle = '';
974
975 for($i = 1 ; $i <= 2; $i++) {
976 if(wmvc_show_data('location_title_'.$i, $row, false)){
977 $subtitle .= wmvc_show_data('location_title_'.$i, $row, false).', ';
978 }
979 }
980
981 $subtitle = substr($subtitle,0,-2);
982
983 $results[] = [
984 'field_key' => 'search_location',
985 'value' => $row->location_title,
986 'print' => [
987 'parsed_content' => [
988 'icon_class' => (!empty(wmvc_show_data('font_icon_code', $row, false))) ? wmvc_show_data('font_icon_code', $row) : 'fa fa-map-marker',
989 'title' => esc_html__($row->location_title, 'wpdirectorykit'),
990 'sub_title' => esc_html__($subtitle, 'wpdirectorykit'),
991 'right_text' => __('Location', 'wpdirectorykit')
992 ]
993 ]
994 ];
995 }
996
997 /* END Locations */
998
999 /* address suggestion if empty other */
1000 if(empty($results)) {
1001 $this->db->select('address');
1002 $db_results = $this->db->where(array("address LIKE '%".esc_sql($search_text)."%'" => NULL));
1003 $this->db->from($this->listing_m->_table_name);
1004 $this->db->group_by('address');
1005 $this->db->limit(5);
1006
1007 $query = $this->db->get();
1008 if ($this->db->num_rows() > 0) {
1009 $db_results = $this->db->results();
1010 } else {
1011 $db_results = array();
1012 }
1013
1014 if($db_results) foreach($db_results as $row) {
1015 $results[] = [
1016 'field_key' => 'address',
1017 'value' => $row->address,
1018 'print' => [
1019 'parsed_content' => [
1020 'icon_class' => 'fa fa-map-marker',
1021 'title' => $row->address,
1022 'sub_title' => '',
1023 'right_text' => __('Address', 'wpdirectorykit')
1024 ]
1025 ]
1026 ];
1027 }
1028 }
1029
1030 /* listings by title suggestion */
1031 $this->db->where(array("post_title LIKE '%".esc_sql($search_text)."%'" => NULL));
1032 $db_results = $this->listing_m->get_pagination(5, NULL, array('is_activated' => 1,'is_approved'=>1));
1033
1034 if($db_results) foreach($db_results as $row) {
1035 $results[] = [
1036 'field_key' => 'link',
1037 'value' => get_permalink($row),
1038 'print' => [
1039 'parsed_content' => [
1040 'icon_class' => 'fa fa-circle',
1041 'title' => $row->post_title,
1042 'sub_title' => '',
1043 'right_text' => __('Listing', 'wpdirectorykit')
1044 ]
1045 ]
1046 ];
1047 }
1048
1049 if(empty($results)) {
1050
1051 $name_part = str_replace(' ','+',$search_text);
1052
1053 //$url = 'http://photon.komoot.de/api/?q='.$name_part;
1054 $url = 'https://api.teleport.org/api/cities/?limit=1&search='.$name_part;
1055
1056 $request = wp_remote_get( $url );
1057 $response = '';
1058
1059 // request failed
1060 if ( is_wp_error( $request ) ) {
1061 $response = $request;
1062 }
1063 $code = (int) wp_remote_retrieve_response_code( $request );
1064
1065 // make sure the fetch was successful
1066 if (empty($response) && $code == 200 ) {
1067 $response = wp_remote_retrieve_body( $request );
1068
1069 // Decode the json
1070 $resp = json_decode( $response,true );
1071 if(!empty($resp) && isset($resp['_embedded']) && isset($resp["_embedded"]["city:search-results"]) && !empty($resp["_embedded"]["city:search-results"])) {
1072 foreach($resp["_embedded"]["city:search-results"] as $prediction)
1073 {
1074 if(isset($prediction["matching_full_name"])){
1075 $results[] = [
1076 'field_key' => 'search_location',
1077 'value' => $prediction["matching_full_name"],
1078 'print' => [
1079 'parsed_content' => [
1080 'icon_class' => 'fa fa-map-marker',
1081 'title' => $prediction["matching_full_name"],
1082 'sub_title' => '',
1083 'right_text' => ''
1084 ]
1085 ]
1086 ];
1087
1088 }
1089 break;
1090 }
1091 }
1092 }
1093 }
1094
1095 $data['success'] = true;
1096 $data['results'] = $results;
1097
1098 //$data['sql'] = $this->db->last_query();
1099 $this->output($data);
1100 }
1101
1102 public function booking_price_calculate() {
1103 $data = array();
1104 $data['success'] = false;
1105
1106 $this->load->load_helper('listing');
1107 global $Winter_MVC_wdk_bookings;
1108
1109 $Winter_MVC_wdk_bookings->model('reservation_m');
1110 $Winter_MVC_wdk_bookings->model('calendar_m');
1111
1112 $results = array();
1113 $parameters = array();
1114 foreach ($_POST as $key => $value) {
1115 $parameters[sanitize_text_field($key)] = sanitize_text_field($value);
1116 }
1117
1118 $post_id = NULL;
1119 $date_from = NULL;
1120 $date_to = NULL;
1121
1122 if(isset($parameters['post_id'])) {
1123 $post_id = $parameters['post_id'];
1124 }
1125
1126 if(isset($parameters['date_from'])) {
1127 $date_from = wdk_normalize_date_db($parameters['date_from']);
1128 }
1129
1130 if(isset($parameters['date_to'])) {
1131 $date_to = wdk_normalize_date_db($parameters['date_to']);
1132 }
1133
1134 if($post_id && $date_from && $date_to) {
1135 $price = $Winter_MVC_wdk_bookings->reservation_m->calculate_price($post_id, $date_from, $date_to);
1136
1137 $calendar = $Winter_MVC_wdk_bookings->calendar_m->get_by(array('post_id'=>$post_id), TRUE); // date_package_expire package_id
1138 $calendar_fees = array();
1139 if($calendar && !empty($calendar->json_data_fees))
1140 $calendar_fees = json_decode($calendar->json_data_fees );
1141
1142 $results['symbol'] = '';
1143 if(function_exists('wdk_booking_currency_symbol'))
1144 $results['symbol'] = wdk_booking_currency_symbol();
1145
1146 if($price) {
1147 $results['price'] = $price['price'];
1148 $results['total'] = $price['price'];
1149 $results['fees_data'] = array();
1150 $results['fees'] = array();
1151 foreach ($calendar_fees as $key => $fee) {
1152 if(!wmvc_show_data('is_activated', $fee, false,TRUE,TRUE)) continue;
1153 if(is_intval(wmvc_show_data('value', $fee,'',TRUE,TRUE))) {
1154 $field = wdk_generate_slug(strtolower(esc_html(wmvc_show_data('title', $fee,'-',TRUE,TRUE))));
1155 if(!wmvc_show_data('is_required', $fee, false,TRUE,TRUE) && isset($parameters['fee_'.$field]) && $parameters['fee_'.$field] == 0) {
1156 } else {
1157 $price = 0;
1158 if(wmvc_show_data('calculation_base', $fee,'',TRUE,TRUE) == 'per_night') {
1159 $nights = (int)abs(strtotime($date_from) - strtotime($date_to))/(60*60*24);
1160 $price += intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)) * $nights;
1161 } else if(wmvc_show_data('calculation_base', $fee,'',TRUE,TRUE) == 'per_person') {
1162 $price += intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)) * intval(wmvc_show_data('guests', $_POST, 0,TRUE,TRUE));
1163 } else {
1164 $price += intval(wmvc_show_data('value', $fee,'',TRUE,TRUE));
1165 }
1166 $results['fees'][wmvc_show_data('title', $fee,'',TRUE,TRUE)] = $price;
1167 $results['total'] += $price;
1168 }
1169 }
1170
1171 $results['fees_data'][$key] = $fee;
1172 $results['fees_data'][$key]->field_id = wdk_generate_slug(strtolower(esc_html(wmvc_show_data('title', $fee,'-',TRUE,TRUE))));
1173 $results['fees_data'][$key]->calculation_base_text = (isset($Winter_MVC_wdk_bookings->calendar_m->calculation_base[wmvc_show_data('calculation_base', $fee,'-',TRUE,TRUE)])) ? $Winter_MVC_wdk_bookings->calendar_m->calculation_base[wmvc_show_data('calculation_base', $fee,'-',TRUE,TRUE)] : 'per stay';
1174 }
1175 $data['success'] = true;
1176 } else {
1177 $data['popup_text_error'] = __('Those dates are not available', 'wpdirectorykit');
1178 }
1179 }
1180
1181 $data['results'] = $results;
1182
1183 //$data['sql'] = $this->db->last_query();
1184 $this->output($data);
1185 }
1186
1187 public function loading_listings() {
1188 $this->load->load_helper('listing');
1189 $this->load->load_helper('get_element_settings');
1190 $this->load->model('listing_m');
1191 $this->load->model('listingfield_m');
1192 $this->load->model('category_m');
1193
1194 $data = array();
1195 $data['message'] = '';
1196 $data['popup_text_success'] = '';
1197 $data['popup_text_error'] = '';
1198 $data['output'] = [
1199 'map_results'=>null,
1200 'listings_result'=>null,
1201 'listings_result_message'=>null,
1202 'pagination_html'=>null,
1203 'listings_count'=>null,
1204 'listings_count_html'=>null,
1205 ];
1206 $data['success'] = false;
1207
1208 $parameters = array();
1209 foreach ($_POST as $key => $value) {
1210 $parameters[$key] = sanitize_text_field($value);
1211 }
1212
1213 $options = [
1214 'offset' => 0,
1215 'limit' => 6,
1216 'current_page' => 1,
1217 'limit_pagination' => 5,
1218 'layout_type' => 'grid',
1219 ];
1220
1221 $custom_parameters = array();
1222 $parameters['url'] = strstr($parameters['url'], "#", true);
1223 $parameters['url'] = strstr($parameters['url'], "?");
1224 if(!empty($parameters['url'])) {
1225 $qr_string = trim($parameters['url'],'?');
1226 $string_par = array();
1227 parse_str($qr_string, $string_par);
1228 $custom_parameters += $string_par;
1229 }
1230
1231 $controller = 'listing';
1232 $columns = array('ID', 'location_id', 'category_id', 'post_title', 'post_date', 'search', 'order_by','is_featured', 'address');
1233 $external_columns = array('location_id', 'category_id', 'post_title');
1234
1235 if(isset($parameters['el_results_id'])) {
1236 wdk_prepare_search_query_GET($columns, $controller.'_m', $external_columns, $custom_parameters);
1237 $data['output']['listings_count'] = $this->listing_m->total(array('is_activated' => 1,'is_approved'=>1));
1238 $data['output']['listings_count_html'] = $data['output']['listings_count'].' '.esc_html__('Listings', 'wpdirectorykit');
1239
1240 if(defined( 'WP_DEBUG' ) && WP_DEBUG)
1241 $data['listings_count_sql'] = $this->db->last_query();
1242
1243 if(isset($custom_parameters['wmvc_paged']))
1244 $options['current_page'] = intval(wmvc_xss_clean($custom_parameters['wmvc_paged']));
1245
1246 $get_settings_el_results = new WdkGetElementSettings($parameters['el_results_page_id'],$parameters['el_results_id'],$parameters['el_results_type']);
1247 $settings_el_results = $get_settings_el_results->get_settings();
1248 $settings_el_results = $settings_el_results['settings'];
1249
1250 if(wmvc_show_data('per_page', $settings_el_results, false)) {
1251 $options['limit'] = wmvc_show_data('per_page', $settings_el_results, false);
1252 }
1253
1254 if(wmvc_show_data('layout_type', $settings_el_results, false)) {
1255 $options['layout_type'] = wmvc_show_data('layout_type', $settings_el_results, false);
1256 }
1257
1258 $offset = $options['limit']*( $options['current_page']-1);
1259
1260 global $_GET;
1261 $temp_get = $_GET;
1262 $_GET = $custom_parameters;
1263 do_action('wpdirectorykit/ajax/loading_listings');
1264 $REQUEST_URI = $_SERVER["REQUEST_URI"];
1265
1266 $_SERVER["REQUEST_URI"] = $_SERVER['HTTP_REFERER'];
1267
1268 $data['output']['pagination_html'] = wdk_wp_frontend_paginate($data['output']['listings_count'], $options['limit'], 'wmvc_paged', array(), TRUE,
1269 FALSE, FALSE, $options['limit_pagination']);
1270
1271 $_SERVER["REQUEST_URI"] = $REQUEST_URI;
1272 $_GET = $temp_get;
1273
1274 wdk_prepare_search_query_GET($columns, $controller.'_m', $external_columns, $custom_parameters);
1275 $listings_result = $this->listing_m->get_pagination($options['limit'], $offset, array('is_activated' => 1,'is_approved'=>1));
1276
1277 if(defined( 'WP_DEBUG' ) && WP_DEBUG)
1278 $data['listings_result_sql'] = $this->db->last_query();
1279
1280 if(wmvc_show_data('layout_type', $settings_el_results, false)) {
1281 $settings_el_results['content_button_icon'] = $get_settings_el_results->generate_icon(wmvc_show_data('layout_type', $settings_el_results, false));
1282 } else {
1283 $settings_el_results['content_button_icon'] = '';
1284 }
1285
1286 if($listings_result) {
1287 foreach ($listings_result as $key => $listing) {
1288 $listing->card_view = '';
1289
1290 if (
1291 wdk_get_option('wdk_experimental_features') && wdk_get_option('wdk_experimental_listing_card_elementor_layout') &&
1292 wmvc_show_data('is_custom_layout_enable', $settings_el_results) == 'yes'
1293 ) {
1294 if ($options['layout_type'] == 'list' && wmvc_show_data('custom_layout_id_list', $settings_el_results, false)) {
1295 $content = '';
1296 $post_data = get_post(wmvc_show_data('custom_layout_id_list', $settings_el_results, false));
1297
1298 global $wdk_listing_id;
1299 $wdk_listing_id = wmvc_show_data('post_id', $listing);
1300 if ($post_data) {
1301 if ($post_data->post_type == 'page' || $post_data->post_type == 'elementor_library') {
1302 $elementor_instance = \Elementor\Plugin::instance();
1303 $content = $elementor_instance->frontend->get_builder_content_for_display(wmvc_show_data('custom_layout_id_list', $settings_el_results, false));
1304 if (empty($content))
1305 $content = $post_data->post_content;
1306 } else {
1307 $content = $post_data->post_content;
1308 }
1309 }
1310 $listing->card_view = ($content);
1311 } elseif ($options['layout_type'] == 'grid' && wmvc_show_data('custom_layout_id_grid', $settings_el_results, false)) {
1312 $content = '';
1313 $post_data = get_post( wmvc_show_data('custom_layout_id_grid', $settings_el_results, false));
1314
1315 global $wdk_listing_id;
1316 $wdk_listing_id = wmvc_show_data('post_id', $listing);
1317 if ($post_data) {
1318 if ($post_data->post_type == 'page' || $post_data->post_type == 'elementor_library') {
1319 $elementor_instance = \Elementor\Plugin::instance();
1320 $content = $elementor_instance->frontend->get_builder_content_for_display(wmvc_show_data('custom_layout_id_grid', $settings_el_results, false));
1321 if (empty($content))
1322 $content = $post_data->post_content;
1323 } else {
1324 $content = $post_data->post_content;
1325 }
1326 }
1327 $listing->card_view = ($content);
1328 } else {
1329 $listing->card_view = wdk_listing_card($listing, $settings_el_results);
1330 }
1331 } else {
1332 $listing->card_view = wdk_listing_card($listing, $settings_el_results);
1333 }
1334
1335 $data['output']['listings_result'][] = $listing;
1336 }
1337 } else {
1338 $data['output']['listings_result_message'] = '<p class="wdk_alert wdk_alert-danger">'.esc_html__('Results not found', 'wpdirectorykit').'</p>';
1339 }
1340
1341 }
1342
1343 /* map results */
1344 if(isset($parameters['el_map_id'])) {
1345 wdk_prepare_search_query_GET($columns, $controller.'_m', $external_columns, $custom_parameters);
1346 $map_results = $this->listing_m->get_pagination(NULL, NULL, array('is_activated' => 1,'is_approved'=>1));
1347 if(defined( 'WP_DEBUG' ) && WP_DEBUG)
1348 $data['map_results_sql'] = $this->db->last_query();
1349
1350 $get_settings_el_map = new WdkGetElementSettings($parameters['el_map_page_id'],$parameters['el_map_id'],$parameters['el_map_type']);
1351 $settings_el_map = $get_settings_el_map->get_settings();
1352 $settings_el_map = $settings_el_map['settings'];
1353
1354 foreach ($map_results as $key => $listing) {
1355 $listing->inner_marker = '';
1356
1357 $pin_icon = "";
1358 $font_class = "";
1359 $font_icon = (wmvc_show_data('conf_custom_map_pin_icon', $settings_el_map)) ? esc_url($get_settings_el_map->generate_icon($settings_el_map['conf_custom_map_pin_icon'])) : '<i class="fa fa-home"></i>';
1360 $pin_icon = (isset( $settings_el_map['conf_custom_map_pin'])) ? esc_url($get_settings_el_map['conf_custom_map_pin']['url']) : '';
1361
1362 if(wmvc_show_data('conf_hide_real_location', $category) == 'yes') {
1363 $listing->listing_lat = wdk_move_gps($listing->listing_lat);
1364 $listing->listing_lng = wdk_move_gps($listing->listing_lng);
1365 }
1366
1367 if(!empty(wmvc_show_data('category_id', $listing))){
1368 $category = $this->category_m->get_data(wmvc_show_data('category_id', $listing));
1369 if(wmvc_show_data('marker_image_id', $category, false, TRUE, TRUE)){
1370 $pin_icon = wdk_image_src($category, 'full', NULL,'marker_image_id');
1371 } else if(!empty(wmvc_show_data('font_icon_code', $category))) {
1372 $font_class = wmvc_show_data('font_icon_code', $category);
1373 }
1374 } else {
1375 $font_class = "";
1376 }
1377
1378 if($pin_icon){
1379 $listing->inner_marker = '<div class="wdk_marker-container wdk_marker-container-image"><img src='.$pin_icon.'></img></div>';
1380 }elseif($font_icon && empty($font_class)){
1381 $listing->inner_marker = '<div class="wdk_marker-container category_id_'.esc_js(wmvc_show_data('category_id', $listing)).'"><div class="front wdk_face">'.$font_icon.'</div><div class="wdk_marker-card"><div class="wdk_marker-arrow"></div></div></div>';
1382 }else{
1383 $listing->inner_marker = '<div class="wdk_marker-container category_id_'.esc_js(wmvc_show_data('category_id', $listing)).'"><div class="front wdk_face"><i class="'.esc_html($font_class).'"></i></div><div class="wdk_marker-card"><div class="wdk_marker-arrow"></div></div></div>';
1384 }
1385
1386 $data['output']['map_results'][] = $listing;
1387 }
1388 }
1389
1390 $data['success'] = true;
1391 $this->output($data);
1392
1393 }
1394
1395 private function get_fa_icons() {
1396
1397 /* icons font Awesome 5 */
1398
1399 return array("fab fa-500px","fab fa-accessible-icon","fab fa-accusoft","fas fa-address-book","far fa-address-book","fas fa-address-card","far fa-address-card","fas fa-adjust","fab fa-adn","fab fa-adversal","fab fa-affiliatetheme","fab fa-algolia",
1400 "fas fa-align-center","fas fa-align-justify","fas fa-align-left","fas fa-align-right","fab fa-amazon","fas fa-ambulance","fas fa-american-sign-language-interpreting","fab fa-amilia","fas fa-anchor","fab fa-android","fab fa-angellist",
1401 "fas fa-angle-double-down","fas fa-angle-double-left","fas fa-angle-double-right","fas fa-angle-double-up","fas fa-angle-down","fas fa-angle-left","fas fa-angle-right","fas fa-angle-up","fab fa-angrycreative","fab fa-angular","fab fa-app-store",
1402 "fab fa-app-store-ios","fab fa-apper","fab fa-apple","fab fa-apple-pay","fas fa-archive","fas fa-arrow-alt-circle-down","far fa-arrow-alt-circle-down","fas fa-arrow-alt-circle-left","far fa-arrow-alt-circle-left","fas fa-arrow-alt-circle-right",
1403 "far fa-arrow-alt-circle-right","fas fa-arrow-alt-circle-up","far fa-arrow-alt-circle-up","fas fa-arrow-circle-down","fas fa-arrow-circle-left","fas fa-arrow-circle-right","fas fa-arrow-circle-up","fas fa-arrow-down","fas fa-arrow-left",
1404 "fas fa-arrow-right","fas fa-arrow-up","fas fa-arrows-alt","fas fa-arrows-alt-h","fas fa-arrows-alt-v","fas fa-assistive-listening-systems","fas fa-asterisk","fab fa-asymmetrik","fas fa-at","fab fa-audible","fas fa-audio-description",
1405 "fab fa-autoprefixer","fab fa-avianex","fab fa-aviato","fab fa-aws","fas fa-backward","fas fa-balance-scale","fas fa-ban","fab fa-bandcamp","fas fa-barcode","fas fa-bars","fas fa-bath","fas fa-battery-empty","fas fa-battery-full",
1406 "fas fa-battery-half","fas fa-battery-quarter","fas fa-battery-three-quarters","fas fa-bed","fas fa-beer","fab fa-behance","fab fa-behance-square","fas fa-bell","far fa-bell","fas fa-bell-slash","far fa-bell-slash","fas fa-bicycle","fab fa-bimobject",
1407 "fas fa-binoculars","fas fa-birthday-cake","fab fa-bitbucket","fab fa-bitcoin","fab fa-bity","fab fa-black-tie","fab fa-blackberry","fas fa-blind","fab fa-blogger","fab fa-blogger-b","fab fa-bluetooth","fab fa-bluetooth-b","fas fa-bold","fas fa-bolt",
1408 "fas fa-bomb","fas fa-book","fas fa-bookmark","far fa-bookmark","fas fa-braille","fas fa-briefcase","fab fa-btc","fas fa-bug","fas fa-building","far fa-building","fas fa-bullhorn","fas fa-bullseye","fab fa-buromobelexperte","fas fa-bus","fab fa-buysellads",
1409 "fas fa-calculator","fas fa-calendar","far fa-calendar","fas fa-calendar-alt","far fa-calendar-alt","fas fa-calendar-check","far fa-calendar-check","fas fa-calendar-minus","far fa-calendar-minus","fas fa-calendar-plus","far fa-calendar-plus","fas fa-calendar-times",
1410 "far fa-calendar-times","fas fa-camera","fas fa-camera-retro","fas fa-car","fas fa-caret-down","fas fa-caret-left","fas fa-caret-right","fas fa-caret-square-down","far fa-caret-square-down","fas fa-caret-square-left","far fa-caret-square-left","fas fa-caret-square-right",
1411 "far fa-caret-square-right","fas fa-caret-square-up","far fa-caret-square-up","fas fa-caret-up","fas fa-cart-arrow-down","fas fa-cart-plus","fab fa-cc-amex","fab fa-cc-apple-pay","fab fa-cc-diners-club","fab fa-cc-discover","fab fa-cc-jcb","fab fa-cc-mastercard",
1412 "fab fa-cc-paypal","fab fa-cc-stripe","fab fa-cc-visa","fab fa-centercode","fas fa-certificate","fas fa-chart-area","fas fa-chart-bar","far fa-chart-bar","fas fa-chart-line","fas fa-chart-pie","fas fa-check","fas fa-check-circle","far fa-check-circle",
1413 "fas fa-check-square","far fa-check-square","fas fa-chevron-circle-down","fas fa-chevron-circle-left","fas fa-chevron-circle-right","fas fa-chevron-circle-up","fas fa-chevron-down","fas fa-chevron-left","fas fa-chevron-right","fas fa-chevron-up",
1414 "fas fa-child","fab fa-chrome","fas fa-circle","far fa-circle","fas fa-circle-notch","fas fa-clipboard","far fa-clipboard","fas fa-clock","far fa-clock","fas fa-clone","far fa-clone","fas fa-closed-captioning","far fa-closed-captioning",
1415 "fas fa-cloud","fas fa-cloud-download-alt","fas fa-cloud-upload-alt","fab fa-cloudscale","fab fa-cloudsmith","fab fa-cloudversify","fas fa-code","fas fa-code-branch","fab fa-codepen","fab fa-codiepie","fas fa-coffee","fas fa-cog",
1416 "fas fa-cogs","fas fa-columns","fas fa-comment","far fa-comment","fas fa-comment-alt","far fa-comment-alt","fas fa-comments","far fa-comments","fas fa-compass","far fa-compass","fas fa-compress","fab fa-connectdevelop","fab fa-contao",
1417 "fas fa-copy","far fa-copy","fas fa-copyright","far fa-copyright","fab fa-cpanel","fab fa-creative-commons","fas fa-credit-card","far fa-credit-card","fas fa-crop","fas fa-crosshairs","fab fa-css3","fab fa-css3-alt","fas fa-cube","fas fa-cubes",
1418 "fas fa-cut","fab fa-cuttlefish","fab fa-d-and-d","fab fa-dashcube","fas fa-database","fas fa-deaf","fab fa-delicious","fab fa-deploydog","fab fa-deskpro","fas fa-desktop","fab fa-deviantart","fab fa-digg","fab fa-digital-ocean",
1419 "fab fa-discord","fab fa-discourse","fab fa-dochub","fab fa-docker","fas fa-dollar-sign","fas fa-dot-circle","far fa-dot-circle","fas fa-download","fab fa-draft2digital","fab fa-dribbble","fab fa-dribbble-square","fab fa-dropbox","fab fa-drupal",
1420 "fab fa-dyalog","fab fa-earlybirds","fab fa-edge","fas fa-edit","far fa-edit","fas fa-eject","fas fa-ellipsis-h","fas fa-ellipsis-v","fab fa-ember","fab fa-empire","fas fa-envelope","far fa-envelope","fas fa-envelope-open","far fa-envelope-open",
1421 "fas fa-envelope-square","fab fa-envira","fas fa-eraser","fab fa-erlang","fab fa-etsy","fas fa-euro-sign","fas fa-exchange-alt","fas fa-exclamation","fas fa-exclamation-circle","fas fa-exclamation-triangle","fas fa-expand","fas fa-expand-arrows-alt",
1422 "fab fa-expeditedssl","fas fa-external-link-alt","fas fa-external-link-square-alt","fas fa-eye","fas fa-eye-dropper","fas fa-eye-slash","far fa-eye-slash","fab fa-facebook","fab fa-facebook-f","fab fa-facebook-messenger","fab fa-facebook-square",
1423 "fas fa-fast-backward","fas fa-fast-forward","fas fa-fax","fas fa-female","fas fa-fighter-jet","fas fa-file","far fa-file","fas fa-file-alt","far fa-file-alt","fas fa-file-archive","far fa-file-archive","fas fa-file-audio","far fa-file-audio",
1424 "fas fa-file-code","far fa-file-code","fas fa-file-excel","far fa-file-excel","fas fa-file-image","far fa-file-image","fas fa-file-pdf","far fa-file-pdf","fas fa-file-powerpoint","far fa-file-powerpoint","fas fa-file-video","far fa-file-video",
1425 "fas fa-file-word","far fa-file-word","fas fa-film","fas fa-filter","fas fa-fire","fas fa-fire-extinguisher","fab fa-firefox","fab fa-first-order","fab fa-firstdraft","fas fa-flag","far fa-flag","fas fa-flag-checkered","fas fa-flask","fab fa-flickr",
1426 "fab fa-fly","fas fa-folder","far fa-folder","fas fa-folder-open","far fa-folder-open","fas fa-font","fab fa-font-awesome","fab fa-font-awesome-alt","fab fa-font-awesome-flag","fab fa-fonticons","fab fa-fonticons-fi","fab fa-fort-awesome",
1427 "fab fa-fort-awesome-alt","fab fa-forumbee","fas fa-forward","fab fa-foursquare","fab fa-free-code-camp","fab fa-freebsd","fas fa-frown","far fa-frown","fas fa-futbol","far fa-futbol","fas fa-gamepad","fas fa-gavel","fas fa-gem","far fa-gem",
1428 "fas fa-genderless","fab fa-get-pocket","fab fa-gg","fab fa-gg-circle","fas fa-gift","fab fa-git","fab fa-git-square","fab fa-github","fab fa-github-alt","fab fa-github-square","fab fa-gitkraken","fab fa-gitlab","fab fa-gitter",
1429 "fas fa-glass-martini","fab fa-glide","fab fa-glide-g","fas fa-globe","fab fa-gofore","fab fa-goodreads","fab fa-goodreads-g","fab fa-google","fab fa-google-drive","fab fa-google-play","fab fa-google-plus","fab fa-google-plus-g",
1430 "fab fa-google-plus-square","fab fa-google-wallet","fas fa-graduation-cap","fab fa-gratipay","fab fa-grav","fab fa-gripfire","fab fa-grunt","fab fa-gulp","fas fa-h-square","fab fa-hacker-news","fab fa-hacker-news-square","fas fa-hand-lizard",
1431 "far fa-hand-lizard","fas fa-hand-paper","far fa-hand-paper","fas fa-hand-peace","far fa-hand-peace","fas fa-hand-point-down","far fa-hand-point-down","fas fa-hand-point-left","far fa-hand-point-left","fas fa-hand-point-right","far fa-hand-point-right","fas fa-hand-point-up",
1432 "far fa-hand-point-up","fas fa-hand-pointer","far fa-hand-pointer","fas fa-hand-rock","far fa-hand-rock","fas fa-hand-scissors","far fa-hand-scissors","fas fa-hand-spock","far fa-hand-spock","fas fa-handshake","far fa-handshake","fas fa-hashtag","fas fa-hdd",
1433 "far fa-hdd","fas fa-heading","fas fa-headphones","fas fa-heart","far fa-heart","fas fa-heartbeat","fab fa-hire-a-helper","fas fa-history","fas fa-home","fab fa-hooli","fas fa-hospital","far fa-hospital","fab fa-hotjar","fas fa-hourglass","far fa-hourglass",
1434 "fas fa-hourglass-end","fas fa-hourglass-half","fas fa-hourglass-start","fab fa-houzz","fab fa-html5","fab fa-hubspot","fas fa-i-cursor","fas fa-id-badge","far fa-id-badge","fas fa-id-card","far fa-id-card","fas fa-image","far fa-image","fas fa-images",
1435 "far fa-images","fab fa-imdb","fas fa-inbox","fas fa-indent","fas fa-industry","fas fa-info","fas fa-info-circle","fab fa-instagram","fab fa-internet-explorer","fab fa-ioxhost","fas fa-italic","fab fa-itunes","fab fa-itunes-note","fab fa-jenkins",
1436 "fab fa-joget","fab fa-joomla","fab fa-js","fab fa-js-square","fab fa-jsfiddle","fas fa-key","fas fa-keyboard","far fa-keyboard","fab fa-keycdn","fab fa-kickstarter","fab fa-kickstarter-k","fas fa-language","fas fa-laptop","fab fa-laravel",
1437 "fab fa-lastfm","fab fa-lastfm-square","fas fa-leaf","fab fa-leanpub","fas fa-lemon","far fa-lemon","fab fa-less","fas fa-level-down-alt","fas fa-level-up-alt","fas fa-life-ring","far fa-life-ring","fas fa-lightbulb","far fa-lightbulb",
1438 "fab fa-line","fas fa-link","fab fa-linkedin","fab fa-linkedin-in","fab fa-linode","fab fa-linux","fas fa-lira-sign","fas fa-list","fas fa-list-alt","far fa-list-alt","fas fa-list-ol","fas fa-list-ul","fas fa-location-arrow",
1439 "fas fa-lock","fas fa-lock-open","fas fa-long-arrow-alt-down","fas fa-long-arrow-alt-left","fas fa-long-arrow-alt-right","fas fa-long-arrow-alt-up","fas fa-low-vision","fab fa-lyft","fab fa-magento","fas fa-magic","fas fa-magnet",
1440 "fas fa-male","fas fa-map","far fa-map","fas fa-map-marker","fas fa-map-marker-alt","fas fa-map-pin","fas fa-map-signs","fas fa-mars","fas fa-mars-double","fas fa-mars-stroke","fas fa-mars-stroke-h","fas fa-mars-stroke-v","fab fa-maxcdn",
1441 "fab fa-medapps","fab fa-medium","fab fa-medium-m","fas fa-medkit","fab fa-medrt","fab fa-meetup","fas fa-meh","far fa-meh","fas fa-mercury","fas fa-microchip","fas fa-microphone","fas fa-microphone-slash","fab fa-microsoft","fas fa-minus",
1442 "fas fa-minus-circle","fas fa-minus-square","far fa-minus-square","fab fa-mix","fab fa-mixcloud","fab fa-mizuni","fas fa-mobile","fas fa-mobile-alt","fab fa-modx","fab fa-monero","fas fa-money-bill-alt","far fa-money-bill-alt",
1443 "fas fa-moon","far fa-moon","fas fa-motorcycle","fas fa-mouse-pointer","fas fa-music","fab fa-napster","fas fa-neuter","fas fa-newspaper","far fa-newspaper","fab fa-nintendo-switch","fab fa-node","fab fa-node-js","fab fa-npm","fab fa-ns8",
1444 "fab fa-nutritionix","fas fa-object-group","far fa-object-group","fas fa-object-ungroup","far fa-object-ungroup","fab fa-odnoklassniki","fab fa-odnoklassniki-square","fab fa-opencart","fab fa-openid","fab fa-opera","fab fa-optin-monster","fab fa-osi",
1445 "fas fa-outdent","fab fa-page4","fab fa-pagelines","fas fa-paint-brush","fab fa-palfed","fas fa-paper-plane","far fa-paper-plane","fas fa-paperclip","fas fa-paragraph","fas fa-paste","fab fa-patreon","fas fa-pause","fas fa-pause-circle",
1446 "far fa-pause-circle","fas fa-paw","fab fa-paypal","fas fa-pen-square","fas fa-pencil-alt","fas fa-percent","fab fa-periscope","fab fa-phabricator","fab fa-phoenix-framework","fas fa-phone","fas fa-phone-square","fas fa-phone-volume",
1447 "fab fa-pied-piper","fab fa-pied-piper-alt","fab fa-pied-piper-pp","fab fa-pinterest","fab fa-pinterest-p","fab fa-pinterest-square","fas fa-plane","fas fa-play","fas fa-play-circle","far fa-play-circle","fab fa-playstation","fas fa-plug","fas fa-plus",
1448 "fas fa-plus-circle","fas fa-plus-square","far fa-plus-square","fas fa-podcast","fas fa-pound-sign","fas fa-power-off","fas fa-print","fab fa-product-hunt","fab fa-pushed","fas fa-puzzle-piece","fab fa-python","fab fa-qq","fas fa-qrcode","fas fa-question",
1449 "fas fa-question-circle","far fa-question-circle","fab fa-quora","fas fa-quote-left","fas fa-quote-right","fas fa-random","fab fa-ravelry","fab fa-react","fab fa-rebel","fas fa-recycle","fab fa-red-river","fab fa-reddit","fab fa-reddit-alien",
1450 "fab fa-reddit-square","fas fa-redo","fas fa-redo-alt","fas fa-registered","far fa-registered","fab fa-rendact","fab fa-renren","fas fa-reply","fas fa-reply-all","fab fa-replyd","fab fa-resolving","fas fa-retweet","fas fa-road","fas fa-rocket","fab fa-rocketchat",
1451 "fab fa-rockrms","fas fa-rss","fas fa-rss-square","fas fa-ruble-sign","fas fa-rupee-sign","fab fa-safari","fab fa-sass","fas fa-save","far fa-save","fab fa-schlix","fab fa-scribd","fas fa-search","fas fa-search-minus","fas fa-search-plus",
1452 "fab fa-searchengin","fab fa-sellcast","fab fa-sellsy","fas fa-server","fab fa-servicestack","fas fa-share","fas fa-share-alt","fas fa-share-alt-square","fas fa-share-square","far fa-share-square","fas fa-shekel-sign","fas fa-shield-alt",
1453 "fas fa-ship","fab fa-shirtsinbulk","fas fa-shopping-bag","fas fa-shopping-basket","fas fa-shopping-cart","fas fa-shower","fas fa-sign-in-alt","fas fa-sign-language","fas fa-sign-out-alt","fas fa-signal","fab fa-simplybuilt","fab fa-sistrix",
1454 "fas fa-sitemap","fab fa-skyatlas","fab fa-skype","fab fa-slack","fab fa-slack-hash","fas fa-sliders-h","fab fa-slideshare","fas fa-smile","far fa-smile","fab fa-snapchat","fab fa-snapchat-ghost","fab fa-snapchat-square","fas fa-snowflake",
1455 "far fa-snowflake","fas fa-sort","fas fa-sort-alpha-down","fas fa-sort-alpha-up","fas fa-sort-amount-down","fas fa-sort-amount-up","fas fa-sort-down","fas fa-sort-numeric-down","fas fa-sort-numeric-up","fas fa-sort-up","fab fa-soundcloud",
1456 "fas fa-space-shuttle","fab fa-speakap","fas fa-spinner","fab fa-spotify","fas fa-square","far fa-square","fab fa-stack-exchange","fab fa-stack-overflow","fas fa-star","far fa-star","fas fa-star-half","far fa-star-half","fab fa-staylinked",
1457 "fab fa-steam","fab fa-steam-square","fab fa-steam-symbol","fas fa-step-backward","fas fa-step-forward","fas fa-stethoscope","fab fa-sticker-mule","fas fa-sticky-note","far fa-sticky-note","fas fa-stop","fas fa-stop-circle","far fa-stop-circle",
1458 "fab fa-strava","fas fa-street-view","fas fa-strikethrough","fab fa-stripe","fab fa-stripe-s","fab fa-studiovinari","fab fa-stumbleupon","fab fa-stumbleupon-circle","fas fa-subscript","fas fa-subway","fas fa-suitcase","fas fa-sun","far fa-sun",
1459 "fab fa-superpowers","fas fa-superscript","fab fa-supple","fas fa-sync","fas fa-sync-alt","fas fa-table","fas fa-tablet","fas fa-tablet-alt","fas fa-tachometer-alt","fas fa-tag","fas fa-tags","fas fa-tasks","fas fa-taxi","fab fa-telegram",
1460 "fab fa-telegram-plane","fab fa-tencent-weibo","fas fa-terminal","fas fa-text-height","fas fa-text-width","fas fa-th","fas fa-th-large","fas fa-th-list","fab fa-themeisle","fas fa-thermometer-empty","fas fa-thermometer-full","fas fa-thermometer-half",
1461 "fas fa-thermometer-quarter","fas fa-thermometer-three-quarters","fas fa-thumbs-down","far fa-thumbs-down","fas fa-thumbs-up","far fa-thumbs-up","fas fa-thumbtack","fas fa-ticket-alt","fas fa-times","fas fa-times-circle","far fa-times-circle",
1462 "fas fa-tint","fas fa-toggle-off","fas fa-toggle-on","fas fa-trademark","fas fa-train","fas fa-transgender","fas fa-transgender-alt","fas fa-trash","fas fa-trash-alt","far fa-trash-alt","fas fa-tree","fab fa-trello","fab fa-tripadvisor",
1463 "fas fa-trophy","fas fa-truck","fas fa-tty","fab fa-tumblr","fab fa-tumblr-square","fas fa-tv","fab fa-twitch","fab fa-twitter","fab fa-twitter-square","fab fa-typo3","fab fa-uber","fab fa-uikit","fas fa-umbrella","fas fa-underline",
1464 "fas fa-undo","fas fa-undo-alt","fab fa-uniregistry","fas fa-universal-access","fas fa-university","fas fa-unlink","fas fa-unlock","fas fa-unlock-alt","fab fa-untappd","fas fa-upload","fab fa-usb","fas fa-user","far fa-user",
1465 "fas fa-user-circle","far fa-user-circle","fas fa-user-md","fas fa-user-plus","fas fa-user-secret","fas fa-user-times","fas fa-users","fab fa-ussunnah","fas fa-utensil-spoon","fas fa-utensils","fab fa-vaadin","fas fa-venus",
1466 "fas fa-venus-double","fas fa-venus-mars","fab fa-viacoin","fab fa-viadeo","fab fa-viadeo-square","fab fa-viber","fas fa-video","fab fa-vimeo","fab fa-vimeo-square","fab fa-vimeo-v","fab fa-vine","fab fa-vk","fab fa-vnv",
1467 "fas fa-volume-down","fas fa-volume-off","fas fa-volume-up","fab fa-vuejs","fab fa-weibo","fab fa-weixin","fab fa-whatsapp","fab fa-whatsapp-square","fas fa-wheelchair","fab fa-whmcs","fas fa-wifi","fab fa-wikipedia-w","fas fa-window-close",
1468 "far fa-window-close","fas fa-window-maximize","far fa-window-maximize","fas fa-window-minimize","fas fa-window-restore","far fa-window-restore","fab fa-windows","fas fa-won-sign","fab fa-wordpress","fab fa-wordpress-simple",
1469 "fab fa-wpbeginner","fab fa-wpexplorer","fab fa-wpforms","fas fa-wrench","fab fa-xbox","fab fa-xing","fab fa-xing-square","fab fa-y-combinator","fab fa-yahoo","fab fa-yandex","fab fa-yandex-international","fab fa-yelp","fas fa-yen-sign","fab fa-yoast","fab fa-youtube");
1470
1471
1472 /* icons font Awesome 4 */
1473 return array("fa fa-500px","fa fa-address-book","fa fa-address-book-o","fa fa-address-card","fa fa-address-card-o","fa fa-adjust","fa fa-adn","fa fa-align-center","fa fa-align-justify","fa fa-align-left","fa fa-align-right",
1474 "fa fa-amazon","fa fa-ambulance","fa fa-american-sign-language-interpreting","fa fa-anchor","fa fa-android","fa fa-angellist","fa fa-angle-double-down","fa fa-angle-double-left","fa fa-angle-double-right","fa fa-angle-double-up",
1475 "fa fa-angle-down","fa fa-angle-left","fa fa-angle-right","fa fa-angle-up","fa fa-apple","fa fa-archive","fa fa-area-chart","fa fa-arrow-circle-down","fa fa-arrow-circle-left","fa fa-arrow-circle-o-down","fa fa-arrow-circle-o-left",
1476 "fa fa-arrow-circle-o-right","fa fa-arrow-circle-o-up","fa fa-arrow-circle-right","fa fa-arrow-circle-up","fa fa-arrow-down","fa fa-arrow-left","fa fa-arrow-right","fa fa-arrow-up","fa fa-arrows","fa fa-arrows-alt","fa fa-arrows-h",
1477 "fa fa-arrows-v","fa fa-assistive-listening-systems","fa fa-asterisk","fa fa-at","fa fa-audio-description","fa fa-backward","fa fa-balance-scale","fa fa-ban","fa fa-bandcamp","fa fa-bar-chart","fa fa-barcode","fa fa-bars","fa fa-bath",
1478 "fa fa-battery-empty","fa fa-battery-full","fa fa-battery-half","fa fa-battery-quarter","fa fa-battery-three-quarters","fa fa-bed","fa fa-beer","fa fa-behance","fa fa-behance-square","fa fa-bell","fa fa-bell-o","fa fa-bell-slash",
1479 "fa fa-bell-slash-o","fa fa-bicycle","fa fa-binoculars","fa fa-birthday-cake","fa fa-bitbucket","fa fa-bitbucket-square","fa fa-black-tie","fa fa-blind","fa fa-bluetooth","fa fa-bluetooth-b","fa fa-bold","fa fa-bolt","fa fa-bomb","fa fa-book",
1480 "fa fa-bookmark","fa fa-bookmark-o","fa fa-braille","fa fa-briefcase","fa fa-btc","fa fa-bug","fa fa-building","fa fa-building-o","fa fa-bullhorn","fa fa-bullseye","fa fa-bus","fa fa-buysellads","fa fa-calculator","fa fa-calendar",
1481 "fa fa-calendar-check-o","fa fa-calendar-minus-o","fa fa-calendar-o","fa fa-calendar-plus-o","fa fa-calendar-times-o","fa fa-camera","fa fa-camera-retro","fa fa-car","fa fa-caret-down","fa fa-caret-left","fa fa-caret-right",
1482 "fa fa-caret-square-o-down","fa fa-caret-square-o-left","fa fa-caret-square-o-right","fa fa-caret-square-o-up","fa fa-caret-up","fa fa-cart-arrow-down","fa fa-cart-plus","fa fa-cc","fa fa-cc-amex","fa fa-cc-diners-club",
1483 "fa fa-cc-discover","fa fa-cc-jcb","fa fa-cc-mastercard","fa fa-cc-paypal","fa fa-cc-stripe","fa fa-cc-visa","fa fa-certificate","fa fa-chain-broken","fa fa-check","fa fa-check-circle","fa fa-check-circle-o","fa fa-check-square",
1484 "fa fa-check-square-o","fa fa-chevron-circle-down","fa fa-chevron-circle-left","fa fa-chevron-circle-right","fa fa-chevron-circle-up","fa fa-chevron-down","fa fa-chevron-left","fa fa-chevron-right","fa fa-chevron-up","fa fa-child",
1485 "fa fa-chrome","fa fa-circle","fa fa-circle-o","fa fa-circle-o-notch","fa fa-circle-thin","fa fa-clipboard","fa fa-clock-o","fa fa-clone","fa fa-cloud","fa fa-cloud-download","fa fa-cloud-upload","fa fa-code","fa fa-code-fork","fa fa-codepen",
1486 "fa fa-codiepie","fa fa-coffee","fa fa-cog","fa fa-cogs","fa fa-columns","fa fa-comment","fa fa-comment-o","fa fa-commenting","fa fa-commenting-o","fa fa-comments","fa fa-comments-o","fa fa-compass","fa fa-compress","fa fa-connectdevelop",
1487 "fa fa-contao","fa fa-copyright","fa fa-creative-commons","fa fa-credit-card","fa fa-credit-card-alt","fa fa-crop","fa fa-crosshairs","fa fa-css3","fa fa-cube","fa fa-cubes","fa fa-cutlery","fa fa-dashcube","fa fa-database","fa fa-deaf",
1488 "fa fa-delicious","fa fa-desktop","fa fa-deviantart","fa fa-diamond","fa fa-digg","fa fa-dot-circle-o","fa fa-download","fa fa-dribbble","fa fa-dropbox","fa fa-drupal","fa fa-edge","fa fa-eercast","fa fa-eject","fa fa-ellipsis-h","fa fa-ellipsis-v",
1489 "fa fa-empire","fa fa-envelope","fa fa-envelope-o","fa fa-envelope-open","fa fa-envelope-open-o","fa fa-envelope-square","fa fa-envira","fa fa-eraser","fa fa-etsy","fa fa-eur","fa fa-exchange","fa fa-exclamation","fa fa-exclamation-circle",
1490 "fa fa-exclamation-triangle","fa fa-expand","fa fa-expeditedssl","fa fa-external-link","fa fa-external-link-square","fa fa-eye","fa fa-eye-slash","fa fa-eyedropper","fa fa-facebook","fa fa-facebook-official","fa fa-facebook-square",
1491 "fa fa-fast-backward","fa fa-fast-forward","fa fa-fax","fa fa-female","fa fa-fighter-jet","fa fa-file","fa fa-file-archive-o","fa fa-file-audio-o","fa fa-file-code-o","fa fa-file-excel-o","fa fa-file-image-o","fa fa-file-o","fa fa-file-pdf-o",
1492 "fa fa-file-powerpoint-o","fa fa-file-text","fa fa-file-text-o","fa fa-file-video-o","fa fa-file-word-o","fa fa-files-o","fa fa-film","fa fa-filter","fa fa-fire","fa fa-fire-extinguisher","fa fa-firefox","fa fa-first-order","fa fa-flag",
1493 "fa fa-flag-checkered","fa fa-flag-o","fa fa-flask","fa fa-flickr","fa fa-floppy-o","fa fa-folder","fa fa-folder-o","fa fa-folder-open","fa fa-folder-open-o","fa fa-font","fa fa-font-awesome","fa fa-fonticons","fa fa-fort-awesome","fa fa-forumbee",
1494 "fa fa-forward","fa fa-foursquare","fa fa-free-code-camp","fa fa-frown-o","fa fa-futbol-o","fa fa-gamepad","fa fa-gavel","fa fa-gbp","fa fa-genderless","fa fa-get-pocket","fa fa-gg","fa fa-gg-circle","fa fa-gift","fa fa-git","fa fa-git-square",
1495 "fa fa-github","fa fa-github-alt","fa fa-github-square","fa fa-gitlab","fa fa-glass","fa fa-glide","fa fa-glide-g","fa fa-globe","fa fa-google","fa fa-google-plus","fa fa-google-plus-official","fa fa-google-plus-square","fa fa-google-wallet",
1496 "fa fa-graduation-cap","fa fa-gratipay","fa fa-grav","fa fa-h-square","fa fa-hacker-news","fa fa-hand-lizard-o","fa fa-hand-o-down","fa fa-hand-o-left","fa fa-hand-o-right","fa fa-hand-o-up","fa fa-hand-paper-o","fa fa-hand-peace-o",
1497 "fa fa-hand-pointer-o","fa fa-hand-rock-o","fa fa-hand-scissors-o","fa fa-hand-spock-o","fa fa-handshake-o","fa fa-hashtag","fa fa-hdd-o","fa fa-header","fa fa-headphones","fa fa-heart","fa fa-heart-o","fa fa-heartbeat","fa fa-history",
1498 "fa fa-home","fa fa-hospital-o","fa fa-hourglass","fa fa-hourglass-end","fa fa-hourglass-half","fa fa-hourglass-o","fa fa-hourglass-start","fa fa-houzz","fa fa-html5","fa fa-i-cursor","fa fa-id-badge","fa fa-id-card","fa fa-id-card-o",
1499 "fa fa-ils","fa fa-imdb","fa fa-inbox","fa fa-indent","fa fa-industry","fa fa-info","fa fa-info-circle","fa fa-inr","fa fa-instagram","fa fa-internet-explorer","fa fa-ioxhost","fa fa-italic","fa fa-joomla","fa fa-jpy","fa fa-jsfiddle","fa fa-key",
1500 "fa fa-keyboard-o","fa fa-krw","fa fa-language","fa fa-laptop","fa fa-lastfm","fa fa-lastfm-square","fa fa-leaf","fa fa-leanpub","fa fa-lemon-o","fa fa-level-down","fa fa-level-up","fa fa-life-ring","fa fa-lightbulb-o","fa fa-line-chart",
1501 "fa fa-link","fa fa-linkedin","fa fa-linkedin-square","fa fa-linode","fa fa-linux","fa fa-list","fa fa-list-alt","fa fa-list-ol","fa fa-list-ul","fa fa-location-arrow","fa fa-lock","fa fa-long-arrow-down","fa fa-long-arrow-left",
1502 "fa fa-long-arrow-right","fa fa-long-arrow-up","fa fa-low-vision","fa fa-magic","fa fa-magnet","fa fa-male","fa fa-map","fa fa-map-marker","fa fa-map-o","fa fa-map-pin","fa fa-map-signs","fa fa-mars","fa fa-mars-double","fa fa-mars-stroke",
1503 "fa fa-mars-stroke-h","fa fa-mars-stroke-v","fa fa-maxcdn","fa fa-meanpath","fa fa-medium","fa fa-medkit","fa fa-meetup","fa fa-meh-o","fa fa-mercury","fa fa-microchip","fa fa-microphone","fa fa-microphone-slash","fa fa-minus",
1504 "fa fa-minus-circle","fa fa-minus-square","fa fa-minus-square-o","fa fa-mixcloud","fa fa-mobile","fa fa-modx","fa fa-money","fa fa-moon-o","fa fa-motorcycle","fa fa-mouse-pointer","fa fa-music","fa fa-neuter","fa fa-newspaper-o",
1505 "fa fa-object-group","fa fa-object-ungroup","fa fa-odnoklassniki","fa fa-odnoklassniki-square","fa fa-opencart","fa fa-openid","fa fa-opera","fa fa-optin-monster","fa fa-outdent","fa fa-pagelines","fa fa-paint-brush","fa fa-paper-plane",
1506 "fa fa-paper-plane-o","fa fa-paperclip","fa fa-paragraph","fa fa-pause","fa fa-pause-circle","fa fa-pause-circle-o","fa fa-paw","fa fa-paypal","fa fa-pencil","fa fa-pencil-square","fa fa-pencil-square-o","fa fa-percent","fa fa-phone",
1507 "fa fa-phone-square","fa fa-picture-o","fa fa-pie-chart","fa fa-pied-piper","fa fa-pied-piper-alt","fa fa-pied-piper-pp","fa fa-pinterest","fa fa-pinterest-p","fa fa-pinterest-square","fa fa-plane","fa fa-play","fa fa-play-circle",
1508 "fa fa-play-circle-o","fa fa-plug","fa fa-plus","fa fa-plus-circle","fa fa-plus-square","fa fa-plus-square-o","fa fa-podcast","fa fa-power-off","fa fa-print","fa fa-product-hunt","fa fa-puzzle-piece","fa fa-qq","fa fa-qrcode","fa fa-question",
1509 "fa fa-question-circle","fa fa-question-circle-o","fa fa-quora","fa fa-quote-left","fa fa-quote-right","fa fa-random","fa fa-ravelry","fa fa-rebel","fa fa-recycle","fa fa-reddit","fa fa-reddit-alien","fa fa-reddit-square","fa fa-refresh",
1510 "fa fa-registered","fa fa-renren","fa fa-repeat","fa fa-reply","fa fa-reply-all","fa fa-retweet","fa fa-road","fa fa-rocket","fa fa-rss","fa fa-rss-square","fa fa-rub","fa fa-safari","fa fa-scissors","fa fa-scribd","fa fa-search","fa fa-search-minus",
1511 "fa fa-search-plus","fa fa-sellsy","fa fa-server","fa fa-share","fa fa-share-alt","fa fa-share-alt-square","fa fa-share-square","fa fa-share-square-o","fa fa-shield","fa fa-ship","fa fa-shirtsinbulk","fa fa-shopping-bag","fa fa-shopping-basket",
1512 "fa fa-shopping-cart","fa fa-shower","fa fa-sign-in","fa fa-sign-language","fa fa-sign-out","fa fa-signal","fa fa-simplybuilt","fa fa-sitemap","fa fa-skyatlas","fa fa-skype","fa fa-slack","fa fa-sliders","fa fa-slideshare","fa fa-smile-o",
1513 "fa fa-snapchat","fa fa-snapchat-ghost","fa fa-snapchat-square","fa fa-snowflake-o","fa fa-sort","fa fa-sort-alpha-asc","fa fa-sort-alpha-desc","fa fa-sort-amount-asc","fa fa-sort-amount-desc","fa fa-sort-asc","fa fa-sort-desc",
1514 "fa fa-sort-numeric-asc","fa fa-sort-numeric-desc","fa fa-soundcloud","fa fa-space-shuttle","fa fa-spinner","fa fa-spoon","fa fa-spotify","fa fa-square","fa fa-square-o","fa fa-stack-exchange","fa fa-stack-overflow","fa fa-star",
1515 "fa fa-star-half","fa fa-star-half-o","fa fa-star-o","fa fa-steam","fa fa-steam-square","fa fa-step-backward","fa fa-step-forward","fa fa-stethoscope","fa fa-sticky-note","fa fa-sticky-note-o","fa fa-stop","fa fa-stop-circle",
1516 "fa fa-stop-circle-o","fa fa-street-view","fa fa-strikethrough","fa fa-stumbleupon","fa fa-stumbleupon-circle","fa fa-subscript","fa fa-subway","fa fa-suitcase","fa fa-sun-o","fa fa-superpowers","fa fa-superscript","fa fa-table",
1517 "fa fa-tablet","fa fa-tachometer","fa fa-tag","fa fa-tags","fa fa-tasks","fa fa-taxi","fa fa-telegram","fa fa-television","fa fa-tencent-weibo","fa fa-terminal","fa fa-text-height","fa fa-text-width","fa fa-th","fa fa-th-large","fa fa-th-list",
1518 "fa fa-themeisle","fa fa-thermometer-empty","fa fa-thermometer-full","fa fa-thermometer-half","fa fa-thermometer-quarter","fa fa-thermometer-three-quarters","fa fa-thumb-tack","fa fa-thumbs-down","fa fa-thumbs-o-down",
1519 "fa fa-thumbs-o-up","fa fa-thumbs-up","fa fa-ticket","fa fa-times","fa fa-times-circle","fa fa-times-circle-o","fa fa-tint","fa fa-toggle-off","fa fa-toggle-on","fa fa-trademark","fa fa-train","fa fa-transgender","fa fa-transgender-alt",
1520 "fa fa-trash","fa fa-trash-o","fa fa-tree","fa fa-trello","fa fa-tripadvisor","fa fa-trophy","fa fa-truck","fa fa-try","fa fa-tty","fa fa-tumblr","fa fa-tumblr-square","fa fa-twitch","fa fa-twitter","fa fa-twitter-square","fa fa-umbrella",
1521 "fa fa-underline","fa fa-undo","fa fa-universal-access","fa fa-university","fa fa-unlock","fa fa-unlock-alt","fa fa-upload","fa fa-usb","fa fa-usd","fa fa-user","fa fa-user-circle","fa fa-user-circle-o","fa fa-user-md","fa fa-user-o",
1522 "fa fa-user-plus","fa fa-user-secret","fa fa-user-times","fa fa-users","fa fa-venus","fa fa-venus-double","fa fa-venus-mars","fa fa-viacoin","fa fa-viadeo","fa fa-viadeo-square","fa fa-video-camera","fa fa-vimeo","fa fa-vimeo-square","fa fa-vine",
1523 "fa fa-vk","fa fa-volume-control-phone","fa fa-volume-down","fa fa-volume-off","fa fa-volume-up","fa fa-weibo","fa fa-weixin","fa fa-whatsapp","fa fa-wheelchair","fa fa-wheelchair-alt","fa fa-wifi","fa fa-wikipedia-w","fa fa-window-close",
1524 "fa fa-window-close-o","fa fa-window-maximize","fa fa-window-minimize","fa fa-window-restore","fa fa-windows","fa fa-wordpress","fa fa-wpbeginner","fa fa-wpexplorer","fa fa-wpforms","fa fa-wrench","fa fa-xing","fa fa-xing-square",
1525 "fa fa-y-combinator","fa fa-yahoo","fa fa-yelp","fa fa-yoast","fa fa-youtube","fa fa-youtube-play","fa fa-youtube-square");
1526 }
1527
1528 }
1529
1530