PluginProbe
MainWP Dashboard: Self-hosted WordPress Management for Agencies / 6.2.1
MainWP Dashboard: Self-hosted WordPress Management for Agencies v6.2.1
6.2.2 6.2.1 6.2 6.1.8 6.1.7 6.1.6 6.1.5 6.1.4 6.1.3 6.1.2 6.1.1 6.1 6.0.12 6.0.11 4.6.0.1 5.0 5.0.1 5.0.2 5.0.3 5.0.3.1 5.0.3.2 5.1 5.1.1 5.2 5.2.1 All 155 releases
mainwp / modules / cost-tracker / classes / class-cost-tracker-utility.php

class-cost-tracker-utility.php in MainWP Dashboard: Self-hosted WordPress Management for Agencies 6.2.1, at modules/cost-tracker/classes/class-cost-tracker-utility.php

1,082 lines 33.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * MainWP Module Cost Tracker Utility class.
4 *
5 * @package MainWP\Dashboard
6 * @version 4.6
7 */
8
9 namespace MainWP\Dashboard\Module\CostTracker;
10
11 use MainWP\Dashboard\MainWP_Utility;
12 use MainWP\Dashboard\MainWP_UI;
13
14 // Exit if accessed directly.
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 /**
20 * Class Cost_Tracker_Utility
21 */
22 class Cost_Tracker_Utility {
23
24 /**
25 * Static variable to hold the single instance of the class.
26 *
27 * @static
28 *
29 * @var mixed Default null
30 */
31 public static $instance = null;
32
33 /**
34 * Variable to hold the option name.
35 *
36 * @var string Default option name.
37 */
38 protected $option_handle = 'mainwp_module_cost_tracker_options';
39
40 /**
41 * Variable to hold the options.
42 *
43 * @var mixed Options.
44 */
45 protected $option;
46
47 /**
48 * Get Instance
49 *
50 * Creates public static instance.
51 *
52 * @static
53 *
54 * @return Cost_Tracker_Utility
55 */
56 public static function get_instance() {
57 if ( null === static::$instance ) {
58 static::$instance = new self();
59 }
60 return static::$instance;
61 }
62
63 /**
64 * Constructor
65 *
66 * Runs each time the class is called.
67 */
68 public function __construct() {
69 $this->option = get_option( $this->option_handle );
70 if ( ! is_array( $this->option ) ) {
71 $this->option = array();
72 }
73 }
74
75 /**
76 * Get Option
77 *
78 * Gets option in Databse.
79 *
80 * @param string $key Option key.
81 * @param mixed $defval Default value.
82 * @param bool $json_encoded Is json encoded value.
83 *
84 * @return mixed Retruns option value.
85 */
86 public function get_option( $key = null, $defval = '', $json_encoded = false ) {
87 if ( isset( $this->option[ $key ] ) ) {
88 $values = $this->option[ $key ];
89 if ( $json_encoded ) {
90 $values = ! empty( $values ) ? json_decode( $values, true ) : array();
91 if ( ! is_array( $values ) ) {
92 $values = array();
93 }
94 }
95 return $values;
96 }
97 return $defval;
98 }
99
100 /**
101 * Set Option
102 *
103 * Sets option in Databse.
104 *
105 * @param string $key Option key.
106 * @param mixed $value Option value.
107 *
108 * @return mixed Update option.
109 */
110 public function set_option( $key, $value ) {
111 $this->option[ $key ] = $value;
112 return update_option( $this->option_handle, $this->option );
113 }
114
115 /**
116 * Get All Options
117 *
118 * Gets options in Databse.
119 *
120 * @return mixed Retruns options value.
121 */
122 public function get_all_options() {
123 return $this->option;
124 }
125
126 /**
127 * Save All Options
128 *
129 * @param array $options Options.
130 *
131 * @return mixed Retruns value.
132 */
133 public function save_options( $options ) {
134 return update_option( $this->option_handle, $options );
135 }
136
137 /**
138 * Method render_product_icon().
139 *
140 * @param string $file_name File icon.
141 * @param bool $ret True|False To return.
142 *
143 * @return string
144 */
145 public static function render_product_icon( $file_name, $ret = false ) {
146
147 $imgfavi = '';
148
149 $favi_url = MainWP_Utility::get_saved_favicon_url( $file_name );
150 if ( ! empty( $favi_url ) ) {
151 $imgfavi = '<img src="' . esc_attr( $favi_url ) . '" style="width:28px;height:28px;" class="ui circular image" alt="Cost custom icon" />';
152 }
153
154 if ( $ret ) {
155 return $imgfavi;
156 }
157 echo $imgfavi;//phpcs:ignore -- ok.
158 }
159
160 /**
161 * Format the price with a currency symbol.
162 *
163 * @param float $price Raw price.
164 * @param bool $ret Return or echo value.
165 * @param array $params other params.
166 *
167 * @return string
168 */
169 public static function cost_tracker_format_price( $price, $ret = false, $params = array() ) { //phpcs:ignore -- NOSONAR - complex.
170 if ( ! is_array( $params ) ) {
171 $params = array();
172 }
173
174 $get_currency_format = ! empty( $params['get_currency_format'] ) ? true : false;
175 $get_formated_number = ! empty( $params['get_formated_number'] ) ? true : false;
176 $get_decimals = ! empty( $params['get_decimals'] ) ? true : false;
177
178 $currency = static::get_instance()->get_option( 'currency' );
179 if ( empty( $currency ) ) {
180 $currency = 'USD';
181 }
182 $settings = static::get_instance()->get_option( 'currency_format' );
183
184 if ( ! is_array( $settings ) ) {
185 $settings = array();
186 }
187 $default = static::default_currency_settings();
188 $args = array_merge( $default, $settings );
189
190 // Convert to float to avoid issues on PHP 8.
191 $price = (float) $price;
192
193 $negative = $price < 0;
194
195 $price = $negative ? $price * -1 : $price;
196 $price = number_format( $price, $args['decimals'], $args['decimal_separator'], $args['thousand_separator'] );
197
198 if ( $get_decimals ) {
199 return $args['decimals'];
200 }
201
202 if ( $get_formated_number ) {
203 return $price;
204 }
205
206 if ( $args['decimals'] > 0 ) {
207 // trim zezos.
208 $price = preg_replace( '/' . preg_quote( $args['decimal_separator'], '/' ) . '0++$/', '', $price ?? '' );
209 }
210
211 $currency_pos = $args['currency_position'];
212
213 $format = '%1$s%2$s';
214 switch ( $currency_pos ) {
215 case 'left':
216 $format = '%1$s%2$s';
217 break;
218 case 'right':
219 $format = '%2$s%1$s';
220 break;
221 case 'left_space':
222 $format = '%1$s %2$s';
223 break;
224 case 'right_space':
225 $format = '%2$s %1$s';
226 break;
227 default:
228 break;
229 }
230
231 if ( $get_currency_format ) {
232 return array(
233 'format' => sprintf( $format, esc_html( static::get_currency_symbol( $currency ) ), '%1' ), // %1 for price holder.
234 'decimals' => $args['decimals'],
235 );
236 }
237
238 $formatted_price = ( $negative ? '-' : '' ) . sprintf( $format, '<span class="cost-tracker-currency-symbol">' . esc_html( static::get_currency_symbol( $currency ) ) . '</span>', esc_html( $price ) );
239 $value = '<span class="cost-tracker-currency-amount"><bdi>' . $formatted_price . '</bdi></span>';
240
241 if ( $ret ) {
242 return $value;
243 }
244 echo $value; // phpcs:ignore -- escaped.
245 }
246
247 /**
248 * Format the group costs prices.
249 *
250 * @param array $group_prices Group price.
251 *
252 * @return string
253 */
254 public static function get_separated_costs_price( $group_prices ) {
255
256 $grouped = array(
257 'weekly' => 'W',
258 'monthly' => 'M',
259 'quarterly' => 'Q',
260 'yearly' => 'Y',
261 'lifetime' => 'L',
262 );
263
264 $formated_prices = array();
265 if ( is_array( $group_prices ) ) {
266 foreach ( $grouped as $idx => $char ) {
267 if ( ! empty( $group_prices[ $idx ] ) ) {
268 $formated_prices[ $idx ] = static::cost_tracker_format_price( $group_prices[ $idx ], true ) . '/' . $char;
269 }
270 }
271 }
272 if ( ! empty( $formated_prices ) ) {
273 return implode( '|', $formated_prices );
274 }
275 return static::cost_tracker_format_price( 0, true );
276 }
277
278 /**
279 * Method get_currency_symbol().
280 *
281 * @param string $currency Currency.
282 *
283 * @return string Currency symbol.
284 */
285 public static function get_currency_symbol( $currency ) {
286 if ( ! is_string( $currency ) ) {
287 return '';
288 }
289 $all_curs = static::get_all_currency_symbols();
290 return isset( $all_curs[ $currency ]['symbol'] ) ? $all_curs[ $currency ]['symbol'] : '';
291 }
292
293 /**
294 * Method get_all_currency_symbols().
295 *
296 * @return array Currency symbols.
297 */
298 public static function get_all_currency_symbols() { // phpcs:ignore -- NOSONAR - multi lines.
299
300 return array(
301 'AFA' => array(
302 'name' => 'Afghan Afghani',
303 'symbol' => '؋',
304 ),
305 'ALL' => array(
306 'name' => 'Albanian Lek',
307 'symbol' => 'Lek',
308 ),
309 'DZD' => array(
310 'name' => 'Algerian Dinar',
311 'symbol' => 'دج',
312 ),
313 'AOA' => array(
314 'name' => 'Angolan Kwanza',
315 'symbol' => 'Kz',
316 ),
317 'ARS' => array(
318 'name' => 'Argentine Peso',
319 'symbol' => '$',
320 ),
321 'AMD' => array(
322 'name' => 'Armenian Dram',
323 'symbol' => '֏',
324 ),
325 'AWG' => array(
326 'name' => 'Aruban Florin',
327 'symbol' => 'ƒ',
328 ),
329 'AUD' => array(
330 'name' => 'Australian Dollar',
331 'symbol' => '$',
332 ),
333 'AZN' => array(
334 'name' => 'Azerbaijani Manat',
335 'symbol' => 'm',
336 ),
337 'BSD' => array(
338 'name' => 'Bahamian Dollar',
339 'symbol' => 'B$',
340 ),
341 'BHD' => array(
342 'name' => 'Bahraini Dinar',
343 'symbol' => '.د.ب',
344 ),
345 'BDT' => array(
346 'name' => 'Bangladeshi Taka',
347 'symbol' => '৳',
348 ),
349 'BBD' => array(
350 'name' => 'Barbadian Dollar',
351 'symbol' => 'Bds$',
352 ),
353 'BYR' => array(
354 'name' => 'Belarusian Ruble',
355 'symbol' => 'Br',
356 ),
357 'BEF' => array(
358 'name' => 'Belgian Franc',
359 'symbol' => 'fr',
360 ),
361 'BZD' => array(
362 'name' => 'Belize Dollar',
363 'symbol' => '$',
364 ),
365 'BMD' => array(
366 'name' => 'Bermudan Dollar',
367 'symbol' => '$',
368 ),
369 'BTN' => array(
370 'name' => 'Bhutanese Ngultrum',
371 'symbol' => 'Nu.',
372 ),
373 'BTC' => array(
374 'name' => 'Bitcoin',
375 'symbol' => '฿',
376 ),
377 'BOB' => array(
378 'name' => 'Bolivian Boliviano',
379 'symbol' => 'Bs.',
380 ),
381 'BAM' => array(
382 'name' => 'Bosnia-Herzegovina Convertible Mark',
383 'symbol' => 'KM',
384 ),
385 'BWP' => array(
386 'name' => 'Botswanan Pula',
387 'symbol' => 'P',
388 ),
389 'BRL' => array(
390 'name' => 'Brazilian Real',
391 'symbol' => 'R$',
392 ),
393 'GBP' => array(
394 'name' => 'British Pound Sterling',
395 'symbol' => '£',
396 ),
397 'BND' => array(
398 'name' => 'Brunei Dollar',
399 'symbol' => 'B$',
400 ),
401 'BGN' => array(
402 'name' => 'Bulgarian Lev',
403 'symbol' => 'Лв.',
404 ),
405 'BIF' => array(
406 'name' => 'Burundian Franc',
407 'symbol' => 'FBu',
408 ),
409 'KHR' => array(
410 'name' => 'Cambodian Riel',
411 'symbol' => 'KHR',
412 ),
413 'CAD' => array(
414 'name' => 'Canadian Dollar',
415 'symbol' => '$',
416 ),
417 'CVE' => array(
418 'name' => 'Cape Verdean Escudo',
419 'symbol' => '$',
420 ),
421 'KYD' => array(
422 'name' => 'Cayman Islands Dollar',
423 'symbol' => '$',
424 ),
425 'XOF' => array(
426 'name' => 'CFA Franc BCEAO',
427 'symbol' => 'CFA',
428 ),
429 'XAF' => array(
430 'name' => 'CFA Franc BEAC',
431 'symbol' => 'FCFA',
432 ),
433 'XPF' => array(
434 'name' => 'CFP Franc',
435 'symbol' => '₣',
436 ),
437 'CLP' => array(
438 'name' => 'Chilean Peso',
439 'symbol' => '$',
440 ),
441 'CLF' => array(
442 'name' => 'Chilean Unit of Account',
443 'symbol' => 'CLF',
444 ),
445 'CNY' => array(
446 'name' => 'Chinese Yuan',
447 'symbol' => '¥',
448 ),
449 'COP' => array(
450 'name' => 'Colombian Peso',
451 'symbol' => '$',
452 ),
453 'KMF' => array(
454 'name' => 'Comorian Franc',
455 'symbol' => 'CF',
456 ),
457 'CDF' => array(
458 'name' => 'Congolese Franc',
459 'symbol' => 'FC',
460 ),
461 'CRC' => array(
462 'name' => 'Costa Rican Colón',
463 'symbol' => '₡',
464 ),
465 'HRK' => array(
466 'name' => 'Croatian Kuna',
467 'symbol' => 'kn',
468 ),
469 'CUC' => array(
470 'name' => 'Cuban Convertible Peso',
471 'symbol' => '$, CUC',
472 ),
473 'CZK' => array(
474 'name' => 'Czech Republic Koruna',
475 'symbol' => 'Kč',
476 ),
477 'DKK' => array(
478 'name' => 'Danish Krone',
479 'symbol' => 'Kr.',
480 ),
481 'DJF' => array(
482 'name' => 'Djiboutian Franc',
483 'symbol' => 'Fdj',
484 ),
485 'DOP' => array(
486 'name' => 'Dominican Peso',
487 'symbol' => '$',
488 ),
489 'XCD' => array(
490 'name' => 'East Caribbean Dollar',
491 'symbol' => '$',
492 ),
493 'EGP' => array(
494 'name' => 'Egyptian Pound',
495 'symbol' => 'ج.�
496 ',
497 ),
498 'ERN' => array(
499 'name' => 'Eritrean Nakfa',
500 'symbol' => 'Nfk',
501 ),
502 'EEK' => array(
503 'name' => 'Estonian Kroon',
504 'symbol' => 'kr',
505 ),
506 'ETB' => array(
507 'name' => 'Ethiopian Birr',
508 'symbol' => 'Nkf',
509 ),
510 'EUR' => array(
511 'name' => 'Euro',
512 'symbol' => '€',
513 ),
514 'FKP' => array(
515 'name' => 'Falkland Islands Pound',
516 'symbol' => '£',
517 ),
518 'FJD' => array(
519 'name' => 'Fijian Dollar',
520 'symbol' => 'FJ$',
521 ),
522 'GMD' => array(
523 'name' => 'Gambian Dalasi',
524 'symbol' => 'D',
525 ),
526 'GEL' => array(
527 'name' => 'Georgian Lari',
528 'symbol' => 'ლ',
529 ),
530 'DEM' => array(
531 'name' => 'German Mark',
532 'symbol' => 'DM',
533 ),
534 'GHS' => array(
535 'name' => 'Ghanaian Cedi',
536 'symbol' => 'GH₵',
537 ),
538 'GIP' => array(
539 'name' => 'Gibraltar Pound',
540 'symbol' => '£',
541 ),
542 'GRD' => array(
543 'name' => 'Greek Drachma',
544 'symbol' => '₯, Δρχ, Δρ',
545 ),
546 'GTQ' => array(
547 'name' => 'Guatemalan Quetzal',
548 'symbol' => 'Q',
549 ),
550 'GNF' => array(
551 'name' => 'Guinean Franc',
552 'symbol' => 'FG',
553 ),
554 'GYD' => array(
555 'name' => 'Guyanaese Dollar',
556 'symbol' => '$',
557 ),
558 'HTG' => array(
559 'name' => 'Haitian Gourde',
560 'symbol' => 'G',
561 ),
562 'HNL' => array(
563 'name' => 'Honduran Lempira',
564 'symbol' => 'L',
565 ),
566 'HKD' => array(
567 'name' => 'Hong Kong Dollar',
568 'symbol' => '$',
569 ),
570 'HUF' => array(
571 'name' => 'Hungarian Forint',
572 'symbol' => 'Ft',
573 ),
574 'ISK' => array(
575 'name' => 'Icelandic Króna',
576 'symbol' => 'kr',
577 ),
578 'INR' => array(
579 'name' => 'Indian Rupee',
580 'symbol' => '₹',
581 ),
582 'IDR' => array(
583 'name' => 'Indonesian Rupiah',
584 'symbol' => 'Rp',
585 ),
586 'IRR' => array(
587 'name' => 'Iranian Rial',
588 'symbol' => '﷼',
589 ),
590 'IQD' => array(
591 'name' => 'Iraqi Dinar',
592 'symbol' => 'د.ع',
593 ),
594 'ILS' => array(
595 'name' => 'Israeli New Sheqel',
596 'symbol' => '₪',
597 ),
598 'ITL' => array(
599 'name' => 'Italian Lira',
600 'symbol' => 'L,£',
601 ),
602 'JMD' => array(
603 'name' => 'Jamaican Dollar',
604 'symbol' => 'J$',
605 ),
606 'JPY' => array(
607 'name' => 'Japanese Yen',
608 'symbol' => '¥',
609 ),
610 'JOD' => array(
611 'name' => 'Jordanian Dinar',
612 'symbol' => 'ا.د',
613 ),
614 'KZT' => array(
615 'name' => 'Kazakhstani Tenge',
616 'symbol' => 'лв',
617 ),
618 'KES' => array(
619 'name' => 'Kenyan Shilling',
620 'symbol' => 'KSh',
621 ),
622 'KWD' => array(
623 'name' => 'Kuwaiti Dinar',
624 'symbol' => 'ك.د',
625 ),
626 'KGS' => array(
627 'name' => 'Kyrgystani Som',
628 'symbol' => 'лв',
629 ),
630 'LAK' => array(
631 'name' => 'Laotian Kip',
632 'symbol' => '₭',
633 ),
634 'LVL' => array(
635 'name' => 'Latvian Lats',
636 'symbol' => 'Ls',
637 ),
638 'LBP' => array(
639 'name' => 'Lebanese Pound',
640 'symbol' => '£',
641 ),
642 'LSL' => array(
643 'name' => 'Lesotho Loti',
644 'symbol' => 'L',
645 ),
646 'LRD' => array(
647 'name' => 'Liberian Dollar',
648 'symbol' => '$',
649 ),
650 'LYD' => array(
651 'name' => 'Libyan Dinar',
652 'symbol' => 'د.ل',
653 ),
654 'LTC' => array(
655 'name' => 'Litecoin',
656 'symbol' => 'Ł',
657 ),
658 'LTL' => array(
659 'name' => 'Lithuanian Litas',
660 'symbol' => 'Lt',
661 ),
662 'MOP' => array(
663 'name' => 'Macanese Pataca',
664 'symbol' => '$',
665 ),
666 'MKD' => array(
667 'name' => 'Macedonian Denar',
668 'symbol' => 'ден',
669 ),
670 'MGA' => array(
671 'name' => 'Malagasy Ariary',
672 'symbol' => 'Ar',
673 ),
674 'MWK' => array(
675 'name' => 'Malawian Kwacha',
676 'symbol' => 'MK',
677 ),
678 'MYR' => array(
679 'name' => 'Malaysian Ringgit',
680 'symbol' => 'RM',
681 ),
682 'MVR' => array(
683 'name' => 'Maldivian Rufiyaa',
684 'symbol' => 'Rf',
685 ),
686 'MRO' => array(
687 'name' => 'Mauritanian Ouguiya',
688 'symbol' => 'MRU',
689 ),
690 'MUR' => array(
691 'name' => 'Mauritian Rupee',
692 'symbol' => '₨',
693 ),
694 'MXN' => array(
695 'name' => 'Mexican Peso',
696 'symbol' => '$',
697 ),
698 'MDL' => array(
699 'name' => 'Moldovan Leu',
700 'symbol' => 'L',
701 ),
702 'MNT' => array(
703 'name' => 'Mongolian Tugrik',
704 'symbol' => '₮',
705 ),
706 'MAD' => array(
707 'name' => 'Moroccan Dirham',
708 'symbol' => 'MAD',
709 ),
710 'MZM' => array(
711 'name' => 'Mozambican Metical',
712 'symbol' => 'MT',
713 ),
714 'MMK' => array(
715 'name' => 'Myanmar Kyat',
716 'symbol' => 'K',
717 ),
718 'NAD' => array(
719 'name' => 'Namibian Dollar',
720 'symbol' => '$',
721 ),
722 'NPR' => array(
723 'name' => 'Nepalese Rupee',
724 'symbol' => '₨',
725 ),
726 'ANG' => array(
727 'name' => 'Netherlands Antillean Guilder',
728 'symbol' => 'ƒ',
729 ),
730 'TWD' => array(
731 'name' => 'New Taiwan Dollar',
732 'symbol' => '$',
733 ),
734 'NZD' => array(
735 'name' => 'New Zealand Dollar',
736 'symbol' => '$',
737 ),
738 'NIO' => array(
739 'name' => 'Nicaraguan Córdoba',
740 'symbol' => 'C$',
741 ),
742 'NGN' => array(
743 'name' => 'Nigerian Naira',
744 'symbol' => '₦',
745 ),
746 'KPW' => array(
747 'name' => 'North Korean Won',
748 'symbol' => '₩',
749 ),
750 'NOK' => array(
751 'name' => 'Norwegian Krone',
752 'symbol' => 'kr',
753 ),
754 'OMR' => array(
755 'name' => 'Omani Rial',
756 'symbol' => '.ع.ر',
757 ),
758 'PKR' => array(
759 'name' => 'Pakistani Rupee',
760 'symbol' => '₨',
761 ),
762 'PAB' => array(
763 'name' => 'Panamanian Balboa',
764 'symbol' => 'B/.',
765 ),
766 'PGK' => array(
767 'name' => 'Papua New Guinean Kina',
768 'symbol' => 'K',
769 ),
770 'PYG' => array(
771 'name' => 'Paraguayan Guarani',
772 'symbol' => '₲',
773 ),
774 'PEN' => array(
775 'name' => 'Peruvian Nuevo Sol',
776 'symbol' => 'S/.',
777 ),
778 'PHP' => array(
779 'name' => 'Philippine Peso',
780 'symbol' => '₱',
781 ),
782 'PLN' => array(
783 'name' => 'Polish Zloty',
784 'symbol' => 'zł',
785 ),
786 'QAR' => array(
787 'name' => 'Qatari Rial',
788 'symbol' => 'ق.ر',
789 ),
790 'RON' => array(
791 'name' => 'Romanian Leu',
792 'symbol' => 'lei',
793 ),
794 'RUB' => array(
795 'name' => 'Russian Ruble',
796 'symbol' => '₽',
797 ),
798 'RWF' => array(
799 'name' => 'Rwandan Franc',
800 'symbol' => 'FRw',
801 ),
802 'SVC' => array(
803 'name' => 'Salvadoran Colón',
804 'symbol' => '₡',
805 ),
806 'WST' => array(
807 'name' => 'Samoan Tala',
808 'symbol' => 'SAT',
809 ),
810 'STD' => array(
811 'name' => 'São Tomé and Príncipe Dobra',
812 'symbol' => 'Db',
813 ),
814 'SAR' => array(
815 'name' => 'Saudi Riyal',
816 'symbol' => '﷼',
817 ),
818 'RSD' => array(
819 'name' => 'Serbian Dinar',
820 'symbol' => 'din',
821 ),
822 'SCR' => array(
823 'name' => 'Seychellois Rupee',
824 'symbol' => 'SRe',
825 ),
826 'SLL' => array(
827 'name' => 'Sierra Leonean Leone',
828 'symbol' => 'Le',
829 ),
830 'SGD' => array(
831 'name' => 'Singapore Dollar',
832 'symbol' => '$',
833 ),
834 'SKK' => array(
835 'name' => 'Slovak Koruna',
836 'symbol' => 'Sk',
837 ),
838 'SBD' => array(
839 'name' => 'Solomon Islands Dollar',
840 'symbol' => 'Si$',
841 ),
842 'SOS' => array(
843 'name' => 'Somali Shilling',
844 'symbol' => 'Sh.so.',
845 ),
846 'ZAR' => array(
847 'name' => 'South African Rand',
848 'symbol' => 'R',
849 ),
850 'KRW' => array(
851 'name' => 'South Korean Won',
852 'symbol' => '₩',
853 ),
854 'SSP' => array(
855 'name' => 'South Sudanese Pound',
856 'symbol' => '£',
857 ),
858 'XDR' => array(
859 'name' => 'Special Drawing Rights',
860 'symbol' => 'SDR',
861 ),
862 'LKR' => array(
863 'name' => 'Sri Lankan Rupee',
864 'symbol' => 'Rs',
865 ),
866 'SHP' => array(
867 'name' => 'St. Helena Pound',
868 'symbol' => '£',
869 ),
870 'SDG' => array(
871 'name' => 'Sudanese Pound',
872 'symbol' => '.س.ج',
873 ),
874 'SRD' => array(
875 'name' => 'Surinamese Dollar',
876 'symbol' => '$',
877 ),
878 'SZL' => array(
879 'name' => 'Swazi Lilangeni',
880 'symbol' => 'E',
881 ),
882 'SEK' => array(
883 'name' => 'Swedish Krona',
884 'symbol' => 'kr',
885 ),
886 'CHF' => array(
887 'name' => 'Swiss Franc',
888 'symbol' => 'CHf',
889 ),
890 'SYP' => array(
891 'name' => 'Syrian Pound',
892 'symbol' => 'LS',
893 ),
894 'TJS' => array(
895 'name' => 'Tajikistani Somoni',
896 'symbol' => 'SM',
897 ),
898 'TZS' => array(
899 'name' => 'Tanzanian Shilling',
900 'symbol' => 'TSh',
901 ),
902 'THB' => array(
903 'name' => 'Thai Baht',
904 'symbol' => '฿',
905 ),
906 'TOP' => array(
907 'name' => "Tongan Pa'anga",
908 'symbol' => '$',
909 ),
910 'TTD' => array(
911 'name' => 'Trinidad & Tobago Dollar',
912 'symbol' => '$',
913 ),
914 'TND' => array(
915 'name' => 'Tunisian Dinar',
916 'symbol' => 'ت.د',
917 ),
918 'TRY' => array(
919 'name' => 'Turkish Lira',
920 'symbol' => '₺',
921 ),
922 'TMT' => array(
923 'name' => 'Turkmenistani Manat',
924 'symbol' => 'T',
925 ),
926 'UGX' => array(
927 'name' => 'Ugandan Shilling',
928 'symbol' => 'USh',
929 ),
930 'UAH' => array(
931 'name' => 'Ukrainian Hryvnia',
932 'symbol' => '₴',
933 ),
934 'AED' => array(
935 'name' => 'United Arab Emirates Dirham',
936 'symbol' => 'إ.د',
937 ),
938 'UYU' => array(
939 'name' => 'Uruguayan Peso',
940 'symbol' => '$',
941 ),
942 'USD' => array(
943 'name' => 'US Dollar',
944 'symbol' => '$',
945 ),
946 'UZS' => array(
947 'name' => 'Uzbekistan Som',
948 'symbol' => 'лв',
949 ),
950 'VUV' => array(
951 'name' => 'Vanuatu Vatu',
952 'symbol' => 'VT',
953 ),
954 'VEF' => array(
955 'name' => 'Venezuelan BolÃvar',
956 'symbol' => 'Bs',
957 ),
958 'VND' => array(
959 'name' => 'Vietnamese Dong',
960 'symbol' => '₫',
961 ),
962 'YER' => array(
963 'name' => 'Yemeni Rial',
964 'symbol' => '﷼',
965 ),
966 'ZMK' => array(
967 'name' => 'Zambian Kwacha',
968 'symbol' => 'ZK',
969 ),
970 'ZWL' => array(
971 'name' => 'Zimbabwean dollar',
972 'symbol' => '$',
973 ),
974 );
975 }
976
977 /**
978 * Get default tracker settings.
979 */
980 public static function default_currency_settings() {
981 return array(
982 'currency_position' => 'left',
983 'thousand_separator' => ',',
984 'decimal_separator' => '.',
985 'decimals' => 2,
986 );
987 }
988
989 /**
990 * Validate currency settings.
991 *
992 * @param array $settings Settings value.
993 */
994 public static function validate_currency_settings( $settings ) {
995 $default = static::default_currency_settings();
996 $valid_settings = array();
997
998 $valid_settings['currency_position'] = isset( $settings['currency_position'] ) ? sanitize_text_field( wp_unslash( $settings['currency_position'] ) ) : 'left';
999 if ( ! in_array( $valid_settings['currency_position'], array( 'left', 'right', 'left_space', 'right_space' ), true ) ) {
1000 $valid_settings['currency_position'] = $default['currency_position'];
1001 }
1002
1003 $valid_settings['thousand_separator'] = isset( $settings['thousand_separator'] ) ? sanitize_text_field( wp_unslash( $settings['thousand_separator'] ) ) : $default['thousand_separator'];
1004 $valid_settings['decimal_separator'] = isset( $settings['decimal_separator'] ) ? sanitize_text_field( wp_unslash( $settings['decimal_separator'] ) ) : $default['decimal_separator'];
1005 $valid_settings['decimals'] = isset( $settings['decimals'] ) ? intval( $settings['decimals'] ) : $default['decimals'];
1006
1007 if ( $valid_settings['decimals'] > 8 || $valid_settings['decimals'] < 0 ) {
1008 $valid_settings['decimals'] = $default['decimals'];
1009 }
1010
1011 return $valid_settings;
1012 }
1013
1014 /**
1015 * Get payment method icon
1016 *
1017 * Returns FOmantic UI icon for payment selected payment method.
1018 *
1019 * @param string $payment_method Selected patyment method.
1020 */
1021 public static function get_payment_method_icon( $payment_method ) {
1022 $icon = '<i class="money bill large icon"></i>';
1023
1024 switch ( $payment_method ) {
1025 case 'PayPal':
1026 $icon = '<span data-tooltip="PayPal" data-inverted="" data-position="left center"><i class="paypal large icon"></i></span>';
1027 break;
1028 case 'Stripe':
1029 $icon = '<span data-tooltip="Stripe" data-inverted="" data-position="left center"><i class="stripe large icon"></i></span>';
1030 break;
1031 case 'Apple Pay':
1032 $icon = '<span data-tooltip="Apple Pay" data-inverted="" data-position="left center"><i class="apple pay large icon"></i></span>';
1033 break;
1034 case 'Amazon Pay':
1035 $icon = '<span data-tooltip="Amazon Pay" data-inverted="" data-position="left center"><i class="amazon pay large icon"></i></span>';
1036 break;
1037 case 'Google Pay':
1038 $icon = '<span data-tooltip="Google Pay" data-inverted="" data-position="left center"><i class="google pay large icon"></i></span>';
1039 break;
1040 case 'Credit Card':
1041 $icon = '<span data-tooltip="Credit Card" data-inverted="" data-position="left center"><i class="credit card large icon"></i></span>';
1042 break;
1043 case 'Debit Card':
1044 $icon = '<span data-tooltip="Debit Card" data-inverted="" data-position="left center"><i class="credit card outline large icon"></i></span>';
1045 break;
1046 case 'Cash':
1047 $icon = '<span data-tooltip="Cash" data-inverted="" data-position="left center"><i class="money bill alternate outline large icon"></i></span>';
1048 break;
1049 default:
1050 break;
1051 }
1052
1053 return $icon;
1054 }
1055
1056
1057 /**
1058 * Method get_product_default_icons().
1059 *
1060 * @param bool $get_all Get all icons.
1061 * @param string $def_type_icon to get default icon for types.
1062 *
1063 * @return string icon.
1064 */
1065 public static function get_product_default_icons( $get_all = true, $def_type_icon = '' ) {
1066 unset( $get_all );
1067 if ( 'default_custom_product_type' === $def_type_icon ) {
1068 return 'folder open';
1069 } elseif ( 'default_product' === $def_type_icon ) {
1070 return 'archive';
1071 }
1072
1073 if ( ! empty( $def_type_icon ) ) {
1074 $default_pro_type_icons = Cost_Tracker_Admin::get_default_product_types_icons();
1075 if ( isset( $default_pro_type_icons[ $def_type_icon ] ) ) {
1076 return $default_pro_type_icons[ $def_type_icon ];
1077 }
1078 }
1079 return MainWP_UI::get_default_icons();
1080 }
1081 }
1082