<?php
namespace JulienVP\CoreBundle\Model;
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\Persistence\ObjectManager;
use JulienVP\CoreBundle\Entity\SystemConfiguration;
use JulienVP\CoreBundle\Repository\SystemConfigurationRepository;
use JulienVP\LogBundle\Model\SiteLogManager;
use Symfony\Component\Security\Core\Security;
class SystemConfigurationManager
{
private ObjectManager $em;
private SiteLogManager $logger;
private Security $security;
private SystemConfigurationRepository $systemConfigurationRepository;
public function __construct(ManagerRegistry $managerRegistry, Security $security, SiteLogManager $logger)
{
$this->em = $managerRegistry->getManager();
$this->logger = $logger;
$this->security = $security;
$this->systemConfigurationRepository = $this->em->getRepository(SystemConfiguration::class);
}
/**
* Gets a particular system configuration variable with a key identifier.
* @param string $key The key that identifies the system configuration variable.
*/
public function get(string $key): ?string
{
$systemConfiguration = $this->systemConfigurationRepository->findOneBy(['name' => $key]);
if ($systemConfiguration !== null) {
if (!$systemConfiguration->isDev() || $this->security->isGranted('ROLE_DEV')) {
return $systemConfiguration->getValue();
}
}
return null;
}
/**
* Gets a particular system configuration variable with a key identifier.
* @param string $key The key that identifies the system configuration variable.
*/
public function getObj(string $key): ?SystemConfiguration
{
return $this->systemConfigurationRepository->findOneBy(['name' => $key]);
}
}