configModel->get('application_time_format', 'H:i'), $value); } /** * Get formatted date * * @access public * @param integer $value * @return string */ public function date($value) { if (empty($value)) { return ''; } if (! ctype_digit($value)) { $value = strtotime($value); } return date($this->configModel->get('application_date_format', 'm/d/Y'), $value); } /** * Get formatted datetime * * @access public * @param integer $value * @return string */ public function datetime($value) { return date($this->dateParser->getUserDateTimeFormat(), $value); } /** * Get duration in seconds into human format * * @access public * @param integer $seconds * @return string */ public function duration($seconds) { if ($seconds == 0) { return 0; } $dtF = new DateTime("@0"); $dtT = new DateTime("@$seconds"); $format = sprintf("%%d %s, %%h %s, %%i %s, %%s %s", t('days'), t('hours'), t('minutes'), t('seconds')); return $dtF->diff($dtT)->format($format); } /** * Get the age of an item in quasi human readable format. * It's in this format: <1h , NNh, NNd * * @access public * @param integer $timestamp Unix timestamp of the artifact for which age will be calculated * @param integer $now Compare with this timestamp (Default value is the current unix timestamp) * @return string */ public function age($timestamp, $now = null) { if ($now === null) { $now = time(); } $diff = $now - $timestamp; if ($diff < 900) { return t('<15m'); } if ($diff < 1200) { return t('<30m'); } elseif ($diff < 3600) { return t('<1h'); } elseif ($diff < 86400) { return '~'.t('%dh', $diff / 3600); } return t('%dd', ($now - $timestamp) / 86400); } /** * Get all hours for day * * @access public * @return array */ public function getDayHours() { $values = array(); foreach (range(0, 23) as $hour) { foreach (array(0, 30) as $minute) { $time = sprintf('%02d:%02d', $hour, $minute); $values[$time] = $time; } } return $values; } /** * Get all days of a week * * @access public * @return array */ public function getWeekDays() { $values = array(); foreach (range(1, 7) as $day) { $values[$day] = $this->getWeekDay($day); } return $values; } /** * Get the localized day name from the day number * * @access public * @param integer $day Day number * @return string */ public function getWeekDay($day) { return date('l', strtotime('next Monday +'.($day - 1).' days')); } }