X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FTemporal.php;h=acafb66ab60538949a9b0cacd2540b19b2bc7382;hb=c5ca5bfdf84f6fb5e4ba4d8509df25c58aeb516a;hp=3946550628865706d88d5e5e85f41ea7656470b1;hpb=b3f9cef94a7be372428767125f85b7fec085b460;p=friendica.git diff --git a/src/Util/Temporal.php b/src/Util/Temporal.php index 3946550628..acafb66ab6 100644 --- a/src/Util/Temporal.php +++ b/src/Util/Temporal.php @@ -1,6 +1,6 @@ get(DI::userSession()->getLocalUserId(), 'system', 'first_day_of_week', 0); + $firstDay = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'calendar', 'first_day_of_week', 0); $lang = substr(DI::l10n()->getCurrentLang(), 0, 2); @@ -305,18 +307,21 @@ class Temporal * Results relative to current timezone. * Limited to range of timestamps. * - * @param string $posted_date MySQL-formatted date string (YYYY-MM-DD HH:MM:SS) - * @param string $format (optional) Parsed with sprintf() - * %1$d %2$s ago, e.g. 22 hours ago, 1 minute ago + * @param string|null $posted_date MySQL-formatted date string (YYYY-MM-DD HH:MM:SS) + * @param bool $compare_time Compare date (false) or date and time (true). "true" is default. + * @param ClockInterface|null $clock + * %1$d %2$s ago, e.g. 22 hours ago, 1 minute ago * * @return string with relative date */ - public static function getRelativeDate(string $posted_date = null, string $format = null): string + public static function getRelativeDate(string $posted_date = null, bool $compare_time = true, ClockInterface $clock = null): string { if (empty($posted_date) || $posted_date <= DBA::NULL_DATETIME) { return DI::l10n()->t('never'); } + $clock = $clock ?? new SystemClock(); + $localtime = $posted_date . ' UTC'; $abs = strtotime($localtime); @@ -324,11 +329,18 @@ class Temporal return DI::l10n()->t('never'); } + $now = $clock->now()->getTimestamp(); + + if (!$compare_time) { + $now = mktime(0, 0, 0, date('m', $now), date('d', $now), date('Y', $now)); + $abs = mktime(0, 0, 0, date('m', $abs), date('d', $abs), date('Y', $abs)); + } + $isfuture = false; - $etime = time() - $abs; + $etime = $now - $abs; - if ($etime < 1 && $etime >= 0) { - return DI::l10n()->t('less than a second ago'); + if ($etime >= 0 && $etime < 1) { + return $compare_time ? DI::l10n()->t('less than a second ago') : DI::l10n()->t('today'); } if ($etime < 0){ @@ -349,15 +361,13 @@ class Temporal foreach ($a as $secs => $str) { $d = $etime / $secs; if ($d >= 1) { - $r = round($d); + $r = floor($d); // translators - e.g. 22 hours ago, 1 minute ago - if (!$format) { - if($isfuture){ - $format = DI::l10n()->t('in %1$d %2$s'); - } - else { - $format = DI::l10n()->t('%1$d %2$s ago'); - } + if($isfuture){ + $format = DI::l10n()->t('in %1$d %2$s'); + } + else { + $format = DI::l10n()->t('%1$d %2$s ago'); } return sprintf($format, $r, (($r == 1) ? $str[0] : $str[1]));