diff options
Diffstat (limited to 'modules/comment/helpers/comment.php')
-rw-r--r-- | modules/comment/helpers/comment.php | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/modules/comment/helpers/comment.php b/modules/comment/helpers/comment.php index 1c454952..232f2584 100644 --- a/modules/comment/helpers/comment.php +++ b/modules/comment/helpers/comment.php @@ -69,5 +69,52 @@ class Comment_Core { $v->item_id = $item_id; return $v; } + + /** + * Format a human-friendly message showing the amount of time elapsed since the specified + * timestamp (e.g. 'said today', 'said yesterday', 'said 13 days ago', 'said 5 months ago'). + * + * @todo Take into account the viewer's time zone. + * @todo Properly pluralize strings. + * @todo Write test once we settle on the final forms of the messages. + * + * @param integer $timestamp Unix format timestamp to compare with + * @return string user-friendly string containing the amount of time passed + */ + static function format_elapsed_time($timestamp) { + $now = time(); + $date_info_comment = getdate($timestamp); + $date_info_now = getdate($now); + + /* Check if the comment was posted today or yesterday. */ + if ($date_info_comment['year'] == $date_info_now['year'] + && $date_info_comment['mon'] == $date_info_now['mon']) { + if ($date_info_comment['mday'] == $date_info_now['mday']) { + $message = _('said today'); + } else if ($date_info_comment['mday'] == $date_info_now['mday'] - 1) { + $message = _('said yesterday'); + } + return $message; + } + + /* Calculate the number of days, months or years elapsed since the specified timestamp. */ + $seconds_in_a_day = 86400; + $seconds_in_a_month = 2629744; + $seconds_in_a_year = 31556926; + $time_difference = $now - $timestamp; + + $elapsed_days = round($time_difference / $seconds_in_a_day); + $elapsed_months = round($time_difference / $seconds_in_a_month); + $elapsed_years = round($time_difference / $seconds_in_a_year); + + if ($elapsed_years > 0) { + $message = sprintf(_('said %d years ago'), $elapsed_years); + } else if ($elapsed_months > 0) { + $message = sprintf(_('said %d months ago'), $elapsed_months); + } else { + $message = sprintf(_('said %d days ago'), $elapsed_days); + } + return $message; + } } |