Smarty Modifier filesize
Smarty is a great tool when you want to separate your content and your code. Smarty comes with multiple helpful plugins but one I often use is to display how much a file takes on a hard drive.
If you fetch file information from a database, and you want to display them, one of the field you want to display will be the file size. Now, if a size as more than few Megs it can be hard to read.
Here's a simple Smarty modifier that will allow you to display any given integer to a more human-readable format.
Create the modifier
Create a file in the plugin directory called modifier.filesize.php and add this code:
/**
* Smarty plugin
* @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty filesize modifier plugin
*
* Type: modifier
* Name: filesize
* Purpose: show the filesize of a file in kb, mb, gb etc...
*
* @param string $
* @return string
*/
function smarty_modifier_filesize($size)
{
$size = max(0, (int)$size);
$units = array( 'b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb');
$power = $size > 0 ? floor(log($size, 1024)) : 0;
return number_format($size / pow(1024, $power), 2, '.', ',') . $units[$power];
}
Now the only thing you have to do is add the modifier in your Smarty template:
{$filename.size|filesize}




