From 7f1cb58b354f56653408f54ed0b2e4ec52c6e8d2 Mon Sep 17 00:00:00 2001 From: jannes Date: Sun, 21 Jun 2026 21:20:39 +0200 Subject: [PATCH] add free soldier limit warning to admin soldier list --- src/Admin/Controller/SoldierController.php | 9 ++++++++- src/EventSubscriber/SoldierLicenseListener.php | 3 ++- templates/admin/soldiers/list/list.html.twig | 13 +++++++++++++ translations/messages+intl-icu.en.yaml | 3 +++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/Admin/Controller/SoldierController.php b/src/Admin/Controller/SoldierController.php index 3fe96b9..ddb956b 100644 --- a/src/Admin/Controller/SoldierController.php +++ b/src/Admin/Controller/SoldierController.php @@ -21,6 +21,8 @@ #[Route('/soldiers', 'soldier')] class SoldierController extends AbstractCrudController { + public const FREE_SOLDIER_LIMIT = 5; + protected string $listTemplate = '@ForumifyMilhqPlugin/admin/soldiers/list/list.html.twig'; protected string $formTemplate = '@ForumifyMilhqPlugin/admin/soldiers/edit/form.html.twig'; @@ -56,7 +58,7 @@ public function create(Request $request): Response { if (!$this->pluginVersionChecker->isVersionInstalled('forumify/forumify-milhq-plugin', ['basic', 'premium'])) { $soldierCount = $this->soldierRepository->count([]); - if ($soldierCount >= 5) { + if ($soldierCount >= self::FREE_SOLDIER_LIMIT) { $this->addFlash('error', 'You have exceeded the maximum allowed soldiers for the free version of MILHQ.'); return $this->redirectToRoute($this->getRoute('list')); } @@ -84,6 +86,11 @@ protected function templateParams(array $params = []): array 'soldier' => $soldier, ]); + if (!$this->pluginVersionChecker->isVersionInstalled('forumify/forumify-milhq-plugin', ['basic', 'premium'])) { + $params['freeSoldierCount'] = $this->soldierRepository->count([]); + $params['freeSoldierLimit'] = self::FREE_SOLDIER_LIMIT; + } + return $params; } } diff --git a/src/EventSubscriber/SoldierLicenseListener.php b/src/EventSubscriber/SoldierLicenseListener.php index fdca611..8b4caf8 100644 --- a/src/EventSubscriber/SoldierLicenseListener.php +++ b/src/EventSubscriber/SoldierLicenseListener.php @@ -6,6 +6,7 @@ use Doctrine\Bundle\DoctrineBundle\Attribute\AsEntityListener; use Doctrine\ORM\Events; +use Forumify\Milhq\Admin\Controller\SoldierController; use Forumify\Milhq\Entity\Soldier; use Forumify\Milhq\Repository\SoldierRepository; use Forumify\Plugin\Service\PluginVersionChecker; @@ -27,7 +28,7 @@ public function checkLicense(): void } $count = $this->soldierRepository->count([]); - if ($count >= 5) { + if ($count >= SoldierController::FREE_SOLDIER_LIMIT) { throw new AccessDeniedException('You can only have up to 5 soldiers in the free version of MILHQ.'); } } diff --git a/templates/admin/soldiers/list/list.html.twig b/templates/admin/soldiers/list/list.html.twig index 8724a06..2596c87 100644 --- a/templates/admin/soldiers/list/list.html.twig +++ b/templates/admin/soldiers/list/list.html.twig @@ -3,6 +3,19 @@ {{ 'milhq.admin.soldiers.list.title'|trans }} {% endblock %} {% block body %} + {% if freeSoldierLimit is defined %} + {% if freeSoldierCount >= freeSoldierLimit %} +
+

{{ 'milhq.admin.soldiers.list.free_limit_reached'|trans({ 'count': freeSoldierCount, 'limit': freeSoldierLimit }) }}

+ {{ 'milhq.admin.soldiers.list.upgrade'|trans }} +
+ {% else %} +
+

{{ 'milhq.admin.soldiers.list.free_limit_info'|trans({ 'count': freeSoldierCount, 'limit': freeSoldierLimit }) }}

+ {{ 'milhq.admin.soldiers.list.upgrade'|trans }} +
+ {% endif %} + {% endif %}

{{ 'milhq.admin.soldiers.list.title'|trans }}

diff --git a/translations/messages+intl-icu.en.yaml b/translations/messages+intl-icu.en.yaml index aa617df..d834dc6 100644 --- a/translations/messages+intl-icu.en.yaml +++ b/translations/messages+intl-icu.en.yaml @@ -32,6 +32,9 @@ milhq: not_found: 'Soldier can not be found.' list: title: 'Soldiers' + free_limit_info: 'You are using the free version of MILHQ, which allows up to {limit} soldiers. You are currently using {count}/{limit} soldiers.' + free_limit_reached: 'You have reached the free soldier limit of {limit}/{limit}. New enlistments will fail until you upgrade.' + upgrade: 'Upgrade MILHQ to unlock unlimited soldiers.' actions: service: 'New Service Record' award: 'New Award'