+--------------------------------------------------------------------+
| CiviCRM version 5 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2019 |
+ | Copyright CiviCRM LLC (c) 2004-2020 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
/**
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2019
+ * @copyright CiviCRM LLC (c) 2004-2020
*/
/**
* Money utilties
*/
class CRM_Utils_Money {
- static $_currencySymbols = NULL;
+ public static $_currencySymbols = NULL;
/**
* Format a monetary string.
}
if (!self::$_currencySymbols) {
- self::$_currencySymbols = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'currency', array(
- 'keyColumn' => 'name',
- 'labelColumn' => 'symbol',
- ));
+ self::$_currencySymbols = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'currency', [
+ 'keyColumn' => 'name',
+ 'labelColumn' => 'symbol',
+ ]);
}
if (!$currency) {
$currency = $config->defaultCurrency;
}
+
+ // ensure $currency is a valid currency code
+ // for backwards-compatibility, also accept one space instead of a currency
+ if ($currency != ' ' && !array_key_exists($currency, self::$_currencySymbols)) {
+ throw new CRM_Core_Exception("Invalid currency \"{$currency}\"");
+ }
+
$amount = self::formatNumericByFormat($amount, $valueFormat);
// If it contains tags, means that HTML was passed and the
// amount is already converted properly,
$amount = self::replaceCurrencySeparators($amount);
}
- $replacements = array(
+ $replacements = [
'%a' => $amount,
'%C' => $currency,
'%c' => CRM_Utils_Array::value($currency, self::$_currencySymbols, $currency),
- );
+ ];
return strtr($format, $replacements);
}
*/
protected static function replaceCurrencySeparators($amount) {
$config = CRM_Core_Config::singleton();
- $rep = array(
+ $rep = [
',' => $config->monetaryThousandSeparator,
'.' => $config->monetaryDecimalPoint,
- );
+ ];
return strtr($amount, $rep);
}