PluginProbe
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder / 1.6.3
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder v1.6.3
3.1.4 3.0.8 3.0.9 3.1.0 3.1.2 3.1.3 3.0.7 3.0.5 3.0.4 3.0.3 3.0.2 trunk 1.5.0 1.5.1 1.5.2 1.6.1 1.6.2 1.6.3 1.6.4 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 All 93 releases
ultimate-store-kit / includes / helper.php

helper.php in Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder 1.6.3, at includes/helper.php

1,143 lines 30.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 use UltimateStoreKit\Ultimate_Store_Kit_Loader;
4 use Elementor\Plugin;
5
6 /**
7 * You can easily add white label branding for for extended license or multi site license.
8 * Don't try for regular license otherwise your license will be invalid.
9 * return white label
10 */
11
12 if (!defined('BDTUSK')) {
13 define('BDTUSK', '');
14 }
15
16 //Add prefix for all widgets <span class="usk-widget-badge"></span>
17 if (!defined('BDTUSK_CP')) {
18 define('BDTUSK_CP', '<span class="usk-widget-badge"></span>');
19 }
20
21 //Add prefix for all widgets <span class="usk-widget-badge"></span>
22 if (!defined('BDTUSK_NC')) {
23 define('BDTUSK_NC', '<span class="usk-new-control"></span>');
24 }
25
26 // if you have any custom style
27 if (!defined('BDTUSK_SLUG')) {
28 define('BDTUSK_SLUG', 'ultimate-store-kit');
29 }
30
31 // set your own alias
32 if (!defined('BDTUSK_VER')) {
33 define('BDTUSK_VER', 'Ultimate Store Kit');
34 }
35
36 // Set your own name for plugin
37
38 if (!defined('BDTUSK_NAME')) {
39 define('BDTUSK_NAME', 'Ultimate Store Kit');
40 }
41
42 /**
43 * Show any alert by this function
44 *
45 * @param mixed $message [description]
46 * @param class prefix $type [description]
47 * @param boolean $close [description]
48 *
49 * @return helper [description]
50 */
51
52
53 function ultimate_store_kit_is_edit() {
54 return Plugin::$instance->editor->is_edit_mode();
55 }
56
57 function ultimate_store_kit_is_preview() {
58 return Plugin::$instance->preview->is_preview_mode();
59 }
60
61 function ultimate_store_kit_alert($message, $type = 'warning', $close = true) {
62 ?>
63 <div class="usk-alert-<?php echo esc_attr('$type'); ?>" usk-alert>
64 <?php if ($close) : ?>
65 <a class="usk-alert-close" usk-close></a>
66 <?php endif; ?>
67 <?php echo wp_kses_post($message); ?>
68 </div>
69 <?php
70 }
71
72 function ultimate_store_kit_get_alert($message, $type = 'warning', $close = true) {
73
74 $output = '<div class="usk-alert-' . $type . '" usk-alert>';
75 if ($close) :
76 $output .= '<a class="usk-alert-close" usk-close></a>';
77 endif;
78 $output .= wp_kses_post($message);
79 $output .= '</div>';
80
81 return $output;
82 }
83
84 /**
85 * all array css classes will output as proper space
86 *
87 * @param array $classes shortcode css class as array
88 *
89 * @return proper string
90 */
91
92 function ultimate_store_kit_get_post_types($args = []) {
93
94 $post_type_args = [
95 'show_in_nav_menus' => true,
96 ];
97
98 if (!empty($args['post_type'])) {
99 $post_type_args['name'] = $args['post_type'];
100 }
101
102 $_post_types = get_post_types($post_type_args, 'objects');
103
104 $post_types = ['0' => esc_html__('Select Type', 'ultimate-store-kit')];
105
106 foreach ($_post_types as $post_type => $object) {
107 $post_types[$post_type] = $object->label;
108 }
109
110 return $post_types;
111 }
112
113 /**
114 * Add REST API support to an already registered post type.
115 */
116
117 // function bdt_custom_post_type_rest_support() {
118
119 // global $wp_post_types;
120
121 // $post_types = ultimate_store_kit_get_post_types();
122
123 // foreach( $post_types as $post_type ) {
124
125 // $post_type_name = $post_type;
126
127 // if( isset( $wp_post_types[ $post_type_name ] ) ) {
128
129 // $wp_post_types[$post_type_name]->show_in_rest = true;
130
131 // $wp_post_types[$post_type_name]->rest_base = $post_type_name;
132
133 // $wp_post_types[$post_type_name]->rest_controller_class = 'WP_REST_Posts_Controller';
134
135 // }
136
137 // }
138
139 // }
140
141 // add_action( 'init', 'bdt_custom_post_type_rest_support', 25 );
142
143 function ultimate_store_kit_allow_tags($tag = null) {
144 $tag_allowed = wp_kses_allowed_html('post');
145
146 $tag_allowed['input'] = [
147 'class' => [],
148 'id' => [],
149 'name' => [],
150 'value' => [],
151 'checked' => [],
152 'type' => [],
153 ];
154 $tag_allowed['select'] = [
155 'class' => [],
156 'id' => [],
157 'name' => [],
158 'value' => [],
159 'multiple' => [],
160 'type' => [],
161 ];
162 $tag_allowed['option'] = [
163 'value' => [],
164 'selected' => [],
165 ];
166
167 $tag_allowed['title'] = [
168 'a' => [
169 'href' => [],
170 'title' => [],
171 'class' => [],
172 ],
173 'br' => [],
174 'em' => [],
175 'strong' => [],
176 'hr' => [],
177 ];
178
179 $tag_allowed['text'] = [
180 'a' => [
181 'href' => [],
182 'title' => [],
183 'class' => [],
184 ],
185 'br' => [],
186 'em' => [],
187 'strong' => [],
188 'hr' => [],
189 'i' => [
190 'class' => [],
191 ],
192 'span' => [
193 'class' => [],
194 ],
195 ];
196
197 $tag_allowed['svg'] = [
198 'svg' => [
199 'version' => [],
200 'xmlns' => [],
201 'viewbox' => [],
202 'xml:space' => [],
203 'xmlns:xlink' => [],
204 'x' => [],
205 'y' => [],
206 'style' => [],
207 ],
208 'g' => [],
209 'path' => [
210 'class' => [],
211 'd' => [],
212 ],
213 'ellipse' => [
214 'class' => [],
215 'cx' => [],
216 'cy' => [],
217 'rx' => [],
218 'ry' => [],
219 ],
220 'circle' => [
221 'class' => [],
222 'cx' => [],
223 'cy' => [],
224 'r' => [],
225 ],
226 'rect' => [
227 'x' => [],
228 'y' => [],
229 'transform' => [],
230 'height' => [],
231 'width' => [],
232 'class' => [],
233 ],
234 'line' => [
235 'class' => [],
236 'x1' => [],
237 'x2' => [],
238 'y1' => [],
239 'y2' => [],
240 ],
241 'style' => [],
242
243 ];
244
245 if ($tag == null) {
246 return $tag_allowed;
247 } elseif (is_array($tag)) {
248 $new_tag_allow = [];
249
250 foreach ($tag as $_tag) {
251 $new_tag_allow[$_tag] = $tag_allowed[$_tag];
252 }
253
254 return $new_tag_allow;
255 } else {
256 return isset($tag_allowed[$tag]) ? $tag_allowed[$tag] : [];
257 }
258 }
259
260 /**
261 * post pagination
262 */
263 function ultimate_store_kit_post_pagination($wp_query) {
264
265 /** Stop execution if there's only 1 page */
266
267 if ($wp_query->max_num_pages <= 1) {
268 return;
269 }
270
271 if (is_front_page()) {
272 $paged = (get_query_var('page')) ? get_query_var('page') : 1;
273 } else {
274 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
275 }
276
277 $max = intval($wp_query->max_num_pages);
278
279 /** Add current page to the array */
280
281 if ($paged >= 1) {
282 $links[] = $paged;
283 }
284
285 /** Add the pages around the current page to the array */
286
287 if ($paged >= 3) {
288 $links[] = $paged - 1;
289 $links[] = $paged - 2;
290 }
291
292 if (($paged + 2) <= $max) {
293 $links[] = $paged + 2;
294 $links[] = $paged + 1;
295 }
296
297 echo '<ul class="usk-pagination">' . "\n";
298
299 /** Previous Post Link */
300
301 if (get_previous_posts_link()) {
302 printf('<li>%s</li>' . "\n", wp_kses_post(get_previous_posts_link('<span class="usk-icon-arrow-left-5"></span>')));
303 }
304
305 /** Link to first page, plus ellipses if necessary */
306
307 if (!in_array(1, $links)) {
308 $class = 1 == $paged ? ' class="current"' : '';
309
310 printf('<li%s><a href="%s" target="_self">%s</a></li>' . "\n", wp_kses_post($class), esc_url(get_pagenum_link(1)), '1');
311
312 if (!in_array(2, $links)) {
313 echo '<li class="usk-pagination-dot-dot"><span>...</span></li>';
314 }
315 }
316
317 /** Link to current page, plus 2 pages in either direction if necessary */
318 sort($links);
319
320 foreach ((array) $links as $link) {
321 $class = $paged == $link ? ' class="usk-active"' : '';
322 printf('<li%s><a href="%s" target="_self">%s</a></li>' . "\n", wp_kses_post($class), esc_url(get_pagenum_link($link)), esc_html($link));
323 }
324
325 /** Link to last page, plus ellipses if necessary */
326
327 if (!in_array($max, $links)) {
328
329 if (!in_array($max - 1, $links)) {
330 echo '<li class="usk-pagination-dot-dot"><span>...</span></li>' . "\n";
331 }
332
333 $class = $paged == $max ? ' class="usk-active"' : '';
334 printf('<li%s><a href="%s" target="_self">%s</a></li>' . "\n", wp_kses_post($class), esc_url(get_pagenum_link($max)), esc_html($max));
335 }
336
337 /** Next Post Link */
338
339 if (get_next_posts_link()) {
340 printf('<li>%s</li>' . "\n", wp_kses_post(get_next_posts_link('<span class="usk-icon-arrow-right-1"></span>')));
341 }
342
343 echo '</ul>' . "\n";
344 }
345
346 function ultimate_store_kit_template_edit_link($template_id) {
347
348 if (Ultimate_Store_Kit_Loader::elementor()->editor->is_edit_mode()) {
349
350 $final_url = add_query_arg(['elementor' => ''], get_permalink($template_id));
351
352 $output = sprintf('<a class="usk-elementor-template-edit-link" href="%s" title="%s" target="_blank"><i class="usk-icon-edit"></i></a>', esc_url($final_url), esc_html__('Edit Template', 'ultimate-store-kit'));
353
354 return $output;
355 }
356 }
357
358 function ultimate_store_kit_iso_time($time) {
359 $current_offset = (float) get_option('gmt_offset');
360 $timezone_string = get_option('timezone_string');
361
362 // Create a UTC+- zone if no timezone string exists.
363
364 //if ( empty( $timezone_string ) ) {
365 if (0 === $current_offset) {
366 $timezone_string = '+00:00';
367 } elseif ($current_offset < 0) {
368 $timezone_string = $current_offset . ':00';
369 } else {
370 $timezone_string = '+0' . $current_offset . ':00';
371 }
372
373 //}
374
375 $sub_time = [];
376 $sub_time = explode(" ", $time);
377 $final_time = $sub_time[0] . 'T' . $sub_time[1] . ':00' . $timezone_string;
378
379 return $final_time;
380 }
381
382 /**
383 * @param $currency
384 * @param int $precision
385 *
386 * @return false|string
387 */
388 function ultimate_store_kit_currency_format($currency, $precision = 1) {
389
390 if ($currency > 0) {
391
392 if ($currency < 900) {
393 // 0 - 900
394 $currency_format = number_format($currency, $precision);
395 $suffix = '';
396 } else
397
398 if ($currency < 900000) {
399 // 0.9k-850k
400 $currency_format = number_format($currency / 1000, $precision);
401 $suffix = 'K';
402 } else
403
404 if ($currency < 900000000) {
405 // 0.9m-850m
406 $currency_format = number_format($currency / 1000000, $precision);
407 $suffix = 'M';
408 } else
409
410 if ($currency < 900000000000) {
411 // 0.9b-850b
412 $currency_format = number_format($currency / 1000000000, $precision);
413 $suffix = 'B';
414 } else {
415 // 0.9t+
416 $currency_format = number_format($currency / 1000000000000, $precision);
417 $suffix = 'T';
418 }
419
420 // Remove unecessary zeroes after decimal. "1.0" -> "1"; "1.00" -> "1"
421
422 // Intentionally does not affect partials, eg "1.50" -> "1.50"
423 if ($precision > 0) {
424 $dotzero = '.' . str_repeat('0', $precision);
425 $currency_format = str_replace($dotzero, '', $currency_format);
426 }
427
428 return $currency_format . $suffix;
429 }
430
431 return false;
432 }
433
434 /**
435 * @return array
436 */
437 function ultimate_store_kit_get_menu() {
438
439 $menus = wp_get_nav_menus();
440 $items = [0 => esc_html__('Select Menu', 'ultimate-store-kit')];
441 foreach ($menus as $menu) {
442 $items[$menu->slug] = $menu->name;
443 }
444
445 return $items;
446 }
447
448 /**
449 * default get_option() default value check
450 *
451 * @param string $option settings field name
452 * @param string $section the section name this field belongs to
453 * @param string $default default text if it's not found
454 *
455 * @return mixed
456 */
457 function ultimate_store_kit_option($option, $section, $default = '') {
458
459 $options = get_option($section);
460
461 if (isset($options[$option])) {
462 return $options[$option];
463 }
464
465 return $default;
466 }
467
468 /**
469 * @return array of elementor template
470 */
471 function ultimate_store_kit_et_options() {
472
473 $templates = Ultimate_Store_Kit_Loader::elementor()->templates_manager->get_source('local')->get_items();
474 $types = [];
475
476 if (empty($templates)) {
477 $template_options = ['0' => __('Template Not Found!', 'ultimate-store-kit')];
478 } else {
479 $template_options = ['0' => __('Select Template', 'ultimate-store-kit')];
480
481 foreach ($templates as $template) {
482 $template_options[$template['template_id']] = $template['title'] . ' (' . $template['type'] . ')';
483 $types[$template['template_id']] = $template['type'];
484 }
485 }
486
487 return $template_options;
488 }
489
490 /**
491 * @return array of wp default sidebars
492 */
493 function ultimate_store_kit_sidebar_options() {
494
495 global $wp_registered_sidebars;
496 $sidebar_options = [];
497
498 if (!$wp_registered_sidebars) {
499 $sidebar_options[0] = esc_html__('No sidebars were found', 'ultimate-store-kit');
500 } else {
501 $sidebar_options[0] = esc_html__('Select Sidebar', 'ultimate-store-kit');
502
503 foreach ($wp_registered_sidebars as $sidebar_id => $sidebar) {
504 $sidebar_options[$sidebar_id] = $sidebar['name'];
505 }
506 }
507
508 return $sidebar_options;
509 }
510
511 /**
512 * @param string category name
513 *
514 * @return array of category
515 */
516 function ultimate_store_kit_get_category($taxonomy = 'product_cat') {
517
518 $post_options = [];
519
520 $post_categories = get_terms([
521 'taxonomy' => $taxonomy,
522 'hide_empty' => false,
523 ]);
524
525 if (is_wp_error($post_categories)) {
526 return $post_options;
527 }
528
529 if (false !== $post_categories and is_array($post_categories)) {
530 foreach ($post_categories as $category) {
531 $post_options[$category->term_id] = $category->name;
532 }
533 }
534
535 return $post_options;
536 }
537
538 /**
539 * @param string parent category name
540 * @return array of parent category
541 */
542 function ultimate_store_kit_get_only_parent_cats($taxonomy = 'category') {
543
544 $parent_categories = ['none' => __('None', 'bdthemes-element-pack')];
545 $args = ['parent' => 0];
546 $parent_cats = get_terms($taxonomy, $args);
547
548 foreach ($parent_cats as $parent_cat) {
549 $parent_categories[$parent_cat->term_id] = ucfirst($parent_cat->name);
550 }
551
552 return $parent_categories;
553 }
554
555 /**
556 * @param array all ajax posted array there
557 *
558 * @return array return all setting as array
559 */
560 function ultimate_store_kit_ajax_settings($settings) {
561
562 $required_settings = [
563 'show_date' => true,
564 'show_comment' => true,
565 'show_link' => true,
566 'show_meta' => true,
567 'show_title' => true,
568 'show_excerpt' => true,
569 'show_lightbox' => true,
570 'show_thumbnail' => true,
571 'show_category' => false,
572 'show_tags' => false,
573 ];
574
575 foreach ($settings as $key => $value) {
576 if (in_array($key, $required_settings)) {
577 $required_settings[$key] = $value;
578 }
579 }
580
581 return $required_settings;
582 }
583
584 /**
585 * @return array of all transition names
586 */
587 function ultimate_store_kit_transition_options() {
588
589 $transition_options = [
590 '' => esc_html__('None', 'ultimate-store-kit'),
591 'fade' => esc_html__('Fade', 'ultimate-store-kit'),
592 'scale-up' => esc_html__('Scale Up', 'ultimate-store-kit'),
593 'scale-down' => esc_html__('Scale Down', 'ultimate-store-kit'),
594 'slide-top' => esc_html__('Slide Top', 'ultimate-store-kit'),
595 'slide-bottom' => esc_html__('Slide Bottom', 'ultimate-store-kit'),
596 'slide-left' => esc_html__('Slide Left', 'ultimate-store-kit'),
597 'slide-right' => esc_html__('Slide Right', 'ultimate-store-kit'),
598 'slide-top-small' => esc_html__('Slide Top Small', 'ultimate-store-kit'),
599 'slide-bottom-small' => esc_html__('Slide Bottom Small', 'ultimate-store-kit'),
600 'slide-left-small' => esc_html__('Slide Left Small', 'ultimate-store-kit'),
601 'slide-right-small' => esc_html__('Slide Right Small', 'ultimate-store-kit'),
602 'slide-top-medium' => esc_html__('Slide Top Medium', 'ultimate-store-kit'),
603 'slide-bottom-medium' => esc_html__('Slide Bottom Medium', 'ultimate-store-kit'),
604 'slide-left-medium' => esc_html__('Slide Left Medium', 'ultimate-store-kit'),
605 'slide-right-medium' => esc_html__('Slide Right Medium', 'ultimate-store-kit'),
606 ];
607
608 return $transition_options;
609 }
610
611 // BDT Blend Type
612 function ultimate_store_kit_blend_options() {
613 $blend_options = [
614 'multiply' => esc_html__('Multiply', 'ultimate-store-kit'),
615 'screen' => esc_html__('Screen', 'ultimate-store-kit'),
616 'overlay' => esc_html__('Overlay', 'ultimate-store-kit'),
617 'darken' => esc_html__('Darken', 'ultimate-store-kit'),
618 'lighten' => esc_html__('Lighten', 'ultimate-store-kit'),
619 'color-dodge' => esc_html__('Color-Dodge', 'ultimate-store-kit'),
620 'color-burn' => esc_html__('Color-Burn', 'ultimate-store-kit'),
621 'hard-light' => esc_html__('Hard-Light', 'ultimate-store-kit'),
622 'soft-light' => esc_html__('Soft-Light', 'ultimate-store-kit'),
623 'difference' => esc_html__('Difference', 'ultimate-store-kit'),
624 'exclusion' => esc_html__('Exclusion', 'ultimate-store-kit'),
625 'hue' => esc_html__('Hue', 'ultimate-store-kit'),
626 'saturation' => esc_html__('Saturation', 'ultimate-store-kit'),
627 'color' => esc_html__('Color', 'ultimate-store-kit'),
628 'luminosity' => esc_html__('Luminosity', 'ultimate-store-kit'),
629 ];
630
631 return $blend_options;
632 }
633
634 // BDT Position
635 function ultimate_store_kit_position() {
636 $position_options = [
637 '' => esc_html__('Default', 'ultimate-store-kit'),
638 'top-left' => esc_html__('Top Left', 'ultimate-store-kit'),
639 'top-center' => esc_html__('Top Center', 'ultimate-store-kit'),
640 'top-right' => esc_html__('Top Right', 'ultimate-store-kit'),
641 'center' => esc_html__('Center', 'ultimate-store-kit'),
642 'center-left' => esc_html__('Center Left', 'ultimate-store-kit'),
643 'center-right' => esc_html__('Center Right', 'ultimate-store-kit'),
644 'bottom-left' => esc_html__('Bottom Left', 'ultimate-store-kit'),
645 'bottom-center' => esc_html__('Bottom Center', 'ultimate-store-kit'),
646 'bottom-right' => esc_html__('Bottom Right', 'ultimate-store-kit'),
647 ];
648
649 return $position_options;
650 }
651
652 // BDT Thumbnavs Position
653 function ultimate_store_kit_thumbnavs_position() {
654 $position_options = [
655 'top-left' => esc_html__('Top Left', 'ultimate-store-kit'),
656 'top-center' => esc_html__('Top Center', 'ultimate-store-kit'),
657 'top-right' => esc_html__('Top Right', 'ultimate-store-kit'),
658 'center-left' => esc_html__('Center Left', 'ultimate-store-kit'),
659 'center-right' => esc_html__('Center Right', 'ultimate-store-kit'),
660 'bottom-left' => esc_html__('Bottom Left', 'ultimate-store-kit'),
661 'bottom-center' => esc_html__('Bottom Center', 'ultimate-store-kit'),
662 'bottom-right' => esc_html__('Bottom Right', 'ultimate-store-kit'),
663 ];
664
665 return $position_options;
666 }
667
668 function ultimate_store_kit_navigation_position() {
669 $position_options = [
670 'top-left' => esc_html__('Top Left', 'ultimate-store-kit'),
671 'top-center' => esc_html__('Top Center', 'ultimate-store-kit'),
672 'top-right' => esc_html__('Top Right', 'ultimate-store-kit'),
673 'center' => esc_html__('Center', 'ultimate-store-kit'),
674 'bottom-left' => esc_html__('Bottom Left', 'ultimate-store-kit'),
675 'bottom-center' => esc_html__('Bottom Center', 'ultimate-store-kit'),
676 'bottom-right' => esc_html__('Bottom Right', 'ultimate-store-kit'),
677 ];
678
679 return $position_options;
680 }
681
682 function ultimate_store_kit_pagination_position() {
683 $position_options = [
684 'top-left' => esc_html__('Top Left', 'ultimate-store-kit'),
685 'top-center' => esc_html__('Top Center', 'ultimate-store-kit'),
686 'top-right' => esc_html__('Top Right', 'ultimate-store-kit'),
687 'bottom-left' => esc_html__('Bottom Left', 'ultimate-store-kit'),
688 'bottom-center' => esc_html__('Bottom Center', 'ultimate-store-kit'),
689 'bottom-right' => esc_html__('Bottom Right', 'ultimate-store-kit'),
690 ];
691
692 return $position_options;
693 }
694
695 // BDT Drop Position
696 function ultimate_store_kit_drop_position() {
697 $drop_position_options = [
698 'bottom-left' => esc_html__('Bottom Left', 'ultimate-store-kit'),
699 'bottom-center' => esc_html__('Bottom Center', 'ultimate-store-kit'),
700 'bottom-right' => esc_html__('Bottom Right', 'ultimate-store-kit'),
701 'bottom-justify' => esc_html__('Bottom Justify', 'ultimate-store-kit'),
702 'top-left' => esc_html__('Top Left', 'ultimate-store-kit'),
703 'top-center' => esc_html__('Top Center', 'ultimate-store-kit'),
704 'top-right' => esc_html__('Top Right', 'ultimate-store-kit'),
705 'top-justify' => esc_html__('Top Justify', 'ultimate-store-kit'),
706 'left-top' => esc_html__('Left Top', 'ultimate-store-kit'),
707 'left-center' => esc_html__('Left Center', 'ultimate-store-kit'),
708 'left-bottom' => esc_html__('Left Bottom', 'ultimate-store-kit'),
709 'right-top' => esc_html__('Right Top', 'ultimate-store-kit'),
710 'right-center' => esc_html__('Right Center', 'ultimate-store-kit'),
711 'right-bottom' => esc_html__('Right Bottom', 'ultimate-store-kit'),
712 ];
713
714 return $drop_position_options;
715 }
716
717 // Button Size
718 function ultimate_store_kit_button_sizes() {
719 $button_sizes = [
720 'xs' => esc_html__('Extra Small', 'ultimate-store-kit'),
721 'sm' => esc_html__('Small', 'ultimate-store-kit'),
722 'md' => esc_html__('Medium', 'ultimate-store-kit'),
723 'lg' => esc_html__('Large', 'ultimate-store-kit'),
724 'xl' => esc_html__('Extra Large', 'ultimate-store-kit'),
725 ];
726
727 return $button_sizes;
728 }
729
730 // Button Size
731 function ultimate_store_kit_heading_size() {
732 $heading_sizes = [
733 'h1' => 'H1',
734 'h2' => 'H2',
735 'h3' => 'H3',
736 'h4' => 'H4',
737 'h5' => 'H5',
738 'h6' => 'H6',
739 ];
740
741 return $heading_sizes;
742 }
743
744 // Title Tags
745 function ultimate_store_kit_title_tags() {
746 $title_tags = [
747 'h1' => 'H1',
748 'h2' => 'H2',
749 'h3' => 'H3',
750 'h4' => 'H4',
751 'h5' => 'H5',
752 'h6' => 'H6',
753 'div' => 'div',
754 'span' => 'span',
755 'p' => 'p',
756 ];
757
758 return $title_tags;
759 }
760
761 function ultimate_store_kit_mask_shapes() {
762 $path = BDTUSK_ASSETS_URL . 'images/mask/';
763 $shape_name = 'shape';
764 $extension = '.svg';
765 $list = [0 => esc_html__('Select Mask', 'ultimate-store-kit')];
766
767 for ($i = 1; $i <= 20; $i++) {
768 $list[$path . $shape_name . '-' . $i . $extension] = ucwords($shape_name . ' ' . $i);
769 }
770
771 return $list;
772 }
773
774 /**
775 * This is a svg file converter function which return a svg content
776 *
777 * @param svg file
778 *
779 * @return svg content
780 */
781 function ultimate_store_kit_svg_icon($icon) {
782
783 $icon_path = BDTUSK_ASSETS_PATH . "images/svg/{$icon}.svg";
784
785 if (!file_exists($icon_path)) {
786 return false;
787 }
788
789 ob_start();
790
791 include $icon_path;
792
793 $svg = ob_get_clean();
794
795 return $svg;
796 }
797
798 /**
799 * @param array CSV file data
800 * @param string $delimiter
801 * @param false $header
802 *
803 * @return string
804 */
805 function ultimate_store_kit_parse_csv($csv, $delimiter = ';', $header = true) {
806
807 if (!is_string($csv)) {
808 return '';
809 }
810
811 if (!function_exists('str_getcsv')) {
812 return $csv;
813 }
814
815 $html = '';
816 $rows = explode(PHP_EOL, $csv);
817 $headRow = 1;
818
819 foreach ($rows as $row) {
820
821 if ($headRow == 1 and $header) {
822 $html .= '<thead><tr>';
823 } else {
824 $html .= '<tr>';
825 }
826
827 foreach (str_getcsv($row, $delimiter) as $cell) {
828
829 $cell = trim($cell);
830
831 $html .= $header
832 ? '<th>' . $cell . '</th>'
833 : '<td>' . $cell . '</td>';
834 }
835
836 if ($headRow == 1 and $header) {
837 $html .= '</tr></thead><tbody>';
838 } else {
839 $html .= '</tr>';
840 }
841
842 $headRow++;
843 $header = false;
844 }
845
846 return '<table>' . $html . '</tbody></table>';
847 }
848
849 function ultimate_store_kit_dashboard_link($suffix = '#welcome') {
850 return add_query_arg(['page' => 'ultimate_store_kit_options' . $suffix], admin_url('admin.php'));
851 }
852
853 /**
854 * @param int $limit default limit is 25 word
855 * @param bool $strip_shortcode if you want to strip shortcode from excert text
856 * @param string $trail trail string default is ...
857 *
858 * @return string return custom limited excerpt text
859 */
860 function ultimate_store_kit_custom_excerpt($limit = 25, $strip_shortcode = false, $trail = '') {
861
862 $output = get_the_content();
863
864 if ($limit) {
865 $output = wp_trim_words($output, $limit, $trail);
866 }
867
868 if ($strip_shortcode) {
869 $output = strip_shortcodes($output);
870 }
871
872 return wpautop($output);
873 }
874
875 function usk_get_order_options() {
876 $options = [
877 'title' => __('Title', 'ultimate-store-kit'),
878 'ID' => __('ID', 'ultimate-store-kit'),
879 'date' => __('Date', 'ultimate-store-kit'),
880 'rand' => __('Random', 'ultimate-store-kit'),
881 '_price' => __('Product Price', 'ultimate-store-kit'),
882 'total_sales' => __('Top Seller', 'ultimate-store-kit'),
883 'comment_count' => __('Most Reviewed', 'ultimate-store-kit'),
884 '_wc_average_rating' => __('Top Rated', 'ultimate-store-kit'),
885 ];
886
887 return apply_filters('usk_order_options', $options);
888 }
889
890 //wishlist
891
892 function ultimate_store_kit_get_wishlist($user_id = 0) {
893 $_wishlist_key = '_ultimate_store_kit_wishlist';
894 $_wishlist = [];
895 if (isset($_COOKIE[$_wishlist_key])) {
896 $_wishlist = unserialize(stripslashes($_COOKIE[sanitize_text_field($_wishlist_key)]));
897 }
898 return apply_filters('ultimate_store_kit_wishlist', array_unique($_wishlist));
899 }
900
901 function usk_get_taxonomies() {
902 $taxonomy_list = get_object_taxonomies('product');
903 $taxonomies = [
904 'search' => 'Search',
905 'price' => 'Price',
906 'orderby' => 'Orderby',
907 'order' => 'Order',
908 ];
909
910 foreach ($taxonomy_list as $_taxonomy) {
911 $taxonomy = get_taxonomy($_taxonomy);
912
913 if ($taxonomy->show_ui) {
914 $taxonomies[$_taxonomy] = $taxonomy->label;
915 }
916 }
917
918 return $taxonomies;
919 }
920
921 function ultimate_store_kit_hide_on_class($selectors) {
922 $element_hide_on = '';
923
924 if (!empty($selectors)) {
925
926 foreach ($selectors as $element) {
927
928 if ($element == 'desktop') {
929 $element_hide_on .= ' usk-hide-desktop';
930 }
931
932 if ($element == 'tablet') {
933 $element_hide_on .= ' usk-hide-tablet';
934 }
935
936 if ($element == 'mobile') {
937 $element_hide_on .= ' usk-hide-mobile';
938 }
939 }
940 }
941
942 return $element_hide_on;
943 }
944
945 function ultimate_store_kit_wc_product_quick_view_content($product_id) {
946 wp_verify_nonce('ajax-usk-quick-view-nonce', 'usk-quick-view-modal-sc');
947 global $woocommerce;
948 global $post;
949
950 if (intval($product_id)) {
951 $post = get_post($product_id);
952 $next_post = get_next_post();
953 $prev_post = get_previous_post();
954
955 wp('p=' . $product_id . '&post_type=product');
956 ob_start();
957 ?>
958 <div class="usk-modal-page">
959 <?php
960
961 while (have_posts()) : the_post(); ?>
962
963 <script>
964 var url = '<?php echo esc_url(plugins_url('assets/js/prettyPhoto/jquery.prettyPhoto.init.js', WC_PLUGIN_FILE)); ?>';
965 jQuery.getScript(url);
966 var wc_add_to_cart_variation_params = {
967 "ajax_url": "\/wp-admin\/admin-ajax.php"
968 };
969 jQuery.getScript("<?php echo esc_url($woocommerce->plugin_url()); ?> '/assets/js/frontend/add-to-cart-variation.min.js'");
970 </script>
971 <div class="usk-modal-product">
972 <div id="product-<?php the_ID(); ?>" <?php post_class('product'); ?>>
973 <div class="usk-modal-image-wrapper">
974 <?php do_action('ultimate_store_kit_quick_florence_grid_view_product_images'); ?>
975 <div class="usk-onsale">
976 <?php do_action('ultimate_store_kit_wc_product_quick_view_product_sale_flash'); ?>
977 </div>
978 </div>
979 <div class="usk-modal-content-box">
980 <a href="<?php echo esc_url(get_permalink()); ?>" class="usk-product-title">
981 <?php do_action('ultimate_store_kit_quick_view_product_title'); ?>
982 </a>
983 <div class="usk-rating">
984 <?php do_action('ultimate_store_kit_quick_view_product_single_rating'); ?>
985 </div>
986 <div class="usk-product-price">
987 <?php do_action('ultimate_store_kit_quick_view_product_single_price'); ?>
988 </div>
989 <div class="usk-product-meta">
990 <div class="usk-sku-wrapper">
991 <?php do_action('ultimate_store_kit_quick_view_product_single_meta'); ?>
992 </div>
993 </div>
994 <div class="usk-product-desc">
995 <?php do_action('ultimate_store_kit_quick_view_product_single_excerpt'); ?>
996 </div>
997
998 <div class="usk-quick-action-wrap">
999 <?php do_action('ultimate_store_kit_quick_view_product_single_add_to_cart'); ?>
1000 </div>
1001 </div>
1002 </div>
1003 </div>
1004 <?php endwhile; ?>
1005 </div>
1006
1007 <?php echo ob_get_clean(); exit();
1008 }
1009 }
1010
1011 function ultimate_store_kit_quick_view_product_images() {
1012 global $post, $product; ?>
1013 <div class="images">
1014 <?php
1015
1016 if (has_post_thumbnail()) {
1017 $attachment_count = count($product->get_gallery_image_ids());
1018 $gallery = $attachment_count > 0 ? '[product-gallery]' : '';
1019 $props = wc_get_product_attachment_props(get_post_thumbnail_id(), $post);
1020 $image = get_the_post_thumbnail($post->ID, apply_filters('single_product_large_thumbnail_size', 'shop_single'), [
1021 'title' => $props['title'],
1022 'alt' => $props['alt'],
1023 ]);
1024 echo wp_kses_post(apply_filters('woocommerce_single_product_image_html', sprintf('<a href="%s" itemprop="image" class="usk-product woocommerce-main-image zoom" title="%s" data-rel="prettyPhoto' . $gallery . '">%s</a>', $props['url'], $props['caption'], $image), $post->ID));
1025 } else {
1026 echo wp_kses_post(apply_filters('woocommerce_single_product_image_html', sprintf('<img src="%s" alt="%s" />', wc_placeholder_img_src(), esc_html__('Placeholder', 'ultimate-store-kit')), $post->ID));
1027 }
1028
1029 $attachment_ids = $product->get_gallery_image_ids();
1030
1031 if ($attachment_ids) :
1032 $loop = 0;
1033 $columns = apply_filters('woocommerce_product_thumbnails_columns', 3);
1034 ?>
1035 <div class="thumbnails columns-<?php echo esc_attr($columns); ?>">
1036 <?php
1037
1038 foreach ($attachment_ids as $attachment_id) {
1039 $classes = ['thumbnail'];
1040
1041 if ($loop === 0 || $loop % $columns === 0) {
1042 $classes[] = 'first';
1043 }
1044
1045 if (($loop + 1) % $columns === 0) {
1046 $classes[] = 'last';
1047 }
1048
1049 $image_link = wp_get_attachment_url($attachment_id);
1050
1051 if (!$image_link) {
1052 continue;
1053 }
1054
1055 $image_title = esc_attr(get_the_title($attachment_id));
1056 $image_caption = esc_attr(get_post_field('post_excerpt', $attachment_id));
1057 $image = wp_get_attachment_image($attachment_id, apply_filters('single_product_small_thumbnail_size', 'shop_thumbnail'), 0, $attr = [
1058 'title' => $image_title,
1059 'alt' => $image_title,
1060 ]);
1061 $image_class = esc_attr(implode(' ', $classes));
1062 echo wp_kses_post(apply_filters('woocommerce_single_product_image_thumbnail_html', sprintf('<a href="%s" class="%s" title="%s" >%s</a>', $image_link, $image_class, $image_caption, $image), $attachment_id, $post->ID, $image_class));
1063 $loop++;
1064 }
1065
1066 ?>
1067 </div>
1068 <?php endif; ?>
1069 </div>
1070 <?php
1071 }
1072
1073
1074 /**
1075 * License Validation
1076 */
1077 if (!function_exists('usk_license_validation')) {
1078 function usk_license_validation() {
1079
1080 if (function_exists('_is_usk_pro_activated') && false === _is_usk_pro_activated()) {
1081 return false;
1082 }
1083
1084 $license_key = trim(get_option('ultimate_post_kit_license_key'));
1085
1086 if (isset($license_key) && !empty($license_key)) {
1087 return true;
1088 } else {
1089 return false;
1090 }
1091 return false;
1092 }
1093 }
1094
1095
1096
1097 function usk_get_compare_products($user_id = 0) {
1098 $_compare_products_key = '_ultimate_store_kit_compare_products';
1099 $_compare_products = [];
1100 if ($user_id != 0) {
1101 $_compare_products = get_user_meta($user_id, $_compare_products_key, true) ?: [];
1102 } elseif (isset($_COOKIE[$_compare_products_key])) {
1103 $_compare_products = unserialize(stripslashes($_COOKIE[sanitize_text_field($_compare_products_key)]));
1104 }
1105
1106 return apply_filters('ultimate_store_kit_compare_products', array_unique($_compare_products));
1107 }
1108
1109 function usk_get_compare_products_count() {
1110 $count = 0;
1111 $user_id = get_current_user_id();
1112 $products = usk_get_compare_products($user_id);
1113 if (is_array($products)) {
1114 $count = count($products);
1115 }
1116 return $count;
1117 }
1118
1119 //if (!function_exists('ultimate_store_kit_get_compare_product_slug')) {
1120 // function ultimate_store_kit_compare_product_slug() {
1121 // return 'compare-products';
1122 // }
1123 //}
1124
1125 if (!function_exists('ultimate_store_kit_compare_product_page')) {
1126 function ultimate_store_kit_compare_product_page() {
1127 if($postId = intval(get_option( 'bdt_usk_compare_products_page_id' ))){
1128 $post = get_post($postId);
1129 if($post->post_status == 'publish'){
1130 return $post->ID;
1131 }
1132 }
1133 }
1134 }
1135
1136 if (!function_exists('ultimate_store_kit_is_compare_product_page')) {
1137 function ultimate_store_kit_is_compare_product_page() {
1138 if ($page = ultimate_store_kit_compare_product_page() ) {
1139 return is_page( $page->ID );
1140 }
1141 }
1142 }
1143