Skip to content

Commit

Permalink
Make the formatCurrency modifier use formatNumber.
Browse files Browse the repository at this point in the history
This way, the configured number format is used instead of a default one.
  • Loading branch information
WouterSioen committed Jul 12, 2016
1 parent c018229 commit fa34aa8
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 10 deletions.
15 changes: 9 additions & 6 deletions src/Backend/Core/Engine/TemplateModifiers.php
Expand Up @@ -50,21 +50,24 @@ public static function formatFloat($number, $decimals = 2)

/**
* Format a number
* syntax: {$var|formatnumber}
* syntax: {{ $string|formatnumber($decimals) }}
*
* @param float $var The number to format.
* @param float $number The number to format.
* @param int $decimals The number of decimals
*
* @return string
*/
public static function formatNumber($var)
public static function formatNumber($number, $decimals = null)
{
$var = (float) $var;
$number = (float) $number;

// get setting
$format = Authentication::getUser()->getSetting('number_format', 'dot_nothing');

// get amount of decimals
$decimals = (mb_strpos($var, '.') ? mb_strlen(mb_substr($var, mb_strpos($var, '.') + 1)) : 0);
if ($decimals === null) {
$decimals = (mb_strpos($number, '.') ? mb_strlen(mb_substr($number, mb_strpos($number, '.') + 1)) : 0);
}

// get separators
$separators = explode('_', $format);
Expand All @@ -77,7 +80,7 @@ public static function formatNumber($var)
);

// format the number
return number_format($var, $decimals, $decimalSeparator, $thousandsSeparator);
return number_format($number, $decimals, $decimalSeparator, $thousandsSeparator);
}

/**
Expand Down
19 changes: 18 additions & 1 deletion src/Common/Core/Twig/Extensions/BaseTwigModifiers.php
Expand Up @@ -37,7 +37,24 @@ public static function formatCurrency($string, $currency = 'EUR', $decimals = nu
default:
}

return $currency.' '.number_format((float) $string, $decimals, ',', ' ');
return $currency.' '.static::formatNumber($string, $decimals);
}

/**
* Fallback for if our parent functions don't implement this method
*
* @param string $number
* @param int $decimals
*
* @return string
*/
public static function formatNumber($number, $decimals = null)
{
if ($decimals === null) {
$decimals = 2;
}

return number_format((float) $number, $decimals, ',', ' ');
}

/**
Expand Down
9 changes: 6 additions & 3 deletions src/Frontend/Core/Engine/TemplateModifiers.php
Expand Up @@ -35,13 +35,14 @@ public static function formatFloat($number, $decimals = 2)

/**
* Format a number
* syntax: {{ $string|formatnumber }}
* syntax: {{ $string|formatnumber($decimals) }}
*
* @param float $string The number to format.
* @param int $decimals The number of decimals
*
* @return string
*/
public static function formatNumber($string)
public static function formatNumber($string, $decimals = null)
{
// redefine
$string = (float) $string;
Expand All @@ -50,7 +51,9 @@ public static function formatNumber($string)
$format = FrontendModel::get('fork.settings')->get('Core', 'number_format');

// get amount of decimals
$decimals = (mb_strpos($var, '.') ? mb_strlen(mb_substr($var, mb_strpos($var, '.') + 1)) : 0);
if ($decimals === null) {
$decimals = (mb_strpos($string, '.') ? mb_strlen(mb_substr($string, mb_strpos($string, '.') + 1)) : 0);
}

// get separators
$separators = explode('_', $format);
Expand Down

0 comments on commit fa34aa8

Please sign in to comment.