Skip to content

Commit c54f6d8

Browse files
jwagefabpot
authored andcommitted
Fixing DoctrineMongoDBBundle to work with latest version of Doctrine.
1 parent 451847c commit c54f6d8

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class DoctrineMongoDBExtension extends Extension
3131
public function mongodbLoad($config, ContainerBuilder $container)
3232
{
3333
$this->createProxyDirectory($container->getParameter('kernel.cache_dir'));
34+
$this->createHydratorDirectory($container->getParameter('kernel.cache_dir'));
3435
$this->loadDefaults($config, $container);
3536
$this->loadConnections($config, $container);
3637
$this->loadDocumentManagers($config, $container);
@@ -52,6 +53,22 @@ protected function createProxyDirectory($tmpDir)
5253
}
5354
}
5455

56+
/**
57+
* Create the Doctrine MongoDB ODM Document hydrator directory
58+
*/
59+
protected function createHydratorDirectory($tmpDir)
60+
{
61+
// Create document hydrator directory
62+
$hydratorCacheDir = $tmpDir.'/doctrine/odm/mongodb/Hydrators';
63+
if (!is_dir($hydratorCacheDir)) {
64+
if (false === @mkdir($hydratorCacheDir, 0777, true)) {
65+
die(sprintf('Unable to create the Doctrine Hydrator directory (%s)', dirname($hydratorCacheDir)));
66+
}
67+
} elseif (!is_writable($hydratorCacheDir)) {
68+
die(sprintf('Unable to write in the Doctrine Hydrator directory (%s)', $hydratorCacheDir));
69+
}
70+
}
71+
5572
/**
5673
* Loads the default configuration.
5774
*
@@ -74,6 +91,8 @@ protected function loadDefaults(array $config, ContainerBuilder $container)
7491
'metadata_cache_driver',
7592
'proxy_namespace',
7693
'auto_generate_proxy_classes',
94+
'hydrator_namespace',
95+
'auto_generate_hydrator_classes',
7796
'default_database',
7897
);
7998
foreach ($options as $key) {
@@ -116,6 +135,7 @@ protected function loadDocumentManager(array $documentManager, ContainerBuilder
116135
$defaultDocumentManager = $container->getParameter('doctrine.odm.mongodb.default_document_manager');
117136
$defaultDatabase = isset($documentManager['default_database']) ? $documentManager['default_database'] : $container->getParameter('doctrine.odm.mongodb.default_database');
118137
$proxyCacheDir = $container->getParameter('kernel.cache_dir').'/doctrine/odm/mongodb/Proxies';
138+
$hydratorCacheDir = $container->getParameter('kernel.cache_dir').'/doctrine/odm/mongodb/Hydrators';
119139

120140
$odmConfigDef = new Definition('%doctrine.odm.mongodb.configuration_class%');
121141
$container->setDefinition(sprintf('doctrine.odm.mongodb.%s_configuration', $documentManager['name']), $odmConfigDef);
@@ -129,6 +149,9 @@ protected function loadDocumentManager(array $documentManager, ContainerBuilder
129149
'setProxyDir' => $proxyCacheDir,
130150
'setProxyNamespace' => $container->getParameter('doctrine.odm.mongodb.proxy_namespace'),
131151
'setAutoGenerateProxyClasses' => $container->getParameter('doctrine.odm.mongodb.auto_generate_proxy_classes'),
152+
'setHydratorDir' => $hydratorCacheDir,
153+
'setHydratorNamespace' => $container->getParameter('doctrine.odm.mongodb.hydrator_namespace'),
154+
'setAutoGenerateHydratorClasses' => $container->getParameter('doctrine.odm.mongodb.auto_generate_hydrator_classes'),
132155
'setDefaultDB' => $defaultDatabase,
133156
'setLoggerCallable' => array(new Reference('doctrine.odm.mongodb.logger'), 'logQuery'),
134157
);

src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
<parameter key="doctrine.odm.mongodb.proxy_namespace">Proxies</parameter>
2121
<parameter key="doctrine.odm.mongodb.auto_generate_proxy_classes">false</parameter>
2222

23+
<!-- hydrators -->
24+
<parameter key="doctrine.odm.mongodb.hydrator_namespace">Proxies</parameter>
25+
<parameter key="doctrine.odm.mongodb.auto_generate_hydrator_classes">false</parameter>
26+
2327
<!-- cache -->
2428
<parameter key="doctrine.odm.mongodb.cache.array_class">Doctrine\Common\Cache\ArrayCache</parameter>
2529
<parameter key="doctrine.odm.mongodb.cache.apc_class">Doctrine\Common\Cache\ApcCache</parameter>

0 commit comments

Comments
 (0)