You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
2.6KB

  1. <?php
  2. namespace Lc\SovBundle\Definition;
  3. use App\Container\LoyaltyProgram\LoyaltyProgramChainingContainer;
  4. use App\Container\Merchant\LeavePeriodContainer;
  5. use Lc\SovBundle\Container\ComponentContainer;
  6. use Lc\SovBundle\Container\File\FileContainer;
  7. use Lc\SovBundle\Container\Newsletter\NewsletterContainer;
  8. use Lc\SovBundle\Container\Reminder\ReminderContainer;
  9. use Lc\SovBundle\Container\Setting\SiteSettingContainer;
  10. use Lc\SovBundle\Container\Site\NewsContainer;
  11. use Lc\SovBundle\Container\Site\PageContainer;
  12. use Lc\SovBundle\Container\Site\SiteContainer;
  13. use Lc\SovBundle\Container\Ticket\TicketContainer;
  14. use Lc\SovBundle\Container\Ticket\TicketMessageContainer;
  15. use Lc\SovBundle\Container\User\GroupUserContainer;
  16. use Lc\SovBundle\Container\User\UserContainer;
  17. use function Symfony\Component\String\u;
  18. class ApplicationDefinition
  19. {
  20. public static function getContainerList(): array
  21. {
  22. return [
  23. FileContainer::class,
  24. NewsletterContainer::class,
  25. ReminderContainer::class,
  26. NewsContainer::class,
  27. PageContainer::class,
  28. SiteContainer::class,
  29. TicketContainer::class,
  30. TicketMessageContainer::class,
  31. GroupUserContainer::class,
  32. UserContainer::class,
  33. SiteSettingContainer::class,
  34. ComponentContainer::class,
  35. ];
  36. }
  37. public function getContainerByEntityFqcn(string $entityFqcn)
  38. {
  39. foreach (static::getContainerList() as $containerFqcn) {
  40. if ($this->isContainerManageEntity($containerFqcn)) {
  41. if ($containerFqcn::getEntityFqcn() == $entityFqcn) {
  42. return $containerFqcn;
  43. }
  44. }
  45. }
  46. return null;
  47. }
  48. public function isContainerManageEntity(string $containerFqcn)
  49. {
  50. if (method_exists($containerFqcn, 'getEntityFqcn')) {
  51. return true;
  52. }
  53. return false;
  54. }
  55. public static function getSubscribedContainerServices(): array
  56. {
  57. $array = [];
  58. foreach (static::getContainerList() as $container) {
  59. $array[$container] = $container;
  60. }
  61. return $array;
  62. }
  63. public static function getContainerListForTwigGlobals(): array
  64. {
  65. $array = [];
  66. foreach (static::getContainerList() as $containerNamespace) {
  67. //récupère le nom du fichier dans le namespace du container
  68. $key = u(substr($containerNamespace, strrpos($containerNamespace, '\\')))->snake();
  69. $array[$key->toString()] = '@' . $containerNamespace;
  70. }
  71. return $array;
  72. }
  73. }