shell bypass 403
<?php
namespace FluentBooking\App\Services;
use FluentBooking\Framework\Support\Arr;
class CurrenciesHelper
{
public static function getGlobalCurrency()
{
$globalPaymentSettings = get_option('fluent_booking_global_payment_settings', ['currency' => 'USD']);
return Arr::get($globalPaymentSettings, 'currency', 'USD');
}
public static function getGlobalCurrencySign()
{
$currency = static::getGlobalCurrency();
return static::getCurrencySign($currency);
}
public static function getFormattedCurrencies()
{
$currencies = static::getCurrencies();
$formatted = array();
foreach ($currencies as $code => $name) {
$formatted[] = array(
"label" => $name,
"value" => $code,
);
}
return $formatted;
}
/**
* https://support.stripe.com/questions/which-currencies-does-stripe-support
*/
public static function getCurrencies($code = null)
{
$currencies = apply_filters('fluent_booking/accepted_currencies', array(
'AED' => 'United Arab Emirates Dirham',
'AFN' => 'Afghan Afghani',
'ALL' => 'Albanian Lek',
'AMD' => 'Armenian Dram',
'ANG' => 'Netherlands Antillean Gulden',
'AOA' => 'Angolan Kwanza',
'ARS' => 'Argentine Peso', // non amex
'AUD' => 'Australian Dollar',
'AWG' => 'Aruban Florin',
'AZN' => 'Azerbaijani Manat',
'BAM' => 'Bosnia & Herzegovina Convertible Mark',
'BBD' => 'Barbadian Dollar',
'BDT' => 'Bangladeshi Taka',
'BIF' => 'Burundian Franc',
'BGN' => 'Bulgarian Lev',
'BMD' => 'Bermudian Dollar',
'BND' => 'Brunei Dollar',
'BOB' => 'Bolivian Boliviano',
'BRL' => 'Brazilian Real',
'BSD' => 'Bahamian Dollar',
'BWP' => 'Botswana Pula',
'BZD' => 'Belize Dollar',
'CAD' => 'Canadian Dollar',
'CDF' => 'Congolese Franc',
'CHF' => 'Swiss Franc',
'CLP' => 'Chilean Peso',
'CNY' => 'Chinese Renminbi Yuan',
'COP' => 'Colombian Peso',
'CRC' => 'Costa Rican Colón',
'CVE' => 'Cape Verdean Escudo',
'CZK' => 'Czech Koruna',
'DJF' => 'Djiboutian Franc',
'DKK' => 'Danish Krone',
'DOP' => 'Dominican Peso',
'DZD' => 'Algerian Dinar',
'EGP' => 'Egyptian Pound',
'ETB' => 'Ethiopian Birr',
'EUR' => 'Euro',
'FJD' => 'Fijian Dollar',
'FKP' => 'Falkland Islands Pound',
'GBP' => 'British Pound',
'GEL' => 'Georgian Lari',
'GIP' => 'Gibraltar Pound',
'GMD' => 'Gambian Dalasi',
'GNF' => 'Guinean Franc',
'GTQ' => 'Guatemalan Quetzal',
'GYD' => 'Guyanese Dollar',
'HKD' => 'Hong Kong Dollar',
'HNL' => 'Honduran Lempira',
'HRK' => 'Croatian Kuna',
'HTG' => 'Haitian Gourde',
'HUF' => 'Hungarian Forint',
'IDR' => 'Indonesian Rupiah',
'ILS' => 'Israeli New Sheqel',
'INR' => 'Indian Rupee',
'ISK' => 'Icelandic Króna',
'JMD' => 'Jamaican Dollar',
'JPY' => 'Japanese Yen',
'KES' => 'Kenyan Shilling',
'KGS' => 'Kyrgyzstani Som',
'KHR' => 'Cambodian Riel',
'KMF' => 'Comorian Franc',
'KRW' => 'South Korean Won',
'KYD' => 'Cayman Islands Dollar',
'KZT' => 'Kazakhstani Tenge',
'LAK' => 'Lao Kip',
'LBP' => 'Lebanese Pound',
'LKR' => 'Sri Lankan Rupee',
'LRD' => 'Liberian Dollar',
'LSL' => 'Lesotho Loti',
'MAD' => 'Moroccan Dirham',
'MDL' => 'Moldovan Leu',
'MGA' => 'Malagasy Ariary',
'MKD' => 'Macedonian Denar',
'MNT' => 'Mongolian Tögrög',
'MOP' => 'Macanese Pataca',
'MRO' => 'Mauritanian Ouguiya',
'MUR' => 'Mauritian Rupee',
'MVR' => 'Maldivian Rufiyaa',
'MWK' => 'Malawian Kwacha',
'MXN' => 'Mexican Peso',
'MYR' => 'Malaysian Ringgit',
'MZN' => 'Mozambican Metical',
'NAD' => 'Namibian Dollar',
'NGN' => 'Nigerian Naira',
'NIO' => 'Nicaraguan Córdoba',
'NOK' => 'Norwegian Krone',
'NPR' => 'Nepalese Rupee',
'NZD' => 'New Zealand Dollar',
'PAB' => 'Panamanian Balboa',
'PEN' => 'Peruvian Nuevo Sol',
'PGK' => 'Papua New Guinean Kina',
'PHP' => 'Philippine Peso',
'PKR' => 'Pakistani Rupee',
'PLN' => 'Polish Złoty',
'PYG' => 'Paraguayan Guaraní',
'QAR' => 'Qatari Riyal',
'RON' => 'Romanian Leu',
'RSD' => 'Serbian Dinar',
'RUB' => 'Russian Ruble',
'RWF' => 'Rwandan Franc',
'SAR' => 'Saudi Riyal',
'SBD' => 'Solomon Islands Dollar',
'SCR' => 'Seychellois Rupee',
'SEK' => 'Swedish Krona',
'SGD' => 'Singapore Dollar',
'SHP' => 'Saint Helenian Pound',
'SLL' => 'Sierra Leonean Leone',
'SOS' => 'Somali Shilling',
'SRD' => 'Surinamese Dollar',
'STD' => 'São Tomé and Príncipe Dobra',
'SVC' => 'Salvadoran Colón',
'SZL' => 'Swazi Lilangeni',
'THB' => 'Thai Baht',
'TJS' => 'Tajikistani Somoni',
'TOP' => 'Tongan Paʻanga',
'TRY' => 'Turkish Lira',
'TTD' => 'Trinidad and Tobago Dollar',
'TWD' => 'New Taiwan Dollar',
'TZS' => 'Tanzanian Shilling',
'UAH' => 'Ukrainian Hryvnia',
'UGX' => 'Ugandan Shilling',
'USD' => 'United States Dollar',
'UYU' => 'Uruguayan Peso',
'UZS' => 'Uzbekistani Som',
'VND' => 'Vietnamese Đồng',
'VUV' => 'Vanuatu Vatu',
'WST' => 'Samoan Tala',
'XAF' => 'Central African Cfa Franc',
'XCD' => 'East Caribbean Dollar',
'XOF' => 'West African Cfa Franc',
'XPF' => 'Cfp Franc',
'YER' => 'Yemeni Rial',
'ZAR' => 'South African Rand',
'ZMW' => 'Zambian Kwacha',
));
if ($code) {
return isset($currencies[$code]) ? $currencies[$code] : '';
}
return $currencies;
}
/**
* Get the available locales that Stripe can use
*
* @return array
*/
public static function getLocales()
{
return array(
'' => 'English (en) (default)',
'auto' => 'Auto-detect locale',
'zh' => 'Simplified Chinese (zh)',
'da' => 'Danish (da)',
'nl' => 'Dutch (nl)',
'fi' => 'Finnish (fi)',
'fr' => 'French (fr)',
'de' => 'German (de)',
'it' => 'Italian (it)',
'ja' => 'Japanese (ja)',
'no' => 'Norwegian (no)',
'es' => 'Spanish (es)',
'sv' => 'Swedish (sv)',
);
}
public static function getCurrencySign($currency = 'USD')
{
$currency = strtoupper($currency);
$symbols = apply_filters('fluent_booking/global_currency_symbols', array(
'AED' => 'د.إ',
'AFN' => '؋',
'ALL' => 'L',
'AMD' => 'AMD',
'ANG' => 'ƒ',
'AOA' => 'Kz',
'ARS' => '$',
'AUD' => '$',
'AWG' => 'ƒ',
'AZN' => 'AZN',
'BAM' => 'KM',
'BBD' => '$',
'BDT' => '৳ ',
'BGN' => 'лв.',
'BHD' => '.د.ب',
'BIF' => 'Fr',
'BMD' => '$',
'BND' => '$',
'BOB' => 'Bs.',
'BRL' => 'R$',
'BSD' => '$',
'BTC' => '฿',
'BTN' => 'Nu.',
'BWP' => 'P',
'BYR' => 'Br',
'BZD' => '$',
'CAD' => '$',
'CDF' => 'Fr',
'CHF' => 'CHF',
'CLP' => '$',
'CNY' => '¥',
'COP' => '$',
'CRC' => '₡',
'CUC' => '$',
'CUP' => '$',
'CVE' => '$',
'CZK' => 'Kč',
'DJF' => 'Fr',
'DKK' => 'DKK',
'DOP' => 'RD$',
'DZD' => 'د.ج',
'EGP' => 'EGP',
'ERN' => 'Nfk',
'ETB' => 'Br',
'EUR' => '€',
'FJD' => '$',
'FKP' => '£',
'GBP' => '£',
'GEL' => 'ლ',
'GGP' => '£',
'GHS' => '₵',
'GIP' => '£',
'GMD' => 'D',
'GNF' => 'Fr',
'GTQ' => 'Q',
'GYD' => '$',
'HKD' => '$',
'HNL' => 'L',
'HRK' => 'Kn',
'HTG' => 'G',
'HUF' => 'Ft',
'IDR' => 'Rp',
'ILS' => '₪',
'IMP' => '£',
'INR' => '₹',
'IQD' => 'ع.د',
'IRR' => '﷼',
'ISK' => 'Kr.',
'JEP' => '£',
'JMD' => '$',
'JOD' => 'د.ا',
'JPY' => '¥',
'KES' => 'KSh',
'KGS' => 'лв',
'KHR' => '៛',
'KMF' => 'Fr',
'KPW' => '₩',
'KRW' => '₩',
'KWD' => 'د.ك',
'KYD' => '$',
'KZT' => 'KZT',
'LAK' => '₭',
'LBP' => 'ل.ل',
'LKR' => 'රු',
'LRD' => '$',
'LSL' => 'L',
'LYD' => 'ل.د',
'MAD' => 'د. م.',
'MDL' => 'L',
'MGA' => 'Ar',
'MKD' => 'ден',
'MMK' => 'Ks',
'MNT' => '₮',
'MOP' => 'P',
'MRO' => 'UM',
'MUR' => '₨',
'MVR' => '.ރ',
'MWK' => 'MK',
'MXN' => '$',
'MYR' => 'RM',
'MZN' => 'MT',
'NAD' => '$',
'NGN' => '₦',
'NIO' => 'C$',
'NOK' => 'kr',
'NPR' => '₨',
'NZD' => '$',
'OMR' => 'ر.ع.',
'PAB' => 'B/.',
'PEN' => 'S/.',
'PGK' => 'K',
'PHP' => '₱',
'PKR' => '₨',
'PLN' => 'zł',
'PRB' => 'р.',
'PYG' => '₲',
'QAR' => 'ر.ق',
'RMB' => '¥',
'RON' => 'lei',
'RSD' => 'дин.',
'RUB' => '₽',
'RWF' => 'Fr',
'SAR' => 'ر.س',
'SBD' => '$',
'SCR' => '₨',
'SDG' => 'ج.س.',
'SEK' => 'kr',
'SGD' => '$',
'SHP' => '£',
'SLL' => 'Le',
'SOS' => 'Sh',
'SRD' => '$',
'SSP' => '£',
'STD' => 'Db',
'SYP' => 'ل.س',
'SZL' => 'L',
'THB' => '฿',
'TJS' => 'ЅМ',
'TMT' => 'm',
'TND' => 'د.ت',
'TOP' => 'T$',
'TRY' => '₺',
'TTD' => '$',
'TWD' => 'NT$',
'TZS' => 'Sh',
'UAH' => '₴',
'UGX' => 'UGX',
'USD' => '$',
'UYU' => '$',
'UZS' => 'UZS',
'VEF' => 'Bs F',
'VND' => '₫',
'VUV' => 'Vt',
'WST' => 'T',
'XAF' => 'Fr',
'XCD' => '$',
'XOF' => 'Fr',
'XPF' => 'Fr',
'YER' => '﷼',
'ZAR' => 'R',
'ZMW' => 'ZK',
));
return isset($symbols[$currency]) ? $symbols[$currency] : '';
}
public static function zeroDecimalCurrencies()
{
return apply_filters('fluent_booking/zero_decimal_currencies', array(
'BIF' => esc_html__('Burundian Franc', 'fluent-booking'),
'CLP' => esc_html__('Chilean Peso', 'fluent-booking'),
'DJF' => esc_html__('Djiboutian Franc', 'fluent-booking'),
'GNF' => esc_html__('Guinean Franc', 'fluent-booking'),
'JPY' => esc_html__('Japanese Yen', 'fluent-booking'),
'KMF' => esc_html__('Comorian Franc', 'fluent-booking'),
'KRW' => esc_html__('South Korean Won', 'fluent-booking'),
'MGA' => esc_html__('Malagasy Ariary', 'fluent-booking'),
'PYG' => esc_html__('Paraguayan Guaraní', 'fluent-booking'),
'RWF' => esc_html__('Rwandan Franc', 'fluent-booking'),
'VND' => esc_html__('Vietnamese Dong', 'fluent-booking'),
'VUV' => esc_html__('Vanuatu Vatu', 'fluent-booking'),
'XAF' => esc_html__('Central African Cfa Franc', 'fluent-booking'),
'XOF' => esc_html__('West African Cfa Franc', 'fluent-booking'),
'XPF' => esc_html__('Cfp Franc', 'fluent-booking'),
));
}
public static function isZeroDecimal($currencyCode)
{
$currencyCode = strtoupper($currencyCode);
$zeroDecimals = self::zeroDecimalCurrencies();
return isset($zeroDecimals[$currencyCode]);
}
}