PluginProbe
Post Grid Gutenberg Blocks – PostX / 2.4.24
Post Grid Gutenberg Blocks – PostX v2.4.24
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.4.24, at classes/Functions.php

1,074 lines 40.0 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(), ULTP_VER, 'all' );
332 }else{
333 $css = get_post_meta($id, '_ultp_css', true);
334 if( $css ) {
335 wp_enqueue_style("ultp-post-{$id}", $css, false, ULTP_VER);
336 }
337 }
338 }
339
340 if (isset($_GET['et_fb']) || (isset($_GET['action']) && $_GET['action'] =='elementor') || $shortcode) {
341 echo '<style type="text/css">'.get_post_meta($post_id, '_ultp_css', true).'</style>';
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(), ULTP_VER, '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, ULTP_VER);
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 'editor_container' => 'full_width',
437 'hide_import_btn' => '',
438 'disable_image_size'=> '',
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 );
461 if (empty($data)) {
462 update_option('ultp_options', $init_data);
463 $GLOBALS['ultp_settings'] = $init_data;
464 } else {
465 foreach ($init_data as $key => $single) {
466 if (!isset($data[$key])) {
467 $data[$key] = $single;
468 }
469 }
470 update_option('ultp_options', $data);
471 $GLOBALS['ultp_settings'] = $data;
472 }
473 }
474
475
476 /**
477 * Get Excerpt Text
478 *
479 * @since v.1.0.0
480 * @param | Post ID (STRING) | Limit (NUMBER)
481 * @return STRING
482 */
483 public function excerpt( $post_id, $limit = 55 ) {
484 return apply_filters( 'the_excerpt', wp_trim_words( get_the_content( $post_id ) , $limit ) );
485 }
486
487 public function get_builder_attr() {
488 $builder_data = '';
489 if (is_archive()) {
490 if (is_date()) {
491 if ( is_year() ) {
492 $builder_data = 'date###'.get_the_date('Y');
493 } else if ( is_month() ) {
494 $builder_data = 'date###'.get_the_date('Y-n');
495 } else if ( is_day() ) {
496 $builder_data = 'date###'.get_the_date('Y-n-j');
497 }
498 } else if (is_author()) {
499 $builder_data = 'author###'.get_the_author_meta('ID');
500 } else {
501 $obj = get_queried_object();
502 if (isset($obj->taxonomy)) {
503 $builder_data = 'taxonomy###'.$obj->taxonomy.'###'.$obj->slug;
504 }
505 }
506 } else if (is_search()) {
507 $builder_data = 'search###'.get_search_query(true);
508 }
509 return $builder_data ? 'data-builder="'.$builder_data.'"' : '';
510 }
511
512
513 public function is_builder($builder = '') {
514 $id = '';
515 if (function_exists('ultimate_post_pro')) {
516 if ($builder) {
517 return true;
518 }
519 $page_id = ultimate_post_pro()->conditions('return');
520 if ($page_id && ultimate_post()->get_setting('ultp_builder')) {
521 $id = $page_id;
522 }
523 }
524 return $id;
525 }
526
527 /**
528 * Query Builder
529 *
530 * @since v.1.0.0
531 * @param ARRAY | Attribute of the Query
532 * @return ARRAY
533 */
534 public function get_query($attr) {
535 $builder = isset($attr['builder']) ? $attr['builder'] : '';
536 if ($this->is_builder($builder)) {
537 $archive_query = array();
538 if ($builder) {
539 $str = explode('###', $builder);
540 if (isset($str[0])) {
541 if ($str[0] == 'taxonomy') {
542 if (isset($str[1]) && isset($str[2])) {
543 $archive_query['tax_query'] = array(
544 array(
545 'taxonomy' => $str[1],
546 'field' => 'slug',
547 'terms' => $str[2]
548 )
549 );
550 }
551 } else if ($str[0] == 'author') {
552 if (isset($str[1])) {
553 $archive_query['author'] = $str[1];
554 }
555 } else if ($str[0] == 'search') {
556 if (isset($str[1])) {
557 $archive_query['s'] = $str[1];
558 }
559 } else if ($str[0] == 'date') {
560 if (isset($str[1])) {
561 $all_date = explode('-', $str[1]);
562 if (!empty($all_date)) {
563 $arg = array();
564 if (isset($all_date[0])) { $arg['year'] = $all_date[0]; }
565 if (isset($all_date[1])) { $arg['month'] = $all_date[1]; }
566 if (isset($all_date[2])) { $arg['day'] = $all_date[2]; }
567 $archive_query['date_query'][] = $arg;
568 }
569 }
570 }
571 }
572 } else {
573 global $wp_query;
574 $archive_query = $wp_query->query_vars;
575 }
576 $archive_query['posts_per_page'] = isset($attr['queryNumber']) ? $attr['queryNumber'] : 3;
577 $archive_query['paged'] = isset($attr['paged']) ? $attr['paged'] : 1;
578 if (isset($attr['queryOffset']) && $attr['queryOffset'] ) {
579 $offset = $this->get_offset($attr['queryOffset'], $archive_query);
580 $archive_query = array_merge($archive_query, $offset);
581 }
582
583 if(isset($attr['queryInclude']) && $attr['queryInclude']){
584 $archive_query['post__in'] = explode(',', $attr['queryInclude']);
585 $archive_query['ignore_sticky_posts'] = 1;
586 $archive_query['orderby'] = 'post__in';
587 }
588 if(isset($attr['queryExclude']) && $attr['queryExclude']) {
589 $archive_query['post__not_in'] = explode(',', $attr['queryExclude']);
590 }
591
592 $archive_query['post_status'] = 'publish';
593 return $archive_query;
594 }
595
596 $query_args = array(
597 'posts_per_page' => isset($attr['queryNumber']) ? $attr['queryNumber'] : 3,
598 'post_type' => isset($attr['queryType']) ? $attr['queryType'] : 'post',
599 'orderby' => isset($attr['queryOrderBy']) ? $attr['queryOrderBy'] : 'date',
600 'order' => isset($attr['queryOrder']) ? $attr['queryOrder'] : 'desc',
601 'paged' => isset($attr['paged']) ? $attr['paged'] : 1,
602 'post_status' => 'publish'
603 );
604
605 if(isset($attr['queryOrderBy']) && isset($attr['metaKey'])){
606 if($attr['queryOrderBy'] == 'meta_value_num') {
607 $query_args['meta_key'] = $attr['metaKey'];
608 }
609 }
610
611 if(isset($attr['queryInclude']) && $attr['queryInclude']){
612 $query_args['post__in'] = explode(',', $attr['queryInclude']);
613 $query_args['ignore_sticky_posts'] = 1;
614 $query_args['orderby'] = 'post__in';
615 }
616
617 $exclude = '';
618 if (is_singular()) {
619 $id = get_the_ID();
620 $exclude = $id ? $id : '';
621 }
622 if (isset($attr['current_post']) && $attr['current_post']) {
623 $exclude = $attr['current_post'];
624 }
625
626 if(isset($attr['queryExclude']) && $attr['queryExclude']) {
627 $exclude = ($exclude ? $exclude.',' : '') . $attr['queryExclude'];
628 }
629 if ($exclude) {
630 $query_args['post__not_in'] = explode(',', $exclude);
631 }
632
633 if(isset($attr['queryTax'])){
634 if(isset($attr['queryTaxValue'])){
635 $tax_value = (strlen($attr['queryTaxValue']) > 2) ? $attr['queryTaxValue'] : ($attr['queryTax'] == 'category' ? $attr['queryCat'] : $attr['queryTag']);
636 $tax_value = is_array($tax_value) ? $tax_value : json_decode($tax_value);
637 if(count($tax_value) > 0){
638 $relation = isset($attr['queryRelation']) ? $attr['queryRelation'] : 'OR';
639 $var = array('relation'=>$relation);
640 foreach ($tax_value as $val) {
641 $tax_name = $attr['queryTax'] == 'tag' ? 'post_tag' : $attr['queryTax']; // for compatibility
642 $var[] = array('taxonomy'=> $tax_name, 'field' => 'slug', 'terms' => $val );
643 }
644 if(count($var) > 1){
645 $query_args['tax_query'] = $var;
646 }
647 }
648 }
649 }
650
651 if(isset($attr['queryQuick'])){
652 if($attr['queryQuick'] != ''){
653 $query_args = ultimate_post()->get_quick_query($attr, $query_args);
654 }
655 }
656
657 if (isset($attr['queryOffset']) && $attr['queryOffset'] ) {
658 $offset = $this->get_offset($attr['queryOffset'], $query_args);
659 $query_args = array_merge($query_args, $offset);
660 }
661
662 if (isset($attr['queryAuthor']) && $attr['queryAuthor'] ) {
663 $query_args['author'] = $attr['queryAuthor'];
664 }
665
666
667 $query_args['wpnonce'] = wp_create_nonce( 'ultp-nonce' );
668
669 return $query_args;
670 }
671
672 function get_offset($queryOffset, $query_args) {
673 $query = array();
674 if ($query_args['paged'] > 1) {
675 $offset_post = wp_get_recent_posts($query_args, OBJECT);
676 if ( count($offset_post) > 0 ) {
677 $offset = array();
678 for($x = count($offset_post); $x > count($offset_post) - $queryOffset; $x--){
679 $offset[] = $offset_post[$x-1]->ID;
680 }
681 $query['post__not_in'] = $offset;
682 }
683 } else {
684 $query['offset'] = isset($queryOffset) ? $queryOffset : 0;
685 }
686 return $query;
687 }
688
689
690 /**
691 * Get Page Number
692 *
693 * @since v.1.0.0
694 * @param | Attribute of the Query(ARRAY) | Post Number(ARRAY)
695 * @return ARRAY
696 */
697 public function get_page_number($attr, $post_number) {
698 if ($post_number > 0) {
699 if (isset($attr['queryOffset']) && $attr['queryOffset']) {
700 $post_number = $post_number - (int)$attr['queryOffset'];
701 }
702 $post_per_page = isset($attr['queryNumber']) ? ($attr['queryNumber'] ? $attr['queryNumber'] : 1) : 3;
703 $pages = ceil($post_number/$post_per_page);
704 return $pages ? $pages : 1;
705 }else{
706 return 1;
707 }
708 }
709
710
711 /**
712 * Get Image Size
713 *
714 * @since v.1.0.0
715 * @param | Attribute of the Query(ARRAY) | Post Number(ARRAY)
716 * @return ARRAY
717 */
718 public function get_image_size() {
719 $sizes = get_intermediate_image_sizes();
720 $filter = array('full' => 'Full');
721 foreach ($sizes as $value) {
722 $filter[$value] = ucwords(str_replace(array('_', '-'), array(' ', ' '), $value));
723 }
724 return $filter;
725 }
726
727
728 /**
729 * Get All PostType Registered
730 *
731 * @since v.1.0.0
732 * @param | Attribute of the Query(ARRAY) | Post Number(ARRAY)
733 * @return ARRAY
734 */
735 public function get_post_type() {
736 $post_type = get_post_types( '', 'names' );
737 return array_diff($post_type, array( 'attachment', 'revision', 'nav_menu_item', 'custom_css', 'customize_changeset', 'oembed_cache', 'user_request', 'wp_block' ));
738 }
739
740
741 /**
742 * Get Pagination HTML
743 *
744 * @since v.1.0.0
745 * @param | pages (NUMBER) | Pagination Nav (STRING) | Pagination Text |
746 * @return STRING
747 */
748 public function pagination($pages = '', $paginationNav = '', $paginationText = '') {
749 $html = '';
750 $showitems = 3;
751 $paged = is_front_page() ? get_query_var('page') : get_query_var('paged');
752 $paged = $paged ? $paged : 1;
753 if($pages == '') {
754 global $wp_query;
755 $pages = $wp_query->max_num_pages;
756 if(!$pages) {
757 $pages = 1;
758 }
759 }
760 $data = ($paged>=3?[($paged-1),$paged,$paged+1]:[1,2,3]);
761
762 $paginationText = explode('|', $paginationText);
763
764 $prev_text = isset($paginationText[0]) ? $paginationText[0] : __("Previous", "ultimate-post");
765 $next_text = isset($paginationText[1]) ? $paginationText[1] : __("Next", "ultimate-post");
766
767 if(1 != $pages) {
768 $html .= '<ul class="ultp-pagination">';
769 $display_none = 'style="display:none"';
770 if($pages > 4) {
771 $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>';
772 }
773 if($pages > 4){
774 $html .= '<li class="ultp-first-pages" '.($paged<2?$display_none:"").' data-current="1"><a href="'.get_pagenum_link(1).'">1</a></li>';
775 }
776 if($pages > 4){
777 $html .= '<li class="ultp-first-dot" '.($paged<2? $display_none : "").'><a href="#">...</a></li>';
778 }
779 foreach ($data as $i) {
780 if($pages >= $i){
781 $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>';
782 }
783 }
784 if($pages > 4){
785 $html .= '<li class="ultp-last-dot" '.($pages<=$paged+1?$display_none:"").'><a href="#">...</a></li>';
786 }
787 if($pages > 4){
788 $html .= '<li class="ultp-last-pages" '.($pages<=$paged+1?$display_none:"").' data-current="'.$pages.'"><a href="'.get_pagenum_link($pages).'">'.$pages.'</a></li>';
789 }
790 if ($paged != $pages) {
791 $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>';
792 }
793 $html .= '</ul>';
794 }
795 return $html;
796 }
797
798
799 /**
800 * Get Excerpt Word
801 *
802 * @since v.1.0.0
803 * @param NUMBER | Character Length
804 * @return STRING
805 */
806 public function excerpt_word($charlength = 200) {
807 $html = '';
808 $charlength++;
809 $excerpt = get_the_excerpt();
810 if ( mb_strlen( $excerpt ) > $charlength ) {
811 $subex = mb_substr( $excerpt, 0, $charlength - 5 );
812 $exwords = explode( ' ', $subex );
813 $excut = - ( mb_strlen( $exwords[ count( $exwords ) - 1 ] ) );
814 if ( $excut < 0 ) {
815 $html = mb_substr( $subex, 0, $excut );
816 } else {
817 $html = $subex;
818 }
819 $html .= '...';
820 } else {
821 $html = $excerpt;
822 }
823 return $html;
824 }
825
826
827 /**
828 * Get Taxonomy Lists
829 *
830 * @since v.1.0.0
831 * @param STRING | Taxonomy Slug
832 * @return ARRAY
833 */
834 public function taxonomy( $prams = 'category' ) {
835 $data = array();
836 $terms = get_terms( $prams, array(
837 'hide_empty' => false,
838 ));
839 if( !is_wp_error($terms) ){
840 foreach ($terms as $val) {
841 $data[urldecode_deep($val->slug)] = $val->name;
842 }
843 }
844 return $data;
845 }
846
847
848 /**
849 * Get Taxonomy Data Lists
850 *
851 * @since v.1.0.0
852 * @param OBJECT | Taxonomy Object
853 * @return ARRAY
854 */
855 public function get_tax_data($terms) {
856 $temp = array();
857 $image = '';
858 $thumbnail_id = get_term_meta( $terms->term_id, 'ultp_category_image', true );
859 if( $thumbnail_id ){
860 $image = wp_get_attachment_url( $thumbnail_id );
861 }
862 $temp['url'] = get_term_link($terms);
863 $temp['name'] = $terms->name;
864 $temp['desc'] = $terms->description;
865 $temp['count'] = $terms->count;
866 $temp['image'] = $image;
867 $color = get_term_meta($terms->term_id, 'ultp_category_color', true);
868 $temp['color'] = $color ? $color : '#037fff';
869 return $temp;
870 }
871
872 public function get_category_data($catSlug, $number = 40, $type = '', $tax_slug = 'category') {
873 $data = array();
874 if($type == 'child'){
875 $image = '';
876 if (!empty($catSlug)) {
877 foreach ($catSlug as $cat) {
878 $parent_term = get_term_by('slug', $cat, $tax_slug);
879 if (!empty($parent_term)) {
880 $term_data = get_terms($tax_slug, array(
881 'hide_empty' => true,
882 'parent' => $parent_term->term_id
883 ));
884 if (!empty($term_data)) {
885 foreach ($term_data as $terms) {
886 $data[] = $this->get_tax_data($terms);
887 }
888 }
889 }
890 }
891 }
892 } else if ($type == 'parent') {
893 $term_data = get_terms( $tax_slug, array( 'hide_empty' => true, 'number' => $number, 'parent' => 0 ) );
894 if (!empty($term_data)) {
895 foreach ($term_data as $terms) {
896 $data[] = $this->get_tax_data($terms);
897 }
898 }
899 } else if ($type == 'custom') {
900 foreach ($catSlug as $cat) {
901 $terms = get_term_by('slug', $cat, $tax_slug);
902 if (!empty($terms)) {
903 $data[] = $this->get_tax_data($terms);
904 }
905 }
906 } else {
907 $term_data = get_terms($tax_slug, array('hide_empty' => true, 'number' => $number));
908 if (!empty($term_data)) {
909 foreach ($term_data as $terms) {
910 $data[] = $this->get_tax_data($terms);
911 }
912 }
913 }
914 return $data;
915 }
916
917
918 /**
919 * Get Next Previous HTML
920 *
921 * @since v.1.0.0
922 * @param OBJECT | Taxonomy Object
923 * @return STRING
924 */
925 public function next_prev() {
926 $html = '';
927 $html .= '<ul>';
928 $html .= '<li>';
929 $html .= '<a class="ultp-prev-action ultp-disable" href="#">';
930 $html .= ultimate_post()->svg_icon('leftAngle2').'<span class="screen-reader-text">'.__("Previous", "ultimate-post").'</span>';
931 $html .= '</a>';
932 $html .= '</li>';
933 $html .= '<li>';
934 $html .= '<a class="ultp-next-action">';
935 $html .= ultimate_post()->svg_icon('rightAngle2').'<span class="screen-reader-text">'.__("Next", "ultimate-post").'</span>';
936 $html .= '</a>';
937 $html .= '</li>';
938 $html .= '</ul>';
939 return $html;
940 }
941
942
943 /**
944 * Get Loading HTML
945 *
946 * @since v.1.0.0
947 * @param NULL
948 * @return STRING
949 */
950 public function loading(){
951 $html = '';
952 $style = ultimate_post()->get_setting('preloader_style');
953 if( $style == 'style2' ){
954 $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
955 } else {
956 $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>';
957 }
958 return '<div class="ultp-loading">'.$html.'</div>';
959 }
960
961
962 /**
963 * Get Filter HTML
964 *
965 * @since v.1.0.0
966 * @param | Filter Text (STRING) | Filter Type (STRING) | Filter Value (ARRAY) | Filter Cat (ARRAY) | Filter Tag (ARRAY) |
967 * @return STRING
968 */
969 public function filter($filterText = '', $filterType = '', $filterValue = '[]', $filterCat = [], $filterTag = [], $filterMobileText = '...', $filterMobile = true){
970 $html = '';
971 $html .= '<ul '.($filterMobile ? 'class="ultp-flex-menu"' : '').' data-name="'.($filterMobileText ? $filterMobileText : '&nbsp;').'">';
972
973 $filterType = $filterType == 'tag' ? 'post_tag' : $filterType; // for compatibility
974
975 $cat = $this->taxonomy($filterType);
976 if($filterText){
977 $html .= '<li class="filter-item"><a data-taxonomy="" href="#">'.$filterText.'</a></li>';
978 }
979
980 if ($filterValue) {
981 $filterValue = strlen($filterValue) > 2 ? $filterValue : ($filterType == 'category' ? $filterCat : $filterTag);
982 $filterValue = is_array($filterValue) ? $filterValue : json_decode($filterValue);
983 foreach ($filterValue as $val) {
984 $html .= '<li class="filter-item"><a data-taxonomy="'.$val.'" href="#">'.(isset($cat[$val]) ? $cat[$val] : $val).'</a></li>';
985 }
986 }
987 $html .= '</ul>';
988 return $html;
989 }
990
991
992 /**
993 * Check License Status
994 *
995 * @since v.2.4.2
996 * @return BOOLEAN | Is pro license active or not
997 */
998 public function is_lc_active() {
999 if (function_exists('ultimate_post_pro')) {
1000 return get_option('edd_ultp_license_status') == 'valid' ? true : false;
1001 }
1002 if (get_transient( 'ulpt_theme_enable' ) == 'integration') {
1003 return true;
1004 }
1005 return false;
1006 }
1007
1008
1009 /**
1010 * Get SVG Icon
1011 *
1012 * @since v.1.0.0
1013 * @param STRING | Icon Key
1014 * @return STRING | Icon SVG
1015 */
1016 public function svg_icon($icons = ''){
1017 $icon_lists = array(
1018 'eye' => file_get_contents(ULTP_PATH.'assets/img/svg/eye.svg'),
1019 'user' => file_get_contents(ULTP_PATH.'assets/img/svg/user.svg'),
1020 'calendar' => file_get_contents(ULTP_PATH.'assets/img/svg/calendar.svg'),
1021 'comment' => file_get_contents(ULTP_PATH.'assets/img/svg/comment.svg'),
1022 'book' => file_get_contents(ULTP_PATH.'assets/img/svg/book.svg'),
1023 'tag' => file_get_contents(ULTP_PATH.'assets/img/svg/tag.svg'),
1024 'clock' => file_get_contents(ULTP_PATH.'assets/img/svg/clock.svg'),
1025 'leftAngle' => file_get_contents(ULTP_PATH.'assets/img/svg/leftAngle.svg'),
1026 'rightAngle' => file_get_contents(ULTP_PATH.'assets/img/svg/rightAngle.svg'),
1027 'leftAngle2' => file_get_contents(ULTP_PATH.'assets/img/svg/leftAngle2.svg'),
1028 'rightAngle2' => file_get_contents(ULTP_PATH.'assets/img/svg/rightAngle2.svg'),
1029 'leftArrowLg' => file_get_contents(ULTP_PATH.'assets/img/svg/leftArrowLg.svg'),
1030 'refresh' => file_get_contents(ULTP_PATH.'assets/img/svg/refresh.svg'),
1031 'rightArrowLg' => file_get_contents(ULTP_PATH.'assets/img/svg/rightArrowLg.svg'),
1032 );
1033 if($icons){
1034 return $icon_lists[ $icons ];
1035 }
1036 }
1037
1038 /**
1039 * Get SEO Meta
1040 *
1041 * @since v.2.4.3
1042 * @param NUMBER | Post ID
1043 * @return STRING | SEO Meta Description or Excerpt
1044 */
1045 public function get_excerpt($post_id = 0, $showSeoMeta = 0, $showFullExcerpt = 0, $excerptLimit = 55) {
1046 $html = '';
1047 if ($showSeoMeta) {
1048 $str = '';
1049 if( function_exists('ultimate_post_pro') ) {
1050 if (ultimate_post()->get_setting('ultp_yoast') == 'true') {
1051 $str = method_exists( ultimate_post_pro(), 'get_yoast_meta' ) ? ultimate_post_pro()->get_yoast_meta($post_id) : '';
1052 } else if (ultimate_post()->get_setting('ultp_rankmath') == 'true') {
1053 $str = method_exists( ultimate_post_pro(), 'get_rankmath_meta' ) ? ultimate_post_pro()->get_rankmath_meta($post_id) : '';
1054 } else if (ultimate_post()->get_setting('ultp_aioseo') == 'true') {
1055 $str = method_exists( ultimate_post_pro(), 'get_aioseo_meta' ) ? ultimate_post_pro()->get_aioseo_meta($post_id) : '';
1056 } else if (ultimate_post()->get_setting('ultp_seopress') == 'true') {
1057 $str = method_exists( ultimate_post_pro(), 'get_seopress_meta' ) ? ultimate_post_pro()->get_seopress_meta($post_id) : '';
1058 } else if (ultimate_post()->get_setting('ultp_squirrly') == 'true') {
1059 $str = method_exists( ultimate_post_pro(), 'get_squirrly_meta' ) ? ultimate_post_pro()->get_squirrly_meta($post_id) : '';
1060 }
1061 }
1062 $html = $str ? $str : ultimate_post()->excerpt($post_id, $excerptLimit);
1063 } else {
1064 if ( $showFullExcerpt == 0 ) {
1065 $html = ultimate_post()->excerpt($post_id, $excerptLimit);
1066 } else {
1067 $html = get_the_excerpt();
1068 }
1069 }
1070 return $html;
1071 }
1072
1073 }
1074