Ejemplo n.º 1
0
 /**
  * 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;
 }