Server : Apache System : Linux pod-100823:apache2_74:v0.5.7 5.4.0-1138-gcp #147~18.04.1-Ubuntu SMP Mon Oct 7 21:46:26 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33.7 Disable Function : apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,disk_total_space,diskfreespace,dl,exec,fastcgi_finish_request,link,opcache_compile_file,opcache_get_configuration,opcache_invalidate,opcache_is_script_cached,opcache_reset,passthru,pclose,pcntl_exec,popen,posix_getpid,posix_getppid,posix_getpwuid,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,realpath_cache_get,shell_exec,show_source,symlink,system Directory : /nas/content/live/attorneyexperi/wp-content/plugins/gravityforms/ |
<?php if ( ! class_exists( 'GFForms' ) ) { die(); } if ( ! class_exists( 'RGCurrency' ) ) { class RGCurrency { private $currency; public function __construct( $currency ) { if ( is_array( $currency ) ) { $this->currency = $currency; } else { $this->currency = self::get_currency( $currency ); } } /** * Removes currency formatting from a value. * * @since unknown * * @param string|float|int $text The value to be cleaned of currency formatting. * * @return false|float|int */ public function to_number( $text ) { $text = strval( $text ); if ( is_numeric( $text ) ) { return $this->convert_number( $text ); } //Making sure symbol is in unicode format (i.e. ᅜ) $text = preg_replace( '/&.*?;/', '', $text ); //Removing symbol from text $text = str_replace( $this->currency['symbol_right'], '', $text ); $text = str_replace( $this->currency['symbol_left'], '', $text ); if ( ! empty( $this->currency['symbol_old'] ) ) { $text = str_replace( $this->currency['symbol_old'], '', $text ); } //Removing all non-numeric characters $array = str_split( $text ); $is_negative = false; $clean_number = ''; foreach ( $array as $char ) { if ( ( $char >= '0' && $char <= '9' ) || $char == $this->currency['decimal_separator'] ) { $clean_number .= $char; } elseif ( $char == '-' ) { $is_negative = true; } } $decimal_separator = $this->currency && $this->currency['decimal_separator'] ? $this->currency['decimal_separator'] : '.'; //Removing thousand separators but keeping decimal point $array = str_split( $clean_number ); $float_number = ''; for ( $i = 0, $count = sizeof( $array ); $i < $count; $i ++ ) { $char = $array[ $i ]; if ( $char >= '0' && $char <= '9' ) { $float_number .= $char; } elseif ( $char == $decimal_separator ) { $float_number .= '.'; } } if ( $is_negative ) { $float_number = '-' . $float_number; } if ( ! is_numeric( $float_number ) ) { return false; } return $this->convert_number( $float_number ); } /** * Returns the given value as an integer or float based on the decimal configuration of the current currency. * * @since 2.6.1 * * @param string $value The value to be converted. * * @return float|int */ private function convert_number( $value ) { return $this->is_zero_decimal() ? intval( $value ) : floatval( $value ); } public function to_money( $number, $do_encode = false ) { if ( ! is_numeric( $number ) ) { $number = $this->to_number( $number ); } if ( $number === false ) { return ''; } $negative = ''; if ( strpos( strval( $number ), '-' ) !== false ) { $negative = '-'; $number = floatval( substr( $number, 1 ) ); } $money = number_format( $number, $this->currency['decimals'], $this->currency['decimal_separator'], $this->currency['thousand_separator'] ); if ( $money == '0.00' ) { $negative = ''; } $symbol_left = ! empty( $this->currency['symbol_left'] ) ? $this->currency['symbol_left'] . $this->currency['symbol_padding'] : ''; $symbol_right = ! empty( $this->currency['symbol_right'] ) ? $this->currency['symbol_padding'] . $this->currency['symbol_right'] : ''; if ( $do_encode ) { $symbol_left = html_entity_decode( $symbol_left ); $symbol_right = html_entity_decode( $symbol_right ); } return $negative . $symbol_left . $money . $symbol_right; } public static function get_currency( $code ) { $currencies = self::get_currencies(); return $currencies[ $code ]; } public function is_zero_decimal() { return empty( $this->currency['decimals'] ); } /** * Returns an array that contains all the supported currencies and their configurations. * * @since unknown. * @since 2.5.13 add currency code to the configuration array. * * @return array */ public static function get_currencies() { $currencies = array( 'USD' => array( 'name' => esc_html__( 'U.S. Dollar', 'gravityforms' ), 'symbol_left' => '$', 'symbol_right' => '', 'symbol_padding' => '', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'USD', ), 'GBP' => array( 'name' => esc_html__( 'Pound Sterling', 'gravityforms' ), 'symbol_left' => '£', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'GBP', ), 'EUR' => array( 'name' => esc_html__( 'Euro', 'gravityforms' ), 'symbol_left' => '', 'symbol_right' => '€', 'symbol_padding' => ' ', 'thousand_separator' => '.', 'decimal_separator' => ',', 'decimals' => 2, 'code' => 'EUR', ), 'AUD' => array( 'name' => esc_html__( 'Australian Dollar', 'gravityforms' ), 'symbol_left' => '$', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'AUD', ), 'BRL' => array( 'name' => esc_html__( 'Brazilian Real', 'gravityforms' ), 'symbol_left' => 'R$', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => '.', 'decimal_separator' => ',', 'decimals' => 2, 'code' => 'BRL', ), 'CAD' => array( 'name' => esc_html__( 'Canadian Dollar', 'gravityforms' ), 'symbol_left' => '$', 'symbol_right' => 'CAD', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'CAD', ), 'CZK' => array( 'name' => esc_html__( 'Czech Koruna', 'gravityforms' ), 'symbol_left' => '', 'symbol_right' => 'Kč', 'symbol_padding' => ' ', 'thousand_separator' => ' ', 'decimal_separator' => ',', 'decimals' => 2, 'code' => 'CZK', ), 'DKK' => array( 'name' => esc_html__( 'Danish Krone', 'gravityforms' ), 'symbol_left' => '', 'symbol_right' => 'kr.', 'symbol_padding' => ' ', 'thousand_separator' => '.', 'decimal_separator' => ',', 'decimals' => 2, 'code' => 'DKK', ), 'HKD' => array( 'name' => esc_html__( 'Hong Kong Dollar', 'gravityforms' ), 'symbol_left' => 'HK$', 'symbol_right' => '', 'symbol_padding' => '', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'HKD', ), 'HUF' => array( 'name' => esc_html__( 'Hungarian Forint', 'gravityforms' ), 'symbol_left' => '', 'symbol_right' => 'Ft', 'symbol_padding' => ' ', 'thousand_separator' => '.', 'decimal_separator' => ',', 'decimals' => 2, 'code' => 'HUF', ), 'ILS' => array( 'name' => esc_html__( 'Israeli New Sheqel', 'gravityforms' ), 'symbol_left' => '₪', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'ILS', ), 'JPY' => array( 'name' => esc_html__( 'Japanese Yen', 'gravityforms' ), 'symbol_left' => '¥', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '', 'decimals' => 0, 'code' => 'JPY', ), 'MYR' => array( 'name' => esc_html__( 'Malaysian Ringgit', 'gravityforms' ), 'symbol_left' => 'RM', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'MYR', ), 'MXN' => array( 'name' => esc_html__( 'Mexican Peso', 'gravityforms' ), 'symbol_left' => '$', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'MXN', ), 'NOK' => array( 'name' => esc_html__( 'Norwegian Krone', 'gravityforms' ), 'symbol_left' => 'Kr', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => '.', 'decimal_separator' => ',', 'decimals' => 2, 'code' => 'NOK', ), 'NZD' => array( 'name' => esc_html__( 'New Zealand Dollar', 'gravityforms' ), 'symbol_left' => '$', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'NZD', ), 'PHP' => array( 'name' => esc_html__( 'Philippine Peso', 'gravityforms' ), 'symbol_left' => 'Php', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'PHP', // bun not intended. ), 'PLN' => array( 'name' => esc_html__( 'Polish Zloty', 'gravityforms' ), 'symbol_left' => 'zł', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => '.', 'decimal_separator' => ',', 'decimals' => 2, 'code' => 'PLN', ), 'RUB' => array( 'name' => esc_html__( 'Russian Ruble', 'gravityforms' ), 'symbol_left' => '', 'symbol_right' => 'pyб', 'symbol_padding' => ' ', 'thousand_separator' => ' ', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'RUB', ), 'SGD' => array( 'name' => esc_html__( 'Singapore Dollar', 'gravityforms' ), 'symbol_left' => '$', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'SGD', ), 'ZAR' => array( 'name' => esc_html__( 'South African Rand', 'gravityforms' ), 'symbol_left' => 'R', 'symbol_right' => '', 'symbol_padding' => '', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'ZAR', ), 'SEK' => array( 'name' => esc_html__( 'Swedish Krona', 'gravityforms' ), 'symbol_left' => '', 'symbol_right' => 'Kr', 'symbol_padding' => ' ', 'thousand_separator' => ' ', 'decimal_separator' => ',', 'decimals' => 2, 'code' => 'SEK', ), 'CHF' => array( 'name' => esc_html__( 'Swiss Franc', 'gravityforms' ), 'symbol_left' => 'CHF', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => "'", 'decimal_separator' => '.', 'decimals' => 2, 'symbol_old' => 'Fr.', 'code' => 'CHF', ), 'TWD' => array( 'name' => esc_html__( 'Taiwan New Dollar', 'gravityforms' ), 'symbol_left' => '$', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'TWD', ), 'THB' => array( 'name' => esc_html__( 'Thai Baht', 'gravityforms' ), 'symbol_left' => '฿', 'symbol_right' => '', 'symbol_padding' => ' ', 'thousand_separator' => ',', 'decimal_separator' => '.', 'decimals' => 2, 'code' => 'THB', ), ); return apply_filters( 'gform_currencies', $currencies ); } /** * Returns a sorted data object with filterable common currencies listed first, then all currencies either listed in * alphabetical or original order as found in self::get_currencies() above. Designed to drive a select * in a format that select2 and our react select component understands. * * @since 2.7 * * @param $placeholder * @param $sort * * @return array|array[] */ public static function get_grouped_currency_options( $placeholder = true, $sort = true ) { /** * Filter the common currencies shown in currency selects that use this data. You'll * want to make sure the custom data that maps to the key is included in the gform_currencies * filter. * * @since 2.7 * * @param array The currency keys to include. */ $common_currency_keys = apply_filters( 'gform_common_currencies', array( 'USD', 'GBP', 'EUR', ) ); $common_options = array_intersect_key( self::get_currencies(), array_flip( $common_currency_keys ) ); $all_options = self::get_currencies(); if ( $sort ) { uasort( $all_options, function( $a, $b ) { return strcmp( strtolower( $a[ 'name' ] ), strtolower( $b[ 'name' ] ) ); } ); } $options = $placeholder ? array( array( 'label' => esc_html__( 'Select a Currency', 'gravityforms' ), 'value' => '', ) ) : array(); foreach( $common_options as $item ) { $options[] = array( 'label' => esc_html__( $item['name'] ), 'value' => esc_html__( $item['code'] ), ); } foreach( $all_options as $item ) { $options[] = array( 'label' => esc_html__( $item['name'] ), 'value' => esc_html__( $item['code'] ), ); } return $options; } } }