2011-04-08 23:11:46 +02:00
|
|
|
<?php
|
|
|
|
|
2013-03-27 18:44:06 +01:00
|
|
|
namespace FOS\ElasticaBundle\DependencyInjection;
|
2011-04-08 23:11:46 +02:00
|
|
|
|
|
|
|
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
|
|
|
|
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
2013-02-13 16:15:27 +01:00
|
|
|
use Symfony\Component\Config\Definition\ConfigurationInterface;
|
2011-04-08 23:11:46 +02:00
|
|
|
|
2013-02-13 16:15:27 +01:00
|
|
|
class Configuration implements ConfigurationInterface
|
2011-04-08 23:11:46 +02:00
|
|
|
{
|
2013-12-17 11:09:58 +01:00
|
|
|
/**
|
|
|
|
* Stores supported database drivers.
|
|
|
|
*
|
|
|
|
* @var array
|
|
|
|
*/
|
2011-12-22 00:05:24 +01:00
|
|
|
private $supportedDrivers = array('orm', 'mongodb', 'propel');
|
|
|
|
|
2014-05-25 12:08:01 +02:00
|
|
|
/**
|
|
|
|
* If the kernel is running in debug mode.
|
|
|
|
*
|
|
|
|
* @var bool
|
|
|
|
*/
|
2014-05-16 17:24:37 +02:00
|
|
|
private $debug;
|
2013-01-28 11:53:50 +01:00
|
|
|
|
2014-05-25 12:08:01 +02:00
|
|
|
public function __construct($debug)
|
2013-05-22 23:25:38 +02:00
|
|
|
{
|
2014-05-16 17:24:37 +02:00
|
|
|
$this->debug = $debug;
|
2013-01-28 11:53:50 +01:00
|
|
|
}
|
|
|
|
|
2011-04-08 23:11:46 +02:00
|
|
|
/**
|
|
|
|
* Generates the configuration tree.
|
|
|
|
*
|
2014-08-24 11:50:56 +02:00
|
|
|
* @return TreeBuilder
|
2011-04-08 23:11:46 +02:00
|
|
|
*/
|
2013-02-13 16:15:27 +01:00
|
|
|
public function getConfigTreeBuilder()
|
2011-04-08 23:11:46 +02:00
|
|
|
{
|
|
|
|
$treeBuilder = new TreeBuilder();
|
2013-03-27 18:44:06 +01:00
|
|
|
$rootNode = $treeBuilder->root('fos_elastica', 'array');
|
2011-04-10 23:08:51 +02:00
|
|
|
|
|
|
|
$this->addClientsSection($rootNode);
|
|
|
|
$this->addIndexesSection($rootNode);
|
|
|
|
|
|
|
|
$rootNode
|
|
|
|
->children()
|
2013-12-17 11:09:58 +01:00
|
|
|
->scalarNode('default_client')
|
|
|
|
->info('Defaults to the first client defined')
|
|
|
|
->end()
|
|
|
|
->scalarNode('default_index')
|
|
|
|
->info('Defaults to the first index defined')
|
|
|
|
->end()
|
2011-12-23 17:20:22 +01:00
|
|
|
->scalarNode('default_manager')->defaultValue('orm')->end()
|
2013-01-24 15:07:38 +01:00
|
|
|
->arrayNode('serializer')
|
2013-01-25 16:48:29 +01:00
|
|
|
->treatNullLike(array())
|
|
|
|
->children()
|
2013-04-22 20:02:12 +02:00
|
|
|
->scalarNode('callback_class')->defaultValue('FOS\ElasticaBundle\Serializer\Callback')->end()
|
2013-01-25 16:48:29 +01:00
|
|
|
->scalarNode('serializer')->defaultValue('serializer')->end()
|
2013-01-24 15:07:38 +01:00
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-10 23:08:51 +02:00
|
|
|
->end()
|
|
|
|
;
|
2011-04-08 23:11:46 +02:00
|
|
|
|
2013-02-13 16:15:27 +01:00
|
|
|
return $treeBuilder;
|
|
|
|
}
|
|
|
|
|
2011-04-10 23:08:51 +02:00
|
|
|
/**
|
|
|
|
* Adds the configuration for the "clients" key
|
|
|
|
*/
|
|
|
|
private function addClientsSection(ArrayNodeDefinition $rootNode)
|
|
|
|
{
|
|
|
|
$rootNode
|
|
|
|
->fixXmlConfig('client')
|
|
|
|
->children()
|
|
|
|
->arrayNode('clients')
|
|
|
|
->useAttributeAsKey('id')
|
|
|
|
->prototype('array')
|
2014-08-07 23:33:14 +02:00
|
|
|
->performNoDeepMerging()
|
2014-07-03 13:58:54 +02:00
|
|
|
// BC - Renaming 'servers' node to 'connections'
|
2012-11-05 11:00:18 +01:00
|
|
|
->beforeNormalization()
|
2014-07-03 13:58:54 +02:00
|
|
|
->ifTrue(function($v) { return isset($v['servers']); })
|
|
|
|
->then(function($v) {
|
|
|
|
$v['connections'] = $v['servers'];
|
|
|
|
unset($v['servers']);
|
|
|
|
|
|
|
|
return $v;
|
|
|
|
})
|
|
|
|
->end()
|
|
|
|
// If there is no connections array key defined, assume a single connection.
|
|
|
|
->beforeNormalization()
|
|
|
|
->ifTrue(function ($v) { return is_array($v) && !array_key_exists('connections', $v); })
|
|
|
|
->then(function ($v) {
|
|
|
|
return array(
|
|
|
|
'connections' => array($v)
|
|
|
|
);
|
|
|
|
})
|
2012-11-05 11:00:18 +01:00
|
|
|
->end()
|
2011-04-10 23:08:51 +02:00
|
|
|
->children()
|
2014-07-03 13:58:54 +02:00
|
|
|
->arrayNode('connections')
|
|
|
|
->requiresAtLeastOneElement()
|
2012-11-05 11:00:18 +01:00
|
|
|
->prototype('array')
|
2014-03-18 23:44:03 +01:00
|
|
|
->fixXmlConfig('header')
|
2012-11-05 11:00:18 +01:00
|
|
|
->children()
|
2014-02-04 10:07:58 +01:00
|
|
|
->scalarNode('url')
|
|
|
|
->validate()
|
2014-05-25 01:31:40 +02:00
|
|
|
->ifTrue(function($url) { return $url && substr($url, -1) !== '/'; })
|
2014-03-04 17:54:49 +01:00
|
|
|
->then(function($url) { return $url.'/'; })
|
2014-02-04 10:07:58 +01:00
|
|
|
->end()
|
|
|
|
->end()
|
2012-11-05 11:00:18 +01:00
|
|
|
->scalarNode('host')->end()
|
|
|
|
->scalarNode('port')->end()
|
2014-05-23 16:17:59 +02:00
|
|
|
->scalarNode('proxy')->end()
|
2013-11-04 16:24:35 +01:00
|
|
|
->scalarNode('logger')
|
2014-05-25 12:08:01 +02:00
|
|
|
->defaultValue($this->debug ? 'fos_elastica.logger' : false)
|
2013-11-04 16:24:35 +01:00
|
|
|
->treatNullLike('fos_elastica.logger')
|
|
|
|
->treatTrueLike('fos_elastica.logger')
|
|
|
|
->end()
|
2014-03-06 18:08:23 +01:00
|
|
|
->arrayNode('headers')
|
2014-03-18 23:44:03 +01:00
|
|
|
->useAttributeAsKey('name')
|
|
|
|
->prototype('scalar')->end()
|
2014-03-06 18:08:23 +01:00
|
|
|
->end()
|
2014-05-22 17:18:08 +02:00
|
|
|
->scalarNode('transport')->end()
|
2014-02-14 18:32:22 +01:00
|
|
|
->scalarNode('timeout')->end()
|
2012-11-05 11:00:18 +01:00
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-05-11 18:21:13 +02:00
|
|
|
->scalarNode('timeout')->end()
|
|
|
|
->scalarNode('headers')->end()
|
2011-04-10 23:08:51 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds the configuration for the "indexes" key
|
|
|
|
*/
|
|
|
|
private function addIndexesSection(ArrayNodeDefinition $rootNode)
|
|
|
|
{
|
|
|
|
$rootNode
|
|
|
|
->fixXmlConfig('index')
|
|
|
|
->children()
|
|
|
|
->arrayNode('indexes')
|
2011-04-14 00:04:49 +02:00
|
|
|
->useAttributeAsKey('name')
|
2011-04-10 23:08:51 +02:00
|
|
|
->prototype('array')
|
|
|
|
->children()
|
2013-12-17 11:09:58 +01:00
|
|
|
->scalarNode('index_name')
|
|
|
|
->info('Defaults to the name of the index, but can be modified if the index name is different in ElasticSearch')
|
|
|
|
->end()
|
2014-02-06 22:11:12 +01:00
|
|
|
->booleanNode('use_alias')->defaultValue(false)->end()
|
2011-04-10 23:08:51 +02:00
|
|
|
->scalarNode('client')->end()
|
2012-01-07 00:23:54 +01:00
|
|
|
->scalarNode('finder')
|
|
|
|
->treatNullLike(true)
|
2013-12-17 11:09:58 +01:00
|
|
|
->defaultFalse()
|
2011-04-27 22:24:29 +02:00
|
|
|
->end()
|
|
|
|
->arrayNode('type_prototype')
|
|
|
|
->children()
|
2012-05-17 13:00:53 +02:00
|
|
|
->scalarNode('index_analyzer')->end()
|
|
|
|
->scalarNode('search_analyzer')->end()
|
2014-05-23 12:39:37 +02:00
|
|
|
->append($this->getPersistenceNode())
|
2014-05-23 12:41:09 +02:00
|
|
|
->append($this->getSerializerNode())
|
2011-04-27 22:24:29 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
2011-09-12 19:52:01 +02:00
|
|
|
->variableNode('settings')->defaultValue(array())->end()
|
2011-04-10 23:08:51 +02:00
|
|
|
->end()
|
2011-04-14 00:04:49 +02:00
|
|
|
->append($this->getTypesNode())
|
2011-04-10 23:08:51 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
}
|
2011-04-14 00:04:49 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the array node used for "types".
|
|
|
|
*/
|
|
|
|
protected function getTypesNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('types');
|
|
|
|
|
2011-04-15 21:18:36 +02:00
|
|
|
$node
|
|
|
|
->useAttributeAsKey('name')
|
|
|
|
->prototype('array')
|
|
|
|
->treatNullLike(array())
|
2014-05-25 09:34:44 +02:00
|
|
|
// BC - Renaming 'mappings' node to 'properties'
|
|
|
|
->beforeNormalization()
|
2014-08-07 01:25:09 +02:00
|
|
|
->ifTrue(function($v) { return array_key_exists('mappings', $v); })
|
2014-05-25 09:34:44 +02:00
|
|
|
->then(function($v) {
|
2014-06-16 14:43:16 +02:00
|
|
|
$v['properties'] = $v['mappings'];
|
|
|
|
unset($v['mappings']);
|
2014-05-25 09:34:44 +02:00
|
|
|
|
2014-06-16 14:43:16 +02:00
|
|
|
return $v;
|
|
|
|
})
|
2014-05-25 09:34:44 +02:00
|
|
|
->end()
|
2014-07-01 02:09:25 +02:00
|
|
|
// BC - Support the old is_indexable_callback property
|
2014-06-16 07:57:27 +02:00
|
|
|
->beforeNormalization()
|
|
|
|
->ifTrue(function ($v) {
|
|
|
|
return isset($v['persistence']) &&
|
|
|
|
isset($v['persistence']['listener']) &&
|
|
|
|
isset($v['persistence']['listener']['is_indexable_callback']);
|
|
|
|
})
|
|
|
|
->then(function ($v) {
|
2014-12-23 15:19:52 +01:00
|
|
|
$callback = $v['persistence']['listener']['is_indexable_callback'];
|
|
|
|
|
|
|
|
if (is_array($callback)) {
|
|
|
|
list($class) = $callback + array(null);
|
|
|
|
|
2014-12-23 23:09:45 +01:00
|
|
|
if ($class[0] !== '@' && is_string($class) && !class_exists($class)) {
|
2014-12-23 15:19:52 +01:00
|
|
|
$callback[0] = '@'.$class;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$v['indexable_callback'] = $callback;
|
2014-06-16 07:57:27 +02:00
|
|
|
unset($v['persistence']['listener']['is_indexable_callback']);
|
|
|
|
|
|
|
|
return $v;
|
|
|
|
})
|
|
|
|
->end()
|
2014-07-01 02:09:25 +02:00
|
|
|
// Support multiple dynamic_template formats to match the old bundle style
|
|
|
|
// and the way ElasticSearch expects them
|
|
|
|
->beforeNormalization()
|
|
|
|
->ifTrue(function ($v) { return isset($v['dynamic_templates']); })
|
|
|
|
->then(function ($v) {
|
|
|
|
$dt = array();
|
|
|
|
foreach ($v['dynamic_templates'] as $key => $type) {
|
2014-07-01 10:02:30 +02:00
|
|
|
if (is_int($key)) {
|
|
|
|
$dt[] = $type;
|
2014-08-07 01:25:09 +02:00
|
|
|
} else {
|
2014-07-01 02:09:25 +02:00
|
|
|
$dt[][$key] = $type;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$v['dynamic_templates'] = $dt;
|
|
|
|
|
|
|
|
return $v;
|
|
|
|
})
|
|
|
|
->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->children()
|
2015-01-04 11:58:53 +01:00
|
|
|
->booleanNode('date_detection')->end()
|
|
|
|
->arrayNode('dynamic_date_formats')->prototype('scalar')->end()->end()
|
2012-05-17 13:00:53 +02:00
|
|
|
->scalarNode('index_analyzer')->end()
|
2015-01-04 11:58:53 +01:00
|
|
|
->booleanNode('numeric_detection')->end()
|
2012-05-17 13:00:53 +02:00
|
|
|
->scalarNode('search_analyzer')->end()
|
2014-06-26 09:46:29 +02:00
|
|
|
->variableNode('indexable_callback')->end()
|
2014-05-23 12:39:37 +02:00
|
|
|
->append($this->getPersistenceNode())
|
2014-05-23 12:41:09 +02:00
|
|
|
->append($this->getSerializerNode())
|
2011-04-20 22:53:59 +02:00
|
|
|
->end()
|
2013-05-17 00:22:46 +02:00
|
|
|
->append($this->getIdNode())
|
2014-05-25 09:34:44 +02:00
|
|
|
->append($this->getPropertiesNode())
|
2013-10-28 16:15:30 +01:00
|
|
|
->append($this->getDynamicTemplateNode())
|
2012-04-02 19:53:51 +02:00
|
|
|
->append($this->getSourceNode())
|
2012-08-09 05:49:04 +02:00
|
|
|
->append($this->getBoostNode())
|
2012-12-12 15:23:54 +01:00
|
|
|
->append($this->getRoutingNode())
|
2013-06-17 21:19:11 +02:00
|
|
|
->append($this->getParentNode())
|
2013-12-05 16:35:30 +01:00
|
|
|
->append($this->getAllNode())
|
2014-01-06 09:20:44 +01:00
|
|
|
->append($this->getTimestampNode())
|
2014-01-30 12:39:48 +01:00
|
|
|
->append($this->getTtlNode())
|
2011-04-15 21:18:36 +02:00
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2014-05-25 09:34:44 +02:00
|
|
|
* Returns the array node used for "properties".
|
2011-04-15 21:18:36 +02:00
|
|
|
*/
|
2014-05-25 09:34:44 +02:00
|
|
|
protected function getPropertiesNode()
|
2011-04-15 21:18:36 +02:00
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
2014-05-25 09:34:44 +02:00
|
|
|
$node = $builder->root('properties');
|
2011-04-15 21:18:36 +02:00
|
|
|
|
2014-05-25 12:08:01 +02:00
|
|
|
$node
|
2011-04-14 00:04:49 +02:00
|
|
|
->useAttributeAsKey('name')
|
2014-05-25 12:08:01 +02:00
|
|
|
->prototype('variable')
|
|
|
|
->treatNullLike(array());
|
2013-01-28 11:53:50 +01:00
|
|
|
|
2011-04-14 00:04:49 +02:00
|
|
|
return $node;
|
|
|
|
}
|
2012-04-02 19:53:51 +02:00
|
|
|
|
2013-10-28 16:15:30 +01:00
|
|
|
/**
|
|
|
|
* Returns the array node used for "dynamic_templates".
|
|
|
|
*/
|
|
|
|
public function getDynamicTemplateNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('dynamic_templates');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->prototype('array')
|
2014-06-30 16:19:10 +02:00
|
|
|
->prototype('array')
|
|
|
|
->children()
|
|
|
|
->scalarNode('match')->end()
|
|
|
|
->scalarNode('unmatch')->end()
|
|
|
|
->scalarNode('match_mapping_type')->end()
|
|
|
|
->scalarNode('path_match')->end()
|
|
|
|
->scalarNode('path_unmatch')->end()
|
|
|
|
->scalarNode('match_pattern')->end()
|
|
|
|
->arrayNode('mapping')
|
|
|
|
->prototype('variable')
|
|
|
|
->treatNullLike(array())
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2013-10-28 16:15:30 +01:00
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
|
|
|
|
2013-05-17 00:22:46 +02:00
|
|
|
/**
|
|
|
|
* Returns the array node used for "_id".
|
|
|
|
*/
|
|
|
|
protected function getIdNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('_id');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->children()
|
|
|
|
->scalarNode('path')->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
|
|
|
|
2012-04-02 19:53:51 +02:00
|
|
|
/**
|
|
|
|
* Returns the array node used for "_source".
|
|
|
|
*/
|
|
|
|
protected function getSourceNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('_source');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->children()
|
|
|
|
->arrayNode('excludes')
|
|
|
|
->useAttributeAsKey('name')
|
|
|
|
->prototype('scalar')->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('includes')
|
|
|
|
->useAttributeAsKey('name')
|
|
|
|
->prototype('scalar')->end()
|
|
|
|
->end()
|
2012-12-12 16:49:37 +01:00
|
|
|
->scalarNode('compress')->end()
|
|
|
|
->scalarNode('compress_threshold')->end()
|
2014-06-01 16:40:03 +02:00
|
|
|
->scalarNode('enabled')->defaultTrue()->end()
|
2012-04-02 19:53:51 +02:00
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
2012-08-09 05:49:04 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the array node used for "_boost".
|
|
|
|
*/
|
|
|
|
protected function getBoostNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('_boost');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->children()
|
|
|
|
->scalarNode('name')->end()
|
|
|
|
->scalarNode('null_value')->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
2013-02-13 16:15:27 +01:00
|
|
|
|
2012-12-12 15:23:54 +01:00
|
|
|
/**
|
|
|
|
* Returns the array node used for "_routing".
|
|
|
|
*/
|
|
|
|
protected function getRoutingNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('_routing');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->children()
|
|
|
|
->scalarNode('required')->end()
|
|
|
|
->scalarNode('path')->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
2013-06-19 13:57:15 +02:00
|
|
|
|
2013-06-17 21:19:11 +02:00
|
|
|
/**
|
|
|
|
* Returns the array node used for "_parent".
|
|
|
|
*/
|
|
|
|
protected function getParentNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('_parent');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->children()
|
|
|
|
->scalarNode('type')->end()
|
2013-06-19 13:57:15 +02:00
|
|
|
->scalarNode('property')->defaultValue(null)->end()
|
2013-06-17 21:19:11 +02:00
|
|
|
->scalarNode('identifier')->defaultValue('id')->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
2013-12-05 16:35:30 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the array node used for "_all"
|
|
|
|
*/
|
|
|
|
protected function getAllNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('_all');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->children()
|
|
|
|
->scalarNode('enabled')->defaultValue(true)->end()
|
2014-04-24 14:39:22 +02:00
|
|
|
->scalarNode('index_analyzer')->end()
|
|
|
|
->scalarNode('search_analyzer')->end()
|
2013-12-05 16:35:30 +01:00
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
2014-01-06 09:20:44 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the array node used for "_timestamp"
|
|
|
|
*/
|
|
|
|
protected function getTimestampNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('_timestamp');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->children()
|
|
|
|
->scalarNode('enabled')->defaultValue(true)->end()
|
|
|
|
->scalarNode('path')->end()
|
|
|
|
->scalarNode('format')->end()
|
2014-01-06 10:19:11 +01:00
|
|
|
->scalarNode('store')->end()
|
|
|
|
->scalarNode('index')->end()
|
2014-01-06 09:20:44 +01:00
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
2014-02-19 03:39:03 +01:00
|
|
|
|
2014-01-30 12:39:48 +01:00
|
|
|
/**
|
|
|
|
* Returns the array node used for "_ttl"
|
|
|
|
*/
|
|
|
|
protected function getTtlNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('_ttl');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->children()
|
|
|
|
->scalarNode('enabled')->defaultValue(true)->end()
|
|
|
|
->scalarNode('default')->end()
|
|
|
|
->scalarNode('store')->end()
|
|
|
|
->scalarNode('index')->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
2014-02-19 03:39:03 +01:00
|
|
|
}
|
2014-05-23 12:39:37 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @return ArrayNodeDefinition|\Symfony\Component\Config\Definition\Builder\NodeDefinition
|
|
|
|
*/
|
|
|
|
protected function getPersistenceNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('persistence');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->validate()
|
|
|
|
->ifTrue(function($v) { return isset($v['driver']) && 'propel' === $v['driver'] && isset($v['listener']); })
|
|
|
|
->thenInvalid('Propel doesn\'t support listeners')
|
|
|
|
->ifTrue(function($v) { return isset($v['driver']) && 'propel' === $v['driver'] && isset($v['repository']); })
|
|
|
|
->thenInvalid('Propel doesn\'t support the "repository" parameter')
|
|
|
|
->end()
|
|
|
|
->children()
|
|
|
|
->scalarNode('driver')
|
|
|
|
->validate()
|
|
|
|
->ifNotInArray($this->supportedDrivers)
|
|
|
|
->thenInvalid('The driver %s is not supported. Please choose one of '.json_encode($this->supportedDrivers))
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->scalarNode('model')->end()
|
|
|
|
->scalarNode('repository')->end()
|
|
|
|
->scalarNode('identifier')->defaultValue('id')->end()
|
|
|
|
->arrayNode('provider')
|
|
|
|
->children()
|
|
|
|
->scalarNode('batch_size')->defaultValue(100)->end()
|
|
|
|
->scalarNode('clear_object_manager')->defaultTrue()->end()
|
2014-10-07 23:59:45 +02:00
|
|
|
->scalarNode('debug_logging')
|
|
|
|
->defaultValue($this->debug)
|
|
|
|
->treatNullLike(true)
|
|
|
|
->end()
|
|
|
|
->scalarNode('query_builder_method')->defaultValue('createQueryBuilder')->end()
|
2014-05-23 12:39:37 +02:00
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('listener')
|
|
|
|
->children()
|
|
|
|
->scalarNode('insert')->defaultTrue()->end()
|
|
|
|
->scalarNode('update')->defaultTrue()->end()
|
|
|
|
->scalarNode('delete')->defaultTrue()->end()
|
2014-05-25 18:51:14 +02:00
|
|
|
->scalarNode('flush')->defaultTrue()->end()
|
2014-05-23 12:39:37 +02:00
|
|
|
->booleanNode('immediate')->defaultFalse()->end()
|
|
|
|
->scalarNode('logger')
|
|
|
|
->defaultFalse()
|
|
|
|
->treatNullLike('fos_elastica.logger')
|
|
|
|
->treatTrueLike('fos_elastica.logger')
|
|
|
|
->end()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('finder')
|
|
|
|
->children()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('elastica_to_model_transformer')
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->scalarNode('hydrate')->defaultTrue()->end()
|
|
|
|
->scalarNode('ignore_missing')->defaultFalse()->end()
|
|
|
|
->scalarNode('query_builder_method')->defaultValue('createQueryBuilder')->end()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('model_to_elastica_transformer')
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end();
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
2014-05-23 12:41:09 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @return ArrayNodeDefinition|\Symfony\Component\Config\Definition\Builder\NodeDefinition
|
|
|
|
*/
|
|
|
|
protected function getSerializerNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('serializer');
|
|
|
|
|
|
|
|
$node
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->arrayNode('groups')
|
|
|
|
->treatNullLike(array())
|
|
|
|
->prototype('scalar')->end()
|
|
|
|
->end()
|
|
|
|
->scalarNode('version')->end()
|
|
|
|
->end();
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
2011-04-08 23:11:46 +02:00
|
|
|
}
|