vendor/moka/cms/src/MokaCmsBundle.php line 22

Open in your IDE?
  1. <?php
  2. namespace Moka\Cms;
  3. use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DoctrineOrmMappingsPass;
  4. use Doctrine\DBAL\Types\Type;
  5. use Moka\Cms\Bridge\Doctrine\Autoloader;
  6. use Moka\Cms\Bridge\Doctrine\Types\ComponentJsonType;
  7. use Moka\Cms\Bridge\Doctrine\Types\EntriesJsonType;
  8. use Moka\Cms\Bridge\Doctrine\Types\MatrixJsonType;
  9. use Moka\Cms\DependencyInjection\Compiler\EntityMappingPass;
  10. use Moka\Cms\Draft\Merger\MergerInterface;
  11. use Moka\Cms\Generator\FieldProcessor\FieldProcessorInterface;
  12. use Moka\Cms\Media\Type\TypeInterface;
  13. use Moka\Cms\Plugin\PluginInterface;
  14. use Moka\Cms\Renderer\RendererInterface;
  15. use Moka\Cms\Widget\WidgetInterface;
  16. use Symfony\Component\DependencyInjection\Compiler\PassConfig;
  17. use Symfony\Component\DependencyInjection\ContainerBuilder;
  18. use Symfony\Component\HttpKernel\Bundle\Bundle;
  19. class MokaCmsBundle extends Bundle
  20. {
  21.     private $autoloader;
  22.     public function __construct()
  23.     {
  24.         if (!Type::hasType(MatrixJsonType::NAME)) {
  25.             Type::addType(MatrixJsonType::NAMEMatrixJsonType::class);
  26.         }
  27.         if (!Type::hasType(ComponentJsonType::NAME)) {
  28.             Type::addType(ComponentJsonType::NAMEComponentJsonType::class);
  29.         }
  30.         if (!Type::hasType(EntriesJsonType::NAME)) {
  31.             Type::addType(EntriesJsonType::NAMEEntriesJsonType::class);
  32.         }
  33.     }
  34.     public function build(ContainerBuilder $container)
  35.     {
  36.         parent::build($container);
  37.         $container
  38.             ->addCompilerPass(DoctrineOrmMappingsPass::createXmlMappingDriver([realpath(__DIR__.'/Resources/config/doctrine') => 'Moka\Cms\Entity']), PassConfig::TYPE_BEFORE_OPTIMIZATION0)
  39.             ->addCompilerPass(new EntityMappingPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION0);
  40.         $container->registerForAutoconfiguration(WidgetInterface::class)->addTag('moka_cms.widget');
  41.         $container->registerForAutoconfiguration(RendererInterface::class)->addTag('moka_cms.renderer');
  42.         $container->registerForAutoconfiguration(TypeInterface::class)->addTag('moka_cms.media.type');
  43.         $container->registerForAutoconfiguration(MergerInterface::class)->addTag('moka_cms.entry.merger');
  44.         $container->registerForAutoconfiguration(FieldProcessorInterface::class)->addTag('moka_cms.generator.field.processor');
  45.         $container->registerForAutoconfiguration(PluginInterface::class)->addTag('moka_cms.plugin');
  46.     }
  47.     public function boot()
  48.     {
  49.         $entityDir $this->container->getParameter('moka_cms.doctrine.entity_dir');
  50.         $entityNamespace $this->container->getParameter('moka_cms.doctrine.entity_namespace');
  51.         $this->autoloader Autoloader::register($entityDir$entityNamespace);
  52.         /* @phpstan-ignore-next-line */
  53.         Type::getType(MatrixJsonType::NAME)->setSerializer($this->container->get('moka_cms.doctrine_json_serializer'));
  54.         /* @phpstan-ignore-next-line */
  55.         Type::getType(ComponentJsonType::NAME)->setSerializer($this->container->get('moka_cms.doctrine_json_serializer'));
  56.         /* @phpstan-ignore-next-line */
  57.         Type::getType(EntriesJsonType::NAME)->setSerializer($this->container->get('moka_cms.doctrine_json_serializer'));
  58.     }
  59.     public function shutdown()
  60.     {
  61.         if (null !== $this->autoloader) {
  62.             spl_autoload_unregister($this->autoloader);
  63.             $this->autoloader null;
  64.         }
  65.     }
  66. }