diff options
| author | Max Kremmel <xing@synapse.plus.com> | 2006-09-01 08:44:52 +0000 |
|---|---|---|
| committer | Max Kremmel <xing@synapse.plus.com> | 2006-09-01 08:44:52 +0000 |
| commit | 3e8638d71b63766c20c5d568821f89690b473582 (patch) | |
| tree | 95e18b73b7e656d7fdbbb8076ddd2ffec49a2348 /smarty_bit/modifier.reltime.php | |
| parent | 6e5ef33f7054ddb5ea1d74ff00bfdc15f2d291ea (diff) | |
| download | kernel-3e8638d71b63766c20c5d568821f89690b473582.tar.gz kernel-3e8638d71b63766c20c5d568821f89690b473582.tar.bz2 kernel-3e8638d71b63766c20c5d568821f89690b473582.zip | |
move reltime to smarty modifier
Diffstat (limited to 'smarty_bit/modifier.reltime.php')
| -rw-r--r-- | smarty_bit/modifier.reltime.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/smarty_bit/modifier.reltime.php b/smarty_bit/modifier.reltime.php new file mode 100644 index 0000000..c92fbbc --- /dev/null +++ b/smarty_bit/modifier.reltime.php @@ -0,0 +1,69 @@ +<?php +/** + * Smarty plugin + * @package Smarty + * @subpackage plugins + */ + +function smarty_modifier_reltime( $time, $mode='long' ) { + $m = 60; + $h = 3600; + $d = $h * 24; + $w = $d * 7; + $M = $w * 4; + $L = $M * 2; + + if (! is_numeric($time)) return $time; + $delta = (time() - $time); + if ($delta < 0) { + $delta = -$delta; + return tra("In the future!"); + } + + if ($delta<1) { + return tra("within the last second"); + } elseif ($delta<$m) { + return round($delta)." seconds ago"; + //return tra("within the last minute"); + } elseif ($delta<$h) { + if ($delta<$m*2) { + return "one minute ago"; + } else { + return round($delta/$m)." minutes ago"; + } + } elseif ($delta<($d)) { + if ($delta<$h*1.1) { + return "one hour ago"; + } elseif ($delta<$d) { + $delta_hours = floor(($delta-(floor($delta/($h))*($h)))/$m); + return round($delta/($h))." hours " . $delta_hours . " minutes ago"; + } else { + return round($delta/$h)." hours ago"; + } + } elseif ($delta<($w)) { + if ($delta<($d*1.7)) { + return "Yesterday " .date('h:i:s A',$time); + } else { + if ($mode='short') { + return date('D H:i:s',$time); + } + return date('l h:i:s A',$time); + } + } elseif ($delta<($M)) { + if ($mode='short') { + return date('D d, H:i',$time); + } + return date('l dS \a\t h:i A',$time); + } elseif ($delta<($L)) { + if ($mode='short') { + return date('M d, H:i',$time); + } + return date('l dS \of F h:i A',$time); + } else { + if ($mode='short') { + return date('M d, Y H:i',$time); + } + return date('l dS \of F Y h:i A',$time); + } +} +?> |
