public function adminNicetimeFilter($date, $long_strings = true)
{
if (empty($date)) {
return $this->grav['admin']->translate('NICETIME.NO_DATE_PROVIDED', null, true);
}
if ($long_strings) {
$periods = ["NICETIME.SECOND", "NICETIME.MINUTE", "NICETIME.HOUR", "NICETIME.DAY", "NICETIME.WEEK", "NICETIME.MONTH", "NICETIME.YEAR", "NICETIME.DECADE"];
} else {
$periods = ["NICETIME.SEC", "NICETIME.MIN", "NICETIME.HR", "NICETIME.DAY", "NICETIME.WK", "NICETIME.MO", "NICETIME.YR", "NICETIME.DEC"];
}
$lengths = ["60", "60", "24", "7", "4.35", "12", "10"];
$now = time();
// check if unix timestamp
if ((string) (int) $date == $date) {
$unix_date = $date;
} else {
$unix_date = strtotime($date);
}
// check validity of date
if (empty($unix_date)) {
return $this->grav['admin']->translate('NICETIME.BAD_DATE', null, true);
}
// is it future date or past date
if ($now > $unix_date) {
$difference = $now - $unix_date;
$tense = $this->grav['admin']->translate('NICETIME.AGO', null, true);
} else {
$difference = $unix_date - $now;
$tense = $this->grav['admin']->translate('NICETIME.FROM_NOW', null, true);
}
for ($j = 0; $difference >= $lengths[$j] && $j < count($lengths) - 1; $j++) {
$difference /= $lengths[$j];
}
$difference = round($difference);
if ($difference != 1) {
$periods[$j] .= '_PLURAL';
}
if ($this->grav['language']->getTranslation($this->grav['user']->language, $periods[$j] . '_MORE_THAN_TWO')) {
if ($difference > 2) {
$periods[$j] .= '_MORE_THAN_TWO';
}
}
$periods[$j] = $this->grav['admin']->translate($periods[$j], null, true);
return "{$difference} {$periods[$j]} {$tense}";
}