PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.2
GiveWP – Donation Plugin and Fundraising Platform v4.14.2
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 / vendor / moneyphp / money / src / Parser / BitcoinMoneyParser.php
give / vendor / moneyphp / money / src / Parser Last commit date
AggregateMoneyParser.php 4 years ago BitcoinMoneyParser.php 4 years ago DecimalMoneyParser.php 1 year ago IntlLocalizedDecimalParser.php 1 year ago IntlMoneyParser.php 1 year ago
BitcoinMoneyParser.php
83 lines
1 <?php
2
3 namespace Money\Parser;
4
5 use Money\Currencies\BitcoinCurrencies;
6 use Money\Currency;
7 use Money\Exception\ParserException;
8 use Money\Money;
9 use Money\MoneyParser;
10
11 /**
12 * Parses Bitcoin currency to Money.
13 *
14 * @author Frederik Bosch <f.bosch@genkgo.nl>
15 */
16 final class BitcoinMoneyParser implements MoneyParser
17 {
18 /**
19 * @var int
20 */
21 private $fractionDigits;
22
23 /**
24 * @param int $fractionDigits
25 */
26 public function __construct($fractionDigits)
27 {
28 $this->fractionDigits = $fractionDigits;
29 }
30
31 /**
32 * {@inheritdoc}
33 */
34 public function parse($money, $forceCurrency = null)
35 {
36 if (is_string($money) === false) {
37 throw new ParserException('Formatted raw money should be string, e.g. $1.00');
38 }
39
40 if (strpos($money, BitcoinCurrencies::SYMBOL) === false) {
41 throw new ParserException('Value cannot be parsed as Bitcoin');
42 }
43
44 if ($forceCurrency === null) {
45 $forceCurrency = new Currency(BitcoinCurrencies::CODE);
46 }
47
48 /*
49 * This conversion is only required whilst currency can be either a string or a
50 * Currency object.
51 */
52 $currency = $forceCurrency;
53 if (!$currency instanceof Currency) {
54 @trigger_error('Passing a currency as string is deprecated since 3.1 and will be removed in 4.0. Please pass a '.Currency::class.' instance instead.', E_USER_DEPRECATED);
55 $currency = new Currency($currency);
56 }
57
58 $decimal = str_replace(BitcoinCurrencies::SYMBOL, '', $money);
59 $decimalSeparator = strpos($decimal, '.');
60
61 if (false !== $decimalSeparator) {
62 $decimal = rtrim($decimal, '0');
63 $lengthDecimal = strlen($decimal);
64 $decimal = str_replace('.', '', $decimal);
65 $decimal .= str_pad('', ($lengthDecimal - $decimalSeparator - $this->fractionDigits - 1) * -1, '0');
66 } else {
67 $decimal .= str_pad('', $this->fractionDigits, '0');
68 }
69
70 if (substr($decimal, 0, 1) === '-') {
71 $decimal = '-'.ltrim(substr($decimal, 1), '0');
72 } else {
73 $decimal = ltrim($decimal, '0');
74 }
75
76 if ('' === $decimal) {
77 $decimal = '0';
78 }
79
80 return new Money($decimal, $currency);
81 }
82 }
83