diff --git a/src/Controller/PageController.php b/src/Controller/PageController.php index 01b7296..6c7e501 100644 --- a/src/Controller/PageController.php +++ b/src/Controller/PageController.php @@ -12,7 +12,6 @@ use Symfony\Component\HttpFoundation\Request; use App\Service\UserService; use App\Service\PageService; use App\Service\TorrentService; -use App\Service\TimeService; class PageController extends AbstractController { diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index 271b723..c51436b 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -9,7 +9,6 @@ use Symfony\Component\HttpFoundation\Request; use App\Service\ActivityService; use App\Service\UserService; -use App\Service\TimeService; class UserController extends AbstractController { @@ -38,8 +37,7 @@ class UserController extends AbstractController public function index( Request $request, ActivityService $activityService, - UserService $userService, - TimeService $timeService + UserService $userService ): Response { // Init user session @@ -73,9 +71,7 @@ class UserController extends AbstractController ) ], 'type' => 'join', - 'added' => $timeService->ago( - $activity->getAdded() - ) + 'added' => $activity->getAdded() ]; } */ @@ -100,8 +96,7 @@ class UserController extends AbstractController )] public function profile( Request $request, - UserService $userService, - TimeService $timeService + UserService $userService ): Response { // Init user @@ -161,9 +156,7 @@ class UserController extends AbstractController 'status' => $user->isStatus(), 'locale' => $user->getLocale(), 'locales' => $user->getLocales(), - 'added' => $timeService->ago( - $user->getAdded() - ), + 'added' => $user->getAdded(), 'identicon' => $userService->identicon( $user->getAddress(), 48 @@ -187,8 +180,7 @@ class UserController extends AbstractController public function info( int $id, Request $request, - UserService $userService, - TimeService $timeService): Response + UserService $userService): Response { // Init user if (!$user = $userService->get($id)) @@ -208,9 +200,7 @@ class UserController extends AbstractController 'status' => $user->isStatus(), 'locale' => $user->getLocale(), 'locales' => $user->getLocales(), - 'added' => $timeService->ago( - $user->getAdded() - ), + 'added' => $user->getAdded(), 'identicon' => $userService->identicon( $user->getAddress(), 48 diff --git a/src/Service/TimeService.php b/src/Service/TimeService.php deleted file mode 100644 index d6cd530..0000000 --- a/src/Service/TimeService.php +++ /dev/null @@ -1,61 +0,0 @@ -translator = $translator; - } - - public function ago(int $time): string - { - $diff = time() - $time; - - if ($diff < 1) - { - return $this->translator->trans('now'); - } - - $values = - [ - 365 * 24 * 60 * 60 => $this->translator->trans('year'), - 30 * 24 * 60 * 60 => $this->translator->trans('month'), - 24 * 60 * 60 => $this->translator->trans('day'), - 60 * 60 => $this->translator->trans('hour'), - 60 => $this->translator->trans('minute'), - 1 => $this->translator->trans('second') - ]; - - $plural = [ - $this->translator->trans('year') => $this->translator->trans('years'), - $this->translator->trans('month') => $this->translator->trans('months'), - $this->translator->trans('day') => $this->translator->trans('days'), - $this->translator->trans('hour') => $this->translator->trans('hours'), - $this->translator->trans('minute') => $this->translator->trans('minutes'), - $this->translator->trans('second') => $this->translator->trans('seconds') - ]; - - foreach ($values as $key => $value) - { - $result = $diff / $key; - - if ($result >= 1) - { - $round = round($result); - - return sprintf( - '%s %s %s', - $round, - $round > 1 ? $plural[$value] : $value, - $this->translator->trans('ago') - ); - } - } - } -} \ No newline at end of file diff --git a/src/Twig/AppExtension.php b/src/Twig/AppExtension.php index 757d40e..50d142d 100644 --- a/src/Twig/AppExtension.php +++ b/src/Twig/AppExtension.php @@ -3,18 +3,22 @@ namespace App\Twig; use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Contracts\Translation\TranslatorInterface; use Twig\Extension\AbstractExtension; use Twig\TwigFilter; class AppExtension extends AbstractExtension { - protected $container; + protected ContainerInterface $container; + protected TranslatorInterface $translator; public function __construct( - ContainerInterface $container + ContainerInterface $container, + TranslatorInterface $translator ) { $this->container = $container; + $this->translator = $translator; } public function getFilters() @@ -28,6 +32,13 @@ class AppExtension extends AbstractExtension 'formatBytes' ] ), + new TwigFilter( + 'format_ago', + [ + $this, + 'formatAgo' + ] + ), ]; } @@ -37,19 +48,67 @@ class AppExtension extends AbstractExtension ) : string { $size = [ - 'B', - 'Kb', - 'Mb', - 'Gb', - 'Tb', - 'Pb', - 'Eb', - 'Zb', - 'Yb' + $this->translator->trans('B'), + $this->translator->trans('Kb'), + $this->translator->trans('Mb'), + $this->translator->trans('Gb'), + $this->translator->trans('Tb'), + $this->translator->trans('Pb'), + $this->translator->trans('Eb'), + $this->translator->trans('Zb'), + $this->translator->trans('Yb') ]; $factor = floor((strlen($bytes) - 1) / 3); return sprintf("%.{$precision}f", $bytes / pow(1024, $factor)) . ' ' . @$size[$factor]; } + + public function formatAgo( + int $time, + ) : string + { + $diff = time() - $time; + + if ($diff < 1) + { + return $this->translator->trans('now'); + } + + $values = + [ + 365 * 24 * 60 * 60 => $this->translator->trans('year'), + 30 * 24 * 60 * 60 => $this->translator->trans('month'), + 24 * 60 * 60 => $this->translator->trans('day'), + 60 * 60 => $this->translator->trans('hour'), + 60 => $this->translator->trans('minute'), + 1 => $this->translator->trans('second') + ]; + + $plural = [ + $this->translator->trans('year') => $this->translator->trans('years'), + $this->translator->trans('month') => $this->translator->trans('months'), + $this->translator->trans('day') => $this->translator->trans('days'), + $this->translator->trans('hour') => $this->translator->trans('hours'), + $this->translator->trans('minute') => $this->translator->trans('minutes'), + $this->translator->trans('second') => $this->translator->trans('seconds') + ]; + + foreach ($values as $key => $value) + { + $result = $diff / $key; + + if ($result >= 1) + { + $round = round($result); + + return sprintf( + '%s %s %s', + $round, + $round > 1 ? $plural[$value] : $value, + $this->translator->trans('ago') + ); + } + } + } } \ No newline at end of file diff --git a/templates/default/user/info.html.twig b/templates/default/user/info.html.twig index 4c31c87..ad0f3b0 100644 --- a/templates/default/user/info.html.twig +++ b/templates/default/user/info.html.twig @@ -13,7 +13,7 @@ {{ 'Joined'|trans }} - {{ user.added }} + {{ user.added | format_ago }} {{ 'Access'|trans }} diff --git a/templates/default/user/profile.html.twig b/templates/default/user/profile.html.twig index 997b3fa..03c9ec4 100644 --- a/templates/default/user/profile.html.twig +++ b/templates/default/user/profile.html.twig @@ -28,7 +28,7 @@ {{ 'Joined'|trans }} - {{ user.added }} + {{ user.added | format_ago }} {{ 'Access'|trans }}