eZ\Publish\Core\Base\Container\Compiler\Search\SearchEngineSignalSlotPass::process PHP Method

process() public method

public process ( ContainerBuilder $container )
$container Symfony\Component\DependencyInjection\ContainerBuilder
    public function process(ContainerBuilder $container)
    {
        if (!$container->hasDefinition('ezpublish.signalslot.signal_dispatcher.factory')) {
            return;
        }
        $signalDispatcherFactoryDef = $container->getDefinition('ezpublish.signalslot.signal_dispatcher.factory');
        $searchEngineSlotTagName = sprintf('ezpublish.search.%s.slot', $this->searchEngineAlias);
        $tags = $container->findTaggedServiceIds('ezpublish.search.slot') + $container->findTaggedServiceIds($searchEngineSlotTagName);
        $searchEngineSignalSlots = [];
        foreach ($tags as $id => $attributes) {
            foreach ($attributes as $attribute) {
                if (!isset($attribute['signal'])) {
                    throw new LogicException("Could not find 'signal' attribute on '{$id}' service, " . "which is mandatory for services tagged as 'ezpublish.search.slot', " . "or the specific tags for given search engine, in this case '{$searchEngineSlotTagName}'.");
                }
                $searchEngineSignalSlots[$attribute['signal']][] = new Reference($id);
            }
        }
        $signalDispatcherFactoryDef->addMethodCall('addSlotsForSearchEngine', [$this->searchEngineAlias, $searchEngineSignalSlots]);
    }
SearchEngineSignalSlotPass