PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.24.1
GiveWP – Donation Plugin and Fundraising Platform v2.24.1
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / Support / Facades / CurrencyFacade.php
give / src / Framework / Support / Facades Last commit date
DateTime 3 years ago CurrencyFacade.php 3 years ago Facade.php 4 years ago Str.php 4 years ago
CurrencyFacade.php
101 lines
1 <?php
2
3 namespace Give\Framework\Support\Facades;
4
5 use Money\Converter;
6 use Money\Currencies\ISOCurrencies;
7 use Money\Currency;
8 use Money\Exchange\FixedExchange;
9 use Money\Formatter\DecimalMoneyFormatter;
10 use Money\Formatter\IntlMoneyFormatter;
11 use Money\Money;
12 use Money\Parser\DecimalMoneyParser;
13 use NumberFormatter;
14
15 class CurrencyFacade
16 {
17 /**
18 * Immutably converts the given amount into the system currency.
19 *
20 * @since 2.20.0
21 *
22 * @param Money $amount
23 * @param int|float $exchangeRate
24 */
25 public function convertToBaseCurrency(Money $amount, $exchangeRate = 1): Money
26 {
27 $baseCurrency = $this->getBaseCurrency();
28
29 if ($amount->getCurrency()->equals($baseCurrency)) {
30 return $amount;
31 }
32
33 $converter = new Converter(
34 new ISOCurrencies(), new FixedExchange([
35 $amount->getCurrency()->getCode() => [
36 give_get_option('currency', 'USD') => $exchangeRate,
37 ],
38 ])
39 );
40
41 return $converter->convert($amount, $baseCurrency);
42 }
43
44 /**
45 * Creates a new Money instance from a decimal amount
46 *
47 * @since 2.20.0
48 *
49 * @param string|float|int $amount
50 */
51 public function parseFromDecimal($amount, string $currency): Money
52 {
53 return (new DecimalMoneyParser(new ISOCurrencies()))->parse((string)$amount, new Currency($currency));
54 }
55
56 /**
57 * Returns the amount in a decimal format, not including any currency symbols:
58 * - $1,500.25 -> 1500.25
59 *
60 * @since 2.20.0
61 */
62 public function formatToDecimal(Money $amount): string
63 {
64 return (new DecimalMoneyFormatter(new ISOCurrencies()))->format($amount);
65 }
66
67 /**
68 * Formats the amount to a currency format, including currency symbols, in the given locale.
69 *
70 * @since 2.20.0
71 *
72 * @param Money $amount
73 * @param string|null $locale
74 *
75 * @return string
76 */
77 public function formatToLocale(Money $amount, $locale = null): string
78 {
79 if ($locale === null) {
80 $locale = get_locale();
81 }
82
83 $numberFormatter = new NumberFormatter($locale, NumberFormatter::CURRENCY);
84 $moneyFormatter = new IntlMoneyFormatter($numberFormatter, new ISOCurrencies());
85
86 return $moneyFormatter->format($amount);
87 }
88
89 /**
90 * Retrieves the system's base currency
91 *
92 * @since 2.20.0
93 *
94 * @return Currency
95 */
96 public function getBaseCurrency(): Currency
97 {
98 return new Currency(give_get_option('currency', 'USD'));
99 }
100 }
101