summaryrefslogtreecommitdiff
path: root/smarty_bit/modifier.reltime.php
diff options
context:
space:
mode:
authorMax Kremmel <xing@synapse.plus.com>2006-11-23 15:18:18 +0000
committerMax Kremmel <xing@synapse.plus.com>2006-11-23 15:18:18 +0000
commit8400713fbb14f6df88ecc0e4e22ea10c7885ad2e (patch)
tree3197695b124a2fc9d86d7d7199290ef9b60efb9f /smarty_bit/modifier.reltime.php
parent0cb360f1507b6f375776bbc587b3a9ea22db6e70 (diff)
downloadkernel-8400713fbb14f6df88ecc0e4e22ea10c7885ad2e.tar.gz
kernel-8400713fbb14f6df88ecc0e4e22ea10c7885ad2e.tar.bz2
kernel-8400713fbb14f6df88ecc0e4e22ea10c7885ad2e.zip
clean up and simplify reltime, make reltime optional, remove reltime equivalent function from BitDate and apply new reltime to a couple of places
Diffstat (limited to 'smarty_bit/modifier.reltime.php')
-rw-r--r--smarty_bit/modifier.reltime.php104
1 files changed, 57 insertions, 47 deletions
diff --git a/smarty_bit/modifier.reltime.php b/smarty_bit/modifier.reltime.php
index 01c6fc1..62244e4 100644
--- a/smarty_bit/modifier.reltime.php
+++ b/smarty_bit/modifier.reltime.php
@@ -8,65 +8,75 @@
/**
* smarty_modifier_reltime
*/
-function smarty_modifier_reltime( $time, $mode='long' ) {
- $m = 60;
- $h = 3600;
- $d = $h * 24;
- $w = $d * 7;
- $M = $w * 4;
- $L = $M * 2;
+function smarty_modifier_reltime( $pTimeStamp, $pMode = 'long', $pFallback = 'bit_short_datetime' ) {
+ global $gBitSystem, $gBitSmarty;
- if (! is_numeric($time)) return $time;
- $delta = (time() - $time);
- if ($delta < 0) {
+ // if this feature is not desired, we simply don't use it.
+ if( !$gBitSystem->isFeatureActive( 'site_display_reltime' ) ) {
+ require_once $gBitSmarty->_get_plugin_filepath( 'modifier', $pFallback );
+ $pFallback = "smarty_modifier_$pFallback";
+ return $pFallback( $pTimeStamp );
+ }
+
+ $min = 60;
+ $hour = $min * 60;
+ $day = $hour * 24;
+ $week = $day * 7;
+
+ $strf = "H:i";
+
+ if( !is_numeric( $pTimeStamp ) ) {
+ return $pTimeStamp;
+ }
+
+ $delta = $gBitSystem->mServerTimestamp->getUTCTime() - $pTimeStamp;
+
+ if( $delta < 0 ) {
$delta = -$delta;
- return tra("In the future!");
+ 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";
+ if( $delta < 1 ) {
+ // seconds
+ return tra( "within the last second" );
+ } elseif( $delta < $min ) {
+ // minutes
+ return tra( "within the last minute" );
+ } elseif( $delta < $hour ) {
+ // hours
+ if( $delta < $min * 2 ) {
+ return tra( "one minute ago" );
} else {
- return round($delta/$m)." minutes ago";
+ return round( $delta / $min )." ".tra( "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";
+ } elseif( $delta < $day ) {
+ // up to a day
+ if( $delta < $hour * 1.1 ) {
+ return tra( "one hour ago" );
+ } elseif( $delta < $day ) {
+ $delta_hours = floor( ( $delta - ( floor( $delta / $hour ) * $hour ) ) / $min );
+ if( $pMode == 'short' ) {
+ return floor( $delta / $hour )."h {$delta_hours}m ago";
+ }
+ return floor( $delta / $hour )." hour(s) {$delta_hours} minute(s) ago";
} else {
- return round($delta/$h)." hours ago";
+ return round( $delta / $hour )." ".tra( "hour(s) ago" );
}
- } elseif ($delta<($w)) {
- if ($delta<($d*1.7)) {
- return "Yesterday " .date('h:i:s A',$time);
+ } elseif( $delta < $week ) {
+ // up to a week
+ if( $delta < $day * 2 ) {
+ return tra( "Yesterday" )." ".date( $strf, $pTimeStamp );
} else {
- if ($mode='short') {
- return date('D H:i:s',$time);
+ if( $pMode == 'short' ) {
+ return date( 'D '.$strf, $pTimeStamp );
}
- return date('l h:i:s A',$time);
- }
- } elseif ($delta<($M)) {
- if ($mode='short') {
- return date('D d, H:i',$time);
+ return tra( date( 'l' ) )." ".date( $strf, $pTimeStamp );
}
- 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);
+ // anything longer than a week
+ require_once $gBitSmarty->_get_plugin_filepath( 'modifier', $pFallback );
+ $pFallback = "smarty_modifier_$pFallback";
+ return $pFallback( $pTimeStamp );
}
}
?>