diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php b/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php index a2d541c52121..093fa7510c6e 100644 --- a/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php @@ -31,6 +31,7 @@ class DoctrineMongoDBExtension extends Extension public function mongodbLoad($config, ContainerBuilder $container) { $this->createProxyDirectory($container->getParameter('kernel.cache_dir')); + $this->createHydratorDirectory($container->getParameter('kernel.cache_dir')); $this->loadDefaults($config, $container); $this->loadConnections($config, $container); $this->loadDocumentManagers($config, $container); @@ -52,6 +53,22 @@ protected function createProxyDirectory($tmpDir) } } + /** + * Create the Doctrine MongoDB ODM Document hydrator directory + */ + protected function createHydratorDirectory($tmpDir) + { + // Create document hydrator directory + $hydratorCacheDir = $tmpDir.'/doctrine/odm/mongodb/Hydrators'; + if (!is_dir($hydratorCacheDir)) { + if (false === @mkdir($hydratorCacheDir, 0777, true)) { + die(sprintf('Unable to create the Doctrine Hydrator directory (%s)', dirname($hydratorCacheDir))); + } + } elseif (!is_writable($hydratorCacheDir)) { + die(sprintf('Unable to write in the Doctrine Hydrator directory (%s)', $hydratorCacheDir)); + } + } + /** * Loads the default configuration. * @@ -74,6 +91,8 @@ protected function loadDefaults(array $config, ContainerBuilder $container) 'metadata_cache_driver', 'proxy_namespace', 'auto_generate_proxy_classes', + 'hydrator_namespace', + 'auto_generate_hydrator_classes', 'default_database', ); foreach ($options as $key) { @@ -116,6 +135,7 @@ protected function loadDocumentManager(array $documentManager, ContainerBuilder $defaultDocumentManager = $container->getParameter('doctrine.odm.mongodb.default_document_manager'); $defaultDatabase = isset($documentManager['default_database']) ? $documentManager['default_database'] : $container->getParameter('doctrine.odm.mongodb.default_database'); $proxyCacheDir = $container->getParameter('kernel.cache_dir').'/doctrine/odm/mongodb/Proxies'; + $hydratorCacheDir = $container->getParameter('kernel.cache_dir').'/doctrine/odm/mongodb/Hydrators'; $odmConfigDef = new Definition('%doctrine.odm.mongodb.configuration_class%'); $container->setDefinition(sprintf('doctrine.odm.mongodb.%s_configuration', $documentManager['name']), $odmConfigDef); @@ -129,6 +149,9 @@ protected function loadDocumentManager(array $documentManager, ContainerBuilder 'setProxyDir' => $proxyCacheDir, 'setProxyNamespace' => $container->getParameter('doctrine.odm.mongodb.proxy_namespace'), 'setAutoGenerateProxyClasses' => $container->getParameter('doctrine.odm.mongodb.auto_generate_proxy_classes'), + 'setHydratorDir' => $hydratorCacheDir, + 'setHydratorNamespace' => $container->getParameter('doctrine.odm.mongodb.hydrator_namespace'), + 'setAutoGenerateHydratorClasses' => $container->getParameter('doctrine.odm.mongodb.auto_generate_hydrator_classes'), 'setDefaultDB' => $defaultDatabase, 'setLoggerCallable' => array(new Reference('doctrine.odm.mongodb.logger'), 'logQuery'), ); diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml b/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml index 4dedd46473cc..b1ab8b59f8c2 100755 --- a/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml @@ -20,6 +20,10 @@ Proxies false + + Proxies + false + Doctrine\Common\Cache\ArrayCache Doctrine\Common\Cache\ApcCache