PageRenderTime 44ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/__gravityforms__/currency.php

https://bitbucket.org/adatux_/uakami
PHP | 119 lines | 93 code | 23 blank | 3 comment | 22 complexity | 5b403ee5dc067489e1d1272e8a7047e0 MD5 | raw file
  1. <?php
  2. if(!class_exists("RGCurrency")){
  3. class RGCurrency{
  4. private $currency;
  5. public function __construct($currency){
  6. if(is_array($currency))
  7. $this->currency = $currency;
  8. else
  9. $this->currency = self::get_currency($currency);
  10. }
  11. public function to_number($text){
  12. $text = strval($text);
  13. if(is_numeric($text))
  14. return floatval($text);
  15. //Removing symbol in unicode format (i.e. &#4444;)
  16. $text = preg_replace("/&.*?;/", "", $text);
  17. //Removing all non-numeric characters
  18. $array = str_split($text);
  19. $is_negative = false;
  20. $clean_number = "";
  21. foreach($array as $char){
  22. if (($char >= '0' && $char <= '9') || $char=="," || $char==".")
  23. $clean_number .= $char;
  24. else if($char == '-')
  25. $is_negative = true;
  26. }
  27. $decimal_separator = $this->currency && $this->currency["decimal_separator"] ? $this->currency["decimal_separator"] : ".";
  28. //Removing thousand separators but keeping decimal point
  29. $array = str_split($clean_number);
  30. $float_number = "";
  31. for($i=0, $count = sizeof($array); $i<$count; $i++)
  32. {
  33. $char = $array[$i];
  34. if ($char >= '0' && $char <= '9')
  35. $float_number .= $char;
  36. else if($char == $decimal_separator)
  37. $float_number .= ".";
  38. }
  39. if($is_negative)
  40. $float_number = "-" . $float_number;
  41. return is_numeric($float_number) ? floatval($float_number) : false;
  42. }
  43. public function to_money($number, $do_encode=false){
  44. if(!is_numeric($number))
  45. $number = $this->to_number($number);
  46. if($number === false)
  47. return "";
  48. $negative = "";
  49. if(strpos(strval($number), "-") !== false){
  50. $negative = "-";
  51. $number = floatval(substr($number,1));
  52. }
  53. $money = number_format($number, $this->currency["decimals"], $this->currency["decimal_separator"], $this->currency["thousand_separator"]);
  54. $symbol_left = !empty($this->currency["symbol_left"]) ? $this->currency["symbol_left"] . $this->currency["symbol_padding"] : "";
  55. $symbol_right = !empty($this->currency["symbol_right"]) ? $this->currency["symbol_padding"] . $this->currency["symbol_right"] : "";
  56. if($do_encode){
  57. $symbol_left = html_entity_decode($symbol_left);
  58. $symbol_right = html_entity_decode($symbol_right);
  59. }
  60. return $negative . $symbol_left . $money . $symbol_right;
  61. }
  62. public static function get_currency($code){
  63. $currencies = self::get_currencies();
  64. return $currencies[$code];
  65. }
  66. public static function get_currencies(){
  67. $currencies = array(
  68. "AUD" => array("name" => __("Australian Dollar", "gravityforms"), "symbol_left" => '$', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  69. "BRL" => array("name" => __("Brazilian Real", "gravityforms"), "symbol_left" => 'R$', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => '.', "decimal_separator" => ',', "decimals" => 2),
  70. "CAD" => array("name" => __("Canadian Dollar", "gravityforms"), "symbol_left" => '$', "symbol_right" => "CAD", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  71. "CZK" => array("name" => __("Czech Koruna", "gravityforms"), "symbol_left" => '', "symbol_right" => "&#75;&#269;", "symbol_padding" => " ", "thousand_separator" => ' ', "decimal_separator" => ',', "decimals" => 2),
  72. "DKK" => array("name" => __("Danish Krone", "gravityforms"), "symbol_left" => 'Kr', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => '.', "decimal_separator" => ',', "decimals" => 2),
  73. "EUR" => array("name" => __("Euro", "gravityforms"), "symbol_left" => '', "symbol_right" => "&#8364;", "symbol_padding" => " ", "thousand_separator" => '.', "decimal_separator" => ',', "decimals" => 2),
  74. "HKD" => array("name" => __("Hong Kong Dollar", "gravityforms"), "symbol_left" => 'HK$', "symbol_right" => "", "symbol_padding" => "", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  75. "HUF" => array("name" => __("Hungarian Forint", "gravityforms"), "symbol_left" => '', "symbol_right" => "Ft", "symbol_padding" => " ", "thousand_separator" => '.', "decimal_separator" => ',', "decimals" => 2),
  76. "ILS" => array("name" => __("Israeli New Sheqel", "gravityforms"), "symbol_left" => '&#8362;', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  77. "JPY" => array("name" => __("Japanese Yen", "gravityforms"), "symbol_left" => '&#165;', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '', "decimals" => 0),
  78. "MYR" => array("name" => __("Malaysian Ringgit", "gravityforms"), "symbol_left" => '&#82;&#77;', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  79. "MXN" => array("name" => __("Mexican Peso", "gravityforms"), "symbol_left" => '$', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  80. "NOK" => array("name" => __("Norwegian Krone", "gravityforms"), "symbol_left" => 'Kr', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => '.', "decimal_separator" => ',', "decimals" => 2),
  81. "NZD" => array("name" => __("New Zealand Dollar", "gravityforms"), "symbol_left" => '$', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  82. "PHP" => array("name" => __("Philippine Peso", "gravityforms"), "symbol_left" => 'Php', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  83. "PLN" => array("name" => __("Polish Zloty", "gravityforms"), "symbol_left" => '&#122;&#322;', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => '.', "decimal_separator" => ',', "decimals" => 2),
  84. "GBP" => array("name" => __("Pound Sterling", "gravityforms"), "symbol_left" => '&#163;', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  85. "SGD" => array("name" => __("Singapore Dollar", "gravityforms"), "symbol_left" => '$', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  86. "SEK" => array("name" => __("Swedish Krona", "gravityforms"), "symbol_left" => '', "symbol_right" => "Kr", "symbol_padding" => " ", "thousand_separator" => ' ', "decimal_separator" => ',', "decimals" => 2),
  87. "CHF" => array("name" => __("Swiss Franc", "gravityforms"), "symbol_left" => 'Fr.', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => "'", "decimal_separator" => '.', "decimals" => 2),
  88. "TWD" => array("name" => __("Taiwan New Dollar", "gravityforms"), "symbol_left" => '$', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  89. "THB" => array("name" => __("Thai Baht", "gravityforms"), "symbol_left" => '&#3647;', "symbol_right" => "", "symbol_padding" => " ", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2),
  90. "USD" => array("name" => __("U.S. Dollar", "gravityforms"), "symbol_left" => '$', "symbol_right" => "", "symbol_padding" => "", "thousand_separator" => ',', "decimal_separator" => '.', "decimals" => 2)
  91. );
  92. return apply_filters("gform_currencies", $currencies);
  93. }
  94. }
  95. }
  96. ?>