@@ -6,6 +6,7 @@ use Lc\SovBundle\Definition\SiteSettingDefinition; | |||
use Lc\SovBundle\Factory\Setting\SiteSettingFactory; | |||
use Lc\SovBundle\Repository\Setting\SiteSettingRepositoryQuery; | |||
use Lc\SovBundle\Repository\Setting\SiteSettingStore; | |||
use Lc\SovBundle\Solver\Setting\SettingSolver; | |||
class SiteSettingContainer | |||
{ | |||
@@ -13,17 +14,20 @@ class SiteSettingContainer | |||
protected SiteSettingDefinition $definition; | |||
protected SiteSettingRepositoryQuery $repositoryQuery; | |||
protected SiteSettingStore $store; | |||
protected SettingSolver $settingSolver; | |||
public function __construct( | |||
SiteSettingFactory $factory, | |||
SiteSettingDefinition $definition, | |||
SiteSettingRepositoryQuery $repositoryQuery, | |||
SiteSettingStore $store | |||
SiteSettingStore $store, | |||
SettingSolver $settingSolver | |||
) { | |||
$this->factory = $factory; | |||
$this->definition = $definition; | |||
$this->repositoryQuery = $repositoryQuery; | |||
$this->store = $store; | |||
$this->settingSolver = $settingSolver; | |||
} | |||
public function getFactory(): SiteSettingFactory | |||
@@ -45,4 +49,9 @@ class SiteSettingContainer | |||
{ | |||
return $this->store; | |||
} | |||
public function getSettingSolver(): SettingSolver | |||
{ | |||
return $this->settingSolver; | |||
} | |||
} |
@@ -6,6 +6,7 @@ use Lc\SovBundle\Builder\Ticket\TicketBuilder; | |||
use Lc\SovBundle\Factory\Ticket\TicketFactory; | |||
use Lc\SovBundle\Repository\Ticket\TicketRepositoryQuery; | |||
use Lc\SovBundle\Repository\Ticket\TicketStore; | |||
use Lc\SovBundle\Solver\Ticket\TicketSolver; | |||
class TicketContainer | |||
{ | |||
@@ -13,17 +14,20 @@ class TicketContainer | |||
protected TicketBuilder $builder; | |||
protected TicketRepositoryQuery $repositoryQuery; | |||
protected TicketStore $store; | |||
protected TicketSolver $solver; | |||
public function __construct( | |||
TicketFactory $factory, | |||
TicketBuilder $builder, | |||
TicketRepositoryQuery $repositoryQuery, | |||
TicketStore $store | |||
TicketStore $store, | |||
TicketSolver $solver | |||
) { | |||
$this->factory = $factory; | |||
$this->builder = $builder; | |||
$this->repositoryQuery = $repositoryQuery; | |||
$this->store = $store; | |||
$this->solver = $solver; | |||
} | |||
public function getFactory(): TicketFactory | |||
@@ -45,4 +49,9 @@ class TicketContainer | |||
{ | |||
return $this->store; | |||
} | |||
public function getSolver(): TicketSolver | |||
{ | |||
return $this->solver; | |||
} | |||
} |
@@ -84,7 +84,6 @@ abstract class AbstractAdminController extends EaAbstractCrudController | |||
RequestStack::class => RequestStack::class, | |||
EntityManagerInterface::class => EntityManagerInterface::class, | |||
FilterManager::class => FilterManager::class, | |||
FileContainer::class => FileContainer::class, | |||
NewsletterContainer::class => NewsletterContainer::class, | |||
ReminderContainer::class => ReminderContainer::class, | |||
@@ -429,7 +428,7 @@ abstract class AbstractAdminController extends EaAbstractCrudController | |||
$context = $this->get(AdminContextProvider::class)->getContext(); | |||
return $context->getCrudControllers()->findCrudFqcnByEntityFqcn( | |||
$this->get('em')->getEntityName($interface) | |||
$this->get(EntityManagerInterface::class)->getEntityName($interface) | |||
); | |||
} | |||
@@ -16,6 +16,12 @@ use Symfony\Component\Routing\Annotation\Route; | |||
class SettingAdminController extends AbstractController | |||
{ | |||
protected EntityManagerInterface $entityManager; | |||
public function __construct(EntityManagerInterface $entityManager) | |||
{ | |||
$this->entityManager = $entityManager; | |||
} | |||
/** | |||
* @Route("/admin/setting/site", name="sov_admin_setting_site") |
@@ -74,12 +74,12 @@ class TicketAdminController extends AbstractAdminController | |||
ChoiceField::new('type') | |||
->autocomplete() | |||
->setChoices( | |||
$translatorAdmin->transChoices(TicketModel::getTypeChoices(), 'Ticket', 'type') | |||
$translatorAdmin->transChoices($this->get(TicketContainer::class)->getSolver()->getTypeChoices(), 'Ticket', 'type') | |||
), | |||
ChoiceField::new('status') | |||
->autocomplete() | |||
->setChoices( | |||
$translatorAdmin->transChoices(TicketModel::getStatusChoices(), 'Ticket', 'status') | |||
$translatorAdmin->transChoices($this->get(TicketContainer::class)->getSolver()->getStatusChoices(), 'Ticket', 'status') | |||
) | |||
->setTemplatePath('@LcSov/admin/ticket/field/status.html.twig') |
@@ -8,32 +8,37 @@ use Lc\SovBundle\Factory\Setting\SiteSettingFactory; | |||
use Lc\SovBundle\Factory\Site\SiteFactory; | |||
use Lc\SovBundle\Repository\Setting\SiteSettingRepository; | |||
use Lc\SovBundle\Repository\Site\SiteRepository; | |||
use Lc\SovBundle\Repository\Site\SiteStore; | |||
use Lc\SovBundle\Solver\Setting\SettingSolver; | |||
use Symfony\Component\EventDispatcher\EventSubscriberInterface; | |||
use Symfony\Component\HttpKernel\KernelEvents; | |||
class SiteSettingEventSubscriber implements EventSubscriberInterface | |||
{ | |||
protected $em; | |||
protected $siteSettingDefinition; | |||
protected $siteSettingFactory; | |||
protected $siteSettingRepository; | |||
protected $siteRepository; | |||
protected $siteFactory; | |||
protected EntityManagerInterface $entityManager; | |||
protected SiteSettingDefinitionInterface $siteSettingDefinition; | |||
protected SiteSettingFactory $siteSettingFactory; | |||
protected SiteSettingRepository $siteSettingRepository; | |||
protected SiteStore $siteStore; | |||
protected SiteFactory $siteFactory; | |||
protected SettingSolver $settingSolver; | |||
public function __construct( | |||
EntityManagerInterface $em, | |||
EntityManagerInterface $entityManager, | |||
SiteSettingRepository $siteSettingRepository, | |||
SiteRepository $siteRepository, | |||
SiteStore $siteStore, | |||
SiteSettingDefinitionInterface $siteSettingDefinition, | |||
SiteSettingFactory $siteSettingFactory, | |||
SiteFactory $siteFactory | |||
SiteFactory $siteFactory, | |||
SettingSolver $settingSolver | |||
) { | |||
$this->em = $em; | |||
$this->entityManager = $entityManager; | |||
$this->siteSettingDefinition = $siteSettingDefinition; | |||
$this->siteSettingFactory = $siteSettingFactory; | |||
$this->siteSettingRepository = $siteSettingRepository; | |||
$this->siteRepository = $siteRepository; | |||
$this->siteStore = $siteStore; | |||
$this->siteFactory = $siteFactory; | |||
$this->settingSolver = $settingSolver; | |||
} | |||
public static function getSubscribedEvents() | |||
@@ -48,8 +53,8 @@ class SiteSettingEventSubscriber implements EventSubscriberInterface | |||
$site = $this->getSiteDefault(); | |||
if (!$site) { | |||
$site = $this->siteFactory->create('default'); | |||
$this->em->persist($site); | |||
$this->em->flush($site); | |||
$this->entityManager->persist($site); | |||
$this->entityManager->flush($site); | |||
} | |||
$settings = $this->siteSettingDefinition->getSettings(); | |||
@@ -57,7 +62,7 @@ class SiteSettingEventSubscriber implements EventSubscriberInterface | |||
foreach ($settings as $category => $settingList) { | |||
foreach ($settingList as $settingName => $setting) { | |||
$entitySetting = $site->getSetting($settingName); | |||
$entitySetting = $this->settingSolver->getSetting($site, $settingName); | |||
if (!$entitySetting) { | |||
@@ -79,7 +84,7 @@ class SiteSettingEventSubscriber implements EventSubscriberInterface | |||
$entitySetting = $factory->create($site, $setting['name'], $text, $date, $file); | |||
$this->em->persist($entitySetting); | |||
$this->entityManager->persist($entitySetting); | |||
} else { | |||
$methodGetValue = 'get' . ucfirst($setting['field']); | |||
if ($entitySetting->$methodGetValue() === null | |||
@@ -87,18 +92,18 @@ class SiteSettingEventSubscriber implements EventSubscriberInterface | |||
&& $setting['default'] !== null) { | |||
$methodSetValue = 'set' . ucfirst($setting['field']); | |||
$entitySetting->$methodSetValue($setting['default']); | |||
$this->em->update($entitySetting); | |||
$this->entityManager->update($entitySetting); | |||
} | |||
} | |||
} | |||
} | |||
$this->em->flush(); | |||
$this->entityManager->flush(); | |||
} | |||
public function getSiteDefault() | |||
{ | |||
return $this->siteRepository->findOneByDevAlias('default'); | |||
return $this->siteStore->getOneByDevAlias('default'); | |||
} | |||
} |
@@ -1,35 +0,0 @@ | |||
<?php | |||
namespace Lc\SovBundle\Model\Setting; | |||
//TODO à déplacer dans un solver | |||
trait EntitySettingTrait | |||
{ | |||
public function getSetting($name): ?SettingModel | |||
{ | |||
if ($this->getSettings()) { | |||
foreach ($this->getSettings() as $setting) { | |||
if ($setting->getName() == $name) { | |||
return $setting; | |||
} | |||
} | |||
} | |||
return null; | |||
} | |||
public function getSettingValue($name): ?string | |||
{ | |||
if ($this->getSettings()) { | |||
foreach ($this->getSettings() as $setting) { | |||
if ($setting->getName() == $name) { | |||
return $setting->getValue(); | |||
} | |||
} | |||
} | |||
return null; | |||
} | |||
} |
@@ -27,12 +27,12 @@ abstract class NewsModel extends AbstractFullEntity implements NewsInterface | |||
/** | |||
* @ORM\ManyToOne(targetEntity="Lc\SovBundle\Newsletter\NewsletterInsterface", inversedBy="news") | |||
* @ORM\ManyToOne(targetEntity="Lc\SovBundle\Model\Newsletter\NewsletterInterface", inversedBy="news") | |||
*/ | |||
protected $newsletter; | |||
/** | |||
* @ORM\ManyToOne(targetEntity="Lc\SovBundle\File\FileInsterface", cascade={"persist", "remove"}) | |||
* @ORM\ManyToOne(targetEntity="Lc\SovBundle\Model\File\FileInterface", cascade={"persist", "remove"}) | |||
*/ | |||
protected $image; | |||
@@ -5,7 +5,6 @@ namespace Lc\SovBundle\Model\Site; | |||
use Doctrine\Common\Collections\ArrayCollection; | |||
use Doctrine\Common\Collections\Collection; | |||
use Doctrine\ORM\Mapping as ORM; | |||
use Lc\SovBundle\Model\Setting\EntitySettingTrait; | |||
use Lc\SovBundle\Model\Setting\SiteSettingInterface; | |||
use Lc\SovBundle\Doctrine\EntityInterface; | |||
use Lc\SovBundle\Doctrine\Extension\DevAliasInterface; | |||
@@ -13,7 +12,6 @@ use Lc\SovBundle\Doctrine\Extension\DevAliasTrait; | |||
abstract class SiteModel implements SiteInterface, EntityInterface, DevAliasInterface | |||
{ | |||
use EntitySettingTrait; | |||
use DevAliasTrait; | |||
/** |
@@ -67,14 +67,19 @@ abstract class AbstractStore implements StoreInterface | |||
return $query->findOne(); | |||
} | |||
public function getOneByDevAlias(string $devAlias, bool $isOnline = true, $query = null) | |||
public function getOneByDevAlias(string $devAlias, $query = null) | |||
{ | |||
$query = $this->createDefaultQuery($query); | |||
$query->filterByDevAlias($devAlias); | |||
return $query->findOne(); | |||
} | |||
if ($isOnline) { | |||
$query->filterIsOnline(); | |||
} | |||
public function getOneOnlineByDevAlias(string $devAlias, $query = null) | |||
{ | |||
$query = $this->createDefaultQuery($query); | |||
$query | |||
->filterByDevAlias($devAlias) | |||
->filterIsOnline(); | |||
return $query->findOne(); | |||
} |
@@ -20,7 +20,7 @@ interface StoreInterface | |||
public function getOneBySlug(string $slug, bool $isOnline = true, $query = null); | |||
public function getOneByDevAlias(string $devAlias, bool $isOnline = true, $query = null); | |||
public function getOneByDevAlias(string $devAlias, $query = null); | |||
public function get($query = null); | |||
@@ -2,13 +2,37 @@ | |||
namespace Lc\SovBundle\Solver\Setting; | |||
use Lc\SovBundle\Doctrine\EntityInterface; | |||
use Lc\SovBundle\Model\Setting\SettingInterface; | |||
use Lc\SovBundle\Model\Ticket\TicketInterface; | |||
use Lc\SovBundle\Model\Ticket\TicketModel; | |||
use Lc\SovBundle\Model\Setting\SettingModel; | |||
class SettingSolver | |||
{ | |||
public function getValue(SettingInterface $setting) | |||
public function getSetting(EntityInterface $entity, string $name): ?SettingModel | |||
{ | |||
if ($entity->getSettings()) { | |||
foreach ($entity->getSettings() as $setting) { | |||
if ($setting->getName() == $name) { | |||
return $setting; | |||
} | |||
} | |||
} | |||
return null; | |||
} | |||
public function getSettingValue(EntityInterface $entity, string $name): ?string | |||
{ | |||
$setting = $this->getSetting($entity, $name); | |||
if($setting) { | |||
return $this->getValue($setting); | |||
} | |||
return null; | |||
} | |||
public function getValue(SettingInterface $setting): ?string | |||
{ | |||
if ($setting->getText()) { | |||
return $setting->getText(); | |||
@@ -17,5 +41,7 @@ class SettingSolver | |||
} elseif ($setting->getFile()) { | |||
return $setting->getFile(); | |||
} | |||
return null; | |||
} | |||
} |