Symfony\Bundle\DoctrineMongoDBBundle\DependencyInjection\DoctrineMongoDBExtension::loadDocumentManagerBundlesMappingInformation PHP Method

loadDocumentManagerBundlesMappingInformation() protected method

Loads a document managers bundles mapping information configuration.
protected loadDocumentManagerBundlesMappingInformation ( array $documentManager, Definition $odmConfigDef, ContainerBuilder $container )
$documentManager array
$odmConfigDef Symfony\Component\DependencyInjection\Definition
$container Symfony\Component\DependencyInjection\ContainerBuilder A ContainerBuilder instance
    protected function loadDocumentManagerBundlesMappingInformation(array $documentManager, Definition $odmConfigDef, ContainerBuilder $container)
    {
        // configure metadata driver for each bundle based on the type of mapping files found
        $mappingDriverDef = new Definition('%doctrine.odm.mongodb.metadata.driver_chain_class%');
        $bundleDocumentMappings = array();
        $bundleDirs = $container->getParameter('kernel.bundle_dirs');
        $aliasMap = array();
        foreach ($container->getParameter('kernel.bundles') as $className) {
            $tmp = dirname(str_replace('\\', '/', $className));
            $namespace = str_replace('/', '\\', dirname($tmp));
            $class = basename($tmp);

            if (!isset($bundleDirs[$namespace])) {
                continue;
            }

            $type = $this->detectMetadataDriver($bundleDirs[$namespace].'/'.$class, $container);

            if (is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Document')) {
                if ($type === null) {
                    $type = 'annotation';
                }
                $aliasMap[$class] = $namespace.'\\'.$class.'\\Document';
            }

            if ($type !== null) {
                $mappingDriverDef->addMethodCall('addDriver', array(
                        new Reference(sprintf('doctrine.odm.mongodb.metadata.%s', $type)),
                        $namespace.'\\'.$class.'\\Document'
                    )
                );
            }
        }
        $odmConfigDef->addMethodCall('setDocumentNamespaces', array($aliasMap));

        $container->setDefinition('doctrine.odm.mongodb.metadata', $mappingDriverDef);
    }