/** * Return a text description of how long its been since the file * has been last modified. * * @param integer $date Number of seconds since epoch we wish to display. * @param boolean $long If true, display a more verbose date. * * @return string The human-readable date. */ public static function readableTime($date, $long = false) { /* Initialize popular variables. */ if (!isset(self::$rtcache)) { $desc = array(1 => array(_("second"), _("seconds")), 60 => array(_("minute"), _("minutes")), 3600 => array(_("hour"), _("hours")), 86400 => array(_("day"), _("days")), 604800 => array(_("week"), _("weeks")), 2628000 => array(_("month"), _("months")), 31536000 => array(_("year"), _("years"))); self::$rtcache = array('breaks' => array_keys($desc), 'desc' => $desc, 'time' => time()); } $cache = self::$rtcache; $i = count($cache['breaks']); $secs = $cache['time'] - $date; if ($secs < 2) { return _("very little time"); } while (--$i && $i && $cache['breaks'][$i] * 2 > $secs) { } $break = $cache['breaks'][$i]; $val = intval($secs / $break); $retval = $val . ' ' . ($val > 1 ? $cache['desc'][$break][1] : $cache['desc'][$break][0]); if ($long && $i > 0) { $rest = $secs % $break; $break = $cache['breaks'][--$i]; $rest = (int) ($rest / $break); if ($rest > 0) { $retval .= ', ' . $rest . ' ' . ($rest > 1 ? $cache['desc'][$break][1] : $cache['desc'][$break][0]); } } return $retval; }