public function process(ContainerBuilder $container)
{
if (!$container->hasDefinition('ezpublish.field_type_collection.factory')) {
return;
}
$fieldTypeCollectionFactoryDef = $container->getDefinition('ezpublish.field_type_collection.factory');
// Field types.
// Alias attribute is the field type string.
foreach ($container->findTaggedServiceIds('ezpublish.fieldType') as $id => $attributes) {
foreach ($attributes as $attribute) {
if (!isset($attribute['alias'])) {
throw new LogicException('ezpublish.fieldType service tag needs an "alias" attribute to identify the field type. None given.');
}
$fieldTypeCollectionFactoryDef->addMethodCall('registerFieldType', array($id, $attribute['alias']));
// Add FieldType to the "concrete" list if it's not a fake.
if (!is_a($container->findDefinition($id)->getClass(), '\\eZ\\Publish\\Core\\FieldType\\Null\\Type', true)) {
$fieldTypeCollectionFactoryDef->addMethodCall('registerConcreteFieldTypeIdentifier', array($attribute['alias']));
}
}
}
}