PluginProbe
Post Grid Gutenberg Blocks – PostX / 2.6.1
Post Grid Gutenberg Blocks – PostX v2.6.1
5.0.39 5.0.38 5.0.37 5.0.36 5.0.35 5.0.34 5.0.33 5.0.32 5.0.31 5.0.30 5.0.29 5.0.28 5.0.27 5.0.26 5.0.25 5.0.23 5.0.24 5.0.22 5.0.21 5.0.20 5.0.19 5.0.18 5.0.17 2.1.1 2.1.2 All 237 releases
ultimate-post / classes / Functions.php

Functions.php in Post Grid Gutenberg Blocks – PostX 2.6.1, at classes/Functions.php

1,316 lines 50.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Common Functions.
4 *
5 * @package ULTP\Functions
6 * @since v.1.0.0
7 */
8 namespace ULTP;
9
10 defined('ABSPATH') || exit;
11
12 /**
13 * Functions class.
14 */
15
16 class Functions{
17
18 /**
19 * Setup class.
20 *
21 * @since v.1.0.0
22 */
23 public function __construct() {
24 if (!isset($GLOBALS['ultp_settings'])) {
25 $GLOBALS['ultp_settings'] = get_option('ultp_options');
26 }
27 }
28
29 /**
30 * ID for the Builder Post or Normal Post
31 *
32 * @since v.2.3.1
33 * @return NUMBER | is Builder or not
34 */
35 public function get_ID() {
36 $id = $this->is_builder();
37 return $id ? $id : (function_exists('is_shop') ? (is_shop() ? wc_get_page_id('shop') : get_the_ID()) : get_the_ID() );
38 }
39
40 /**
41 * Checking Statement of Archive Builder
42 *
43 * @since v.2.3.1
44 * @return BOOLEAN | is Builder or not
45 */
46 public function is_archive_builder() {
47 return get_post_type( get_the_ID() ) == 'ultp_builder' ? true : false;
48 }
49
50
51 /**
52 * Set Link with the Parameters
53 *
54 * @since v.1.1.0
55 * @return STRING | URL with Arg
56 */
57 public function get_premium_link( $url = 'https://www.wpxpo.com/postx/pricing/' ) {
58 $affiliate_id = apply_filters( 'ultp_affiliate_id', FALSE );
59 $arg = array( 'utm_source' => 'go_premium' );
60 if ( ! empty( $affiliate_id ) ) {
61 $arg[ 'ref' ] = esc_attr( $affiliate_id );
62 }
63 return add_query_arg( $arg, $url );
64 }
65
66
67 /**
68 * Get Width and Height of the Image
69 *
70 * @since v.1.1.0
71 * @return STRING | Image Size
72 */
73 public function get_size($name = ''){
74 global $_wp_additional_image_sizes;
75 $image_size = $name ? ( isset($_wp_additional_image_sizes[$name]) ? $_wp_additional_image_sizes[$name] : array_values($_wp_additional_image_sizes)[0] ) : array_values($_wp_additional_image_sizes)[0];
76
77 return ' width="'.$image_size['width'].'" height="'.$image_size['height'].'" ';
78 }
79
80
81 /**
82 * Image Placeholder
83 *
84 * @since v.1.1.0
85 * @return STRING | Image Placeholder
86 */
87 public function img_placeholder($type = 'small') {
88 switch ($type) {
89 case 'small':
90 return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAABLAQMAAACr9CA9AAAAA1BMVEX///+nxBvIAAAAAXRSTlMAQObYZgAAABZJREFUOI1jYMADmEe5o9xR7iiXQi4A4BsA388WUyMAAAAASUVORK5CYII=';
91 break;
92
93 case 'wide':
94 return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAKCAYAAADVTVykAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUeNpi/P//P8NAAiaGAQajDhh1wKgDRh0AEGAAQTcDEcKDrpMAAAAASUVORK5CYII=';
95 break;
96
97 case 'square':
98 return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX///+nxBvIAAAAAXRSTlMAQObYZgAAAApJREFUCJljYAAAAAIAAfRxZKYAAAAASUVORK5CYII=';
99 break;
100
101 case 'slider':
102 return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKYAAABkCAMAAAA7drv6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF////AAAAVcLTfgAAAAF0Uk5TAEDm2GYAAAAqSURBVHja7MEBDQAAAMKg909tDjegAAAAAAAAAAAAAAAAAAAAAH5NgAEAQTwAAWZtItYAAAAASUVORK5CYII=';
103 break;
104
105 default:
106 return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYYAAADcAQMAAABOLJSDAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAACJJREFUaIHtwTEBAAAAwqD1T20ND6AAAAAAAAAAAAAA4N8AKvgAAUFIrrEAAAAASUVORK5CYII=';
107 break;
108 }
109 }
110
111
112 /**
113 * Quick Query
114 *
115 * @since v.1.1.0
116 * @return ARRAY | Query Arg
117 */
118 public function get_quick_query($prams, $args) {
119 switch ($prams['queryQuick']) {
120 case 'related_posts':
121 global $post;
122 if (isset($post->ID)) {
123 $args['post__not_in'] = array($post->ID);
124 }
125 break;
126 case 'related_tag':
127 global $post;
128 if (isset($post->ID)) {
129 $args['tax_query'] = array(
130 array(
131 'taxonomy' => 'post_tag',
132 'terms' => $this->get_terms_id($post->ID, 'post_tag'),
133 'field' => 'term_id',
134 )
135 );
136 $args['post__not_in'] = array($post->ID);
137 }
138 break;
139 case 'related_category':
140 global $post;
141 if (isset($post->ID)) {
142 $args['tax_query'] = array(
143 array(
144 'taxonomy' => 'category',
145 'terms' => $this->get_terms_id($post->ID, 'category'),
146 'field' => 'term_id',
147 )
148 );
149 $args['post__not_in'] = array($post->ID);
150 }
151 break;
152 case 'related_cat_tag':
153 global $post;
154 if (isset($post->ID)) {
155 $args['tax_query'] = array(
156 array(
157 'taxonomy' => 'post_tag',
158 'terms' => $this->get_terms_id($post->ID, 'post_tag'),
159 'field' => 'term_id',
160 ),
161 array(
162 'taxonomy' => 'category',
163 'terms' => $this->get_terms_id($post->ID, 'category'),
164 'field' => 'term_id',
165 )
166 );
167 $args['post__not_in'] = array($post->ID);
168 }
169 break;
170 case 'sticky_posts':
171 $sticky = get_option('sticky_posts');
172 if (is_array($sticky)) {
173 rsort($sticky);
174 $sticky = array_slice($sticky, 0, $args['posts_per_page']);
175 }
176 $args['ignore_sticky_posts'] = 1;
177 $args['post__in'] = $sticky;
178 break;
179 case 'latest_post_published':
180 $args['orderby'] = 'date';
181 $args['order'] = 'DESC';
182 $args['ignore_sticky_posts'] = 1;
183 break;
184 case 'latest_post_modified':
185 $args['orderby'] = 'modified';
186 $args['order'] = 'DESC';
187 $args['ignore_sticky_posts'] = 1;
188 break;
189 case 'oldest_post_published':
190 $args['orderby'] = 'date';
191 $args['order'] = 'ASC';
192 break;
193 case 'oldest_post_modified':
194 $args['orderby'] = 'modified';
195 $args['order'] = 'ASC';
196 break;
197 case 'alphabet_asc':
198 $args['orderby'] = 'title';
199 $args['order'] = 'ASC';
200 break;
201 case 'alphabet_desc':
202 $args['orderby'] = 'title';
203 $args['order'] = 'DESC';
204 break;
205 case 'random_post':
206 $args['orderby'] = 'rand';
207 $args['order'] = 'ASC';
208 break;
209 case 'random_post_7_days':
210 $args['orderby'] = 'rand';
211 $args['order'] = 'ASC';
212 $args['date_query'] = array( array( 'after' => '1 week ago') );
213 break;
214 case 'random_post_30_days':
215 $args['orderby'] = 'rand';
216 $args['order'] = 'ASC';
217 $args['date_query'] = array( array( 'after' => '1 month ago') );
218 break;
219 case 'most_comment':
220 $args['orderby'] = 'comment_count';
221 $args['order'] = 'DESC';
222 break;
223 case 'most_comment_1_day':
224 $args['orderby'] = 'comment_count';
225 $args['order'] = 'DESC';
226 $args['date_query'] = array( array( 'after' => '1 day ago') );
227 break;
228 case 'most_comment_7_days':
229 $args['orderby'] = 'comment_count';
230 $args['order'] = 'DESC';
231 $args['date_query'] = array( array( 'after' => '1 week ago') );
232 break;
233 case 'most_comment_30_days':
234 $args['orderby'] = 'comment_count';
235 $args['order'] = 'DESC';
236 $args['date_query'] = array( array( 'after' => '1 month ago') );
237 break;
238 case 'popular_post_1_day_view':
239 $args['meta_key'] = '__post_views_count';
240 $args['orderby'] = 'meta_value meta_value_num';
241 $args['order'] = 'DESC';
242 $args['date_query'] = array( array( 'after' => '1 day ago') );
243 break;
244 case 'popular_post_7_days_view':
245 $args['meta_key'] = '__post_views_count';
246 $args['orderby'] = 'meta_value meta_value_num';
247 $args['order'] = 'DESC';
248 $args['date_query'] = array( array( 'after' => '1 week ago') );
249 break;
250 case 'popular_post_30_days_view':
251 $args['meta_key'] = '__post_views_count';
252 $args['orderby'] = 'meta_value meta_value_num';
253 $args['order'] = 'DESC';
254 $args['date_query'] = array( array( 'after' => '1 month ago') );
255 break;
256 case 'popular_post_all_times_view':
257 $args['meta_key'] = '__post_views_count';
258 $args['orderby'] = 'meta_value meta_value_num';
259 $args['order'] = 'DESC';
260 break;
261 default:
262 # code...
263 break;
264 }
265 return $args;
266 }
267
268 /**
269 * Get All Term ID as Array
270 *
271 * @since v.2.4.12
272 * @return ARRAY | Query Arg
273 */
274 public function get_terms_id($id, $type) {
275 $data = array();
276 $arr = get_the_terms($id, $type);
277 if (is_array($arr)) {
278 foreach ($arr as $key => $val) {
279 $data[] = $val->term_id;
280 }
281 }
282 return $data;
283 }
284
285 /**
286 * Get All Reusable ID
287 *
288 * @since v.1.1.0
289 * @return ARRAY | Query Arg
290 */
291 public function reusable_id($post_id){
292 $reusable_id = array();
293 if($post_id){
294 $post = get_post($post_id);
295 if (has_blocks($post->post_content)) {
296 $blocks = parse_blocks($post->post_content);
297 foreach ($blocks as $key => $value) {
298 if(isset($value['attrs']['ref'])) {
299 $reusable_id[] = $value['attrs']['ref'];
300 }
301 }
302 }
303 }
304 return $reusable_id;
305 }
306
307
308 /**
309 * Set CSS Style
310 *
311 * @since v.1.1.0
312 * @return ARRAY | Query Arg
313 */
314 public function set_css_style($post_id, $shortcode = false){
315 if( $post_id ){
316 $upload_dir_url = wp_get_upload_dir();
317 $upload_css_dir_url = trailingslashit( $upload_dir_url['basedir'] );
318 $css_dir_path = $upload_css_dir_url . "ultimate-post/ultp-css-{$post_id}.css";
319
320 $css_dir_url = trailingslashit( $upload_dir_url['baseurl'] );
321 if (is_ssl()) {
322 $css_dir_url = str_replace('http://', 'https://', $css_dir_url);
323 }
324
325 // Reusable CSS
326 $reusable_id = ultimate_post()->reusable_id($post_id);
327 foreach ( $reusable_id as $id ) {
328 $reusable_dir_path = $upload_css_dir_url."ultimate-post/ultp-css-{$id}.css";
329 if (file_exists( $reusable_dir_path )) {
330 $css_url = $css_dir_url . "ultimate-post/ultp-css-{$id}.css";
331 wp_enqueue_style( "ultp-post-{$id}", $css_url, array(), ultimate_post()->get_setting('save_version'), 'all' );
332 }else{
333 $css = get_post_meta($id, '_ultp_css', true);
334 if( $css ) {
335 wp_enqueue_style("ultp-post-{$id}", $css, false, ultimate_post()->get_setting('save_version'));
336 }
337 }
338 }
339
340 if (isset($_GET['et_fb']) || (isset($_GET['action']) && sanitize_key($_GET['action']) == 'elementor') || $shortcode) {
341 return ultimate_post()->set_inline(get_post_meta($post_id, '_ultp_css', true));
342 } else {
343 if ( file_exists( $css_dir_path ) ) {
344 $css_url = $css_dir_url . "ultimate-post/ultp-css-{$post_id}.css";
345 wp_enqueue_style( "ultp-post-{$post_id}", $css_url, array(), ultimate_post()->get_setting('save_version'), 'all' );
346 } else {
347 $css = get_post_meta($post_id, '_ultp_css', true);
348 if( $css ) {
349 wp_enqueue_style("ultp-post-{$post_id}", $css, false, ultimate_post()->get_setting('save_version'));
350 }
351 }
352 }
353 }
354 }
355
356
357 /**
358 * Get Global Plugin Settings
359 *
360 * @since v.1.0.0
361 * @param STRING | Key of the Option
362 * @return ARRAY | STRING
363 */
364 public function get_setting($key = ''){
365 $data = $GLOBALS['ultp_settings'];
366 if ($key != '') {
367 return isset($data[$key]) ? $data[$key] : '';
368 } else {
369 return $data;
370 }
371 }
372
373
374 /**
375 * Set Option Settings
376 *
377 * @since v.1.0.0
378 * @param STRING | Key of the Option (STRING), Value (STRING)
379 * @return NULL
380 */
381 public function set_setting($key = '', $val = '') {
382 if($key != ''){
383 $data = $GLOBALS['ultp_settings'];
384 $data[$key] = $val;
385 update_option('ultp_options', $data);
386 $GLOBALS['ultp_settings'] = $data;
387 }
388 }
389
390
391 /**
392 * Get Image HTML
393 *
394 * @since v.1.0.0
395 * @param | URL (STRING) | size (STRING) | class (STRING) | alt (STRING)
396 * @return STRING
397 */
398 public function get_image_html($url = '', $size = 'full', $class = '', $alt = '', $lazy = ''){
399 $alt = $alt ? ' alt="'.$alt.'" ' : '';
400 $lazy_data = $lazy ? ' loading="lazy"' : '';
401 $class = $class ? ' class="'.$class.'" ' : '';
402 return '<img '.$lazy_data.$class.$alt.' src="'.$url.'" />';
403 }
404
405
406 /**
407 * Get Image HTML
408 *
409 * @since v.1.0.0
410 * @param | Attach ID (STRING) | size (STRING) | class (STRING) | alt (STRING)
411 * @return STRING
412 */
413 public function get_image($attach_id, $size = 'full', $class = '', $alt = '', $srcset = '', $lazy = ''){
414 $alt = $alt ? ' alt="'.$alt.'" ' : '';
415 $class = $class ? ' class="'.$class.'" ' : '';
416 $size = ( ultimate_post()->get_setting('disable_image_size') == 'yes' && strpos($size, 'ultp_layout_') !== false ) ? 'full' : $size;
417 $lazy_data = $lazy ? ' loading="lazy"' : '';
418 $srcset_data = $srcset ? ' srcset="'.esc_attr(wp_get_attachment_image_srcset($attach_id)).'"' : '';
419 return '<img '.$srcset_data.$lazy_data.$class.$alt.' src="'.wp_get_attachment_image_url( $attach_id, $size ).'" />';
420 }
421
422
423 /**
424 * Setup Initial Data Set
425 *
426 * @since v.1.0.0
427 * @return NULL
428 */
429 public function init_set_data(){
430 $data = get_option( 'ultp_options', array() );
431 $init_data = array(
432 'css_save_as' => 'wp_head',
433 'preloader_style' => 'style1',
434 'preloader_color' => '#037fff',
435 'container_width' => '1140',
436 'hide_import_btn' => '',
437 'disable_image_size'=> '',
438 'disable_view_cookies' => '',
439 'ultp_templates' => 'true',
440 'ultp_elementor' => 'true',
441 'ultp_table_of_content'=> 'true',
442 'post_grid_1' => 'yes',
443 'post_grid_2' => 'yes',
444 'post_grid_3' => 'yes',
445 'post_grid_4' => 'yes',
446 'post_grid_5' => 'yes',
447 'post_grid_6' => 'yes',
448 'post_grid_7' => 'yes',
449 'post_list_1' => 'yes',
450 'post_list_2' => 'yes',
451 'post_list_3' => 'yes',
452 'post_list_4' => 'yes',
453 'post_module_1' => 'yes',
454 'post_module_2' => 'yes',
455 'post_slider_1' => 'yes',
456 'heading' => 'yes',
457 'image' => 'yes',
458 'taxonomy' => 'yes',
459 'wrapper' => 'yes',
460 'news_ticker' => 'yes',
461 'archive_title' => 'yes',
462 'save_version' => rand(1, 1000)
463 );
464 if (empty($data)) {
465 update_option('ultp_options', $init_data);
466 $GLOBALS['ultp_settings'] = $init_data;
467 } else {
468 foreach ($init_data as $key => $single) {
469 if (!isset($data[$key])) {
470 $data[$key] = $single;
471 }
472 }
473 update_option('ultp_options', $data);
474 $GLOBALS['ultp_settings'] = $data;
475 }
476 }
477
478
479 /**
480 * Get Excerpt Text
481 *
482 * @since v.1.0.0
483 * @param | Post ID (STRING) | Limit (NUMBER)
484 * @return STRING
485 */
486 public function excerpt( $post_id, $limit = 55 ) {
487 return apply_filters( 'the_excerpt', wp_trim_words( get_the_content( $post_id ) , $limit ) );
488 }
489
490 public function get_builder_attr() {
491 $builder_data = '';
492 if (is_archive()) {
493 if (is_date()) {
494 if ( is_year() ) {
495 $builder_data = 'date###'.get_the_date('Y');
496 } else if ( is_month() ) {
497 $builder_data = 'date###'.get_the_date('Y-n');
498 } else if ( is_day() ) {
499 $builder_data = 'date###'.get_the_date('Y-n-j');
500 }
501 } else if (is_author()) {
502 $builder_data = 'author###'.get_the_author_meta('ID');
503 } else {
504 $obj = get_queried_object();
505 if (isset($obj->taxonomy)) {
506 $builder_data = 'taxonomy###'.$obj->taxonomy.'###'.$obj->slug;
507 }
508 }
509 } else if (is_search()) {
510 $builder_data = 'search###'.get_search_query(true);
511 }
512 return $builder_data ? 'data-builder="'.$builder_data.'"' : '';
513 }
514
515
516 public function is_builder($builder = '') {
517 $id = '';
518 if (function_exists('ultimate_post_pro')) {
519 if ($builder) {
520 return true;
521 }
522 $page_id = ultimate_post_pro()->conditions('return');
523 if ($page_id && ultimate_post()->get_setting('ultp_builder')) {
524 $id = $page_id;
525 }
526 }
527 return $id;
528 }
529
530
531 /**
532 * Get Post Number Depending On Device
533 *
534 * @since v.2.5.4
535 * @param MULTIPLE | Attribute of Posts
536 * @return STRING
537 */
538 public function get_post_number($preDef, $prev, $current) {
539
540 $current = is_object($current)?json_decode(json_encode($current), true):$current;
541 if (['lg'=>$preDef,'sm'=>$preDef,'xs'=>$preDef] == $current) {
542 if ($preDef != $prev) {
543 return $prev;
544 }
545 }
546 if ($this->isDevice() == 'mobile') {
547 return $current['xs'];
548 } else if ($this->isDevice() == 'tablet') {
549 return $current['sm'];
550 } else {
551 return $current['lg'];
552 }
553 }
554
555
556 /**
557 * Get Post Number Depending On Device
558 *
559 * @since v.2.5.4
560 * @param NULL
561 * @return STRING | Device Type
562 */
563 public function isDevice(){
564 $useragent = isset($_SERVER['HTTP_USER_AGENT']) ? sanitize_key($_SERVER['HTTP_USER_AGENT']) : '';
565 if ($useragent) {
566 if (preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))) {
567 return 'mobile';
568 } else if (preg_match('/(tablet|ipad|playbook)|(android(?!.*(mobi|opera mini)))/i', strtolower($useragent))) {
569 return 'tablet';
570 } else {
571 return 'desktop';
572 }
573 }
574 return 'desktop';
575 }
576
577
578 /**
579 * Get Raw Value from Objects
580 *
581 * @since v.2.5.3
582 * @param NULL
583 * @return STRING | Device Type
584 */
585 public function get_value($attr) {
586 $data = [];
587 if (is_array($attr)) {
588 foreach ($attr as $val) {
589 $data[] = $val->value;
590 }
591 }
592 return $data;
593 }
594
595
596 /**
597 * Query Builder
598 *
599 * @since v.1.0.0
600 * @param ARRAY | Attribute of the Query
601 * @return ARRAY
602 */
603 public function get_query($attr) {
604 $builder = isset($attr['builder']) ? $attr['builder'] : '';
605 if ($this->is_builder($builder)) {
606 $archive_query = array();
607 if ($builder) {
608 $str = explode('###', $builder);
609 if (isset($str[0])) {
610 if ($str[0] == 'taxonomy') {
611 if (isset($str[1]) && isset($str[2])) {
612 $archive_query['tax_query'] = array(
613 array(
614 'taxonomy' => $str[1],
615 'field' => 'slug',
616 'terms' => $str[2]
617 )
618 );
619 }
620 } else if ($str[0] == 'author') {
621 if (isset($str[1])) {
622 $archive_query['author'] = $str[1];
623 }
624 } else if ($str[0] == 'search') {
625 if (isset($str[1])) {
626 $archive_query['s'] = $str[1];
627 }
628 } else if ($str[0] == 'date') {
629 if (isset($str[1])) {
630 $all_date = explode('-', $str[1]);
631 if (!empty($all_date)) {
632 $arg = array();
633 if (isset($all_date[0])) { $arg['year'] = $all_date[0]; }
634 if (isset($all_date[1])) { $arg['month'] = $all_date[1]; }
635 if (isset($all_date[2])) { $arg['day'] = $all_date[2]; }
636 $archive_query['date_query'][] = $arg;
637 }
638 }
639 }
640 }
641 } else {
642 global $wp_query;
643 $archive_query = $wp_query->query_vars;
644 }
645 $archive_query['posts_per_page'] = isset($attr['queryNumber']) ? $attr['queryNumber'] : 3;
646 $archive_query['paged'] = isset($attr['paged']) ? $attr['paged'] : 1;
647 if (isset($attr['queryOffset']) && $attr['queryOffset'] ) {
648 $offset = $this->get_offset($attr['queryOffset'], $archive_query);
649 $archive_query = array_merge($archive_query, $offset);
650 }
651
652 // Include Remove from Version 2.5.4
653 if (isset($attr['queryInclude']) && $attr['queryInclude']) {
654 $_include = explode(',', $attr['queryInclude']);
655 if (is_array($_include) && count($_include)) {
656 $archive_query['post__in'] = isset($archive_query['post__in']) ? array_merge($archive_query['post__in'], $_include) : $_include;
657 $archive_query['ignore_sticky_posts'] = 1;
658 $archive_query['orderby'] = 'post__in';
659 }
660 }
661
662 if (isset($attr['queryExclude']) && $attr['queryExclude']) {
663 $_exclude = (substr($attr['queryExclude'], 0, 1) === "[") ? $this->get_value(json_decode($attr['queryExclude'])) : explode(',', $attr['queryExclude']);
664 if (is_array($_exclude) && count($_exclude)) {
665 $archive_query['post__not_in'] = isset($query_args['post__not_in']) ? array_merge($query_args['post__not_in'], $_exclude) : $_exclude;
666 }
667 }
668
669
670 if(isset($attr['querySticky']) && $attr['querySticky']) {
671 if (filter_var($attr['querySticky'], FILTER_VALIDATE_BOOLEAN)) {
672 $sticky = get_option( 'sticky_posts', [] );
673 $query_args['post__not_in'] = isset($query_args['post__not_in']) ? array_merge($query_args['post__not_in'], $sticky) : $sticky;
674 }
675 }
676
677 $archive_query['post_status'] = 'publish';
678
679 // Quick Query Support for Builder
680 if (isset($attr['queryQuick'])) {
681 if ($attr['queryQuick'] != '') {
682 $archive_query = ultimate_post()->get_quick_query($attr, $archive_query);
683 }
684 }
685
686 return apply_filters('ultp_archive_query', $archive_query);
687 }
688
689 $query_args = array(
690 'posts_per_page' => isset($attr['queryNumber']) ? $attr['queryNumber'] : 3,
691 'post_type' => isset($attr['queryType']) ? $attr['queryType'] : 'post',
692 'orderby' => isset($attr['queryOrderBy']) ? $attr['queryOrderBy'] : 'date',
693 'order' => isset($attr['queryOrder']) ? $attr['queryOrder'] : 'desc',
694 'paged' => isset($attr['paged']) ? $attr['paged'] : 1,
695 'post_status' => 'publish'
696 );
697
698
699 if ($attr['queryType'] == 'posts') {
700 if (isset($attr['queryPosts']) && $attr['queryPosts']) {
701 unset($query_args['post_type']);
702 $data = json_decode(isset($attr['queryPosts'])?$attr['queryPosts']:'[]');
703 $final = $this->get_value($data);
704 if (count($final) > 0) {
705 $query_args['post__in'] = $final;
706 $query_args['posts_per_page'] = -1;
707 }
708 $query_args['ignore_sticky_posts'] = 1;
709 return $query_args;
710 }
711 } else if ($attr['queryType'] == 'customPosts') {
712 if (isset($attr['queryCustomPosts']) && $attr['queryCustomPosts']) {
713 $query_args['post_type'] = $this->get_post_type();
714 $data = json_decode(isset($attr['queryCustomPosts'])?$attr['queryCustomPosts']:'[]');
715 $final = $this->get_value($data);
716 if (count($final) > 0) {
717 $query_args['post__in'] = $final;
718 $query_args['posts_per_page'] = -1;
719 }
720 $query_args['ignore_sticky_posts'] = 1;
721 return $query_args;
722 }
723 }
724
725 if(isset($attr['queryExcludeAuthor']) && $attr['queryExcludeAuthor']){
726 $data = json_decode(isset($attr['queryExcludeAuthor'])?$attr['queryExcludeAuthor']:'[]');
727 $final = $this->get_value($data);
728 if (count($final) > 0) {
729 $query_args['author__not_in'] = $final;
730 }
731 }
732
733
734 if(isset($attr['queryOrderBy']) && isset($attr['metaKey'])){
735 if($attr['queryOrderBy'] == 'meta_value_num') {
736 $query_args['meta_key'] = $attr['metaKey'];
737 }
738 }
739
740 // Include Remove from Version 2.5.4
741 if (isset($attr['queryInclude']) && $attr['queryInclude']) {
742 $_include = explode(',', $attr['queryInclude']);
743 if (is_array($_include) && count($_include)) {
744 $query_args['post__in'] = isset($query_args['post__in']) ? array_merge($query_args['post__in'], $_include) : $_include;
745 $query_args['ignore_sticky_posts'] = 1;
746 $query_args['orderby'] = 'post__in';
747 }
748 }
749
750
751 if(isset($attr['queryTax'])){
752 if(isset($attr['queryTaxValue'])){
753 $tax_value = (strlen($attr['queryTaxValue']) > 2) ? $attr['queryTaxValue'] : [];
754 $tax_value = is_array($tax_value) ? $tax_value : json_decode($tax_value);
755
756 $tax_value = (isset($tax_value[0]) && is_object($tax_value[0])) ? $this->get_value($tax_value) : $tax_value;
757
758 if(count($tax_value) > 0){
759 $relation = isset($attr['queryRelation']) ? $attr['queryRelation'] : 'OR';
760 $var = array('relation'=>$relation);
761 foreach ($tax_value as $val) {
762 $tax_name = $attr['queryTax'];
763 // For Custom Terms
764 if ($attr['queryTax'] == 'multiTaxonomy') {
765 $temp = explode('###', $val);
766 if (isset($temp[1])) {
767 $val = $temp[1];
768 $tax_name = $temp[0];
769 }
770 }
771
772 $var[] = array('taxonomy'=> $tax_name, 'field' => 'slug', 'terms' => $val );
773 }
774 if(count($var) > 1){
775 $query_args['tax_query'] = $var;
776 }
777 }
778 }
779 }
780
781
782 if (isset($attr['queryExcludeTerm']) && $attr['queryExcludeTerm']) {
783 $temp = json_decode($attr['queryExcludeTerm']);
784 $_term = [];
785 foreach ($temp as $val) {
786 $temp = explode('###', $val->value);
787 if (isset($temp[1])) {
788 if (array_key_exists($temp[0], $_term)) {
789 $_term[$temp[0]][] = $temp[1];
790 } else {
791 $_term[$temp[0]] = array($temp[1]);
792 }
793 }
794 }
795 if (count($_term) > 0) {
796 $final = array('relation' => 'AND');
797 foreach ($_term as $key => $val) {
798 $final[] = array(
799 'taxonomy' => $key,
800 'field' => 'slug',
801 'terms' => $val,
802 'operator' => 'NOT IN',
803 );
804 }
805
806 if (array_key_exists('tax_query', $query_args)) {
807 $query_args['tax_query'] = array(
808 'relation' => 'AND',
809 $query_args['tax_query']
810 );
811 $query_args['tax_query'][] = $final;
812 } else {
813 $query_args['tax_query'] = $final;
814 }
815 }
816 }
817
818 if (isset($attr['queryExclude']) && $attr['queryExclude']) {
819 $_exclude = (substr($attr['queryExclude'], 0, 1) === "[") ? $this->get_value(json_decode($attr['queryExclude'])) : explode(',', $attr['queryExclude']);
820 if (is_array($_exclude) && count($_exclude)) {
821 $query_args['post__not_in'] = isset($query_args['post__not_in']) ? array_merge($query_args['post__not_in'], $_exclude) : $_exclude;
822 }
823 }
824
825 if (isset($attr['queryUnique']) && $attr['queryUnique']) {
826 global $unique_ID;
827 if (isset($unique_ID[$attr['queryUnique']])) {
828 $query_args['post__not_in'] = isset($query_args['post__not_in']) ? array_merge($query_args['post__not_in'], $unique_ID[$attr['queryUnique']]) : $unique_ID[$attr['queryUnique']];
829 }
830 }
831
832 if (isset($attr['queryQuick'])) {
833 if ($attr['queryQuick'] != '') {
834 $query_args = ultimate_post()->get_quick_query($attr, $query_args);
835 }
836 }
837
838 if (isset($attr['queryOffset']) && $attr['queryOffset'] ) {
839 $offset = $this->get_offset($attr['queryOffset'], $query_args);
840 $query_args = array_merge($query_args, $offset);
841 }
842
843 if (isset($attr['queryAuthor']) && $attr['queryAuthor'] ) {
844 $_include = (substr($attr['queryAuthor'], 0, 1) === "[") ? $this->get_value(json_decode($attr['queryAuthor'])) : explode(',', $attr['queryAuthor']);
845 if (is_array($_include) && count($_include)) {
846 $query_args['author__in'] = $_include;
847 }
848 }
849
850 if(isset($attr['querySticky']) && $attr['querySticky']) {
851 if (filter_var($attr['querySticky'], FILTER_VALIDATE_BOOLEAN)) {
852 $sticky = get_option( 'sticky_posts', [] );
853 $query_args['post__not_in'] = isset($query_args['post__not_in']) ? array_merge($query_args['post__not_in'], $sticky) : $sticky;
854 }
855 }
856
857 $query_args['wpnonce'] = wp_create_nonce( 'ultp-nonce' );
858
859 return apply_filters('ultp_frontend_query', $query_args);
860 }
861
862 function get_offset($queryOffset, $query_args) {
863 $query = array();
864 if ($query_args['paged'] > 1) {
865 $offset_post = wp_get_recent_posts($query_args, OBJECT);
866 if ( count($offset_post) > 0 ) {
867 $offset = array();
868 for($x = count($offset_post); $x > count($offset_post) - $queryOffset; $x--){
869 $offset[] = $offset_post[$x-1]->ID;
870 }
871 $query['post__not_in'] = $offset;
872 }
873 } else {
874 $query['offset'] = isset($queryOffset) ? $queryOffset : 0;
875 }
876 return $query;
877 }
878
879
880 /**
881 * Get Page Number
882 *
883 * @since v.1.0.0
884 * @param | Attribute of the Query(ARRAY) | Post Number(ARRAY)
885 * @return ARRAY
886 */
887 public function get_page_number($attr, $post_number) {
888 if ($post_number > 0) {
889 if (isset($attr['queryOffset']) && $attr['queryOffset']) {
890 $post_number = $post_number - (int)$attr['queryOffset'];
891 }
892 $post_per_page = isset($attr['queryNumber']) ? ($attr['queryNumber'] ? $attr['queryNumber'] : 1) : 3;
893 $pages = ceil($post_number/$post_per_page);
894 return $pages ? $pages : 1;
895 }else{
896 return 1;
897 }
898 }
899
900
901 /**
902 * Get Image Size
903 *
904 * @since v.1.0.0
905 * @param | Attribute of the Query(ARRAY) | Post Number(ARRAY)
906 * @return ARRAY
907 */
908 public function get_image_size() {
909 $sizes = get_intermediate_image_sizes();
910 $filter = array('full' => 'Full');
911 foreach ($sizes as $value) {
912 $title = ucwords(str_replace(array('_', '-'), array(' ', ' '), $value));
913 switch ($value) {
914 case 'thumbnail':
915 $title = $title.' [150x150]';
916 break;
917 case 'medium':
918 $title = $title.' [300x300]';
919 break;
920 case 'large':
921 $title = $title.' [1024x1024]';
922 break;
923 case 'ultp_layout_landscape_large':
924 $title = $title.' [1200x800]';
925 break;
926 case 'ultp_layout_landscape':
927 $title = $title.' [870x570]';
928 break;
929 case 'ultp_layout_portrait':
930 $title = $title.' [600x900]';
931 break;
932 case 'ultp_layout_square':
933 $title = $title.' [600x600]';
934 break;
935 default:
936 break;
937 }
938 $filter[$value] = $title;
939 }
940 return $filter;
941 }
942
943
944 /**
945 * Get All PostType Registered
946 *
947 * @since v.1.0.0
948 * @param | Attribute of the Query(ARRAY) | Post Number(ARRAY)
949 * @return ARRAY
950 */
951 public function get_post_type() {
952 $post_type = get_post_types( ['public' => true], 'names' );
953 return array_diff($post_type, array( 'attachment' ));
954 }
955
956
957 /**
958 * Get Pagination HTML
959 *
960 * @since v.1.0.0
961 * @param | pages (NUMBER) | Pagination Nav (STRING) | Pagination Text |
962 * @return STRING
963 */
964 public function pagination($pages = '', $paginationNav = '', $paginationText = '') {
965 $html = '';
966 $showitems = 3;
967 $paged = is_front_page() ? get_query_var('page') : get_query_var('paged');
968 $paged = $paged ? $paged : 1;
969 if($pages == '') {
970 global $wp_query;
971 $pages = $wp_query->max_num_pages;
972 if(!$pages) {
973 $pages = 1;
974 }
975 }
976 $data = ($paged>=3?[($paged-1),$paged,$paged+1]:[1,2,3]);
977
978 $paginationText = explode('|', $paginationText);
979
980 $prev_text = isset($paginationText[0]) ? $paginationText[0] : __("Previous", "ultimate-post");
981 $next_text = isset($paginationText[1]) ? $paginationText[1] : __("Next", "ultimate-post");
982
983 if(1 != $pages) {
984 $html .= '<ul class="ultp-pagination">';
985 $display_none = 'style="display:none"';
986 if($pages > 4) {
987 $html .= '<li class="ultp-prev-page-numbers" '.($paged==1?$display_none:"").'><a href="'.get_pagenum_link($paged-1).'">'.ultimate_post()->svg_icon('leftAngle2').' '.($paginationNav == 'textArrow' ? $prev_text : "").'</a></li>';
988 }
989 if($pages > 4){
990 $html .= '<li class="ultp-first-pages" '.($paged<2?$display_none:"").' data-current="1"><a href="'.get_pagenum_link(1).'">1</a></li>';
991 }
992 if($pages > 4){
993 $html .= '<li class="ultp-first-dot" '.($paged<2? $display_none : "").'><a href="#">...</a></li>';
994 }
995 foreach ($data as $i) {
996 if($pages >= $i){
997 $html .= ($paged == $i) ? '<li class="ultp-center-item pagination-active" data-current="'.$i.'"><a href="'.get_pagenum_link($i).'">'.$i.'</a></li>':'<li class="ultp-center-item" data-current="'.$i.'"><a href="'.get_pagenum_link($i).'">'.$i.'</a></li>';
998 }
999 }
1000 if($pages > 4){
1001 $html .= '<li class="ultp-last-dot" '.($pages<=$paged+1?$display_none:"").'><a href="#">...</a></li>';
1002 }
1003 if($pages > 4){
1004 $html .= '<li class="ultp-last-pages" '.($pages<=$paged+1?$display_none:"").' data-current="'.$pages.'"><a href="'.get_pagenum_link($pages).'">'.$pages.'</a></li>';
1005 }
1006 if ($paged != $pages) {
1007 $html .= '<li class="ultp-next-page-numbers"><a href="'.get_pagenum_link($paged + 1).'">'.($paginationNav == 'textArrow' ? $next_text : "").ultimate_post()->svg_icon('rightAngle2').'</a></li>';
1008 }
1009 $html .= '</ul>';
1010 }
1011 return $html;
1012 }
1013
1014
1015 /**
1016 * Get Excerpt Word
1017 *
1018 * @since v.1.0.0
1019 * @param NUMBER | Character Length
1020 * @return STRING
1021 */
1022 public function excerpt_word($charlength = 200) {
1023 $html = '';
1024 $charlength++;
1025 $excerpt = get_the_excerpt();
1026 if ( mb_strlen( $excerpt ) > $charlength ) {
1027 $subex = mb_substr( $excerpt, 0, $charlength - 5 );
1028 $exwords = explode( ' ', $subex );
1029 $excut = - ( mb_strlen( $exwords[ count( $exwords ) - 1 ] ) );
1030 if ( $excut < 0 ) {
1031 $html = mb_substr( $subex, 0, $excut );
1032 } else {
1033 $html = $subex;
1034 }
1035 $html .= '...';
1036 } else {
1037 $html = $excerpt;
1038 }
1039 return $html;
1040 }
1041
1042
1043 /**
1044 * Get Taxonomy Lists
1045 *
1046 * @since v.1.0.0
1047 * @param STRING | Taxonomy Slug
1048 * @return ARRAY
1049 */
1050 public function taxonomy( $prams = 'category' ) {
1051 $data = array();
1052 $terms = get_terms( $prams, array(
1053 'hide_empty' => false,
1054 ));
1055 if( !is_wp_error($terms) ){
1056 foreach ($terms as $val) {
1057 $data[urldecode_deep($val->slug)] = $val->name;
1058 }
1059 }
1060 return $data;
1061 }
1062
1063
1064 /**
1065 * Get Taxonomy Data Lists
1066 *
1067 * @since v.1.0.0
1068 * @param OBJECT | Taxonomy Object
1069 * @return ARRAY
1070 */
1071 public function get_tax_data($terms) {
1072 $temp = array();
1073 $image = '';
1074 $thumbnail_id = get_term_meta( $terms->term_id, 'ultp_category_image', true );
1075 if( $thumbnail_id ){
1076 $image = wp_get_attachment_url( $thumbnail_id );
1077 }
1078 $temp['url'] = get_term_link($terms);
1079 $temp['name'] = $terms->name;
1080 $temp['desc'] = $terms->description;
1081 $temp['count'] = $terms->count;
1082 $temp['image'] = $image;
1083 $color = get_term_meta($terms->term_id, 'ultp_category_color', true);
1084 $temp['color'] = $color ? $color : '#037fff';
1085 return $temp;
1086 }
1087
1088 public function get_category_data($catSlug, $number = 40, $type = '', $tax_slug = 'category') {
1089 $data = array();
1090 if($type == 'child'){
1091 $image = '';
1092 if (!empty($catSlug)) {
1093 foreach ($catSlug as $cat) {
1094 $parent_term = get_term_by('slug', $cat, $tax_slug);
1095 if (!empty($parent_term)) {
1096 $term_data = get_terms($tax_slug, array(
1097 'hide_empty' => true,
1098 'parent' => $parent_term->term_id
1099 ));
1100 if (!empty($term_data)) {
1101 foreach ($term_data as $terms) {
1102 $data[] = $this->get_tax_data($terms);
1103 }
1104 }
1105 }
1106 }
1107 }
1108 } else if ($type == 'parent') {
1109 $term_data = get_terms( $tax_slug, array( 'hide_empty' => true, 'number' => $number, 'parent' => 0 ) );
1110 if (!empty($term_data)) {
1111 foreach ($term_data as $terms) {
1112 $data[] = $this->get_tax_data($terms);
1113 }
1114 }
1115 } else if ($type == 'custom') {
1116 foreach ($catSlug as $cat) {
1117 $terms = get_term_by('slug', $cat, $tax_slug);
1118 if (!empty($terms)) {
1119 $data[] = $this->get_tax_data($terms);
1120 }
1121 }
1122 } else {
1123 $term_data = get_terms($tax_slug, array('hide_empty' => true, 'number' => $number));
1124 if (!empty($term_data)) {
1125 foreach ($term_data as $terms) {
1126 $data[] = $this->get_tax_data($terms);
1127 }
1128 }
1129 }
1130 return $data;
1131 }
1132
1133
1134 /**
1135 * Get Next Previous HTML
1136 *
1137 * @since v.1.0.0
1138 * @param OBJECT | Taxonomy Object
1139 * @return STRING
1140 */
1141 public function next_prev() {
1142 $html = '';
1143 $html .= '<ul>';
1144 $html .= '<li>';
1145 $html .= '<a class="ultp-prev-action ultp-disable" href="#">';
1146 $html .= ultimate_post()->svg_icon('leftAngle2').'<span class="screen-reader-text">'.esc_html__("Previous", "ultimate-post").'</span>';
1147 $html .= '</a>';
1148 $html .= '</li>';
1149 $html .= '<li>';
1150 $html .= '<a class="ultp-next-action">';
1151 $html .= ultimate_post()->svg_icon('rightAngle2').'<span class="screen-reader-text">'.esc_html__("Next", "ultimate-post").'</span>';
1152 $html .= '</a>';
1153 $html .= '</li>';
1154 $html .= '</ul>';
1155 return $html;
1156 }
1157
1158
1159 /**
1160 * Get Loading HTML
1161 *
1162 * @since v.1.0.0
1163 * @param NULL
1164 * @return STRING
1165 */
1166 public function loading(){
1167 $html = '';
1168 $style = ultimate_post()->get_setting('preloader_style');
1169 if( $style == 'style2' ){
1170 $html .= '<div class="ultp-loading-spinner" style="width:100%;height:100%"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>';//ultp-block-items-wrap
1171 } else {
1172 $html .= '<div class="ultp-loading-blocks" style="width:100%;height:100%;"><div style="left: 0;top: 0;animation-delay:0s;"></div><div style="left: 21px;top: 0;animation-delay:0.125s;"></div><div style="left: 42px;top: 0;animation-delay:0.25s;"></div><div style="left: 0;top: 21px;animation-delay:0.875s;"></div><div style="left: 42px;top: 21px;animation-delay:0.375s;"></div><div style="left: 0;top: 42px;animation-delay:0.75s;"></div><div style="left: 42px;top: 42px;animation-delay:0.625s;"></div><div style="left: 21px;top: 42px;animation-delay:0.5s;"></div></div>';
1173 }
1174 return '<div class="ultp-loading">'.$html.'</div>';
1175 }
1176
1177
1178 /**
1179 * Get Filter HTML
1180 *
1181 * @since v.1.0.0
1182 * @param | Filter Text (STRING) | Filter Type (STRING) | Filter Value (ARRAY) | Filter Cat (ARRAY) | Filter Tag (ARRAY) |
1183 * @return STRING
1184 */
1185 public function filter($filterText = '', $filterType = '', $filterValue = '[]', $filterMobileText = '...', $filterMobile = true){
1186 $html = '';
1187 $html .= '<ul '.($filterMobile ? 'class="ultp-flex-menu"' : '').' data-name="'.($filterMobileText ? $filterMobileText : '&nbsp;').'">';
1188 $cat = $this->taxonomy($filterType);
1189 if($filterText){
1190 $html .= '<li class="filter-item"><a class="filter-active" data-taxonomy="" href="#">'.$filterText.'</a></li>';
1191 }
1192
1193 if ($filterValue) {
1194 $filterValue = strlen($filterValue) > 2 ? $filterValue : [];
1195 $filterValue = is_array($filterValue) ? $filterValue : json_decode($filterValue);
1196 foreach ($filterValue as $val) {
1197 $html .= '<li class="filter-item"><a data-taxonomy="'.$val.'" href="#">'.(isset($cat[$val]) ? $cat[$val] : $val).'</a></li>';
1198 }
1199 }
1200 $html .= '</ul>';
1201 return $html;
1202 }
1203
1204
1205 /**
1206 * Check License Status
1207 *
1208 * @since v.2.4.2
1209 * @return BOOLEAN | Is pro license active or not
1210 */
1211 public function is_lc_active() {
1212 if (function_exists('ultimate_post_pro')) {
1213 return get_option('edd_ultp_license_status') == 'valid' ? true : false;
1214 }
1215 if (get_transient( 'ulpt_theme_enable' ) == 'integration') {
1216 return true;
1217 }
1218 return false;
1219 }
1220
1221
1222 /**
1223 * Get SVG Icon
1224 *
1225 * @since v.1.0.0
1226 * @param STRING | Icon Key
1227 * @return STRING | Icon SVG
1228 */
1229 public function svg_icon($icons = ''){
1230 $icon_lists = array(
1231 'eye' => file_get_contents(ULTP_PATH.'assets/img/svg/eye.svg'),
1232 'user' => file_get_contents(ULTP_PATH.'assets/img/svg/user.svg'),
1233 'calendar' => file_get_contents(ULTP_PATH.'assets/img/svg/calendar.svg'),
1234 'comment' => file_get_contents(ULTP_PATH.'assets/img/svg/comment.svg'),
1235 'book' => file_get_contents(ULTP_PATH.'assets/img/svg/book.svg'),
1236 'tag' => file_get_contents(ULTP_PATH.'assets/img/svg/tag.svg'),
1237 'clock' => file_get_contents(ULTP_PATH.'assets/img/svg/clock.svg'),
1238 'leftAngle' => file_get_contents(ULTP_PATH.'assets/img/svg/leftAngle.svg'),
1239 'rightAngle' => file_get_contents(ULTP_PATH.'assets/img/svg/rightAngle.svg'),
1240 'leftAngle2' => file_get_contents(ULTP_PATH.'assets/img/svg/leftAngle2.svg'),
1241 'rightAngle2' => file_get_contents(ULTP_PATH.'assets/img/svg/rightAngle2.svg'),
1242 'leftArrowLg' => file_get_contents(ULTP_PATH.'assets/img/svg/leftArrowLg.svg'),
1243 'refresh' => file_get_contents(ULTP_PATH.'assets/img/svg/refresh.svg'),
1244 'rightArrowLg' => file_get_contents(ULTP_PATH.'assets/img/svg/rightArrowLg.svg'),
1245 );
1246 if($icons){
1247 return $icon_lists[ $icons ];
1248 }
1249 }
1250
1251 /**
1252 * Get SEO Meta
1253 *
1254 * @since v.2.4.3
1255 * @param NUMBER | Post ID
1256 * @return STRING | SEO Meta Description or Excerpt
1257 */
1258 public function get_excerpt($post_id = 0, $showSeoMeta = 0, $showFullExcerpt = 0, $excerptLimit = 55) {
1259 $html = '';
1260 if ($showSeoMeta) {
1261 $str = '';
1262 if( function_exists('ultimate_post_pro') ) {
1263 if (ultimate_post()->get_setting('ultp_yoast') == 'true') {
1264 $str = method_exists( ultimate_post_pro(), 'get_yoast_meta' ) ? ultimate_post_pro()->get_yoast_meta($post_id) : '';
1265 } else if (ultimate_post()->get_setting('ultp_rankmath') == 'true') {
1266 $str = method_exists( ultimate_post_pro(), 'get_rankmath_meta' ) ? ultimate_post_pro()->get_rankmath_meta($post_id) : '';
1267 } else if (ultimate_post()->get_setting('ultp_aioseo') == 'true') {
1268 $str = method_exists( ultimate_post_pro(), 'get_aioseo_meta' ) ? ultimate_post_pro()->get_aioseo_meta($post_id) : '';
1269 } else if (ultimate_post()->get_setting('ultp_seopress') == 'true') {
1270 $str = method_exists( ultimate_post_pro(), 'get_seopress_meta' ) ? ultimate_post_pro()->get_seopress_meta($post_id) : '';
1271 } else if (ultimate_post()->get_setting('ultp_squirrly') == 'true') {
1272 $str = method_exists( ultimate_post_pro(), 'get_squirrly_meta' ) ? ultimate_post_pro()->get_squirrly_meta($post_id) : '';
1273 }
1274 }
1275 $html = $str ? $str : ultimate_post()->excerpt($post_id, $excerptLimit);
1276 } else {
1277 if ( $showFullExcerpt == 0 ) {
1278 $html = ultimate_post()->excerpt($post_id, $excerptLimit);
1279 } else {
1280 $html = get_the_excerpt();
1281 }
1282 }
1283 return $html;
1284 }
1285
1286 /**
1287 * Set Inline CSS
1288 *
1289 * @since v.2.5.8
1290 * @param STRING | CSS
1291 * @return STRING | CSS with Style
1292 */
1293 public function set_inline($css) {
1294 return '<style type="text/css">'.wp_strip_all_tags($css).'</style>';
1295 }
1296
1297 /**
1298 * Array Sanitize Function
1299 *
1300 * @since v.2.6.0
1301 * @param ARRAY
1302 * @return ARRAY | Array of Sanitize
1303 */
1304 public function recursive_sanitize_text_field($array) {
1305 foreach ($array as $key => &$value) {
1306 if (is_array($value)) {
1307 $value = $this->recursive_sanitize_text_field($value);
1308 } else {
1309 $value = sanitize_text_field($value);
1310 }
1311 }
1312 return $array;
1313 }
1314
1315 }
1316