]> git.mxchange.org Git - friendica.git/commitdiff
Add ClockInterface dependency to Temporal::getRelativeDate
authorHypolite Petovan <hypolite@mrpetovan.com>
Wed, 28 Dec 2022 05:31:20 +0000 (00:31 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Wed, 28 Dec 2022 05:31:20 +0000 (00:31 -0500)
- Remove unused $format parameter

src/Module/Moderation/BaseUsers.php
src/Util/Temporal.php
tests/src/Util/TemporalTest.php

index 14bbd607665f2cfbb3dd82d353b43c980d3a0d88..db1588d0bbd8b6351680209af592e1f2b74536eb 100644 (file)
@@ -137,7 +137,7 @@ abstract class BaseUsers extends BaseModeration
                        $user['account_type']     = ($user['page_flags_raw'] == 0) ? $account_types[$user['account-type']] : '';
 
                        $user['register_date'] = Temporal::getRelativeDate($user['register_date']);
-                       $user['login_date']    = Temporal::getRelativeDate($user['last-activity'], null, false);
+                       $user['login_date']    = Temporal::getRelativeDate($user['last-activity'], false);
                        $user['lastitem_date'] = Temporal::getRelativeDate($user['last-item']);
                        $user['is_admin']      = in_array($user['email'], $adminlist);
                        $user['is_deletable']  = !$user['account_removed'] && intval($user['uid']) != $this->session->getLocalUserId();
index 24d7d7e23d31837cf489c8316fc8feb113350023..c3f744ba630796e156311f3a70db096e091842b0 100644 (file)
@@ -26,6 +26,8 @@ use DateTimeZone;
 use Friendica\Core\Renderer;
 use Friendica\Database\DBA;
 use Friendica\DI;
+use Friendica\Util\Clock\SystemClock;
+use Psr\Clock\ClockInterface;
 
 /**
  * Temporal class
@@ -305,19 +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()
-        * @param bool   $compare_time Compare date (false) or date and time (true). "true" is default.
-        *    <tt>%1$d %2$s ago</tt>, 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
+        *                                  <tt>%1$d %2$s ago</tt>, e.g. 22 hours ago, 1 minute ago
         *
         * @return string with relative date
         */
-       public static function getRelativeDate(string $posted_date = null, string $format = null, bool $compare_time = true): 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);
 
@@ -325,8 +329,8 @@ class Temporal
                        return DI::l10n()->t('never');
                }
 
-               $now = time();
-       
+               $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));
@@ -335,7 +339,7 @@ class Temporal
                $isfuture = false;
                $etime = $now - $abs;
 
-               if ($etime < 1 && $etime >= 0) {
+               if ($etime >= 0 && $etime < 1) {
                        return $compare_time ? DI::l10n()->t('less than a second ago') : DI::l10n()->t('today');
                }
 
@@ -359,13 +363,11 @@ class Temporal
                        if ($d >= 1) {
                                $r = round($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]));
index cfe1af5e231e1c84a4b43f9a277c81ba8697db46..fe0429af810d500097dd86d445447c1d4fa1d0e3 100644 (file)
@@ -22,6 +22,8 @@
 namespace Friendica\Test\src\Util;
 
 use Friendica\DI;
+use Friendica\Util\Clock\FrozenClock;
+use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Temporal;
 use PHPUnit\Framework\TestCase;
 
@@ -35,26 +37,27 @@ class TemporalTest extends TestCase
         */
        public function testGetRelativeDate()
        {
-               // "never" would should be returned
+               $clock = new FrozenClock();
+
+               // "never" should be returned
                self::assertEquals(
-                       Temporal::getRelativeDate(''),
+                       Temporal::getRelativeDate('', true, $clock),
                        DI::l10n()->t('never')
                );
 
                // Format current date/time into "MySQL" format
-               $now = date('Y-m-d H:i:s');
                self::assertEquals(
-                       Temporal::getRelativeDate($now),
+                       Temporal::getRelativeDate($clock->now()->format(DateTimeFormat::MYSQL), true, $clock),
                        DI::l10n()->t('less than a second ago')
                );
 
                // Format current date/time - 1 minute into "MySQL" format
-               $minuteAgo = date('Y-m-d H:i:s', time() - 60);
+               $minuteAgo = date('Y-m-d H:i:s', $clock->now()->getTimestamp() - 60);
                $format    = DI::l10n()->t('%1$d %2$s ago');
 
                // Should be both equal
                self::assertEquals(
-                       Temporal::getRelativeDate($minuteAgo),
+                       Temporal::getRelativeDate($minuteAgo, true, $clock),
                        sprintf($format, 1, DI::l10n()->t('minute'))
                );
        }