PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.0.3
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.0.3
4.17.2 4.17.1 4.17.0 4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Functions / MSFunctions.php
wp-user-avatar / src / Functions Last commit date
data 4 years ago GlobalFunctions.php 4 years ago MSFunctions.php 4 years ago PPressBFnote.php 4 years ago custom-settings-api.php 4 years ago
MSFunctions.php
723 lines
1 <?php
2
3 use ProfilePress\Core\Base;
4 use ProfilePress\Core\Classes\PPRESS_Session;
5 use ProfilePress\Core\Membership\CurrencyFormatter;
6 use ProfilePress\Core\Membership\Models\Order\OrderMode;
7 use ProfilePress\Core\Membership\Models\Plan\PlanFactory;
8 use ProfilePress\Core\Membership\Models\Plan\PlanEntity;
9 use ProfilePress\Core\Membership\PaymentMethods\PaymentMethods;
10 use ProfilePress\Core\Membership\PaymentMethods\PaymentMethods as PaymentGateways;
11
12 /**
13 * @param $plan_id
14 *
15 * @return PlanEntity
16 */
17 function ppress_get_plan($plan_id)
18 {
19 return PlanFactory::fromId($plan_id);
20 }
21
22 function ppress_get_payment_method($payment_method_id)
23 {
24 return PaymentMethods::get_instance()->get_by_id($payment_method_id);
25 }
26
27 function ppress_is_any_active_plan()
28 {
29 global $wpdb;
30
31 $table = Base::subscription_plans_db_table();
32
33 return absint($wpdb->get_var("SELECT COUNT(id) FROM $table WHERE status = 'true'")) > 0;
34 }
35
36 function ppress_is_any_enabled_payment_method()
37 {
38 $check = PaymentGateways::get_instance()->get_enabled_methods(true);
39
40 return ! empty($check);
41 }
42
43 function ppress_is_any_active_coupon()
44 {
45 global $wpdb;
46
47 $table = Base::coupons_db_table();
48
49 return absint($wpdb->get_var("SELECT COUNT(id) FROM $table WHERE status = 'true'")) > 0;
50 }
51
52 function ppress_get_currency()
53 {
54 return apply_filters('ppress_currency', ppress_settings_by_key('payment_currency', 'USD', true));
55 }
56
57 /**
58 * Get full list of currency codes.
59 *
60 * Currency symbols and names should follow the Unicode CLDR recommendation (http://cldr.unicode.org/translation/currency-names)
61 *
62 * @return array
63 */
64 function ppress_get_currencies()
65 {
66 static $currencies;
67
68 if ( ! isset($currencies)) {
69 $currencies = array_unique(
70 apply_filters(
71 'ppress_currencies',
72 [
73 'USD' => __('United States (US) dollar', 'wp-user-avatar'),
74 'EUR' => __('Euro', 'wp-user-avatar'),
75 'GBP' => __('Pound sterling', 'wp-user-avatar'),
76 'AED' => __('United Arab Emirates dirham', 'wp-user-avatar'),
77 'AFN' => __('Afghan afghani', 'wp-user-avatar'),
78 'ALL' => __('Albanian lek', 'wp-user-avatar'),
79 'AMD' => __('Armenian dram', 'wp-user-avatar'),
80 'ANG' => __('Netherlands Antillean guilder', 'wp-user-avatar'),
81 'AOA' => __('Angolan kwanza', 'wp-user-avatar'),
82 'ARS' => __('Argentine peso', 'wp-user-avatar'),
83 'AUD' => __('Australian dollar', 'wp-user-avatar'),
84 'AWG' => __('Aruban florin', 'wp-user-avatar'),
85 'AZN' => __('Azerbaijani manat', 'wp-user-avatar'),
86 'BAM' => __('Bosnia and Herzegovina convertible mark', 'wp-user-avatar'),
87 'BBD' => __('Barbadian dollar', 'wp-user-avatar'),
88 'BDT' => __('Bangladeshi taka', 'wp-user-avatar'),
89 'BGN' => __('Bulgarian lev', 'wp-user-avatar'),
90 'BHD' => __('Bahraini dinar', 'wp-user-avatar'),
91 'BIF' => __('Burundian franc', 'wp-user-avatar'),
92 'BMD' => __('Bermudian dollar', 'wp-user-avatar'),
93 'BND' => __('Brunei dollar', 'wp-user-avatar'),
94 'BOB' => __('Bolivian boliviano', 'wp-user-avatar'),
95 'BRL' => __('Brazilian real', 'wp-user-avatar'),
96 'BSD' => __('Bahamian dollar', 'wp-user-avatar'),
97 'BTC' => __('Bitcoin', 'wp-user-avatar'),
98 'BTN' => __('Bhutanese ngultrum', 'wp-user-avatar'),
99 'BWP' => __('Botswana pula', 'wp-user-avatar'),
100 'BYR' => __('Belarusian ruble (old)', 'wp-user-avatar'),
101 'BYN' => __('Belarusian ruble', 'wp-user-avatar'),
102 'BZD' => __('Belize dollar', 'wp-user-avatar'),
103 'CAD' => __('Canadian dollar', 'wp-user-avatar'),
104 'CDF' => __('Congolese franc', 'wp-user-avatar'),
105 'CHF' => __('Swiss franc', 'wp-user-avatar'),
106 'CLP' => __('Chilean peso', 'wp-user-avatar'),
107 'CNY' => __('Chinese yuan', 'wp-user-avatar'),
108 'COP' => __('Colombian peso', 'wp-user-avatar'),
109 'CRC' => __('Costa Rican col&oacute;n', 'wp-user-avatar'),
110 'CUC' => __('Cuban convertible peso', 'wp-user-avatar'),
111 'CUP' => __('Cuban peso', 'wp-user-avatar'),
112 'CVE' => __('Cape Verdean escudo', 'wp-user-avatar'),
113 'CZK' => __('Czech koruna', 'wp-user-avatar'),
114 'DJF' => __('Djiboutian franc', 'wp-user-avatar'),
115 'DKK' => __('Danish krone', 'wp-user-avatar'),
116 'DOP' => __('Dominican peso', 'wp-user-avatar'),
117 'DZD' => __('Algerian dinar', 'wp-user-avatar'),
118 'EGP' => __('Egyptian pound', 'wp-user-avatar'),
119 'ERN' => __('Eritrean nakfa', 'wp-user-avatar'),
120 'ETB' => __('Ethiopian birr', 'wp-user-avatar'),
121 'FJD' => __('Fijian dollar', 'wp-user-avatar'),
122 'FKP' => __('Falkland Islands pound', 'wp-user-avatar'),
123 'GEL' => __('Georgian lari', 'wp-user-avatar'),
124 'GGP' => __('Guernsey pound', 'wp-user-avatar'),
125 'GHS' => __('Ghana cedi', 'wp-user-avatar'),
126 'GIP' => __('Gibraltar pound', 'wp-user-avatar'),
127 'GMD' => __('Gambian dalasi', 'wp-user-avatar'),
128 'GNF' => __('Guinean franc', 'wp-user-avatar'),
129 'GTQ' => __('Guatemalan quetzal', 'wp-user-avatar'),
130 'GYD' => __('Guyanese dollar', 'wp-user-avatar'),
131 'HKD' => __('Hong Kong dollar', 'wp-user-avatar'),
132 'HNL' => __('Honduran lempira', 'wp-user-avatar'),
133 'HRK' => __('Croatian kuna', 'wp-user-avatar'),
134 'HTG' => __('Haitian gourde', 'wp-user-avatar'),
135 'HUF' => __('Hungarian forint', 'wp-user-avatar'),
136 'IDR' => __('Indonesian rupiah', 'wp-user-avatar'),
137 'ILS' => __('Israeli new shekel', 'wp-user-avatar'),
138 'IMP' => __('Manx pound', 'wp-user-avatar'),
139 'INR' => __('Indian rupee', 'wp-user-avatar'),
140 'IQD' => __('Iraqi dinar', 'wp-user-avatar'),
141 'IRR' => __('Iranian rial', 'wp-user-avatar'),
142 'IRT' => __('Iranian toman', 'wp-user-avatar'),
143 'ISK' => __('Icelandic kr&oacute;na', 'wp-user-avatar'),
144 'JEP' => __('Jersey pound', 'wp-user-avatar'),
145 'JMD' => __('Jamaican dollar', 'wp-user-avatar'),
146 'JOD' => __('Jordanian dinar', 'wp-user-avatar'),
147 'JPY' => __('Japanese yen', 'wp-user-avatar'),
148 'KES' => __('Kenyan shilling', 'wp-user-avatar'),
149 'KGS' => __('Kyrgyzstani som', 'wp-user-avatar'),
150 'KHR' => __('Cambodian riel', 'wp-user-avatar'),
151 'KMF' => __('Comorian franc', 'wp-user-avatar'),
152 'KPW' => __('North Korean won', 'wp-user-avatar'),
153 'KRW' => __('South Korean won', 'wp-user-avatar'),
154 'KWD' => __('Kuwaiti dinar', 'wp-user-avatar'),
155 'KYD' => __('Cayman Islands dollar', 'wp-user-avatar'),
156 'KZT' => __('Kazakhstani tenge', 'wp-user-avatar'),
157 'LAK' => __('Lao kip', 'wp-user-avatar'),
158 'LBP' => __('Lebanese pound', 'wp-user-avatar'),
159 'LKR' => __('Sri Lankan rupee', 'wp-user-avatar'),
160 'LRD' => __('Liberian dollar', 'wp-user-avatar'),
161 'LSL' => __('Lesotho loti', 'wp-user-avatar'),
162 'LYD' => __('Libyan dinar', 'wp-user-avatar'),
163 'MAD' => __('Moroccan dirham', 'wp-user-avatar'),
164 'MDL' => __('Moldovan leu', 'wp-user-avatar'),
165 'MGA' => __('Malagasy ariary', 'wp-user-avatar'),
166 'MKD' => __('Macedonian denar', 'wp-user-avatar'),
167 'MMK' => __('Burmese kyat', 'wp-user-avatar'),
168 'MNT' => __('Mongolian t&ouml;gr&ouml;g', 'wp-user-avatar'),
169 'MOP' => __('Macanese pataca', 'wp-user-avatar'),
170 'MRU' => __('Mauritanian ouguiya', 'wp-user-avatar'),
171 'MUR' => __('Mauritian rupee', 'wp-user-avatar'),
172 'MVR' => __('Maldivian rufiyaa', 'wp-user-avatar'),
173 'MWK' => __('Malawian kwacha', 'wp-user-avatar'),
174 'MXN' => __('Mexican peso', 'wp-user-avatar'),
175 'MYR' => __('Malaysian ringgit', 'wp-user-avatar'),
176 'MZN' => __('Mozambican metical', 'wp-user-avatar'),
177 'NAD' => __('Namibian dollar', 'wp-user-avatar'),
178 'NGN' => __('Nigerian naira', 'wp-user-avatar'),
179 'NIO' => __('Nicaraguan c&oacute;rdoba', 'wp-user-avatar'),
180 'NOK' => __('Norwegian krone', 'wp-user-avatar'),
181 'NPR' => __('Nepalese rupee', 'wp-user-avatar'),
182 'NZD' => __('New Zealand dollar', 'wp-user-avatar'),
183 'OMR' => __('Omani rial', 'wp-user-avatar'),
184 'PAB' => __('Panamanian balboa', 'wp-user-avatar'),
185 'PEN' => __('Sol', 'wp-user-avatar'),
186 'PGK' => __('Papua New Guinean kina', 'wp-user-avatar'),
187 'PHP' => __('Philippine peso', 'wp-user-avatar'),
188 'PKR' => __('Pakistani rupee', 'wp-user-avatar'),
189 'PLN' => __('Polish z&#x142;oty', 'wp-user-avatar'),
190 'PRB' => __('Transnistrian ruble', 'wp-user-avatar'),
191 'PYG' => __('Paraguayan guaran&iacute;', 'wp-user-avatar'),
192 'QAR' => __('Qatari riyal', 'wp-user-avatar'),
193 'RON' => __('Romanian leu', 'wp-user-avatar'),
194 'RSD' => __('Serbian dinar', 'wp-user-avatar'),
195 'RUB' => __('Russian ruble', 'wp-user-avatar'),
196 'RWF' => __('Rwandan franc', 'wp-user-avatar'),
197 'SAR' => __('Saudi riyal', 'wp-user-avatar'),
198 'SBD' => __('Solomon Islands dollar', 'wp-user-avatar'),
199 'SCR' => __('Seychellois rupee', 'wp-user-avatar'),
200 'SDG' => __('Sudanese pound', 'wp-user-avatar'),
201 'SEK' => __('Swedish krona', 'wp-user-avatar'),
202 'SGD' => __('Singapore dollar', 'wp-user-avatar'),
203 'SHP' => __('Saint Helena pound', 'wp-user-avatar'),
204 'SLL' => __('Sierra Leonean leone', 'wp-user-avatar'),
205 'SOS' => __('Somali shilling', 'wp-user-avatar'),
206 'SRD' => __('Surinamese dollar', 'wp-user-avatar'),
207 'SSP' => __('South Sudanese pound', 'wp-user-avatar'),
208 'STN' => __('S&atilde;o Tom&eacute; and Pr&iacute;ncipe dobra', 'wp-user-avatar'),
209 'SYP' => __('Syrian pound', 'wp-user-avatar'),
210 'SZL' => __('Swazi lilangeni', 'wp-user-avatar'),
211 'THB' => __('Thai baht', 'wp-user-avatar'),
212 'TJS' => __('Tajikistani somoni', 'wp-user-avatar'),
213 'TMT' => __('Turkmenistan manat', 'wp-user-avatar'),
214 'TND' => __('Tunisian dinar', 'wp-user-avatar'),
215 'TOP' => __('Tongan pa&#x2bb;anga', 'wp-user-avatar'),
216 'TRY' => __('Turkish lira', 'wp-user-avatar'),
217 'TTD' => __('Trinidad and Tobago dollar', 'wp-user-avatar'),
218 'TWD' => __('New Taiwan dollar', 'wp-user-avatar'),
219 'TZS' => __('Tanzanian shilling', 'wp-user-avatar'),
220 'UAH' => __('Ukrainian hryvnia', 'wp-user-avatar'),
221 'UGX' => __('Ugandan shilling', 'wp-user-avatar'),
222 'UYU' => __('Uruguayan peso', 'wp-user-avatar'),
223 'UZS' => __('Uzbekistani som', 'wp-user-avatar'),
224 'VEF' => __('Venezuelan bol&iacute;var', 'wp-user-avatar'),
225 'VES' => __('Bol&iacute;var soberano', 'wp-user-avatar'),
226 'VND' => __('Vietnamese &#x111;&#x1ed3;ng', 'wp-user-avatar'),
227 'VUV' => __('Vanuatu vatu', 'wp-user-avatar'),
228 'WST' => __('Samoan t&#x101;l&#x101;', 'wp-user-avatar'),
229 'XAF' => __('Central African CFA franc', 'wp-user-avatar'),
230 'XCD' => __('East Caribbean dollar', 'wp-user-avatar'),
231 'XOF' => __('West African CFA franc', 'wp-user-avatar'),
232 'XPF' => __('CFP franc', 'wp-user-avatar'),
233 'YER' => __('Yemeni rial', 'wp-user-avatar'),
234 'ZAR' => __('South African rand', 'wp-user-avatar'),
235 'ZMW' => __('Zambian kwacha', 'wp-user-avatar'),
236 ]
237 )
238 );
239 }
240
241 return array_map('ucwords', $currencies);
242 }
243
244 /**
245 * Get all available Currency symbols.
246 *
247 * Currency symbols and names should follow the Unicode CLDR recommendation (http://cldr.unicode.org/translation/currency-names)
248 *
249 * @return array
250 */
251 function ppress_get_currency_symbols()
252 {
253 $symbols = apply_filters(
254 'ppress_currency_symbols',
255 array(
256 'AED' => '&#x62f;.&#x625;',
257 'AFN' => '&#x60b;',
258 'ALL' => 'L',
259 'AMD' => 'AMD',
260 'ANG' => '&fnof;',
261 'AOA' => 'Kz',
262 'ARS' => '&#36;',
263 'AUD' => '&#36;',
264 'AWG' => 'Afl.',
265 'AZN' => 'AZN',
266 'BAM' => 'KM',
267 'BBD' => '&#36;',
268 'BDT' => '&#2547;&nbsp;',
269 'BGN' => '&#1083;&#1074;.',
270 'BHD' => '.&#x62f;.&#x628;',
271 'BIF' => 'Fr',
272 'BMD' => '&#36;',
273 'BND' => '&#36;',
274 'BOB' => 'Bs.',
275 'BRL' => '&#82;&#36;',
276 'BSD' => '&#36;',
277 'BTC' => '&#3647;',
278 'BTN' => 'Nu.',
279 'BWP' => 'P',
280 'BYR' => 'Br',
281 'BYN' => 'Br',
282 'BZD' => '&#36;',
283 'CAD' => '&#36;',
284 'CDF' => 'Fr',
285 'CHF' => '&#67;&#72;&#70;',
286 'CLP' => '&#36;',
287 'CNY' => '&yen;',
288 'COP' => '&#36;',
289 'CRC' => '&#x20a1;',
290 'CUC' => '&#36;',
291 'CUP' => '&#36;',
292 'CVE' => '&#36;',
293 'CZK' => '&#75;&#269;',
294 'DJF' => 'Fr',
295 'DKK' => 'DKK',
296 'DOP' => 'RD&#36;',
297 'DZD' => '&#x62f;.&#x62c;',
298 'EGP' => 'EGP',
299 'ERN' => 'Nfk',
300 'ETB' => 'Br',
301 'EUR' => '&euro;',
302 'FJD' => '&#36;',
303 'FKP' => '&pound;',
304 'GBP' => '&pound;',
305 'GEL' => '&#x20be;',
306 'GGP' => '&pound;',
307 'GHS' => '&#x20b5;',
308 'GIP' => '&pound;',
309 'GMD' => 'D',
310 'GNF' => 'Fr',
311 'GTQ' => 'Q',
312 'GYD' => '&#36;',
313 'HKD' => '&#36;',
314 'HNL' => 'L',
315 'HRK' => 'kn',
316 'HTG' => 'G',
317 'HUF' => '&#70;&#116;',
318 'IDR' => 'Rp',
319 'ILS' => '&#8362;',
320 'IMP' => '&pound;',
321 'INR' => '&#8377;',
322 'IQD' => '&#x62f;.&#x639;',
323 'IRR' => '&#xfdfc;',
324 'IRT' => '&#x062A;&#x0648;&#x0645;&#x0627;&#x0646;',
325 'ISK' => 'kr.',
326 'JEP' => '&pound;',
327 'JMD' => '&#36;',
328 'JOD' => '&#x62f;.&#x627;',
329 'JPY' => '&yen;',
330 'KES' => 'KSh',
331 'KGS' => '&#x441;&#x43e;&#x43c;',
332 'KHR' => '&#x17db;',
333 'KMF' => 'Fr',
334 'KPW' => '&#x20a9;',
335 'KRW' => '&#8361;',
336 'KWD' => '&#x62f;.&#x643;',
337 'KYD' => '&#36;',
338 'KZT' => '&#8376;',
339 'LAK' => '&#8365;',
340 'LBP' => '&#x644;.&#x644;',
341 'LKR' => '&#xdbb;&#xdd4;',
342 'LRD' => '&#36;',
343 'LSL' => 'L',
344 'LYD' => '&#x644;.&#x62f;',
345 'MAD' => '&#x62f;.&#x645;.',
346 'MDL' => 'MDL',
347 'MGA' => 'Ar',
348 'MKD' => '&#x434;&#x435;&#x43d;',
349 'MMK' => 'Ks',
350 'MNT' => '&#x20ae;',
351 'MOP' => 'P',
352 'MRU' => 'UM',
353 'MUR' => '&#x20a8;',
354 'MVR' => '.&#x783;',
355 'MWK' => 'MK',
356 'MXN' => '&#36;',
357 'MYR' => '&#82;&#77;',
358 'MZN' => 'MT',
359 'NAD' => 'N&#36;',
360 'NGN' => '&#8358;',
361 'NIO' => 'C&#36;',
362 'NOK' => '&#107;&#114;',
363 'NPR' => '&#8360;',
364 'NZD' => '&#36;',
365 'OMR' => '&#x631;.&#x639;.',
366 'PAB' => 'B/.',
367 'PEN' => 'S/',
368 'PGK' => 'K',
369 'PHP' => '&#8369;',
370 'PKR' => '&#8360;',
371 'PLN' => '&#122;&#322;',
372 'PRB' => '&#x440;.',
373 'PYG' => '&#8370;',
374 'QAR' => '&#x631;.&#x642;',
375 'RMB' => '&yen;',
376 'RON' => 'lei',
377 'RSD' => '&#1088;&#1089;&#1076;',
378 'RUB' => '&#8381;',
379 'RWF' => 'Fr',
380 'SAR' => '&#x631;.&#x633;',
381 'SBD' => '&#36;',
382 'SCR' => '&#x20a8;',
383 'SDG' => '&#x62c;.&#x633;.',
384 'SEK' => '&#107;&#114;',
385 'SGD' => '&#36;',
386 'SHP' => '&pound;',
387 'SLL' => 'Le',
388 'SOS' => 'Sh',
389 'SRD' => '&#36;',
390 'SSP' => '&pound;',
391 'STN' => 'Db',
392 'SYP' => '&#x644;.&#x633;',
393 'SZL' => 'L',
394 'THB' => '&#3647;',
395 'TJS' => '&#x405;&#x41c;',
396 'TMT' => 'm',
397 'TND' => '&#x62f;.&#x62a;',
398 'TOP' => 'T&#36;',
399 'TRY' => '&#8378;',
400 'TTD' => '&#36;',
401 'TWD' => '&#78;&#84;&#36;',
402 'TZS' => 'Sh',
403 'UAH' => '&#8372;',
404 'UGX' => 'UGX',
405 'USD' => '&#36;',
406 'UYU' => '&#36;',
407 'UZS' => 'UZS',
408 'VEF' => 'Bs F',
409 'VES' => 'Bs.S',
410 'VND' => '&#8363;',
411 'VUV' => 'Vt',
412 'WST' => 'T',
413 'XAF' => 'CFA',
414 'XCD' => '&#36;',
415 'XOF' => 'CFA',
416 'XPF' => 'Fr',
417 'YER' => '&#xfdfc;',
418 'ZAR' => '&#82;',
419 'ZMW' => 'ZK',
420 )
421 );
422
423 return apply_filters('ppress_currency_symbols', $symbols);
424 }
425
426 /**
427 * Get Currency symbol.
428 *
429 * Currency symbols and names should follow the Unicode CLDR recommendation (http://cldr.unicode.org/translation/currency-names)
430 *
431 * @param string $currency Currency. (default: '').
432 *
433 * @return string
434 */
435 function ppress_get_currency_symbol($currency = '')
436 {
437 if ( ! $currency) {
438 $currency = ppress_get_currency();
439 }
440
441 $symbols = ppress_get_currency_symbols();
442
443 $currency_symbol = isset($symbols[$currency]) ? $symbols[$currency] : '';
444
445 return apply_filters('ppress_currency_symbol', $currency_symbol, $currency);
446 }
447
448
449 /**
450 * Get the name of a currency
451 *
452 * @param string $code The currency code
453 *
454 * @return string The currency's name
455 */
456 function ppress_get_currency_name($code = '')
457 {
458 if ( ! $code) {
459 $code = ppress_get_currency();
460 }
461
462 $currencies = ppress_get_currencies();
463 $name = isset($currencies[$code]) ? $currencies[$code] : $code;
464
465 return apply_filters('ppress_currency_name', $name);
466 }
467
468 /**
469 * Accepts an amount (ideally from the database, unmodified) and formats it
470 * for display. The amount itself is formatted and the currency prefix/suffix
471 * is applied and positioned.
472 *
473 * @param string $amount
474 * @param string $currency
475 *
476 * @return string
477 *
478 */
479 function ppress_display_amount($amount, $currency = '')
480 {
481 return (new CurrencyFormatter($amount, $currency))->format()->apply_symbol()->val();
482 }
483
484 /**
485 *
486 * @param $amount
487 *
488 * @return string
489 */
490 function ppress_sanitize_amount($amount)
491 {
492 return (new CurrencyFormatter($amount))->sanitize()->val();
493 }
494
495 /**
496 * Force https for urls.
497 *
498 * @param mixed $content
499 *
500 * @return string
501 */
502 function ppress_force_https_url($content)
503 {
504 if (is_ssl()) {
505 if (is_array($content)) {
506 $content = array_map('ppress_force_https_url', $content);
507 } else {
508 $content = str_replace('http:', 'https:', $content);
509 }
510 }
511
512 return $content;
513 }
514
515 function ppress_is_test_mode()
516 {
517 return ppress_var(get_option(PPRESS_PAYMENT_METHODS_OPTION_NAME, []), 'test_mode') == 'true';
518 }
519
520 function ppress_get_payment_mode()
521 {
522 return ppress_is_test_mode() ? OrderMode::TEST : OrderMode::LIVE;
523 }
524
525 /**
526 * Converts a date/time to UTC
527 *
528 * @throws Exception
529 */
530 function ppress_local_datetime_to_utc($date, $format = 'Y-m-d H:i:s')
531 {
532 $a = new DateTime($date, wp_timezone());
533 $a->setTimezone(new DateTimeZone('UTC'));
534
535 return $a->format($format);
536 }
537
538 /**
539 * Converts a mysql date/time to UTC timestamp
540 *
541 * @param $datetime
542 *
543 * @return false|int
544 */
545 function ppress_date_to_utc_timestamp($datetime)
546 {
547 return ppress_strtotime_utc($datetime);
548 }
549
550 /**
551 * Formats date according to WordPress date/time format and using WordPress site timezone.
552 *
553 * @param $timestamp
554 * @param string $format
555 */
556 function ppress_format_date_time($timestamp, $format = '')
557 {
558 /**
559 * force strtotime to use date as UTC.
560 * @see https://stackoverflow.com/a/6275660/2648410
561 */
562 $timestamp = ! is_numeric($timestamp) ? strtotime($timestamp . ' UTC') : $timestamp;
563
564 $format = empty($format) ? get_option('date_format') . ' ' . get_option('time_format') : $format;
565
566 return wp_date($format, $timestamp);
567 }
568
569 /**
570 * Formats date according to WordPress date format and using WordPress site timezone.
571 *
572 * @param $timestamp
573 * @param string $format
574 */
575 function ppress_format_date($timestamp, $format = '')
576 {
577 /**
578 * force strtotime to use date as UTC.
579 * @see https://stackoverflow.com/a/6275660/2648410
580 */
581 $timestamp = ! is_numeric($timestamp) ? strtotime($timestamp . ' UTC') : $timestamp;
582
583 $format = empty($format) ? get_option('date_format') : $format;
584
585 return wp_date($format, $timestamp);
586 }
587
588 function ppress_update_payment_method_setting($key, $value)
589 {
590 $data = get_option(PPRESS_PAYMENT_METHODS_OPTION_NAME, []);
591 $data[$key] = $value;
592 update_option(PPRESS_PAYMENT_METHODS_OPTION_NAME, $data);
593 }
594
595 function ppress_get_payment_method_setting($key = '', $default = false, $is_empty = false)
596 {
597 static $data = null;
598
599 if (is_null($data)) {
600 $data = get_option(PPRESS_PAYMENT_METHODS_OPTION_NAME, []);
601 }
602
603 if ($is_empty === true) {
604 return isset($data[$key]) && ( ! empty($data[$key]) || ppress_is_boolean($data[$key])) ? $data[$key] : $default;
605 }
606
607 return isset($data[$key]) ? $data[$key] : $default;
608 }
609
610 /**
611 * @return PPRESS_Session
612 */
613 function ppress_session()
614 {
615 return PPRESS_Session::get_instance();
616 }
617
618 function ppress_is_checkout()
619 {
620 $page_id = ppress_settings_by_key('checkout_page_id', 0, true);
621
622 return ($page_id && is_page($page_id)) || ppress_post_content_has_shortcode('profilepress-checkout');
623 }
624
625 function ppress_is_success_page()
626 {
627 $page_id = ppress_settings_by_key('payment_success_page_id', 0, true);
628
629 return ($page_id && is_page($page_id));
630 }
631
632 /**
633 * @param $order_key
634 *
635 * @return string
636 */
637 function ppress_get_success_url($order_key = '')
638 {
639 $url = get_permalink(
640 absint(ppress_settings_by_key('payment_success_page_id'))
641 );
642
643 $url = ! $url ? home_url() : $url;
644
645 if ( ! empty($order_key)) {
646 $url = add_query_arg(['order_key' => $order_key], $url);
647 }
648
649 return apply_filters('ppress_get_success_url', esc_url_raw($url), $order_key);
650 }
651
652 /**
653 * @param $order_key
654 *
655 * @return string
656 */
657 function ppress_get_cancel_url($order_key = '')
658 {
659 $url = get_permalink(
660 absint(ppress_settings_by_key('payment_failure_page_id'))
661 );
662
663 $url = ! $url ? home_url() : $url;
664
665 if ( ! empty($order_key)) {
666 $url = add_query_arg(['order_key' => $order_key], $url);
667 }
668
669 return apply_filters('ppress_get_cancel_url', esc_url_raw($url), $order_key);
670 }
671
672 function ppress_business_name()
673 {
674 return ppress_settings_by_key('business_name', '', true);
675 }
676
677 function ppress_business_address($default = '')
678 {
679 return ppress_settings_by_key('business_address', $default, true);
680 }
681
682 function ppress_business_city($default = '')
683 {
684 return ppress_settings_by_key('business_city', $default, true);
685 }
686
687 function ppress_business_country($default = '')
688 {
689 return ppress_settings_by_key('business_country', $default, true);
690 }
691
692 function ppress_business_state($default = '')
693 {
694 return ppress_settings_by_key('business_state', $default, true);
695 }
696
697 function ppress_business_postal_code($default = '')
698 {
699 return ppress_settings_by_key('business_postal_code', $default, true);
700 }
701
702 function ppress_business_full_address()
703 {
704 $billing_address = ppress_business_address();
705
706 if (empty($billing_address)) return '';
707
708 $business_country = ppress_business_country();
709
710 $state = ppress_var(ppress_array_of_world_states($business_country), ppress_business_state(), ppress_business_state(), true);
711
712 $address = [trim($billing_address)];
713 $address[] = trim(ppress_business_city() . ' ' . $state);
714 $address[] = ppress_business_postal_code();
715 $address[] = ppress_array_of_world_countries($business_country);
716
717 return implode(', ', array_filter($address));
718 }
719
720 function ppress_business_tax_id($default = '')
721 {
722 return ppress_settings_by_key('business_tin', $default, true);
723 }