Current File : /var/www/pediatribu/wp-content/plugins/independent-analytics/IAWP/Utils/Currency.php |
<?php
namespace IAWP\Utils;
use IAWP\Ecommerce\SureCart_Store;
use IAWPSCOPED\Illuminate\Support\Str;
/** @internal */
class Currency
{
/**
* The value for $amount_in_cents is just that, an amount in cents. It's possible that is a float, which is why
* there's no type defined for $amount_in_cents on the function definition. This supports "500.0" for $5.
*
* @param int|float $amount_in_cents
* @param bool $round_to_whole_dollars
*
* @return string
*/
public static function format($amount_in_cents, bool $round_to_whole_dollars = \true) : string
{
$amount_in_cents = \intval($amount_in_cents);
if ($round_to_whole_dollars) {
$amount_in_cents = \round($amount_in_cents, -2);
}
if (\function_exists('wc_price')) {
if ($round_to_whole_dollars) {
$options = ['decimals' => 0];
} else {
$options = null;
}
// The format function accepts amounts in cents, but wc_price requires them to be floats
// representing an amount in dollars. This is why the amount is divided by 100 below.
$formatted_value = \strip_tags(\wc_price($amount_in_cents / 100, $options));
// wc_price returns HTML. Since there's no function that returns a string, the encoded
// entities need to be decoded.
$decoded_value = \html_entity_decode($formatted_value, \ENT_NOQUOTES, 'UTF-8');
return $decoded_value;
}
if (\class_exists('\\SureCart\\Support\\Currency')) {
$currency_code = SureCart_Store::get_currency_code();
$formatted_value = \SureCart\Support\Currency::format($amount_in_cents, $currency_code);
return $round_to_whole_dollars ? Str::before($formatted_value, ".") : $formatted_value;
}
if (\function_exists('edd_currency_filter') && \function_exists('edd_format_amount')) {
// The format function accepts amounts in cents, but edd_format_amount requires them to be floats
// representing an amount in dollars. This is why the amount is divided by 100 below.
$formatted_value = \edd_currency_filter(\edd_format_amount($amount_in_cents / 100));
$rounded_value = $round_to_whole_dollars ? Str::before($formatted_value, ".") : $formatted_value;
// edd_currency_filter returns HTML. Since there's no function that returns a string, the encoded
// entities need to be decoded.
$decoded_value = \html_entity_decode($rounded_value, \ENT_NOQUOTES, 'UTF-8');
return $decoded_value;
}
if (\function_exists('pmpro_formatPrice')) {
// The format function accepts amounts in cents, but edd_format_amount requires them to be floats
// representing an amount in dollars. This is why the amount is divided by 100 below.
$formatted_value = \pmpro_formatPrice($amount_in_cents / 100);
$decoded_value = \html_entity_decode($formatted_value, \ENT_NOQUOTES, 'UTF-8');
return $round_to_whole_dollars ? Str::before($decoded_value, ".") : $decoded_value;
}
// Fallback
return \strval(\intval($amount_in_cents / 100));
}
}