PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.15.0
GiveWP – Donation Plugin and Fundraising Platform v4.15.0
4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 All 255 releases
give / vendor / moneyphp / money / src / Formatter / IntlMoneyFormatter.php

IntlMoneyFormatter.php in GiveWP – Donation Plugin and Fundraising Platform 4.15.0, at vendor/moneyphp/money/src/Formatter/IntlMoneyFormatter.php

66 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Money\Formatter;
4
5 use Money\Currencies;
6 use Money\Money;
7 use Money\MoneyFormatter;
8
9 /**
10 * Formats a Money object using intl extension.
11 *
12 * @author Frederik Bosch <f.bosch@genkgo.nl>
13 */
14 final class IntlMoneyFormatter implements MoneyFormatter
15 {
16 /**
17 * @var \NumberFormatter
18 */
19 private $formatter;
20
21 /**
22 * @var Currencies
23 */
24 private $currencies;
25
26 public function __construct(\NumberFormatter $formatter, Currencies $currencies)
27 {
28 $this->formatter = $formatter;
29 $this->currencies = $currencies;
30 }
31
32 /**
33 * {@inheritdoc}
34 */
35 public function format(Money $money)
36 {
37 $valueBase = $money->getAmount();
38 $negative = false;
39
40 if ($valueBase[0] === '-') {
41 $negative = true;
42 $valueBase = substr($valueBase, 1);
43 }
44
45 $subunit = $this->currencies->subunitFor($money->getCurrency());
46 $valueLength = strlen($valueBase);
47
48 if ($valueLength > $subunit) {
49 $formatted = substr($valueBase, 0, $valueLength - $subunit);
50 $decimalDigits = substr($valueBase, $valueLength - $subunit);
51
52 if (strlen($decimalDigits) > 0) {
53 $formatted .= '.'.$decimalDigits;
54 }
55 } else {
56 $formatted = '0.'.str_pad('', $subunit - $valueLength, '0').$valueBase;
57 }
58
59 if ($negative === true) {
60 $formatted = '-'.$formatted;
61 }
62
63 return $this->formatter->formatCurrency($formatted, $money->getCurrency()->getCode());
64 }
65 }
66