Make comment post time display more user-friendly by displaying 'today', 'yesterday', 'x days ago' etc.

This commit is contained in:
Jozef Selesi
2008-11-12 12:00:13 +00:00
parent ed8f1d4152
commit a1ca946a89
2 changed files with 48 additions and 1 deletions

View File

@@ -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;
}
}