PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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