diff --git a/lib/Container/Compiler/AggregateFacetBuilderVisitorPass.php b/lib/Container/Compiler/AggregateFacetBuilderVisitorPass.php index 57663b16f..b26da684f 100644 --- a/lib/Container/Compiler/AggregateFacetBuilderVisitorPass.php +++ b/lib/Container/Compiler/AggregateFacetBuilderVisitorPass.php @@ -24,15 +24,21 @@ class AggregateFacetBuilderVisitorPass implements CompilerPassInterface */ public function process(ContainerBuilder $container) { - if (!$container->hasDefinition('ezpublish.search.solr.query.content.facet_builder_visitor.aggregate')) { + $this->processVisitors($container, 'content'); + $this->processVisitors($container, 'location'); + } + + private function processVisitors(ContainerBuilder $container, $name = 'content') + { + if (!$container->hasDefinition("ezpublish.search.solr.query.${name}.facet_builder_visitor.aggregate")) { return; } $aggregateFacetBuilderVisitorDefinition = $container->getDefinition( - 'ezpublish.search.solr.query.content.facet_builder_visitor.aggregate' + "ezpublish.search.solr.query.${name}.facet_builder_visitor.aggregate" ); - foreach ($container->findTaggedServiceIds('ezpublish.search.solr.query.content.facet_builder_visitor') as $id => $attributes) { + foreach ($container->findTaggedServiceIds("ezpublish.search.solr.query.${name}.facet_builder_visitor") as $id => $attributes) { $aggregateFacetBuilderVisitorDefinition->addMethodCall( 'addVisitor', array( diff --git a/lib/Resources/config/container/solr/facet_builder_visitors.yml b/lib/Resources/config/container/solr/facet_builder_visitors.yml index b9caf4b84..deea0f11b 100644 --- a/lib/Resources/config/container/solr/facet_builder_visitors.yml +++ b/lib/Resources/config/container/solr/facet_builder_visitors.yml @@ -8,13 +8,16 @@ services: class: "%ezpublish.search.solr.query.common.facet_builder_visitor.content_type.class%" tags: - {name: ezpublish.search.solr.query.content.facet_builder_visitor} + - {name: ezpublish.search.solr.query.location.facet_builder_visitor} ezpublish.search.solr.query.common.facet_builder_visitor.section: class: "%ezpublish.search.solr.query.common.facet_builder_visitor.section.class%" tags: - {name: ezpublish.search.solr.query.content.facet_builder_visitor} + - {name: ezpublish.search.solr.query.location.facet_builder_visitor} ezpublish.search.solr.query.common.facet_builder_visitor.user: class: "%ezpublish.search.solr.query.common.facet_builder_visitor.user.class%" tags: - {name: ezpublish.search.solr.query.content.facet_builder_visitor} + - {name: ezpublish.search.solr.query.location.facet_builder_visitor} diff --git a/tests/lib/Container/Compiler/AggregateFacetBuilderVisitorPassTest.php b/tests/lib/Container/Compiler/AggregateFacetBuilderVisitorPassTest.php index a1484db3b..3b73adc14 100644 --- a/tests/lib/Container/Compiler/AggregateFacetBuilderVisitorPassTest.php +++ b/tests/lib/Container/Compiler/AggregateFacetBuilderVisitorPassTest.php @@ -25,6 +25,10 @@ protected function setUp() 'ezpublish.search.solr.query.content.facet_builder_visitor.aggregate', new Definition() ); + $this->setDefinition( + 'ezpublish.search.solr.query.location.facet_builder_visitor.aggregate', + new Definition() + ); } /** @@ -45,6 +49,11 @@ public function testAddVisitor() $def->addTag('ezpublish.search.solr.query.content.facet_builder_visitor'); $this->setDefinition($serviceId, $def); + $serviceId2 = 'service_id2'; + $def = new Definition(); + $def->addTag('ezpublish.search.solr.query.location.facet_builder_visitor'); + $this->setDefinition($serviceId2, $def); + $this->compile(); $this->assertContainerBuilderHasServiceDefinitionWithMethodCall( @@ -52,5 +61,11 @@ public function testAddVisitor() 'addVisitor', array(new Reference($serviceId)) ); + + $this->assertContainerBuilderHasServiceDefinitionWithMethodCall( + 'ezpublish.search.solr.query.location.facet_builder_visitor.aggregate', + 'addVisitor', + array(new Reference($serviceId2)) + ); } }