PluginProbe
WP Directory Kit / 1.3.4
WP Directory Kit v1.3.4
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 1.4.0 1.4.1 All 35 releases
wpdirectorykit / application / controllers / Wdk_frontendajax.php

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

1,528 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 $table_name = substr($table,0, -2);
129
130 $attr_id = preg_replace("/[^0-9a-zA-Z_\-]/", "",sanitize_text_field($parameters['attribute_id']));
131 $attr_val = preg_replace("/[^0-9a-zA-Z_\-]/", "",sanitize_text_field($parameters['attribute_value']));
132
133
134 $attr_search = sanitize_text_field($parameters['search_term']);
135 $skip_id = intval($parameters['skip_id']);
136 $language_id = intval($parameters['language_id']);
137
138 if(empty($language_id))
139 $language_id = NULL;
140
141 $id_part="";
142 if(is_numeric($attr_search))
143 $id_part = "$attr_id=$attr_search OR ";
144
145 if($table == 'icons_list') {
146 $icons = $this->get_fa_icons();
147
148 $tree_results = array();
149
150 if(empty($attr_search)) {
151 $tree_results = $icons;
152 } else {
153 foreach ($icons as $c){
154 if (stripos($c, $attr_search) !== FALSE){
155 //if $c starts with $input, add to matches list
156 $tree_results[] = $c;
157 } else if (strcmp($attr_search, $c) < 0){
158 //$input comes after $c in alpha order
159 //since $colors is sorted, we know that we won't find any more matches
160 continue;
161 }
162 }
163 }
164 $tree_results = array_slice($tree_results,intval($parameters['offset']), intval($parameters['limit']));
165 // limit
166
167 } else {
168 $this->load->model($table);
169
170 $where = array();
171 if(!empty($attr_search)) {
172 $attr_val_sql = $attr_val;
173 if($attr_val == 'location_title') {
174 $this->load->model($table);
175 $attr_val_sql = $this->$table->_table_name.'.location_title';
176 } elseif($attr_val == 'category_title'){
177 $this->load->model($table);
178 $attr_val_sql = $this->$table->_table_name.'.category_title';
179 }
180
181 $where["($id_part $attr_val_sql LIKE '%$attr_search%')"] = NULL;
182 }
183
184 if(!empty($parameters['hide_fields'])) {
185 if($table == 'location_m') {
186 $sql_where = esc_sql($this->$table->_table_name.'.idlocation').' NOT IN ('.esc_sql(sanitize_text_field($parameters['hide_fields'])).')';
187 foreach (explode(',', $parameters['hide_fields']) as $key => $id) {
188 $sql_where .= ' AND CONCAT(",", '.$this->$table->_table_name.'.parent_path, ",") NOT LIKE CONCAT("%,", '.intval($id).', ",%")';
189 }
190
191 $where[$sql_where] = NULL;
192 }
193
194 if($table == 'category_m') {
195 $sql_where = esc_sql($this->$table->_table_name.'.idcategory').' NOT IN ('.esc_sql(sanitize_text_field($parameters['hide_fields'])).')';
196 foreach (explode(',', $parameters['hide_fields']) as $key => $id) {
197 $sql_where .= ' AND CONCAT(",", '.$this->$table->_table_name.'.parent_path, ",") NOT LIKE CONCAT("%,", '.intval($id).', ",%")';
198 }
199 $where[$sql_where] = NULL;
200 }
201 }
202
203 if(!empty($parameters['attr_search']))
204 $where[$parameters['attr_search']] = NULL;
205
206 if(isset($parameters['user_check']) && ($parameters['user_check'] == 'true' || $parameters['user_check'] == '1')) {
207 if($table == 'listing_m') {
208 if($parameters['table'] == 'calendar_listing_m') {
209 global $Winter_MVC_wdk_bookings;
210 $Winter_MVC_wdk_bookings->model('calendar_m');
211 $this->db->join($Winter_MVC_wdk_bookings->calendar_m->_table_name.' ON '.$this->$table->_table_name.'.post_id = '.$Winter_MVC_wdk_bookings->calendar_m->_table_name.'.post_id');
212 }
213
214 $tree_results = $this->$table->get_pagination(intval($parameters['limit']),intval($parameters['offset']), $where, TRUE, get_current_user_id());
215 } else {
216
217 if(!empty($parameters['filter_ids'])){
218 $this->db->where(array( esc_sql($this->$table->_table_name.'.'.$this->$table->_primary_key).' IN ('.esc_sql($parameters['filter_ids']).')' => NULL));
219 }
220
221 $tree_results = $this->$table->get_pagination(intval($parameters['limit']),intval($parameters['offset']), $where );
222 }
223 } else {
224 if($parameters['table'] == 'calendar_listing_m') {
225 global $Winter_MVC_wdk_bookings;
226 $Winter_MVC_wdk_bookings->model('calendar_m');
227 $this->db->join($Winter_MVC_wdk_bookings->calendar_m->_table_name.' ON '.$this->$table->_table_name.'.post_id = '.$Winter_MVC_wdk_bookings->calendar_m->_table_name.'.post_id');
228 }
229
230 if(!empty($parameters['filter_ids'])){
231 $this->db->where(array( esc_sql($this->$table->_table_name.'.'.$this->$table->_primary_key).' IN ('.esc_sql($parameters['filter_ids']).')' => NULL));
232 }
233
234 if($table == 'user_m') {
235 $like = "(meta_value LIKE '%wdk_%' )";
236 $tree_results = $this->$table->get_pagination(intval($parameters['limit']),intval($parameters['offset']), $where, NULL, $like);
237
238 } else {
239
240 if(method_exists($this->$table, 'get_pagination_simple')) {
241 if($table == 'location_m') {
242 $this->db->select('location_title, idlocation, level');
243 } else if($table == 'category_m') {
244 $this->db->select('category_title, idcategory, level');
245 }
246 $tree_results = $this->$table->get_pagination_simple(intval($parameters['limit']),intval($parameters['offset']), $where);
247 } else {
248 $tree_results = $this->$table->get_pagination(intval($parameters['limit']),intval($parameters['offset']), $where);
249 }
250 }
251 }
252
253 }
254
255 $ind_order=1;
256 foreach ($tree_results as $key=>$row)
257 {
258 $level_gen='';
259 if(empty($attr_search) && isset($row->level))
260 $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
261
262 $results[$ind_order]['key'] = wmvc_show_data($attr_id, $row);
263 if($table == 'listing_m') {
264 $results[$ind_order]['value'] = $level_gen
265 .'#'.wmvc_show_data($attr_id, $row).', '.wmvc_show_data($attr_val, $row);
266 } elseif($table == 'user_m') {
267 $results[$ind_order]['value'] = $level_gen
268 .'#'.wmvc_show_data($attr_id, $row).', '.wmvc_show_data($attr_val, $row).' ('.wmvc_show_data('user_email', $row).')';
269 } elseif($table == 'icons_list') {
270 $results[$ind_order]['key'] = $row;
271 if(defined('ELEMENTOR_ASSETS_URL')){
272 $results[$ind_order]['value'] = '<i class="'. $row.'"></i>&nbsp;&nbsp;'.$row;
273 } else {
274 $results[$ind_order]['value'] = $row;
275 }
276 } else {
277 $results[$ind_order]['value'] = $level_gen
278 .esc_html__(wmvc_show_data($attr_val, $row), 'wpdirectorykit');
279 }
280 $ind_order++;
281 }
282
283
284 // get current value by ID
285 $row=NULL;
286 if($table == 'icons_list') {
287 if(!empty($parameters['curr_id'])) {
288 $row = '<i class="'. $parameters['curr_id'].'"></i>&nbsp;&nbsp;'.$parameters['curr_id'];
289 }
290 } else {
291 if(!empty($parameters['curr_id']))
292 $row = $this->$table->get(intval($parameters['curr_id']), TRUE);
293 }
294
295 if($table == 'icons_list') {
296 $data['curr_val'] = $row;
297 }elseif(is_object($row))
298 {
299 $level_gen='';
300 if(isset($row->level))
301 $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
302
303 if($table == 'user_m') {
304 $data['curr_val'] = $level_gen
305 .wmvc_show_data(wmvc_show_data('attribute_value', $parameters), $row).' ('.wmvc_show_data('user_email', $row).')'.' #'.wmvc_show_data($attr_id, $row);
306 } else {
307 $data['curr_val'] = $level_gen
308 .esc_html__(wmvc_show_data(wmvc_show_data('attribute_value', $parameters), $row), 'wpdirectorykit');
309 }
310
311
312 //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);
313 //elseif(!empty($start_id) && $start_id == $parameters['curr_id']) $this->data['curr_val'] = $parameters['empty_value'];
314 }
315 else
316 {
317 $data['curr_val'] = $parameters['empty_value'];
318 }
319
320 $this->data['success'] = true;
321
322 $data['results'] = $results;
323 //$data['sql'] = $this->db->last_query();
324 $this->output($data);
325 }
326
327 public function treefieldid_checkboxes($output="", $atts=array(), $instance=NULL)
328 {
329 $this->load->load_helper('listing');
330 $this->load->model('listing_m');
331 $this->load->model('listingfield_m');
332
333 $data = array();
334 $data['message'] = __('No message returned!', 'wpdirectorykit');
335 $results = array();
336
337 $parameters = array();
338
339 foreach ($_POST as $key => $value) {
340 $parameters[$key] = sanitize_text_field($value);
341 }
342
343 $table_name = $table = $parameters['table'];
344
345 if(empty($parameters['empty_value']))
346 $parameters['empty_value'] = ' - ';
347
348 if(empty($parameters['limit']))
349 $parameters['limit'] = 10;
350
351 if(empty($parameters['attribute_id']))
352 $parameters['attribute_id'] = 'id';
353
354 if(empty($parameters['attribute_value']))
355 $parameters['attribute_value'] = 'address';
356
357 if(empty($parameters['offset']))
358 $parameters['offset'] = 0;
359
360 if(empty($parameters['sql_where']))
361 $parameters['sql_where'] = '';
362
363 if(empty($parameters['hide_fields']))
364 $parameters['hide_fields'] = '';
365
366 $start_id = '';
367 if(isset($parameters['start_id']))
368 $start_id = $parameters['start_id'];
369
370 if($parameters['offset'] == 0) // currently don't have load_more functionality'
371
372 if(!empty($parameters['empty_value']))
373 {
374 $results[0]['key'] = '';
375 $results[0]['value'] = sanitize_text_field($parameters['empty_value']);
376 }
377
378 // it's model
379
380 if($table == 'calendar_listing_m')
381 $table = 'listing_m';
382
383 $table_name = substr($table,0, -2);
384 $attr_id = preg_replace("/[^0-9a-zA-Z_\-]/", "",sanitize_text_field($parameters['attribute_id']));
385 $attr_val = preg_replace("/[^0-9a-zA-Z_\-]/", "",sanitize_text_field($parameters['attribute_value']));
386
387 $attr_search = sanitize_text_field($parameters['search_term']);
388 $skip_id = intval($parameters['skip_id']);
389 $language_id = intval($parameters['language_id']);
390
391 if(empty($language_id))
392 $language_id = NULL;
393
394 $id_part="";
395 if(is_numeric($attr_search))
396 $id_part = "$attr_id=$attr_search OR ";
397
398 $this->load->model($table);
399
400 $where = array();
401 if(!empty($attr_search))
402 $where["($id_part $attr_val LIKE '%$attr_search%')"] = NULL;
403
404 if(isset($parameters['selected']) && !empty($parameters['selected'])) {
405
406 if(is_string($parameters['selected']) && strpos($parameters['selected'], ',') !== FALSE){
407 $selected = explode(',', $parameters['selected']);
408 } elseif(is_string($parameters['selected'])){
409 $selected = array($parameters['selected']);
410 }
411
412 $ids = array();
413 foreach($selected as $selected_item) {
414 if(!empty($selected_item) && is_intval($selected_item)) {
415 $ids [] = $selected_item;
416 }
417 }
418
419 /* where in */
420 if(!empty($ids)){
421 $this->db->order_by('FIELD('.$this->$table->_table_name.'.'.$this->$table->_primary_key.', '. implode(',', array_reverse($ids)) . ') DESC');
422 if(intval($parameters['limit']) < count($ids)) {
423 $parameters['limit'] = count($ids);
424 }
425 }
426 }
427
428 if(!empty($parameters['filter_ids'])){
429 $this->db->where(array( esc_sql($this->$table->_table_name.'.'.$this->$table->_primary_key).' IN ('.esc_sql($parameters['filter_ids']).')' => NULL));
430 }
431
432 if(!empty($parameters['hide_fields'])) {
433 if($table == 'location_m') {
434 $sql_where = esc_sql($this->$table->_table_name.'.idlocation').' NOT IN ('.esc_sql(sanitize_text_field($parameters['hide_fields'])).')';
435 foreach (explode(',', $parameters['hide_fields']) as $key => $id) {
436 $sql_where .= ' AND CONCAT(",", '.$this->$table->_table_name.'.parent_path, ",") NOT LIKE CONCAT("%,", '.intval($id).', ",%")';
437 }
438
439 $where[$sql_where] = NULL;
440 }
441
442 if($table == 'category_m') {
443 $sql_where = esc_sql($this->$table->_table_name.'.idcategory').' NOT IN ('.esc_sql(sanitize_text_field($parameters['hide_fields'])).')';
444 foreach (explode(',', $parameters['hide_fields']) as $key => $id) {
445 $sql_where .= ' AND CONCAT(",", '.$this->$table->_table_name.'.parent_path, ",") NOT LIKE CONCAT("%,", '.intval($id).', ",%")';
446 }
447 $where[$sql_where] = NULL;
448 }
449 }
450
451 $tree_results = $this->$table->get_pagination(intval($parameters['limit']),intval($parameters['offset']), $where);
452
453 $ind_order=1;
454 foreach ($tree_results as $key=>$row)
455 {
456 $level_gen='';
457 if(empty($attr_search) && isset($row->level))
458 $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
459
460 $results[$ind_order]['key'] = wmvc_show_data($attr_id, $row);
461 $results[$ind_order]['value'] = $level_gen
462 .esc_html__(wmvc_show_data($attr_val, $row), 'wpdirectorykit');
463 $ind_order++;
464 }
465
466 // get current value by ID
467 $row=NULL;
468 if(!empty($parameters['curr_id']))
469 $row = $this->$table->get(intval($parameters['curr_id']), TRUE);
470
471 if(is_object($row))
472 {
473 $level_gen='';
474 if(isset($row->level))
475 $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
476
477 $data['curr_val'] = $level_gen
478 .esc_html__(wmvc_show_data(wmvc_show_data('attribute_value', $parameters), $row), 'wpdirectorykit');
479
480 }
481 else
482 {
483 $data['curr_val'] = $parameters['empty_value'];
484 }
485
486 $this->data['success'] = true;
487
488 $data['results'] = $results;
489 //$data['sql'] = $this->db->last_query();
490 $this->output($data);
491 }
492
493 private function output($data, $print = TRUE) {
494 if($print) {
495 header('Pragma: no-cache');
496 header('Cache-Control: no-store, no-cache');
497 header('Content-Type: application/json; charset=utf8');
498 //header('Content-Length: '.$length); // special characters causing troubles
499 echo (wp_json_encode($data));
500 exit();
501 } else {
502 return $data;
503 }
504 }
505
506
507 public function select_2_ajax($output="", $atts=array(), $instance=NULL)
508 {
509 $this->load->load_helper('listing');
510 $this->load->model('listing_m');
511 $this->load->model('listingfield_m');
512
513 $data = array();
514 $data['message'] = __('No message returned!', 'wpdirectorykit');
515 $results = array();
516 $data['pagination'] = true;
517 $parameters = array();
518
519 foreach ($_POST as $key => $value) {
520 $parameters[$key] = sanitize_text_field($value);
521 }
522
523 if(empty($parameters['table'])) return false;
524
525 $model_name = $parameters['table'];
526
527 $key_column = '';
528 $print_column = '';
529
530 $search_column = '';
531 if(empty($parameters['columns_search'])) {
532 switch ($model_name) {
533 case 'category_m':
534 $this->load->model($model_name);
535 $search_column = $this->$model_name->_table_name.'.idcategory,'.$this->$model_name->_table_name.'.category_title';
536 break;
537 case 'location_m':
538 $this->load->model($model_name);
539 $search_column = $this->$model_name->_table_name.'.idlocation,'.$this->$model_name->_table_name.'.location_title';
540 break;
541
542 default:
543 # code...
544 break;
545 }
546
547 } else {
548 $search_column = $parameters['columns_search'];
549 }
550
551 if(empty($parameters['key_column'])) {
552 switch ($model_name) {
553 case 'category_m':
554 $key_column = 'idcategory';
555 break;
556 case 'location_m':
557 $key_column = 'idlocation';
558 break;
559
560 default:
561 # code...
562 break;
563 }
564 } else {
565 $key_column = $parameters['key_column'];
566 }
567
568 if(empty($parameters['print_column'])) {
569 switch ($model_name) {
570 case 'category_m':
571 $print_column = 'category_title';
572 break;
573 case 'location_m':
574 $print_column = 'location_title';
575 break;
576
577 default:
578 # code...
579 break;
580 }
581 } else {
582 $print_column = $parameters['print_column'];
583 }
584
585 $limit = 20;
586 if(!empty($parameters['limit'])) {
587 $limit = intval($parameters['limit']);
588 }
589
590 $offset = NULL;
591 if(!empty($parameters['page_result']) && $parameters['page_result'] > 1) {
592 $offset = (intval($parameters['page_result']) - 1) * $limit;
593 }
594
595 $this->load->model($model_name);
596
597 $where = array();
598 if(!empty($_POST['q']['term']) && !empty($search_column)) {
599 $sql_search = '';
600 foreach (explode(',', $search_column) as $column) {
601 if(empty($column)) continue;
602
603 if(!empty($sql_search))
604 $sql_search .= " OR ";
605
606 $sql_search .= " ".esc_sql($column)." LIKE '%".esc_sql($_POST['q']['term'])."%'";
607 }
608
609 $where ["($sql_search)"] = NULL;
610 }
611
612 $db_results_total = $this->$model_name->total($where);
613 $db_results = $this->$model_name->get_pagination($limit,$offset, $where);
614 $data['output'] = $db_results;
615
616 if (!$db_results) {
617 $data['errors'] = '';
618 } else {
619 foreach($db_results as $row) {
620
621 $level_gen='';
622 if(empty($attr_search) && isset($row->level))
623 $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
624
625 $results[] = [
626 'id'=> wmvc_show_data($key_column, $row),
627 'text'=> $level_gen.esc_html__(trim(wmvc_show_data($print_column, $row)), 'wpdirectorykit'),
628 ];
629 }
630
631 }
632
633 $data['success'] = true;
634
635 $data['results'] = $results;
636
637
638 if($db_results_total >= $limit + $offset) {
639 $data['pagination'] =[
640 "more"=> true
641 ];
642 }
643
644 //$data['sql'] = $this->db->last_query();
645 $this->output($data);
646 }
647
648 public function select_2_ajax_user($output="", $atts=array(), $instance=NULL)
649 {
650 $this->load->load_helper('listing');
651
652 $data = array();
653 $data['message'] = __('No message returned!', 'wpdirectorykit');
654 $results = array();
655 $data['pagination'] = true;
656 $parameters = array();
657
658 foreach ($_POST as $key => $value) {
659 $parameters[$key] = sanitize_text_field($value);
660 }
661
662 $model_name = 'user_m';
663
664 $key_column = '';
665 $print_column = '';
666
667 $limit = 20;
668 if(!empty($parameters['limit'])) {
669 $limit = intval($parameters['limit']);
670 }
671
672 $offset = NULL;
673 if(!empty($parameters['page_result']) && $parameters['page_result'] > 1) {
674 $offset = (intval($parameters['page_result']) - 1) * $limit;
675 }
676
677 $this->load->model($model_name);
678 $search_column = 'display_name,user_email,user_login,ID';
679 $where = array();
680 if(!empty($_POST['q']['term']) && !empty($search_column)) {
681 $sql_search = '';
682 foreach (explode(',', $search_column) as $column) {
683 if(empty($column)) continue;
684
685 if(!empty($sql_search))
686 $sql_search .= " OR ";
687
688 $sql_search .= " ".esc_sql($column)." LIKE '%".esc_sql($_POST['q']['term'])."%'";
689 }
690
691 $where ["($sql_search)"] = NULL;
692 }
693
694 $like = "(meta_value LIKE '%wdk_%' )";
695 $db_results_total = $this->$model_name->total($where, NULL, $like);
696
697 $db_results = $this->$model_name->get_pagination($limit,$offset, $where, NULL, $like);
698 $data['output'] = $db_results;
699
700 if (!$db_results) {
701 $data['errors'] = '';
702 } else {
703 foreach($db_results as $row) {
704
705 $level_gen='';
706 //if(empty($attr_search) && isset($row->level))
707 // $level_gen = str_pad('', $row->level*12, '&nbsp;').'';
708
709 $results[] = [
710 'id'=> wmvc_show_data('ID', $row),
711 'text'=> $level_gen.trim(wmvc_show_data('display_name', $row)),
712 ];
713 }
714
715 }
716
717 $data['success'] = true;
718
719 $data['results'] = $results;
720 if($db_results_total >= $limit + $offset) {
721 $data['pagination'] =[
722 "more"=> true
723 ];
724 }
725
726 //$data['sql'] = $this->db->last_query();
727 $this->output($data);
728 }
729
730 public function wdk_tree_dropdowns($output="", $atts=array(), $instance=NULL)
731 {
732 $this->load->load_helper('listing');
733
734 $data = array();
735 $data['message'] = __('No message returned!', 'wpdirectorykit');
736 $results = array();
737 $parameters = array();
738
739 foreach ($_POST as $key => $value) {
740 $parameters[$key] = sanitize_text_field($value);
741 }
742
743 if(empty($parameters['table'])) return false;
744
745 switch ($parameters['table']) {
746 case 'category_id':
747 case 'search_category':
748 $model_name = 'category_m';
749 break;
750 case 'location_id':
751 case 'search_location':
752 $model_name = 'location_m';
753 break;
754 default:
755 # code...
756 break;
757 }
758
759 $key_column = '';
760 $print_column = '';
761 $current_id = '0';
762
763 if(!empty($parameters['id'])) {
764 $current_id = intval($parameters['id']);
765 }
766
767 if(empty($parameters['key_column'])) {
768 switch ($model_name) {
769 case 'category_m':
770 $key_column = 'idcategory';
771 break;
772 case 'location_m':
773 $key_column = 'idlocation';
774 break;
775
776 default:
777 # code...
778 break;
779 }
780 } else {
781 $key_column = $parameters['key_column'];
782 }
783
784 if(empty($parameters['print_column'])) {
785 switch ($model_name) {
786 case 'category_m':
787 $print_column = 'category_title';
788 break;
789 case 'location_m':
790 $print_column = 'location_title';
791 break;
792
793 default:
794 # code...
795 break;
796 }
797 } else {
798 $print_column = $parameters['print_column'];
799 }
800
801 $this->load->model($model_name);
802
803 $db_results = $this->$model_name->get_by(array('parent_id = '.$current_id => NULL));
804 $level = 5;
805
806 if(isset($db_results[0]->level)) {
807 $level = $db_results[0]->level;
808 }
809
810 $data['output'] = $db_results;
811
812 if (!$db_results) {
813 $data['errors'] = '';
814 } else {
815
816 if($model_name == 'category_m') {
817 $placeholder_texts = [
818 0 => esc_html__('Select Categories','wpdirectorykit'),
819 1 => esc_html__('Select Sub Categories','wpdirectorykit'),
820 2 => esc_html__('Select Sub Categories','wpdirectorykit'),
821 3 => esc_html__('Select Sub Categories','wpdirectorykit'),
822 4 => esc_html__('Select Sub Categories','wpdirectorykit'),
823 5 => esc_html__('Select Sub Categories','wpdirectorykit'),
824 ];
825 } else {
826 $placeholder_texts = [
827 0 => esc_html__('Select Country','wpdirectorykit'),
828 1 => esc_html__('Select City','wpdirectorykit'),
829 2 => esc_html__('Select Neighborhood','wpdirectorykit'),
830 3 => esc_html__('Select Sub Area','wpdirectorykit'),
831 4 => esc_html__('Select Sub Area','wpdirectorykit'),
832 5 => esc_html__('Select Sub Area','wpdirectorykit'),
833 ];
834 }
835
836 if(isset($placeholder_texts[$level])) {
837 $placeholder = $placeholder_texts[$level];
838 } else {
839 $placeholder = esc_html__('Select Sub Categories','wpdirectorykit');
840 }
841
842 $results[] = [
843 'id'=> '',
844 'text'=> $placeholder
845 ];
846
847 foreach($db_results as $row) {
848 $results[] = [
849 'id'=> wmvc_show_data($key_column, $row),
850 'text'=> esc_html__(trim(wmvc_show_data($print_column, $row)),'wpdirectorykit'),
851 ];
852 }
853
854 }
855
856 $data['success'] = true;
857 $data['results'] = $results;
858
859 //$data['sql'] = $this->db->last_query();
860 $this->output($data);
861 }
862
863
864 public function search_suggestion($output="", $atts=array(), $instance=NULL)
865 {
866 $this->load->load_helper('listing');
867 $this->load->model('category_m');
868 $this->load->model('location_m');
869 $this->load->model('listing_m');
870
871 $data = array();
872 $categories_limit = 5;
873 $categories_search_column = array('idcategory','category_title');
874 $locations_limit = 5;
875 $locations_search_column = array('idlocation','location_title');
876
877 $results = array();
878 /*
879 [
880 'field_key' => 'string',
881 'value' => 'string',
882 'print' => [
883 'html' => 'string',
884 'parsed_html' => [
885 'left_column' => 'string',
886 'middle_column' => 'string',
887 'right_column' => 'string',
888 ],
889 'parsed_content' => [
890 'icon_class' => 'string',
891 'title' => 'string',
892 'sub_title' => 'string',
893 'right_text' => 'string',
894 ]
895 ]
896 ]
897
898 */
899
900 $data['message'] = __('No message returned!', 'wpdirectorykit');
901
902 $parameters = array();
903 foreach ($_POST as $key => $value) {
904 $parameters[$key] = sanitize_text_field($value);
905 }
906
907 $search_text = '';
908 if(!empty($parameters['search']))
909 $search_text = trim($parameters['search']);
910
911 /* Categories */
912 $where = array();
913 if($search_text) {
914 $sql_search = '';
915 foreach ($categories_search_column as $column) {
916 if(!empty($sql_search))
917 $sql_search .= " OR ";
918
919 $sql_search .= " ".esc_sql($column)." LIKE '%".esc_sql($search_text)."%'";
920 }
921 $where ["($sql_search)"] = NULL;
922 $db_results = $this->category_m->get_pagination($categories_limit, NULL, $where);
923 } else {
924 $db_results = $this->category_m->get_pagination($categories_limit, NULL, array('parent_id = 0' => NULL));
925 }
926
927 if($db_results) foreach($db_results as $row) {
928 $results[] = [
929 'field_key' => 'search_category',
930 'value' => $row->category_title,
931 'print' => [
932 'parsed_content' => [
933 'icon_class' => (!empty(wmvc_show_data('font_icon_code', $row, false))) ? wmvc_show_data('font_icon_code', $row) : 'fa fa-tag',
934 'title' => esc_html__($row->category_title, 'wpdirectorykit'),
935 'sub_title' => '',
936 'right_text' => __('Category', 'wpdirectorykit')
937 ]
938 ]
939 ];
940 }
941
942 /* END Categories */
943
944 /* Locations */
945 $where = array();
946 if($search_text) {
947 $sql_search = '';
948 foreach ($locations_search_column as $column) {
949 if(!empty($sql_search))
950 $sql_search .= " OR ";
951
952 $sql_search .= " ".$this->db->prefix."wdk_locations.".esc_sql($column)." LIKE '%".esc_sql($search_text)."%'";
953 }
954 $where ["($sql_search)"] = NULL;
955
956 $select = $this->db->prefix.'wdk_locations.idlocation, '.$this->db->prefix.'wdk_locations.location_title';
957 $select .= ',location_1.location_title AS location_title_1';
958
959 $this->db->join($this->db->prefix.'wdk_locations AS location_1 ON '.$this->db->prefix.'wdk_locations.parent_id = location_1.idlocation', NULL, 'LEFT');
960 for($i = 2 ; $i <= 2; $i++) {
961 $select .= ',location_'.$i.'.location_title AS location_title_'.$i.'';
962 $this->db->join($this->db->prefix.'wdk_locations AS location_'.$i.' ON location_'.($i-1).'.parent_id = location_'.$i.'.idlocation', NULL, 'LEFT');
963 }
964 $this->db->select($select);
965 $db_results = $this->location_m->get_pagination($locations_limit, NULL, $where);
966 } else {
967 $db_results = $this->location_m->get_pagination($locations_limit, NULL, array('parent_id = 0' => NULL));
968 }
969
970 if($db_results) foreach($db_results as $row) {
971 $subtitle = '';
972
973 for($i = 1 ; $i <= 2; $i++) {
974 if(wmvc_show_data('location_title_'.$i, $row, false)){
975 $subtitle .= wmvc_show_data('location_title_'.$i, $row, false).', ';
976 }
977 }
978
979 $subtitle = substr($subtitle,0,-2);
980
981 $results[] = [
982 'field_key' => 'search_location',
983 'value' => $row->location_title,
984 'print' => [
985 'parsed_content' => [
986 'icon_class' => (!empty(wmvc_show_data('font_icon_code', $row, false))) ? wmvc_show_data('font_icon_code', $row) : 'fa fa-map-marker',
987 'title' => esc_html__($row->location_title, 'wpdirectorykit'),
988 'sub_title' => esc_html__($subtitle, 'wpdirectorykit'),
989 'right_text' => __('Location', 'wpdirectorykit')
990 ]
991 ]
992 ];
993 }
994
995 /* END Locations */
996
997 /* address suggestion if empty other */
998 if(empty($results)) {
999 $this->db->select('address');
1000 $db_results = $this->db->where(array("address LIKE '%".esc_sql($search_text)."%'" => NULL));
1001 $this->db->from($this->listing_m->_table_name);
1002 $this->db->group_by('address');
1003 $this->db->limit(5);
1004
1005 $query = $this->db->get();
1006 if ($this->db->num_rows() > 0) {
1007 $db_results = $this->db->results();
1008 } else {
1009 $db_results = array();
1010 }
1011
1012 if($db_results) foreach($db_results as $row) {
1013 $results[] = [
1014 'field_key' => 'address',
1015 'value' => $row->address,
1016 'print' => [
1017 'parsed_content' => [
1018 'icon_class' => 'fa fa-map-marker',
1019 'title' => $row->address,
1020 'sub_title' => '',
1021 'right_text' => __('Address', 'wpdirectorykit')
1022 ]
1023 ]
1024 ];
1025 }
1026 }
1027
1028 /* listings by title suggestion */
1029 $this->db->where(array("post_title LIKE '%".esc_sql($search_text)."%'" => NULL));
1030 $db_results = $this->listing_m->get_pagination(5, NULL, array('is_activated' => 1,'is_approved'=>1));
1031
1032 if($db_results) foreach($db_results as $row) {
1033 $results[] = [
1034 'field_key' => 'link',
1035 'value' => get_permalink($row),
1036 'print' => [
1037 'parsed_content' => [
1038 'icon_class' => 'fa fa-circle',
1039 'title' => $row->post_title,
1040 'sub_title' => '',
1041 'right_text' => __('Listing', 'wpdirectorykit')
1042 ]
1043 ]
1044 ];
1045 }
1046
1047 if(empty($results)) {
1048
1049 $name_part = str_replace(' ','+',$search_text);
1050
1051 //$url = 'http://photon.komoot.de/api/?q='.$name_part;
1052 $url = 'https://api.teleport.org/api/cities/?limit=1&search='.$name_part;
1053
1054 $request = wp_remote_get( $url );
1055 $response = '';
1056
1057 // request failed
1058 if ( is_wp_error( $request ) ) {
1059 $response = $request;
1060 }
1061 $code = (int) wp_remote_retrieve_response_code( $request );
1062
1063 // make sure the fetch was successful
1064 if (empty($response) && $code == 200 ) {
1065 $response = wp_remote_retrieve_body( $request );
1066
1067 // Decode the json
1068 $resp = json_decode( $response,true );
1069 if(!empty($resp) && isset($resp['_embedded']) && isset($resp["_embedded"]["city:search-results"]) && !empty($resp["_embedded"]["city:search-results"])) {
1070 foreach($resp["_embedded"]["city:search-results"] as $prediction)
1071 {
1072 if(isset($prediction["matching_full_name"])){
1073 $results[] = [
1074 'field_key' => 'search_location',
1075 'value' => $prediction["matching_full_name"],
1076 'print' => [
1077 'parsed_content' => [
1078 'icon_class' => 'fa fa-map-marker',
1079 'title' => $prediction["matching_full_name"],
1080 'sub_title' => '',
1081 'right_text' => ''
1082 ]
1083 ]
1084 ];
1085
1086 }
1087 break;
1088 }
1089 }
1090 }
1091 }
1092
1093 $data['success'] = true;
1094 $data['results'] = $results;
1095
1096 //$data['sql'] = $this->db->last_query();
1097 $this->output($data);
1098 }
1099
1100 public function booking_price_calculate() {
1101 $data = array();
1102 $data['success'] = false;
1103
1104 $this->load->load_helper('listing');
1105 global $Winter_MVC_wdk_bookings;
1106
1107 $Winter_MVC_wdk_bookings->model('reservation_m');
1108 $Winter_MVC_wdk_bookings->model('calendar_m');
1109
1110 $results = array();
1111 $parameters = array();
1112 foreach ($_POST as $key => $value) {
1113 $parameters[sanitize_text_field($key)] = sanitize_text_field($value);
1114 }
1115
1116 $post_id = NULL;
1117 $date_from = NULL;
1118 $date_to = NULL;
1119
1120 if(isset($parameters['post_id'])) {
1121 $post_id = $parameters['post_id'];
1122 }
1123
1124 if(isset($parameters['date_from'])) {
1125 $date_from = wdk_normalize_date_db($parameters['date_from']);
1126 }
1127
1128 if(isset($parameters['date_to'])) {
1129 $date_to = wdk_normalize_date_db($parameters['date_to']);
1130 }
1131
1132 if($post_id && $date_from && $date_to) {
1133 $price = $Winter_MVC_wdk_bookings->reservation_m->calculate_price($post_id, $date_from, $date_to);
1134
1135 $calendar = $Winter_MVC_wdk_bookings->calendar_m->get_by(array('post_id'=>$post_id), TRUE); // date_package_expire package_id
1136 $calendar_fees = array();
1137 if($calendar && !empty($calendar->json_data_fees))
1138 $calendar_fees = json_decode($calendar->json_data_fees );
1139
1140 $results['symbol'] = '';
1141 if(function_exists('wdk_booking_currency_symbol'))
1142 $results['symbol'] = wdk_booking_currency_symbol();
1143
1144 if($price) {
1145 $results['price'] = $price['price'];
1146 $results['total'] = $price['price'];
1147 $results['fees_data'] = array();
1148 $results['fees'] = array();
1149 foreach ($calendar_fees as $key => $fee) {
1150 if(!wmvc_show_data('is_activated', $fee, false,TRUE,TRUE)) continue;
1151 if(is_intval(wmvc_show_data('value', $fee,'',TRUE,TRUE))) {
1152 $field = wdk_generate_slug(strtolower(esc_html(wmvc_show_data('title', $fee,'-',TRUE,TRUE))));
1153 if(!wmvc_show_data('is_required', $fee, false,TRUE,TRUE) && isset($parameters['fee_'.$field]) && $parameters['fee_'.$field] == 0) {
1154 } else {
1155 $price = 0;
1156 if(wmvc_show_data('calculation_base', $fee,'',TRUE,TRUE) == 'per_night') {
1157 $nights = (int)abs(strtotime($date_from) - strtotime($date_to))/(60*60*24);
1158 $price += intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)) * $nights;
1159 } else if(wmvc_show_data('calculation_base', $fee,'',TRUE,TRUE) == 'per_person') {
1160 $price += intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)) * intval(wmvc_show_data('guests', $_POST, 0,TRUE,TRUE));
1161 } else {
1162 $price += intval(wmvc_show_data('value', $fee,'',TRUE,TRUE));
1163 }
1164 $results['fees'][wmvc_show_data('title', $fee,'',TRUE,TRUE)] = $price;
1165 $results['total'] += $price;
1166 }
1167 }
1168
1169 $results['fees_data'][$key] = $fee;
1170 $results['fees_data'][$key]->field_id = wdk_generate_slug(strtolower(esc_html(wmvc_show_data('title', $fee,'-',TRUE,TRUE))));
1171 $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';
1172 }
1173 $data['success'] = true;
1174 } else {
1175 $data['popup_text_error'] = __('Those dates are not available', 'wpdirectorykit');
1176 }
1177 }
1178
1179 $data['results'] = $results;
1180
1181 //$data['sql'] = $this->db->last_query();
1182 $this->output($data);
1183 }
1184
1185 public function loading_listings() {
1186 $this->load->load_helper('listing');
1187 $this->load->load_helper('get_element_settings');
1188 $this->load->model('listing_m');
1189 $this->load->model('listingfield_m');
1190 $this->load->model('category_m');
1191
1192 $data = array();
1193 $data['message'] = '';
1194 $data['popup_text_success'] = '';
1195 $data['popup_text_error'] = '';
1196 $data['output'] = [
1197 'map_results'=>null,
1198 'listings_result'=>null,
1199 'listings_result_message'=>null,
1200 'pagination_html'=>null,
1201 'listings_count'=>null,
1202 'listings_count_html'=>null,
1203 ];
1204 $data['success'] = false;
1205
1206 $parameters = array();
1207 foreach ($_POST as $key => $value) {
1208 $parameters[$key] = sanitize_text_field($value);
1209 }
1210
1211 $options = [
1212 'offset' => 0,
1213 'limit' => 6,
1214 'current_page' => 1,
1215 'limit_pagination' => 5,
1216 'layout_type' => 'grid',
1217 ];
1218
1219 $custom_parameters = array();
1220 $parameters['url'] = strstr($parameters['url'], "#", true);
1221 $parameters['url'] = strstr($parameters['url'], "?");
1222 if(!empty($parameters['url'])) {
1223 $qr_string = trim($parameters['url'],'?');
1224 $string_par = array();
1225 parse_str($qr_string, $string_par);
1226 $custom_parameters += $string_par;
1227 }
1228
1229 $controller = 'listing';
1230 $columns = array('ID', 'location_id', 'category_id', 'post_title', 'post_date', 'search', 'order_by','is_featured', 'address');
1231 $external_columns = array('location_id', 'category_id', 'post_title');
1232
1233 if(isset($parameters['el_results_id'])) {
1234 wdk_prepare_search_query_GET($columns, $controller.'_m', $external_columns, $custom_parameters);
1235 $data['output']['listings_count'] = $this->listing_m->total(array('is_activated' => 1,'is_approved'=>1));
1236 $data['output']['listings_count_html'] = $data['output']['listings_count'].' '.esc_html__('Listings', 'wpdirectorykit');
1237
1238 if(defined( 'WP_DEBUG' ) && WP_DEBUG)
1239 $data['listings_count_sql'] = $this->db->last_query();
1240
1241 if(isset($custom_parameters['wmvc_paged']))
1242 $options['current_page'] = intval(wmvc_xss_clean($custom_parameters['wmvc_paged']));
1243
1244 $get_settings_el_results = new WdkGetElementSettings($parameters['el_results_page_id'],$parameters['el_results_id'],$parameters['el_results_type']);
1245 $settings_el_results = $get_settings_el_results->get_settings();
1246 $settings_el_results = $settings_el_results['settings'];
1247
1248 if(wmvc_show_data('per_page', $settings_el_results, false)) {
1249 $options['limit'] = wmvc_show_data('per_page', $settings_el_results, false);
1250 }
1251
1252 if(wmvc_show_data('layout_type', $settings_el_results, false)) {
1253 $options['layout_type'] = wmvc_show_data('layout_type', $settings_el_results, false);
1254 }
1255
1256 $offset = $options['limit']*( $options['current_page']-1);
1257
1258 global $_GET;
1259 $temp_get = $_GET;
1260 $_GET = $custom_parameters;
1261 do_action('wpdirectorykit/ajax/loading_listings');
1262 $REQUEST_URI = $_SERVER["REQUEST_URI"];
1263
1264 $_SERVER["REQUEST_URI"] = $_SERVER['HTTP_REFERER'];
1265
1266 $data['output']['pagination_html'] = wdk_wp_frontend_paginate($data['output']['listings_count'], $options['limit'], 'wmvc_paged', array(), TRUE,
1267 FALSE, FALSE, $options['limit_pagination']);
1268
1269 $_SERVER["REQUEST_URI"] = $REQUEST_URI;
1270 $_GET = $temp_get;
1271
1272 wdk_prepare_search_query_GET($columns, $controller.'_m', $external_columns, $custom_parameters);
1273 $listings_result = $this->listing_m->get_pagination($options['limit'], $offset, array('is_activated' => 1,'is_approved'=>1));
1274
1275 if(defined( 'WP_DEBUG' ) && WP_DEBUG)
1276 $data['listings_result_sql'] = $this->db->last_query();
1277
1278 if(wmvc_show_data('layout_type', $settings_el_results, false)) {
1279 $settings_el_results['content_button_icon'] = $get_settings_el_results->generate_icon(wmvc_show_data('layout_type', $settings_el_results, false));
1280 } else {
1281 $settings_el_results['content_button_icon'] = '';
1282 }
1283
1284 if($listings_result) {
1285 foreach ($listings_result as $key => $listing) {
1286 $listing->card_view = '';
1287
1288 if (
1289 wdk_get_option('wdk_experimental_features') && wdk_get_option('wdk_experimental_listing_card_elementor_layout') &&
1290 wmvc_show_data('is_custom_layout_enable', $settings_el_results) == 'yes'
1291 ) {
1292 if ($options['layout_type'] == 'list' && wmvc_show_data('custom_layout_id_list', $settings_el_results, false)) {
1293 $content = '';
1294 $post_data = get_post(wmvc_show_data('custom_layout_id_list', $settings_el_results, false));
1295
1296 global $wdk_listing_id;
1297 $wdk_listing_id = wmvc_show_data('post_id', $listing);
1298 if ($post_data) {
1299 if ($post_data->post_type == 'page' || $post_data->post_type == 'elementor_library') {
1300 $elementor_instance = \Elementor\Plugin::instance();
1301 $content = $elementor_instance->frontend->get_builder_content_for_display(wmvc_show_data('custom_layout_id_list', $settings_el_results, false));
1302 if (empty($content))
1303 $content = $post_data->post_content;
1304 } else {
1305 $content = $post_data->post_content;
1306 }
1307 }
1308 $listing->card_view = ($content);
1309 } elseif ($options['layout_type'] == 'grid' && wmvc_show_data('custom_layout_id_grid', $settings_el_results, false)) {
1310 $content = '';
1311 $post_data = get_post( wmvc_show_data('custom_layout_id_grid', $settings_el_results, false));
1312
1313 global $wdk_listing_id;
1314 $wdk_listing_id = wmvc_show_data('post_id', $listing);
1315 if ($post_data) {
1316 if ($post_data->post_type == 'page' || $post_data->post_type == 'elementor_library') {
1317 $elementor_instance = \Elementor\Plugin::instance();
1318 $content = $elementor_instance->frontend->get_builder_content_for_display(wmvc_show_data('custom_layout_id_grid', $settings_el_results, false));
1319 if (empty($content))
1320 $content = $post_data->post_content;
1321 } else {
1322 $content = $post_data->post_content;
1323 }
1324 }
1325 $listing->card_view = ($content);
1326 } else {
1327 $listing->card_view = wdk_listing_card($listing, $settings_el_results);
1328 }
1329 } else {
1330 $listing->card_view = wdk_listing_card($listing, $settings_el_results);
1331 }
1332
1333 $data['output']['listings_result'][] = $listing;
1334 }
1335 } else {
1336 $data['output']['listings_result_message'] = '<p class="wdk_alert wdk_alert-danger">'.esc_html__('Results not found', 'wpdirectorykit').'</p>';
1337 }
1338
1339 }
1340
1341 /* map results */
1342 if(isset($parameters['el_map_id'])) {
1343 wdk_prepare_search_query_GET($columns, $controller.'_m', $external_columns, $custom_parameters);
1344 $map_results = $this->listing_m->get_pagination(NULL, NULL, array('is_activated' => 1,'is_approved'=>1));
1345 if(defined( 'WP_DEBUG' ) && WP_DEBUG)
1346 $data['map_results_sql'] = $this->db->last_query();
1347
1348 $get_settings_el_map = new WdkGetElementSettings($parameters['el_map_page_id'],$parameters['el_map_id'],$parameters['el_map_type']);
1349 $settings_el_map = $get_settings_el_map->get_settings();
1350 $settings_el_map = $settings_el_map['settings'];
1351
1352 foreach ($map_results as $key => $listing) {
1353 $listing->inner_marker = '';
1354
1355 $pin_icon = "";
1356 $font_class = "";
1357 $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>';
1358 $pin_icon = (isset( $settings_el_map['conf_custom_map_pin'])) ? esc_url($get_settings_el_map['conf_custom_map_pin']['url']) : '';
1359
1360 if(wmvc_show_data('conf_hide_real_location', $category) == 'yes') {
1361 $listing->listing_lat = wdk_move_gps($listing->listing_lat);
1362 $listing->listing_lng = wdk_move_gps($listing->listing_lng);
1363 }
1364
1365 if(!empty(wmvc_show_data('category_id', $listing))){
1366 $category = $this->category_m->get_data(wmvc_show_data('category_id', $listing));
1367 if(wmvc_show_data('marker_image_id', $category, false, TRUE, TRUE)){
1368 $pin_icon = wdk_image_src($category, 'full', NULL,'marker_image_id');
1369 } else if(!empty(wmvc_show_data('font_icon_code', $category))) {
1370 $font_class = wmvc_show_data('font_icon_code', $category);
1371 }
1372 } else {
1373 $font_class = "";
1374 }
1375
1376 if($pin_icon){
1377 $listing->inner_marker = '<div class="wdk_marker-container wdk_marker-container-image"><img src='.$pin_icon.'></img></div>';
1378 }elseif($font_icon && empty($font_class)){
1379 $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>';
1380 }else{
1381 $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>';
1382 }
1383
1384 $data['output']['map_results'][] = $listing;
1385 }
1386 }
1387
1388 $data['success'] = true;
1389 $this->output($data);
1390
1391 }
1392
1393 private function get_fa_icons() {
1394
1395 /* icons font Awesome 5 */
1396
1397 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",
1398 "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",
1399 "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",
1400 "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",
1401 "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",
1402 "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",
1403 "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",
1404 "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",
1405 "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",
1406 "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",
1407 "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",
1408 "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",
1409 "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",
1410 "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",
1411 "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",
1412 "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",
1413 "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",
1414 "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",
1415 "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",
1416 "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",
1417 "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",
1418 "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",
1419 "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",
1420 "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",
1421 "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",
1422 "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",
1423 "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",
1424 "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",
1425 "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",
1426 "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",
1427 "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",
1428 "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",
1429 "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",
1430 "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",
1431 "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",
1432 "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",
1433 "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",
1434 "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",
1435 "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",
1436 "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",
1437 "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",
1438 "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",
1439 "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",
1440 "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",
1441 "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",
1442 "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",
1443 "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",
1444 "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",
1445 "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",
1446 "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",
1447 "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",
1448 "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",
1449 "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",
1450 "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",
1451 "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",
1452 "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",
1453 "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",
1454 "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",
1455 "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",
1456 "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",
1457 "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",
1458 "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",
1459 "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",
1460 "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",
1461 "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",
1462 "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",
1463 "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",
1464 "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",
1465 "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",
1466 "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",
1467 "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");
1468
1469
1470 /* icons font Awesome 4 */
1471 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",
1472 "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",
1473 "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",
1474 "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",
1475 "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",
1476 "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",
1477 "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",
1478 "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",
1479 "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",
1480 "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",
1481 "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",
1482 "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",
1483 "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",
1484 "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",
1485 "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",
1486 "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",
1487 "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",
1488 "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",
1489 "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",
1490 "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",
1491 "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",
1492 "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",
1493 "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",
1494 "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",
1495 "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",
1496 "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",
1497 "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",
1498 "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",
1499 "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",
1500 "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",
1501 "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",
1502 "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",
1503 "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",
1504 "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",
1505 "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",
1506 "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",
1507 "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",
1508 "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",
1509 "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",
1510 "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",
1511 "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",
1512 "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",
1513 "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",
1514 "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",
1515 "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",
1516 "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",
1517 "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",
1518 "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",
1519 "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",
1520 "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",
1521 "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",
1522 "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",
1523 "fa fa-y-combinator","fa fa-yahoo","fa fa-yelp","fa fa-yoast","fa fa-youtube","fa fa-youtube-play","fa fa-youtube-square");
1524 }
1525
1526 }
1527
1528