Данный код заменяет время, отображаемое возле поста.
Например, было так:
(Сегодня, 23:20)
Станет так:
(2 секунды назад)
или
(59 секунд назад)
или
(4 минуты назад)
или
(41 минуту назад)
или
(11 дней назад)
или
(11 месяцев назад)
и т.д.
Если пост был написан более 12-и месяцев назад, то будет выведена дата и время этого поста (т.е., как есть)
display_date (+/-)
public static function display_date($var)
{
$pl = function ($int, $arr) {
if ($int > 10 && $int < 15) {
$out = ' '. $arr[2];
} else {
if (($int % 10) == 1) {
$out = ' '. $arr[0];
} elseif (($int % 10) > 1 && ($int % 10) < 5) {
$out = ' '. $arr[1];
} else {
$out = ' '. $arr[2];
}
}
return $int . $out;
};
$label = time() - $var;
$w = 'секунд';
$arrSec = [$w .'у', $w .'ы', $w];
$w = 'минут';
$arrMin = [$w .'у', $w .'ы', $w];
$w = 'час';
$arrHour = [$w, $w .'а', $w .'ов'];
$w = 'дн';
$arrDays = ['день', $w .'я', $w .'ей'];
$w = 'месяц';
$arrMonths = [$w, $w .'а', $w .'ев'];
$back = ' назад';
if ($label == 0) {
$out = 'только что';
} elseif ($label < 60) {
$out = $pl($label, $arrSec) . $back;
} elseif ($label < 3600) {
$out = $pl(intval($label / 60), $arrMin) . $back;
} elseif ($label < (3600 * 24)) {
$out = $pl(intval($label / 3600), $arrHour) . $back;
} elseif ($label < (3600 * 24 * date('t'))) {
$out = $pl(intval($label / (3600 * 24)), $arrDays) . $back;
} elseif ($label < (3600 * 24 * (date('L') + 365))) {
$out = $pl(intval($label / (3600 * 24 * 30)), $arrMonths) . $back;
} else {
$shift = (self::$system_set['timeshift']
+ self::$user_set['timeshift']) * 3600;
$out = date('d.m.Y / H:i', $var + $shift);
}
return $out;
}