PluginProbe
Easy Invoice – Invoice Generator, PDF Quotes & Payments / 2.4.0
Easy Invoice – Invoice Generator, PDF Quotes & Payments v2.4.0
2.4.0 2.4.1 2.3.8 2.3.7 2.3.6 2.3.5 2.3.4 2.3.3 2.3.2 2.3.1 2.2.0 2.1.21 2.1.20 2.1.19 2.1.18 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.16 2.1.2 All 57 releases
easy-invoice / includes / Helpers / CurrencyHelper.php

CurrencyHelper.php in Easy Invoice – Invoice Generator, PDF Quotes & Payments 2.4.0, at includes/Helpers/CurrencyHelper.php

209 lines 11.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Currency Helper Class
4 *
5 * Provides comprehensive currency information and utilities
6 *
7 * @package EasyInvoice
8 * @subpackage Helpers
9 */
10
11 namespace EasyInvoice\Helpers;
12
13 class CurrencyHelper {
14
15 /**
16 * Get all available currencies with their codes, symbols, and names
17 *
18 * @return array Array of currencies with code as key and array of symbol, name as value
19 */
20 public static function getCurrencies(): array {
21 return [
22 'USD' => ['symbol' => '$', 'name' => 'US Dollar'],
23 'EUR' => ['symbol' => '', 'name' => 'Euro'],
24 'GBP' => ['symbol' => '£', 'name' => 'British Pound'],
25 'JPY' => ['symbol' => '¥', 'name' => 'Japanese Yen'],
26 'CAD' => ['symbol' => 'C$', 'name' => 'Canadian Dollar'],
27 'AUD' => ['symbol' => 'A$', 'name' => 'Australian Dollar'],
28 'CHF' => ['symbol' => 'CHF', 'name' => 'Swiss Franc'],
29 'CNY' => ['symbol' => '¥', 'name' => 'Chinese Yuan'],
30 'INR' => ['symbol' => '', 'name' => 'Indian Rupee'],
31 'BRL' => ['symbol' => 'R$', 'name' => 'Brazilian Real'],
32 'RUB' => ['symbol' => '', 'name' => 'Russian Ruble'],
33 'KRW' => ['symbol' => '', 'name' => 'South Korean Won'],
34 'MXN' => ['symbol' => '$', 'name' => 'Mexican Peso'],
35 'SGD' => ['symbol' => 'S$', 'name' => 'Singapore Dollar'],
36 'HKD' => ['symbol' => 'HK$', 'name' => 'Hong Kong Dollar'],
37 'NOK' => ['symbol' => 'kr', 'name' => 'Norwegian Krone'],
38 'SEK' => ['symbol' => 'kr', 'name' => 'Swedish Krona'],
39 'DKK' => ['symbol' => 'kr', 'name' => 'Danish Krone'],
40 'PLN' => ['symbol' => '', 'name' => 'Polish Złoty'],
41 'TRY' => ['symbol' => '', 'name' => 'Turkish Lira'],
42 'ZAR' => ['symbol' => 'R', 'name' => 'South African Rand'],
43 'NZD' => ['symbol' => 'NZ$', 'name' => 'New Zealand Dollar'],
44 'THB' => ['symbol' => '฿', 'name' => 'Thai Baht'],
45 'MYR' => ['symbol' => 'RM', 'name' => 'Malaysian Ringgit'],
46 'IDR' => ['symbol' => 'Rp', 'name' => 'Indonesian Rupiah'],
47 'PHP' => ['symbol' => '', 'name' => 'Philippine Peso'],
48 'ILS' => ['symbol' => '', 'name' => 'Israeli Shekel'],
49 'AED' => ['symbol' => 'د.إ', 'name' => 'UAE Dirham'],
50 'SAR' => ['symbol' => 'ر.س', 'name' => 'Saudi Riyal'],
51 'QAR' => ['symbol' => 'ر.ق', 'name' => 'Qatari Riyal'],
52 'KWD' => ['symbol' => 'د.ك', 'name' => 'Kuwaiti Dinar'],
53 'BHD' => ['symbol' => 'د.ب', 'name' => 'Bahraini Dinar'],
54 'OMR' => ['symbol' => 'ر.ع.', 'name' => 'Omani Rial'],
55 'JOD' => ['symbol' => 'د.ا', 'name' => 'Jordanian Dinar'],
56 'EGP' => ['symbol' => '', 'name' => 'Egyptian Pound'],
57 'NGN' => ['symbol' => '', 'name' => 'Nigerian Naira'],
58 'KES' => ['symbol' => 'KSh', 'name' => 'Kenyan Shilling'],
59 'GHS' => ['symbol' => 'GH₵', 'name' => 'Ghanaian Cedi'],
60 'UGX' => ['symbol' => 'USh', 'name' => 'Ugandan Shilling'],
61 'TZS' => ['symbol' => 'TSh', 'name' => 'Tanzanian Shilling'],
62 'MAD' => ['symbol' => 'د.�
63 .', 'name' => 'Moroccan Dirham'],
64 'TND' => ['symbol' => 'د.ت', 'name' => 'Tunisian Dinar'],
65 'DZD' => ['symbol' => 'د.ج', 'name' => 'Algerian Dinar'],
66 'LYD' => ['symbol' => 'ل.د', 'name' => 'Libyan Dinar'],
67 'SDG' => ['symbol' => 'ج.س.', 'name' => 'Sudanese Pound'],
68 'ETB' => ['symbol' => 'Br', 'name' => 'Ethiopian Birr'],
69 'SOS' => ['symbol' => 'S', 'name' => 'Somali Shilling'],
70 'DJF' => ['symbol' => 'Fdj', 'name' => 'Djiboutian Franc'],
71 'KMF' => ['symbol' => 'CF', 'name' => 'Comorian Franc'],
72 'MUR' => ['symbol' => '', 'name' => 'Mauritian Rupee'],
73 'SCR' => ['symbol' => '', 'name' => 'Seychellois Rupee'],
74 'MVR' => ['symbol' => 'MVR', 'name' => 'Maldivian Rufiyaa'],
75 'LKR' => ['symbol' => 'Rs', 'name' => 'Sri Lankan Rupee'],
76 'BDT' => ['symbol' => '', 'name' => 'Bangladeshi Taka'],
77 'NPR' => ['symbol' => '', 'name' => 'Nepalese Rupee'],
78 'PKR' => ['symbol' => '', 'name' => 'Pakistani Rupee'],
79 'AFN' => ['symbol' => '؋', 'name' => 'Afghan Afghani'],
80 'IRR' => ['symbol' => '', 'name' => 'Iranian Rial'],
81 'IQD' => ['symbol' => 'ع.د', 'name' => 'Iraqi Dinar'],
82 'SYP' => ['symbol' => 'ل.س', 'name' => 'Syrian Pound'],
83 'LBP' => ['symbol' => 'ل.ل', 'name' => 'Lebanese Pound'],
84 'JMD' => ['symbol' => 'J$', 'name' => 'Jamaican Dollar'],
85 'TTD' => ['symbol' => 'TT$', 'name' => 'Trinidad and Tobago Dollar'],
86 'BBD' => ['symbol' => 'Bds$', 'name' => 'Barbadian Dollar'],
87 'XCD' => ['symbol' => 'EC$', 'name' => 'East Caribbean Dollar'],
88 'BZD' => ['symbol' => 'BZ$', 'name' => 'Belize Dollar'],
89 'GTQ' => ['symbol' => 'Q', 'name' => 'Guatemalan Quetzal'],
90 'HNL' => ['symbol' => 'L', 'name' => 'Honduran Lempira'],
91 'NIO' => ['symbol' => 'C$', 'name' => 'Nicaraguan Córdoba'],
92 'CRC' => ['symbol' => '', 'name' => 'Costa Rican Colón'],
93 'PAB' => ['symbol' => 'B/.', 'name' => 'Panamanian Balboa'],
94 'DOP' => ['symbol' => 'RD$', 'name' => 'Dominican Peso'],
95 'HTG' => ['symbol' => 'G', 'name' => 'Haitian Gourde'],
96 'CUP' => ['symbol' => '$', 'name' => 'Cuban Peso'],
97 'ARS' => ['symbol' => '$', 'name' => 'Argentine Peso'],
98 'CLP' => ['symbol' => '$', 'name' => 'Chilean Peso'],
99 'COP' => ['symbol' => '$', 'name' => 'Colombian Peso'],
100 'PEN' => ['symbol' => 'S/', 'name' => 'Peruvian Sol'],
101 'BOB' => ['symbol' => 'Bs', 'name' => 'Bolivian Boliviano'],
102 'PYG' => ['symbol' => '', 'name' => 'Paraguayan Guaraní'],
103 'UYU' => ['symbol' => '$', 'name' => 'Uruguayan Peso'],
104 'VEF' => ['symbol' => 'Bs', 'name' => 'Venezuelan Bolívar'],
105 'GYD' => ['symbol' => 'G$', 'name' => 'Guyanese Dollar'],
106 'SRD' => ['symbol' => '$', 'name' => 'Surinamese Dollar'],
107 'FJD' => ['symbol' => 'FJ$', 'name' => 'Fijian Dollar'],
108 'WST' => ['symbol' => 'T', 'name' => 'Samoan Tālā'],
109 'TOP' => ['symbol' => 'T$', 'name' => 'Tongan Paʻanga'],
110 'VUV' => ['symbol' => 'VT', 'name' => 'Vanuatu Vatu'],
111 'PGK' => ['symbol' => 'K', 'name' => 'Papua New Guinean Kina'],
112 'SBD' => ['symbol' => 'SI$', 'name' => 'Solomon Islands Dollar'],
113 'KID' => ['symbol' => '$', 'name' => 'Kiribati Dollar'],
114 'TVD' => ['symbol' => '$', 'name' => 'Tuvaluan Dollar'],
115 'XPF' => ['symbol' => '', 'name' => 'CFP Franc'],
116 'NOK' => ['symbol' => 'kr', 'name' => 'Norwegian Krone'],
117 'SEK' => ['symbol' => 'kr', 'name' => 'Swedish Krona'],
118 'DKK' => ['symbol' => 'kr', 'name' => 'Danish Krone'],
119 'ISK' => ['symbol' => 'kr', 'name' => 'Icelandic Króna'],
120 'CZK' => ['symbol' => '', 'name' => 'Czech Koruna'],
121 'HUF' => ['symbol' => 'Ft', 'name' => 'Hungarian Forint'],
122 'RON' => ['symbol' => 'lei', 'name' => 'Romanian Leu'],
123 'BGN' => ['symbol' => 'лв', 'name' => 'Bulgarian Lev'],
124 'HRK' => ['symbol' => 'kn', 'name' => 'Croatian Kuna'],
125 'RSD' => ['symbol' => 'дин', 'name' => 'Serbian Dinar'],
126 'ALL' => ['symbol' => 'L', 'name' => 'Albanian Lek'],
127 'MKD' => ['symbol' => 'ден', 'name' => 'Macedonian Denar'],
128 'MDL' => ['symbol' => 'L', 'name' => 'Moldovan Leu'],
129 'UAH' => ['symbol' => '', 'name' => 'Ukrainian Hryvnia'],
130 'BYN' => ['symbol' => 'Br', 'name' => 'Belarusian Ruble'],
131 'GEL' => ['symbol' => '', 'name' => 'Georgian Lari'],
132 'AMD' => ['symbol' => '֏', 'name' => 'Armenian Dram'],
133 'AZN' => ['symbol' => '', 'name' => 'Azerbaijani Manat'],
134 'KZT' => ['symbol' => '', 'name' => 'Kazakhstani Tenge'],
135 'KGS' => ['symbol' => 'с', 'name' => 'Kyrgyzstani Som'],
136 'TJS' => ['symbol' => '�
137 М', 'name' => 'Tajikistani Somoni'],
138 'TMT' => ['symbol' => 'T', 'name' => 'Turkmenistani Manat'],
139 'UZS' => ['symbol' => 'so\'m', 'name' => 'Uzbekistani Som'],
140 'MNT' => ['symbol' => '', 'name' => 'Mongolian Tögrög'],
141 'LAK' => ['symbol' => '', 'name' => 'Lao Kip'],
142 'KHR' => ['symbol' => '', 'name' => 'Cambodian Riel'],
143 'MMK' => ['symbol' => 'K', 'name' => 'Myanmar Kyat'],
144 'VND' => ['symbol' => '', 'name' => 'Vietnamese Đồng'],
145 'BTN' => ['symbol' => 'Nu.', 'name' => 'Bhutanese Ngultrum'],
146 'MOP' => ['symbol' => 'MOP$', 'name' => 'Macanese Pataca'],
147 'TWD' => ['symbol' => 'NT$', 'name' => 'New Taiwan Dollar'],
148 'HKD' => ['symbol' => 'HK$', 'name' => 'Hong Kong Dollar'],
149 'KRW' => ['symbol' => '', 'name' => 'South Korean Won'],
150 'JPY' => ['symbol' => '¥', 'name' => 'Japanese Yen'],
151 'CNY' => ['symbol' => '¥', 'name' => 'Chinese Yuan'],
152 'MOP' => ['symbol' => 'MOP$', 'name' => 'Macanese Pataca'],
153 'TWD' => ['symbol' => 'NT$', 'name' => 'New Taiwan Dollar'],
154 'HKD' => ['symbol' => 'HK$', 'name' => 'Hong Kong Dollar'],
155 'KRW' => ['symbol' => '', 'name' => 'South Korean Won'],
156 'JPY' => ['symbol' => '¥', 'name' => 'Japanese Yen'],
157 'CNY' => ['symbol' => '¥', 'name' => 'Chinese Yuan'],
158 ];
159 }
160
161 /**
162 * Get currency options for select dropdown
163 *
164 * @return array Array of currency options formatted for select dropdown
165 */
166 public static function getCurrencyOptions(): array {
167 $currencies = self::getCurrencies();
168 $options = [];
169
170 foreach ($currencies as $code => $currency) {
171 $options[$code] = sprintf('%s (%s) - %s', $code, $currency['symbol'], $currency['name']);
172 }
173
174 return $options;
175 }
176
177 /**
178 * Get currency symbol by code
179 *
180 * @param string $code Currency code
181 * @return string Currency symbol
182 */
183 public static function getCurrencySymbol(string $code): string {
184 $currencies = self::getCurrencies();
185 return $currencies[$code]['symbol'] ?? '$';
186 }
187
188 /**
189 * Get currency name by code
190 *
191 * @param string $code Currency code
192 * @return string Currency name
193 */
194 public static function getCurrencyName(string $code): string {
195 $currencies = self::getCurrencies();
196 return $currencies[$code]['name'] ?? 'Unknown Currency';
197 }
198
199 /**
200 * Check if currency code is valid
201 *
202 * @param string $code Currency code
203 * @return bool True if valid, false otherwise
204 */
205 public static function isValidCurrency(string $code): bool {
206 $currencies = self::getCurrencies();
207 return isset($currencies[$code]);
208 }
209 }