SproutCMS

This is the code documentation for the SproutCMS project

source of /sprout/Helpers/ColModifierSize.php

  1. <?php
  2. /*
  3.  * Copyright (C) 2017 Karmabunny Pty Ltd.
  4.  *
  5.  * This file is a part of SproutCMS.
  6.  *
  7.  * SproutCMS is free software: you can redistribute it and/or modify it under the terms
  8.  * of the GNU General Public License as published by the Free Software Foundation, either
  9.  * version 2 of the License, or (at your option) any later version.
  10.  *
  11.  * For more information, visit <http://getsproutcms.com>.
  12.  */
  13.  
  14. namespace Sprout\Helpers;
  15.  
  16. /**
  17. * Converts byte value into human readable sizes
  18. **/
  19. class ColModifierSize extends UnescapedColModifier
  20. {
  21. /**
  22.   * Modify a column value
  23.   * This value will be html/csv/etc encoded afterwards.
  24.   *
  25.   * @param string $val The incoming value
  26.   * @param string $field_name The name of the field being modified
  27.   * @return string The modified value
  28.   */
  29. public function modify($val, $field_name)
  30. {
  31. static $types = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
  32. $val = (int) $val;
  33.  
  34. $type = 0;
  35. while ($val > 1024) {
  36. $val /= 1024;
  37. $type++;
  38. if ($type > 5) break;
  39. }
  40.  
  41. return sprintf('%s&nbsp;%s', round($val, 1), $types[$type]);
  42. }
  43. }
  44.