PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / _inc / lib / class-jetpack-currencies.php
jetpack / _inc / lib Last commit date
admin-pages 1 week ago core-api 2 days ago debugger 1 month ago markdown 7 months ago class-jetpack-ai-helper.php 4 months ago class-jetpack-application-password-extras.php 3 months ago class-jetpack-blog-stats-helper.php 7 months ago class-jetpack-currencies.php 1 year ago class-jetpack-instagram-gallery-helper.php 1 month ago class-jetpack-mapbox-helper.php 3 years ago class-jetpack-newsletter-category-helper.php 7 months ago class-jetpack-podcast-feed-locator.php 1 month ago class-jetpack-podcast-helper.php 5 months ago class-jetpack-recommendations.php 1 month ago class-jetpack-spinner.php 2 months ago class-jetpack-top-posts-helper.php 1 week ago class.color.php 1 year ago class.core-rest-api-endpoints.php 1 week ago class.jetpack-automatic-install-skin.php 2 years ago class.jetpack-iframe-embed.php 3 years ago class.jetpack-password-checker.php 7 months ago class.jetpack-search-performance-logger.php 4 years ago class.media-extractor.php 1 month ago class.media-summary.php 1 week ago class.media.php 7 months ago components.php 7 months ago debugger.php 1 month ago icalendar-reader.php 1 month ago markdown.php 7 months ago plans.php 4 years ago plugins.php 4 years ago tonesque.php 7 months ago widgets.php 3 months ago
class-jetpack-currencies.php
181 lines
1 <?php
2 /**
3 * Jetpack_Currencies: Utils for displaying and managing currencies.
4 *
5 * @package Jetpack
6 * @since 9.1.0
7 */
8
9 /**
10 * General currencies specific functionality
11 */
12 class Jetpack_Currencies {
13 /**
14 * Currencies definition
15 */
16 const CURRENCIES = array(
17 'USD' => array(
18 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
19 'symbol' => '$',
20 'decimal' => 2,
21 ),
22 'GBP' => array(
23 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
24 'symbol' => '&#163;',
25 'decimal' => 2,
26 ),
27 'JPY' => array(
28 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
29 'symbol' => '&#165;',
30 'decimal' => 0,
31 ),
32 'BRL' => array(
33 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
34 'symbol' => 'R$',
35 'decimal' => 2,
36 ),
37 'EUR' => array(
38 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
39 'symbol' => '&#8364;',
40 'decimal' => 2,
41 ),
42 'NZD' => array(
43 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
44 'symbol' => 'NZ$',
45 'decimal' => 2,
46 ),
47 'AUD' => array(
48 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
49 'symbol' => 'A$',
50 'decimal' => 2,
51 ),
52 'CAD' => array(
53 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
54 'symbol' => 'C$',
55 'decimal' => 2,
56 ),
57 'ILS' => array(
58 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
59 'symbol' => '',
60 'decimal' => 2,
61 ),
62 'RUB' => array(
63 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
64 'symbol' => '',
65 'decimal' => 2,
66 ),
67 'MXN' => array(
68 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
69 'symbol' => 'MX$',
70 'decimal' => 2,
71 ),
72 'MYR' => array(
73 'format' => '%2$s%1$s', // 1: Symbol 2: currency value
74 'symbol' => 'RM',
75 'decimal' => 2,
76 ),
77 'SEK' => array(
78 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
79 'symbol' => 'Skr',
80 'decimal' => 2,
81 ),
82 'HUF' => array(
83 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
84 'symbol' => 'Ft',
85 'decimal' => 0, // Decimals are supported by Stripe but not by PayPal.
86 ),
87 'CHF' => array(
88 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
89 'symbol' => 'CHF',
90 'decimal' => 2,
91 ),
92 'CZK' => array(
93 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
94 'symbol' => '',
95 'decimal' => 2,
96 ),
97 'DKK' => array(
98 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
99 'symbol' => 'Dkr',
100 'decimal' => 2,
101 ),
102 'HKD' => array(
103 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
104 'symbol' => 'HK$',
105 'decimal' => 2,
106 ),
107 'NOK' => array(
108 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
109 'symbol' => 'Kr',
110 'decimal' => 2,
111 ),
112 'PHP' => array(
113 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
114 'symbol' => '',
115 'decimal' => 2,
116 ),
117 'PLN' => array(
118 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
119 'symbol' => 'PLN',
120 'decimal' => 2,
121 ),
122 'SGD' => array(
123 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
124 'symbol' => 'S$',
125 'decimal' => 2,
126 ),
127 'TWD' => array(
128 'format' => '%1$s%2$s', // 1: Symbol 2: currency value
129 'symbol' => 'NT$',
130 'decimal' => 0, // Decimals are supported by Stripe but not by PayPal.
131 ),
132 'THB' => array(
133 'format' => '%2$s%1$s', // 1: Symbol 2: currency value
134 'symbol' => '฿',
135 'decimal' => 2,
136 ),
137 'INR' => array(
138 'format' => '%2$s %1$s', // 1: Symbol 2: currency value
139 'symbol' => '',
140 'decimal' => 0,
141 ),
142 );
143
144 /**
145 * Format a price with currency.
146 *
147 * Uses currency-aware formatting to output a formatted price with a simple fallback.
148 *
149 * Largely inspired by WordPress.com's Store_Price::display_currency
150 *
151 * @param string $price Price.
152 * @param string $currency Currency.
153 * @param bool $symbol Whether to display the currency symbol.
154 * @return string Formatted price.
155 */
156 public static function format_price( $price, $currency, $symbol = true ) {
157 // Add some basic formatting for the price.
158 $formatted_number = new NumberFormatter( get_locale(), NumberFormatter::DECIMAL );
159 $price = (float) $formatted_number->parse( $price );
160
161 // Fall back to unspecified currency symbol like `¤1,234.05`.
162 // @link https://en.wikipedia.org/wiki/Currency_sign_(typography).
163 if ( ! array_key_exists( $currency, self::CURRENCIES ) ) {
164 return ( $symbol ? '¤' : '' ) . number_format_i18n( $price, 2 );
165 }
166
167 $currency_details = self::CURRENCIES[ $currency ];
168
169 // Ensure USD displays as 1234.56 even in non-US locales.
170 $amount = 'USD' === $currency
171 ? number_format( $price, $currency_details['decimal'], '.', ',' )
172 : number_format_i18n( $price, $currency_details['decimal'] );
173
174 return sprintf(
175 $currency_details['format'],
176 $symbol ? $currency_details['symbol'] : '',
177 $amount
178 );
179 }
180 }
181