public function ago($time, $granularity = 2)
{
if (is_int($time)) {
$date = $time;
} else {
$date = strtotime($time);
}
$difference = time() - $date;
$retval = '';
$periods = array('decade' => 315360000, 'year' => 31536000, 'month' => 2628000, 'week' => 604800, 'day' => 86400, 'hour' => 3600, 'minute' => 60, 'second' => 1);
foreach ($periods as $key => $value) {
if ($difference >= $value) {
$time = floor($difference / $value);
$difference %= $value;
$retval .= ($retval ? ' ' : '') . $time . ' ';
$retval .= $time > 1 ? $key . 's' : $key;
--$granularity;
}
if ($granularity == '0') {
break;
}
}
if ($retval == '') {
return '1 second ago';
}
return '' . $retval . ' ago';
}