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}