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
|
|
|
{
|
2011-12-22 00:05:24 +01:00
|
|
|
private $supportedDrivers = array('orm', 'mongodb', 'propel');
|
|
|
|
|
2013-01-28 11:53:50 +01:00
|
|
|
private $configArray = array();
|
|
|
|
|
|
|
|
public function __construct($configArray){
|
|
|
|
$this->configArray = $configArray;
|
|
|
|
}
|
|
|
|
|
2011-04-08 23:11:46 +02:00
|
|
|
/**
|
|
|
|
* Generates the configuration tree.
|
|
|
|
*
|
2013-03-02 12:23:44 +01:00
|
|
|
* @return \Symfony\Component\Config\Definition\NodeInterface
|
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()
|
|
|
|
->scalarNode('default_client')->end()
|
2011-04-12 04:23:29 +02:00
|
|
|
->scalarNode('default_index')->end()
|
2011-12-23 17:20:22 +01:00
|
|
|
->scalarNode('default_manager')->defaultValue('orm')->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;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Generates the configuration tree.
|
|
|
|
*
|
|
|
|
* @return \Symfony\Component\DependencyInjection\Configuration\NodeInterface
|
|
|
|
*/
|
|
|
|
public function getConfigTree()
|
|
|
|
{
|
|
|
|
return $this->getConfigTreeBuilder()->buildTree();
|
2011-04-08 23:11:46 +02:00
|
|
|
}
|
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')
|
|
|
|
->performNoDeepMerging()
|
2012-11-05 11:00:18 +01:00
|
|
|
->beforeNormalization()
|
|
|
|
->ifTrue(function($v) { return isset($v['host']) && isset($v['port']); })
|
|
|
|
->then(function($v) {
|
|
|
|
return array(
|
|
|
|
'servers' => array(
|
2012-11-29 10:00:51 +01:00
|
|
|
array(
|
2012-11-05 11:00:18 +01:00
|
|
|
'host' => $v['host'],
|
|
|
|
'port' => $v['port'],
|
|
|
|
)
|
|
|
|
)
|
|
|
|
);
|
|
|
|
})
|
|
|
|
->end()
|
|
|
|
->beforeNormalization()
|
|
|
|
->ifTrue(function($v) { return isset($v['url']); })
|
|
|
|
->then(function($v) {
|
|
|
|
return array(
|
|
|
|
'servers' => array(
|
2012-11-29 10:00:51 +01:00
|
|
|
array(
|
2012-11-05 11:00:18 +01:00
|
|
|
'url' => $v['url'],
|
|
|
|
)
|
|
|
|
)
|
|
|
|
);
|
|
|
|
})
|
|
|
|
->end()
|
2011-04-10 23:08:51 +02:00
|
|
|
->children()
|
2012-11-05 11:00:18 +01:00
|
|
|
->arrayNode('servers')
|
|
|
|
->prototype('array')
|
|
|
|
->children()
|
|
|
|
->scalarNode('url')->end()
|
|
|
|
->scalarNode('host')->end()
|
|
|
|
->scalarNode('port')->end()
|
|
|
|
->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')
|
|
|
|
->performNoDeepMerging()
|
|
|
|
->children()
|
2013-01-04 15:02:50 +01:00
|
|
|
->scalarNode('index_name')->end()
|
2011-04-10 23:08:51 +02:00
|
|
|
->scalarNode('client')->end()
|
2012-01-07 00:23:54 +01:00
|
|
|
->scalarNode('finder')
|
|
|
|
->treatNullLike(true)
|
|
|
|
->defaultFalse()
|
|
|
|
->end()
|
2011-04-27 22:24:29 +02:00
|
|
|
->arrayNode('type_prototype')
|
|
|
|
->children()
|
2012-05-17 13:00:53 +02:00
|
|
|
->scalarNode('index_analyzer')->end()
|
|
|
|
->scalarNode('search_analyzer')->end()
|
2011-12-22 00:05:24 +01:00
|
|
|
->arrayNode('persistence')
|
|
|
|
->validate()
|
2011-12-28 23:51:07 +01:00
|
|
|
->ifTrue(function($v) { return isset($v['driver']) && 'propel' === $v['driver'] && isset($v['listener']); })
|
2011-12-22 00:05:24 +01:00
|
|
|
->thenInvalid('Propel doesn\'t support listeners')
|
2011-12-28 23:51:07 +01:00
|
|
|
->ifTrue(function($v) { return isset($v['driver']) && 'propel' === $v['driver'] && isset($v['repository']); })
|
2011-12-22 00:05:24 +01:00
|
|
|
->thenInvalid('Propel doesn\'t support the "repository" parameter')
|
|
|
|
->end()
|
2011-04-27 22:24:29 +02:00
|
|
|
->children()
|
2011-12-22 00:05:24 +01:00
|
|
|
->scalarNode('driver')
|
|
|
|
->validate()
|
|
|
|
->ifNotInArray($this->supportedDrivers)
|
|
|
|
->thenInvalid('The driver %s is not supported. Please choose one of '.json_encode($this->supportedDrivers))
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-27 22:24:29 +02:00
|
|
|
->scalarNode('identifier')->defaultValue('id')->end()
|
|
|
|
->arrayNode('provider')
|
|
|
|
->children()
|
|
|
|
->scalarNode('query_builder_method')->defaultValue('createQueryBuilder')->end()
|
|
|
|
->scalarNode('batch_size')->defaultValue(100)->end()
|
|
|
|
->scalarNode('clear_object_manager')->defaultTrue()->end()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-06-07 20:13:34 +02:00
|
|
|
->arrayNode('listener')
|
|
|
|
->children()
|
|
|
|
->scalarNode('insert')->defaultTrue()->end()
|
|
|
|
->scalarNode('update')->defaultTrue()->end()
|
|
|
|
->scalarNode('delete')->defaultTrue()->end()
|
|
|
|
->scalarNode('service')->end()
|
2012-04-19 17:41:09 +02:00
|
|
|
->variableNode('is_indexable_callback')->defaultNull()->end()
|
2011-06-07 20:13:34 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-27 22:24:29 +02:00
|
|
|
->arrayNode('finder')
|
|
|
|
->children()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('elastica_to_model_transformer')
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->scalarNode('hydrate')->defaultTrue()->end()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('model_to_elastica_transformer')
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->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())
|
2011-04-20 22:53:59 +02:00
|
|
|
->children()
|
2012-05-17 13:00:53 +02:00
|
|
|
->scalarNode('index_analyzer')->end()
|
|
|
|
->scalarNode('search_analyzer')->end()
|
2011-12-22 00:05:24 +01:00
|
|
|
->arrayNode('persistence')
|
|
|
|
->validate()
|
2011-12-28 23:51:07 +01:00
|
|
|
->ifTrue(function($v) { return isset($v['driver']) && 'propel' === $v['driver'] && isset($v['listener']); })
|
2011-12-22 00:05:24 +01:00
|
|
|
->thenInvalid('Propel doesn\'t support listeners')
|
2011-12-28 23:51:07 +01:00
|
|
|
->ifTrue(function($v) { return isset($v['driver']) && 'propel' === $v['driver'] && isset($v['repository']); })
|
2011-12-22 00:05:24 +01:00
|
|
|
->thenInvalid('Propel doesn\'t support the "repository" parameter')
|
|
|
|
->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->children()
|
2011-12-22 00:05:24 +01:00
|
|
|
->scalarNode('driver')
|
|
|
|
->validate()
|
|
|
|
->ifNotInArray($this->supportedDrivers)
|
|
|
|
->thenInvalid('The driver %s is not supported. Please choose one of '.json_encode($this->supportedDrivers))
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->scalarNode('model')->end()
|
2011-11-12 22:10:00 +01:00
|
|
|
->scalarNode('repository')->end()
|
2011-04-27 09:59:04 +02:00
|
|
|
->scalarNode('identifier')->defaultValue('id')->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->arrayNode('provider')
|
|
|
|
->children()
|
|
|
|
->scalarNode('query_builder_method')->defaultValue('createQueryBuilder')->end()
|
|
|
|
->scalarNode('batch_size')->defaultValue(100)->end()
|
|
|
|
->scalarNode('clear_object_manager')->defaultTrue()->end()
|
2011-04-27 09:59:04 +02:00
|
|
|
->scalarNode('service')->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
2011-06-11 01:03:17 +02:00
|
|
|
->arrayNode('listener')
|
|
|
|
->children()
|
|
|
|
->scalarNode('insert')->defaultTrue()->end()
|
|
|
|
->scalarNode('update')->defaultTrue()->end()
|
|
|
|
->scalarNode('delete')->defaultTrue()->end()
|
|
|
|
->scalarNode('service')->end()
|
2012-04-19 17:41:09 +02:00
|
|
|
->variableNode('is_indexable_callback')->defaultNull()->end()
|
2011-06-11 01:03:17 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->arrayNode('finder')
|
|
|
|
->children()
|
2011-04-27 09:59:04 +02:00
|
|
|
->scalarNode('service')->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->end()
|
2011-06-11 01:03:17 +02:00
|
|
|
->end()
|
2011-04-27 09:59:04 +02:00
|
|
|
->arrayNode('elastica_to_model_transformer')
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->scalarNode('hydrate')->defaultTrue()->end()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('model_to_elastica_transformer')
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-15 21:18:36 +02:00
|
|
|
->append($this->getMappingsNode())
|
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())
|
2011-04-15 21:18:36 +02:00
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the array node used for "mappings".
|
|
|
|
*/
|
|
|
|
protected function getMappingsNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('mappings');
|
|
|
|
|
2013-01-28 11:53:50 +01:00
|
|
|
$nestings = $this->getNestings();
|
|
|
|
|
|
|
|
$childrenNode = $node
|
2011-04-14 00:04:49 +02:00
|
|
|
->useAttributeAsKey('name')
|
2013-01-28 11:53:50 +01:00
|
|
|
->prototype('array')
|
2011-04-14 00:04:49 +02:00
|
|
|
->treatNullLike(array())
|
2013-01-28 11:53:50 +01:00
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children();
|
|
|
|
|
|
|
|
$this->addFieldConfig($childrenNode, $nestings);
|
|
|
|
|
2011-04-14 00:04:49 +02:00
|
|
|
return $node;
|
|
|
|
}
|
2012-04-02 19:53:51 +02:00
|
|
|
|
2013-01-28 11:53:50 +01:00
|
|
|
/**
|
2013-03-02 12:23:44 +01:00
|
|
|
* @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $node The node to which to attach the field config to
|
2013-01-28 11:53:50 +01:00
|
|
|
* @param array $nestings the nested mappings for the current field level
|
|
|
|
*/
|
|
|
|
protected function addFieldConfig($node, $nestings)
|
|
|
|
{
|
|
|
|
$node
|
|
|
|
->scalarNode('type')->defaultValue('string')->end()
|
|
|
|
->scalarNode('boost')->end()
|
|
|
|
->scalarNode('store')->end()
|
|
|
|
->scalarNode('index')->end()
|
|
|
|
->scalarNode('index_analyzer')->end()
|
|
|
|
->scalarNode('search_analyzer')->end()
|
|
|
|
->scalarNode('analyzer')->end()
|
|
|
|
->scalarNode('term_vector')->end()
|
|
|
|
->scalarNode('null_value')->end()
|
2013-01-28 11:55:54 +01:00
|
|
|
->booleanNode('include_in_all')->defaultValue(true)->end()
|
2013-12-03 16:45:43 +01:00
|
|
|
->booleanNode('enabled')->defaultValue(true)->end()
|
2013-01-28 11:53:50 +01:00
|
|
|
->scalarNode('lat_lon')->end()
|
2013-03-05 14:06:11 +01:00
|
|
|
->scalarNode('index_name')->end()
|
|
|
|
->booleanNode('omit_norms')->end()
|
|
|
|
->scalarNode('index_options')->end()
|
|
|
|
->scalarNode('ignore_above')->end()
|
|
|
|
->scalarNode('position_offset_gap')->end()
|
2013-01-28 11:53:50 +01:00
|
|
|
->arrayNode('_parent')
|
|
|
|
->treatNullLike(array())
|
|
|
|
->children()
|
|
|
|
->scalarNode('type')->end()
|
|
|
|
->scalarNode('identifier')->defaultValue('id')->end()
|
|
|
|
->end()
|
|
|
|
->end();
|
|
|
|
|
|
|
|
if (isset($nestings['fields'])) {
|
|
|
|
$this->addNestedFieldConfig($node, $nestings, 'fields');
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isset($nestings['properties'])) {
|
|
|
|
$this->addNestedFieldConfig($node, $nestings, 'properties');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2013-03-02 12:23:44 +01:00
|
|
|
* @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $node The node to which to attach the nested config to
|
2013-01-28 11:53:50 +01:00
|
|
|
* @param array $nestings The nestings for the current field level
|
|
|
|
* @param string $property the name of the nested property ('fields' or 'properties')
|
|
|
|
*/
|
2013-02-01 14:55:59 +01:00
|
|
|
protected function addNestedFieldConfig($node, $nestings, $property)
|
|
|
|
{
|
2013-01-28 11:53:50 +01:00
|
|
|
$childrenNode = $node
|
|
|
|
->arrayNode($property)
|
|
|
|
->useAttributeAsKey('name')
|
|
|
|
->prototype('array')
|
|
|
|
->treatNullLike(array())
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children();
|
|
|
|
|
|
|
|
$this->addFieldConfig($childrenNode, $nestings[$property]);
|
|
|
|
|
|
|
|
$childrenNode
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return array The unique nested mappings for all types
|
|
|
|
*/
|
|
|
|
protected function getNestings()
|
|
|
|
{
|
2013-04-17 10:33:32 +02:00
|
|
|
if (!isset($this->configArray[0]['indexes'])) {
|
|
|
|
return array();
|
|
|
|
}
|
|
|
|
|
2013-01-28 11:53:50 +01:00
|
|
|
$nestings = array();
|
|
|
|
foreach ($this->configArray[0]['indexes'] as $index) {
|
2013-03-04 20:59:04 +01:00
|
|
|
if (empty($index['types'])) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2013-01-28 11:53:50 +01:00
|
|
|
foreach ($index['types'] as $type) {
|
|
|
|
$nestings = array_merge_recursive($nestings, $this->getNestingsForType($type['mappings'], $nestings));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $nestings;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param array $mappings The mappings for the current type
|
|
|
|
* @return array The nested mappings defined for this type
|
|
|
|
*/
|
2013-03-08 22:08:40 +01:00
|
|
|
protected function getNestingsForType(array $mappings = null)
|
2013-01-28 11:53:50 +01:00
|
|
|
{
|
2013-03-08 22:08:40 +01:00
|
|
|
if ($mappings === null) {
|
|
|
|
return array();
|
|
|
|
}
|
|
|
|
|
2013-01-28 11:53:50 +01:00
|
|
|
$nestings = array();
|
2013-03-08 22:08:40 +01:00
|
|
|
|
2013-01-28 11:53:50 +01:00
|
|
|
foreach ($mappings as $field) {
|
|
|
|
if (isset($field['fields'])) {
|
|
|
|
$this->addPropertyNesting($field, $nestings, 'fields');
|
|
|
|
} else if (isset($field['properties'])) {
|
|
|
|
$this->addPropertyNesting($field, $nestings, 'properties');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $nestings;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param array $field The field mapping definition
|
|
|
|
* @param array $nestings The nestings array
|
|
|
|
* @param string $property The nested property name ('fields' or 'properties')
|
|
|
|
*/
|
2013-02-01 14:55:59 +01:00
|
|
|
protected function addPropertyNesting($field, &$nestings, $property)
|
|
|
|
{
|
2013-01-28 11:53:50 +01:00
|
|
|
if (!isset($nestings[$property])) {
|
|
|
|
$nestings[$property] = array();
|
|
|
|
}
|
|
|
|
$nestings[$property] = array_merge_recursive($nestings[$property], $this->getNestingsForType($field[$property]));
|
|
|
|
}
|
|
|
|
|
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()
|
|
|
|
->scalarNode('enabled')->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;
|
|
|
|
}
|
2011-04-08 23:11:46 +02:00
|
|
|
}
|