Функция cot_build_timeago в Cotonti
Функция cot_build_timeago() предназначена для вычисления временного интервала между текущим временем и переданным временем (в формате timestamp). Она возвращает строку с читаемым описанием разницы во времени или строку "Just now" (если разница меньше определенного порога, заданного параметром $recently).
/**
* Returns readable time difference or 'Just now'.
*
* @param int $time Timestamp
* @param int $recently Seconds during which to show 'Just now'
* @return string
*/
function cot_build_timeago($time, $recently = 60)
{
global $L, $sys;
if ($sys['now'] - $time < $recently)
{
return $L['JustNow'];
}
return cot_build_timegap($time) . ' ' . $L['Ago'];
}
Подробное разъяснение функции:
function cot_build_timeago($time, $recently = 60)
{
global $L, $sys;
// Если разница между текущим временем и переданным временем меньше, чем $recently секунд
if ($sys['now'] - $time < $recently)
{
// Возвращаем "Just now" (только что)
return $L['JustNow'];
}
// Иначе возвращаем временной промежуток с добавлением 'Ago' (назад)
return cot_build_timegap($time) . ' ' . $L['Ago'];
}
Разбор условий:
Первое условие (if ($sys['now'] - $time < $recently)):
Параметры:
$sys['now'] — текущее время в формате timestamp.
$time — время, переданное в функцию.
$recently — временной интервал, в течение которого будет показываться "Just now" (по умолчанию это 60 секунд).
Логика: если разница между текущим временем и переданным временем меньше, чем значение в $recently (по умолчанию 60 секунд), возвращается строка "Just now".
Возвращаемое значение:
Если время прошло больше, чем значение в $recently, вызывается функция cot_build_timegap($time), которая формирует человекочитаемую строку с временем (например, "2 hours", "3 days").
К этому значению добавляется строка "Ago", которая берется из локализации (обычно это "назад" или "ago" в зависимости от языка).
Примеры в контексте Cotonti:
Пример 1:
'FORUMS_TOPICS_ROW_TIMEAGO' => cot_build_timeago($row['ft_updated']),
В этом примере используется функция cot_build_timeago(), чтобы отобразить разницу во времени для каждого форума, основанную на метке времени ft_updated из базы данных. Это может быть время последнего обновления темы на форуме.
Пример 2:
$updated = sprintf(Cot::$L['forums_mergetime'], cot_build_timegap($gap_base, Cot::$sys['now']));
Здесь cot_build_timegap() используется для вычисления разницы между двумя временными метками ($gap_base и текущим временем). Затем результат вставляется в строку локализации forums_mergetime, которая, вероятно, отображает форматированное сообщение типа "Обновлено X времени назад".
Примечания:
Функция cot_build_timeago() полезна для отображения времени, прошедшего с какого-то события, в читаемом виде, например, "5 минут назад", "3 дня назад", или "Just now" для очень свежих событий.
При необходимости можно настроить период, в который будет показываться "Just now", передавая нужное значение в параметре $recently.
Comments (0)
Content author
Offline
Administrator
Last logged: 2026-08-03 13:51
- Page published: 2025-01-22 00:20
- Last update: 2025-01-22 00:22