PageRenderTime 29ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 1ms

/application/helpers/format.php

https://github.com/fb83/Project-Pier
PHP | 122 lines | 55 code | 12 blank | 55 comment | 17 complexity | 8c095ec5c819d0946adac5efe11f5a79 MD5 | raw file
Possible License(s): AGPL-1.0, GPL-2.0, AGPL-3.0, LGPL-2.1, GPL-3.0
  1. <?php
  2. /**
  3. * Format filesize
  4. *
  5. * @access public
  6. * @param integer $in_bytes Site in bytes
  7. * @return string
  8. */
  9. function format_filesize($in_bytes) {
  10. $units = array(
  11. 'TB' => 1099511627776,
  12. 'GB' => 1073741824,
  13. 'MB' => 1048576,
  14. 'KB' => 1024,
  15. //0 => 'bytes'
  16. ); // array
  17. // Loop units bigger than byte
  18. foreach ($units as $current_unit => $unit_min_value) {
  19. if ($in_bytes > $unit_min_value) {
  20. $formated_number = number_format($in_bytes / $unit_min_value, 2);
  21. while (str_ends_with($formated_number, '0')) {
  22. $formated_number = substr($formated_number, 0, strlen($formated_number) - 1); // remove zeros from the end
  23. }
  24. if (str_ends_with($formated_number, '.')) {
  25. $formated_number = substr($formated_number, 0, strlen($formated_number) - 1); // remove dot from the end
  26. }
  27. return $formated_number . $current_unit;
  28. } // if
  29. } // foreach
  30. // Bytes?
  31. return $in_bytes . 'bytes';
  32. } // format_filesize
  33. /**
  34. * Return formated datetime
  35. *
  36. * @access public
  37. * @param DateTimeValue $value If value is not instance of DateTime object new DateTime
  38. * object will be created with $value as its constructor param
  39. * @param string $format If $format is NULL default datetime format will be used
  40. * @param float $timezone Timezone, if NULL it will be autodetected (by currently logged user if we have it)
  41. * @return string
  42. */
  43. function format_datetime($value = null, $format = null, $timezone = null) {
  44. if (is_null($timezone) && function_exists('logged_user') && (logged_user() instanceof User)) {
  45. $timezone = logged_user()->getContact()->getTimezone();
  46. } // if
  47. $datetime = $value instanceof DateTimeValue ? $value : new DateTimeValue($value);
  48. return Localization::instance()->formatDateTime($datetime, $format, $timezone);
  49. } // format_datetime
  50. /**
  51. * Return formatted date
  52. *
  53. * @access public
  54. * @param DateTimeValue $value If value is not instance of DateTime object new DateTime
  55. * object will be created with $value as its constructor param
  56. * @param string $format If $format is NULL default date format will be used
  57. * @param float $timezone Timezone, if NULL it will be autodetected (by currently logged user if we have it)
  58. * @return string
  59. */
  60. function format_date($value = null, $format = null, $timezone = null) {
  61. if (is_null($timezone) && function_exists('logged_user') && (logged_user() instanceof User)) {
  62. $timezone = logged_user()->getContact()->getTimezone();
  63. } // if
  64. $datetime = $value instanceof DateTimeValue ? $value : new DateTimeValue($value);
  65. return Localization::instance()->formatDate($datetime, $timezone, $format);
  66. } // format_date
  67. /**
  68. * Return descriptive date
  69. *
  70. * @param DateTimeValue $value If value is not instance of DateTime object new DateTime
  71. * object will be created with $value as its constructor param
  72. * @param float $timezone Timezone, if NULL it will be autodetected (by currently logged user if we have it)
  73. * @return string
  74. */
  75. function format_descriptive_date($value = null, $timezone = null, $format = null) {
  76. if (is_null($timezone) && function_exists('logged_user') && (logged_user() instanceof User)) {
  77. $timezone = logged_user()->getContact()->getTimezone();
  78. } // if
  79. $datetime = $value instanceof DateTimeValue ? $value : new DateTimeValue($value);
  80. return Localization::instance()->formatDescriptiveDate($datetime, $timezone, $format);
  81. } // format_descriptive_date
  82. /**
  83. * Return formated time
  84. *
  85. * @access public
  86. * @param DateTime $value If value is not instance of DateTime object new DateTime
  87. * object will be created with $value as its constructor param
  88. * @param string $format If $format is NULL default time format will be used
  89. * @param float $timezone Timezone, if NULL it will be autodetected (by currently logged user if we have it)
  90. * @return string
  91. */
  92. function format_time($value = null, $format = null, $timezone = null) {
  93. if (is_null($timezone) && function_exists('logged_user') && (logged_user() instanceof User)) {
  94. $timezone = logged_user()->getContact()->getTimezone();
  95. } // if
  96. $datetime = $value instanceof DateTimeValue ? $value : new DateTimeValue($value);
  97. return Localization::instance()->formatTime($datetime, $timezone);
  98. } // format_time
  99. /**
  100. * Uses the 'day...' instead of 'days...' language token when there's only one day
  101. * @access public
  102. * @param string language token (e.g. 'days left')
  103. * @param int number of days
  104. * @return string translated string
  105. */
  106. function format_days($tok, $days) {
  107. if ($days == 1) $tok = str_replace('days', 'day', $tok);
  108. return lang($tok, $days);
  109. }
  110. ?>