PluginProbe
WP Directory Kit / 1.2.9
WP Directory Kit v1.2.9
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.2.9, at application/controllers/Wdk_frontendajax.php

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