mirror of
https://github.com/YGGverse/HLState.git
synced 2025-03-12 21:41:13 +00:00
add ago time format
This commit is contained in:
parent
d83764e453
commit
6714546199
@ -30,3 +30,9 @@ services:
|
|||||||
|
|
||||||
# add more service definitions when explicit configuration is needed
|
# add more service definitions when explicit configuration is needed
|
||||||
# please note that last definitions always *replace* previous ones
|
# please note that last definitions always *replace* previous ones
|
||||||
|
|
||||||
|
App\Twig\AppExtension:
|
||||||
|
arguments:
|
||||||
|
- '@service_container'
|
||||||
|
tags:
|
||||||
|
- { name: twig.extension}
|
115
src/Twig/AppExtension.php
Normal file
115
src/Twig/AppExtension.php
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
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 ContainerInterface $container;
|
||||||
|
protected TranslatorInterface $translator;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
ContainerInterface $container,
|
||||||
|
TranslatorInterface $translator
|
||||||
|
)
|
||||||
|
{
|
||||||
|
$this->container = $container;
|
||||||
|
$this->translator = $translator;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFilters()
|
||||||
|
{
|
||||||
|
return
|
||||||
|
[
|
||||||
|
new TwigFilter(
|
||||||
|
'format_ago',
|
||||||
|
[
|
||||||
|
$this,
|
||||||
|
'formatAgo'
|
||||||
|
]
|
||||||
|
)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
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 ago'),
|
||||||
|
$this->translator->trans('years ago'),
|
||||||
|
$this->translator->trans(' years ago')
|
||||||
|
],
|
||||||
|
30 * 24 * 60 * 60 =>
|
||||||
|
[
|
||||||
|
$this->translator->trans('month ago'),
|
||||||
|
$this->translator->trans('months ago'),
|
||||||
|
$this->translator->trans(' months ago')
|
||||||
|
],
|
||||||
|
24 * 60 * 60 =>
|
||||||
|
[
|
||||||
|
$this->translator->trans('day ago'),
|
||||||
|
$this->translator->trans('days ago'),
|
||||||
|
$this->translator->trans(' days ago')
|
||||||
|
],
|
||||||
|
60 * 60 =>
|
||||||
|
[
|
||||||
|
$this->translator->trans('hour ago'),
|
||||||
|
$this->translator->trans('hours ago'),
|
||||||
|
$this->translator->trans(' hours ago')
|
||||||
|
],
|
||||||
|
60 =>
|
||||||
|
[
|
||||||
|
$this->translator->trans('minute ago'),
|
||||||
|
$this->translator->trans('minutes ago'),
|
||||||
|
$this->translator->trans(' minutes ago')
|
||||||
|
],
|
||||||
|
1 =>
|
||||||
|
[
|
||||||
|
$this->translator->trans('second ago'),
|
||||||
|
$this->translator->trans('seconds ago'),
|
||||||
|
$this->translator->trans(' seconds ago')
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($values as $key => $value)
|
||||||
|
{
|
||||||
|
$result = $diff / $key;
|
||||||
|
|
||||||
|
if ($result >= 1)
|
||||||
|
{
|
||||||
|
$round = round($result);
|
||||||
|
|
||||||
|
return sprintf(
|
||||||
|
'%s %s',
|
||||||
|
$round,
|
||||||
|
$this->plural(
|
||||||
|
$round,
|
||||||
|
$value
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function plural(int $number, array $texts)
|
||||||
|
{
|
||||||
|
$cases = [2, 0, 1, 1, 1, 2];
|
||||||
|
|
||||||
|
return $texts[(($number % 100) > 4 && ($number % 100) < 20) ? 2 : $cases[min($number % 10, 5)]];
|
||||||
|
}
|
||||||
|
}
|
@ -41,8 +41,16 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td class="text-align-left">{{ server.info.Map }}</td>
|
<td class="text-align-left">{{ server.info.Map }}</td>
|
||||||
<td class="text-align-left">{{ server.added | format_date }}</td>
|
<td class="text-align-left">
|
||||||
<td class="text-align-left">{{ server.online | format_date }}</td>
|
<span title="{{ server.added | date('r') }}">
|
||||||
|
{{ server.added | format_ago }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td class="text-align-left">
|
||||||
|
<span title="{{ server.online | date('r') }}">
|
||||||
|
{{ server.online | format_ago }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
<td class="text-align-center">{{ server.connections }}{#{{ server.info.Players }}#}</td>
|
<td class="text-align-center">{{ server.connections }}{#{{ server.info.Players }}#}</td>
|
||||||
<td class="text-align-center">{{ server.info.MaxPlayers }}</td>
|
<td class="text-align-center">{{ server.info.MaxPlayers }}</td>
|
||||||
<td class="text-align-center">{{ server.info.Bots }}</td>
|
<td class="text-align-center">{{ server.info.Bots }}</td>
|
||||||
|
@ -135,7 +135,11 @@
|
|||||||
</tr>
|
</tr>
|
||||||
{% for online in server.online %}
|
{% for online in server.online %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="text-align-left">{{ online.time | date('r') }}</td>
|
<td class="text-align-left">
|
||||||
|
<span title="{{ online.time | date('r') }}">
|
||||||
|
{{ online.time | format_ago }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
<td class="text-align-center">{{ online.players }}</td>
|
<td class="text-align-center">{{ online.players }}</td>
|
||||||
<td class="text-align-center">{{ online.bots }}</td>
|
<td class="text-align-center">{{ online.bots }}</td>
|
||||||
<td class="text-align-center">{{ online.total }}</td>
|
<td class="text-align-center">{{ online.total }}</td>
|
||||||
@ -170,8 +174,16 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="text-align-center">{{ player.frags }}</td>
|
<td class="text-align-center">{{ player.frags }}</td>
|
||||||
<td class="text-align-left">{{ player.name }}</td>
|
<td class="text-align-left">{{ player.name }}</td>
|
||||||
<td class="text-align-left">{{ player.joined | format_date }}</td>
|
<td class="text-align-left">
|
||||||
<td class="text-align-left">{{ player.online | format_date }}</td>
|
<span title="{{ player.joined | date('r') }}">
|
||||||
|
{{ player.joined | format_ago }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td class="text-align-left">
|
||||||
|
<span title="{{ player.online | date('r') }}">
|
||||||
|
{{ player.online | format_ago }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user