/**
  * Register a a view element to the view element registry
  *
  * @param Definition $registryDefinition
  * @param string     $serviceId
  * @param array      $tag
  */
 protected function registerViewElement($registryDefinition, $serviceId, $tag)
 {
     if (!isset($tag['type'])) {
         throw new \LogicException(sprintf('No type provided for the "%s" view element', $serviceId));
     }
     $position = isset($tag['position']) ? $tag['position'] : static::DEFAULT_POSITION;
     $registryDefinition->addMethodCall('add', [$this->factory->createReference($serviceId), $tag['type'], $position]);
 }
 function it_adds_tagged_operators_to_the_operator_registry(ContainerBuilder $container, ReferenceFactory $factory, Reference $fooRef, Definition $registryDef)
 {
     $container->findTaggedServiceIds('pim_enrich.mass_edit_action_operator')->willReturn(['foo' => [['datagrid' => 'foo-grid']]]);
     $factory->createReference('foo')->willReturn($fooRef);
     $container->hasDefinition('pim_enrich.mass_edit_action.operator.registry')->willReturn(true);
     $container->getDefinition('pim_enrich.mass_edit_action.operator.registry')->willReturn($registryDef);
     $registryDef->addMethodCall('register', ['foo-grid', $fooRef])->shouldBeCalled();
     $this->process($container);
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $registry = $container->getDefinition(self::OPERATION_REGISTRY);
     $operations = $container->findTaggedServiceIds(self::OPERATION_TAG);
     foreach ($operations as $operationId => $operation) {
         $config = $operation[0];
         $registry->addMethodCall('register', [$this->referenceFactory->createReference($operationId), $config['alias'], $config['datagrid'], $config['operation_group'], isset($config['acl']) ? $config['acl'] : null]);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition('pim_enrich.mass_edit_action.operator.registry')) {
         return;
     }
     $def = $container->getDefinition('pim_enrich.mass_edit_action.operator.registry');
     foreach ($container->findTaggedServiceIds('pim_enrich.mass_edit_action_operator') as $id => $config) {
         $def->addMethodCall('register', [$config[0]['datagrid'], $this->factory->createReference($id)]);
     }
 }
 function it_register_mass_edit_actions_in_a_specific_operator(ContainerBuilder $container, ReferenceFactory $factory, Definition $productOperatorDef, Definition $someOperatorDef, Reference $fooRef, Reference $barRef)
 {
     $container->findTaggedServiceIds('pim_enrich.mass_edit_action')->willReturn(['foo' => [['alias' => 'foo-action']], 'bar' => [['alias' => 'bar-action', 'operator' => 'some_operator']]]);
     $container->getDefinition('pim_enrich.mass_edit_action.operator.product')->willReturn($productOperatorDef);
     $container->getDefinition('some_operator')->willReturn($someOperatorDef);
     $factory->createReference('foo')->willReturn($fooRef);
     $factory->createReference('bar')->willReturn($barRef);
     $productOperatorDef->addMethodCall('registerMassEditAction', ['foo-action', $fooRef, null])->shouldBeCalled();
     $someOperatorDef->addMethodCall('registerMassEditAction', ['bar-action', $barRef, null])->shouldBeCalled();
     $this->process($container);
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     foreach ($container->findTaggedServiceIds('pim_enrich.mass_edit_action') as $id => $config) {
         // Mass Edit Action was originally used by the product grid
         // so, in order not to break BC, we fallback operator to the product one.
         // We may deprecate this behaviour in the future and enforce operator parameter
         // inside the tag.
         $operatorId = isset($config[0]['operator']) ? $config[0]['operator'] : 'pim_enrich.mass_edit_action.operator.product';
         $operatorDef = $container->getDefinition($operatorId);
         $operatorDef->addMethodCall('registerMassEditAction', [$config[0]['alias'], $this->factory->createReference($id), isset($config[0]['acl']) ? $config[0]['acl'] : null]);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition(self::REGISTRY_ID)) {
         return;
     }
     $registryDefinition = $container->getDefinition(self::REGISTRY_ID);
     $providers = [];
     foreach ($container->findTaggedServiceIds(self::SERVICE_TAG) as $serviceId => $tags) {
         foreach ($tags as $tag) {
             $priority = isset($tag['priority']) ? $tag['priority'] : static::DEFAULT_PRIORITY;
             $providers[$priority][] = $this->factory->createReference($serviceId);
         }
     }
     ksort($providers);
     foreach ($providers as $sortedProviders) {
         foreach ($sortedProviders as $provider) {
             $registryDefinition->addMethodCall('register', [$provider]);
         }
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition(sprintf(static::REGISTRY_ID, $this->providerType))) {
         return;
     }
     $registryDefinition = $container->getDefinition(sprintf(static::REGISTRY_ID, $this->providerType));
     $providers = [];
     foreach ($container->findTaggedServiceIds(sprintf(static::PROVIDER_TAG, $this->providerType)) as $serviceId => $tags) {
         foreach ($tags as $tag) {
             $priority = isset($tag['priority']) ? $tag['priority'] : static::DEFAULT_PRIORITY;
             if (!isset($providers[$priority])) {
                 $providers[$priority] = [];
             }
             $providers[$priority][] = $this->factory->createReference($serviceId);
         }
     }
     ksort($providers);
     foreach ($providers as $unsortedProviders) {
         foreach ($unsortedProviders as $provider) {
             $registryDefinition->addMethodCall('addProvider', [$provider]);
         }
     }
 }
 /**
  * Register a a view element to the view element registry
  *
  * @param Definition $registryDefinition
  * @param string     $serviceId
  * @param array      $tag
  */
 protected function registerViewUpdater(Definition $registryDefinition, $serviceId, $tag)
 {
     $position = isset($tag['position']) ? $tag['position'] : static::DEFAULT_POSITION;
     $registryDefinition->addMethodCall('registerUpdater', [$this->factory->createReference($serviceId), $position]);
 }