Skip to content

Commit

Permalink
Fixing DoctrineMongoDBBundle to work with latest version of Doctrine.
Browse files Browse the repository at this point in the history
  • Loading branch information
jwage authored and fabpot committed Dec 21, 2010
1 parent 451847c commit c54f6d8
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
Expand Up @@ -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);
Expand All @@ -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.
*
Expand All @@ -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) {
Expand Down Expand Up @@ -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);
Expand All @@ -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'),
);
Expand Down
Expand Up @@ -20,6 +20,10 @@
<parameter key="doctrine.odm.mongodb.proxy_namespace">Proxies</parameter>
<parameter key="doctrine.odm.mongodb.auto_generate_proxy_classes">false</parameter>

<!-- hydrators -->
<parameter key="doctrine.odm.mongodb.hydrator_namespace">Proxies</parameter>
<parameter key="doctrine.odm.mongodb.auto_generate_hydrator_classes">false</parameter>

<!-- cache -->
<parameter key="doctrine.odm.mongodb.cache.array_class">Doctrine\Common\Cache\ArrayCache</parameter>
<parameter key="doctrine.odm.mongodb.cache.apc_class">Doctrine\Common\Cache\ApcCache</parameter>
Expand Down

0 comments on commit c54f6d8

Please sign in to comment.