vendor/dachcom-digital/seo/src/SeoBundle/SeoBundle.php line 20

Open in your IDE?
  1. <?php
  2. namespace SeoBundle;
  3. use SeoBundle\DependencyInjection\Compiler\ThirdParty\RemoveNewsMetaDataListenerPass;
  4. use SeoBundle\Tool\Install;
  5. use SeoBundle\DependencyInjection\Compiler\MetaDataExtractorPass;
  6. use SeoBundle\DependencyInjection\Compiler\MetaDataIntegratorPass;
  7. use SeoBundle\DependencyInjection\Compiler\MetaMiddlewareAdapterPass;
  8. use SeoBundle\DependencyInjection\Compiler\ThirdParty\RemovePimcoreListenerPass;
  9. use SeoBundle\DependencyInjection\Compiler\ThirdParty\RemoveCoreShopExtractorListenerPass;
  10. use SeoBundle\DependencyInjection\Compiler\ResourceProcessorPass;
  11. use SeoBundle\DependencyInjection\Compiler\IndexWorkerPass;
  12. use Pimcore\Extension\Bundle\AbstractPimcoreBundle;
  13. use Pimcore\Extension\Bundle\Traits\PackageVersionTrait;
  14. use Symfony\Component\DependencyInjection\Compiler\PassConfig;
  15. use Symfony\Component\DependencyInjection\ContainerBuilder;
  16. use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DoctrineOrmMappingsPass;
  17. class SeoBundle extends AbstractPimcoreBundle
  18. {
  19.     use PackageVersionTrait;
  20.     public const PACKAGE_NAME 'dachcom-digital/seo';
  21.     public function getInstaller(): Install
  22.     {
  23.         return $this->container->get(Install::class);
  24.     }
  25.     public function build(ContainerBuilder $container): void
  26.     {
  27.         $this->configureDoctrineExtension($container);
  28.         $container->addCompilerPass(new IndexWorkerPass());
  29.         $container->addCompilerPass(new ResourceProcessorPass());
  30.         $container->addCompilerPass(new MetaDataExtractorPass());
  31.         $container->addCompilerPass(new MetaDataIntegratorPass());
  32.         $container->addCompilerPass(new MetaMiddlewareAdapterPass());
  33.         // third party handling
  34.         $container->addCompilerPass(new RemovePimcoreListenerPass(), PassConfig::TYPE_BEFORE_REMOVING250);
  35.         $container->addCompilerPass(new RemoveNewsMetaDataListenerPass(), PassConfig::TYPE_BEFORE_REMOVING250);
  36.         $container->addCompilerPass(new RemoveCoreShopExtractorListenerPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION250);
  37.     }
  38.     protected function getComposerPackageName(): string
  39.     {
  40.         return self::PACKAGE_NAME;
  41.     }
  42.     protected function configureDoctrineExtension(ContainerBuilder $container): void
  43.     {
  44.         $container->addCompilerPass(
  45.             DoctrineOrmMappingsPass::createYamlMappingDriver(
  46.                 [$this->getNameSpacePath() => $this->getNamespaceName()],
  47.                 ['seo.persistence.doctrine.manager'],
  48.                 'seo.persistence.doctrine.enabled'
  49.             )
  50.         );
  51.     }
  52.     public function getCssPaths(): array
  53.     {
  54.         return [
  55.             '/bundles/seo/css/admin.css'
  56.         ];
  57.     }
  58.     public function getJsPaths(): array
  59.     {
  60.         return [
  61.             '/bundles/seo/js/plugin.js',
  62.             '/bundles/seo/js/metaData/extension/localizedFieldExtension.js',
  63.             '/bundles/seo/js/metaData/extension/integratorValueFetcher.js',
  64.             '/bundles/seo/js/metaData/extension/hrefFieldExtension.js',
  65.             '/bundles/seo/js/metaData/components/seoHrefTextField.js',
  66.             '/bundles/seo/js/metaData/abstractMetaDataPanel.js',
  67.             '/bundles/seo/js/metaData/documentMetaDataPanel.js',
  68.             '/bundles/seo/js/metaData/objectMetaDataPanel.js',
  69.             '/bundles/seo/js/metaData/integrator/abstractIntegrator.js',
  70.             '/bundles/seo/js/metaData/integrator/titleDescriptionIntegrator.js',
  71.             '/bundles/seo/js/metaData/integrator/htmlTagIntegrator.js',
  72.             '/bundles/seo/js/metaData/integrator/schemaIntegrator.js',
  73.             '/bundles/seo/js/metaData/integrator/abstractPropertyIntegrator.js',
  74.             '/bundles/seo/js/metaData/integrator/propertyIntegrator/item.js',
  75.             '/bundles/seo/js/metaData/integrator/twitterCardIntegrator.js',
  76.             '/bundles/seo/js/metaData/integrator/ogIntegrator.js',
  77.         ];
  78.     }
  79.     protected function getNamespaceName(): string
  80.     {
  81.         return 'SeoBundle\Model';
  82.     }
  83.     protected function getNameSpacePath(): string
  84.     {
  85.         return sprintf(
  86.             '%s/Resources/config/doctrine/%s',
  87.             $this->getPath(),
  88.             'model'
  89.         );
  90.     }
  91. }