. */ declare(strict_types=1); namespace App\Twig; use Twig\Attribute\AsTwigFunction; use App\Services\System\UpdateAvailableFacade; use Symfony\Bundle\SecurityBundle\Security; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; /** * Twig extension for update-related functions. */ final readonly class UpdateExtension { public function __construct(private UpdateAvailableFacade $updateAvailableManager, private Security $security) { } /** * Check if an update is available and the user has permission to see it. */ #[AsTwigFunction(name: 'is_update_available')] public function isUpdateAvailable(): bool { // Only show to users with the show_updates permission if (!$this->security->isGranted('@system.show_updates')) { return false; } return $this->updateAvailableManager->isUpdateAvailable(); } /** * Get the latest available version string. */ #[AsTwigFunction(name: 'get_latest_version')] public function getLatestVersion(): string { return $this->updateAvailableManager->getLatestVersionString(); } /** * Get the URL to the latest version release page. */ #[AsTwigFunction(name: 'get_latest_version_url')] public function getLatestVersionUrl(): string { return $this->updateAvailableManager->getLatestVersionUrl(); } }