Made default manager configurable

Conflicts:

	DependencyInjection/FOQElasticaExtension.php
	Resources/config/config.xml
	Resources/config/mongodb.xml
	Resources/config/orm.xml
	Resources/config/propel.xml
This commit is contained in:
Richard Miller 2011-12-23 16:20:22 +00:00
parent ac3edc23a4
commit bb87a0be74
2 changed files with 21 additions and 0 deletions

View file

@ -26,6 +26,7 @@ class Configuration
->children()
->scalarNode('default_client')->end()
->scalarNode('default_index')->end()
->scalarNode('default_manager')->defaultValue('orm')->end()
->end()
;

View file

@ -52,6 +52,8 @@ class FOQElasticaExtension extends Extension
$container->setAlias('foq_elastica.client', sprintf('foq_elastica.client.%s', $config['default_client']));
$container->setAlias('foq_elastica.index', sprintf('foq_elastica.index.%s', $config['default_index']));
$this->createDefaultManagerAlias($config['default_manager'], $container);
}
/**
@ -390,4 +392,22 @@ class FOQElasticaExtension extends Extension
$loader->load($driver.'.xml');
$this->loadedDrivers[] = $driver;
}
protected function createDefaultManagerAlias($defaultManager, ContainerBuilder $container)
{
if (0 == count($this->loadedDrivers)) {
return;
}
if (count($this->loadedDrivers) > 1
&& in_array($defaultManager, $this->loadedDrivers)
) {
$defaultManagerService = $defaultManager;
} else {
$defaultManagerService = $this->loadedDrivers[0];
}
$container->setAlias('foq_elastica.manager', sprintf('foq_elastica.manager.%s', $defaultManagerService));
}
}