From 0092e6f443a090df632ca3f359fb248c2c21fda5 Mon Sep 17 00:00:00 2001 From: Stefan Hagspiel Date: Fri, 11 Aug 2023 09:09:25 +0200 Subject: [PATCH] improve seo dependency --- .../Compiler/SchemaGeneratorAdapterPass.php | 13 ++++++++++++- src/DependencyInjection/SchemaExtension.php | 9 ++------- src/EventListener/SchemaListener.php | 5 ----- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/DependencyInjection/Compiler/SchemaGeneratorAdapterPass.php b/src/DependencyInjection/Compiler/SchemaGeneratorAdapterPass.php index 24852d6..f0cd14c 100644 --- a/src/DependencyInjection/Compiler/SchemaGeneratorAdapterPass.php +++ b/src/DependencyInjection/Compiler/SchemaGeneratorAdapterPass.php @@ -2,6 +2,7 @@ namespace SchemaBundle\DependencyInjection\Compiler; +use SchemaBundle\EventListener\SchemaListener; use SchemaBundle\Registry\SchemaGeneratorRegistry; use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; @@ -12,11 +13,15 @@ final class SchemaGeneratorAdapterPass implements CompilerPassInterface { public function process(ContainerBuilder $container): void { + if ($this->hasSeoBundle($container) && $container->hasDefinition(SchemaListener::class)) { + $container->removeDefinition(SchemaListener::class); + } + foreach ($container->findTaggedServiceIds('schema.generator', true) as $id => $tags) { $definition = $container->getDefinition(SchemaGeneratorRegistry::class); - if ($container->hasParameter('schema.third_party.seo.enabled') && $container->getParameter('schema.third_party.seo.enabled') === true) { + if ($this->hasSeoBundle($container)) { $message = sprintf( 'Cannot register schema generator "%s" because you have installed the SEO Bundle. If you want to add some fragment generator (via twig) use the "schema.fragment_generator" tag. Read more about it here: %s', $id, @@ -38,4 +43,10 @@ public function process(ContainerBuilder $container): void } } } + + private function hasSeoBundle(ContainerBuilder $container): bool + { + /** @phpstan-ignore-next-line */ + return $container->hasParameter('schema.third_party.seo.enabled') && $container->getParameter('schema.third_party.seo.enabled') === true; + } } diff --git a/src/DependencyInjection/SchemaExtension.php b/src/DependencyInjection/SchemaExtension.php index 417ec88..7cee43f 100644 --- a/src/DependencyInjection/SchemaExtension.php +++ b/src/DependencyInjection/SchemaExtension.php @@ -20,20 +20,15 @@ public function load(array $configs, ContainerBuilder $container): void $loader->load('services.yaml'); } - public function prepend(ContainerBuilder $container) + public function prepend(ContainerBuilder $container): void { - if ($container->hasExtension('seo')) { + if (!$container->hasExtension('seo')) { return; } $loader = new YamlFileLoader($container, new FileLocator([__DIR__ . '/../../config'])); $container->setParameter('schema.third_party.seo.enabled', true); - $loader->load('third_party/seo.yaml'); - - if ($container->hasDefinition(SchemaListener::class)) { - $container->removeDefinition(SchemaListener::class); - } } } diff --git a/src/EventListener/SchemaListener.php b/src/EventListener/SchemaListener.php index 8434677..945a2c0 100644 --- a/src/EventListener/SchemaListener.php +++ b/src/EventListener/SchemaListener.php @@ -32,15 +32,10 @@ public static function getSubscribedEvents(): array public function onKernelRequest(RequestEvent $event): void { $request = $event->getRequest(); - if ($event->isMainRequest() === false) { return; } - if ($this->pimcoreContextResolver->matchesPimcoreContext($request, PimcoreContextResolver::CONTEXT_ADMIN)) { - return; - } - if (!$this->pimcoreContextResolver->matchesPimcoreContext($request, PimcoreContextResolver::CONTEXT_DEFAULT)) { return; }