diff options
author | Paul Arthur <paul.arthur@flowerysong.com> | 2013-01-26 02:36:58 -0500 |
---|---|---|
committer | Paul Arthur <paul.arthur@flowerysong.com> | 2013-01-26 02:36:58 -0500 |
commit | 8a750c3e875d590d351c3042570a134fcdf03e5d (patch) | |
tree | 846df051bf732bd588cd1571d1727123493cef5b /lib/class/ui.class.php | |
parent | a12679b13d8d06c87308b1d26bc23c6b4fa5d92e (diff) | |
download | ampache-8a750c3e875d590d351c3042570a134fcdf03e5d.tar.gz ampache-8a750c3e875d590d351c3042570a134fcdf03e5d.tar.bz2 ampache-8a750c3e875d590d351c3042570a134fcdf03e5d.zip |
Move [un]format_bytes() from general.lib.php to UI
Diffstat (limited to 'lib/class/ui.class.php')
-rw-r--r-- | lib/class/ui.class.php | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/class/ui.class.php b/lib/class/ui.class.php index f37c5a36..ae4ec091 100644 --- a/lib/class/ui.class.php +++ b/lib/class/ui.class.php @@ -105,6 +105,60 @@ class UI { } /** + * format_bytes + * + * Turns a size in bytes into the best human-readable value + */ + public static function format_bytes($value, $precision = 2) { + $pass = 0; + while (strlen(floor($value)) > 3) { + $value /= 1024; + $pass++; + } + + switch ($pass) { + case 1: $unit = 'kB'; break; + case 2: $unit = 'MB'; break; + case 3: $unit = 'GB'; break; + case 4: $unit = 'TB'; break; + case 5: $unit = 'PB'; break; + default: $unit = 'B'; break; + } + + return round($value, $precision) . ' ' . $unit; + } + + /** + * unformat_bytes + * + * Parses a human-readable size + */ + public static function unformat_bytes($value) { + if (preg_match('/^([0-9]+) *([[:alpha:]]+)$/', $value, $matches)) { + $value = $matches[1]; + $unit = strtolower(substr($matches[2], 0, 1)); + } + else { + return $value; + } + + switch($unit) { + case 'p': + $value *= 1024; + case 't': + $value *= 1024; + case 'g': + $value *= 1024; + case 'm': + $value *= 1024; + case 'k': + $value *= 1024; + } + + return $value; + } + + /** * get_icon * * Returns an <img> tag for the specified icon |