148 lines
5.2 KiB
PHP
148 lines
5.2 KiB
PHP
<?php
|
|
|
|
namespace Stof\DoctrineExtensionsBundle\DependencyInjection;
|
|
|
|
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
|
use Symfony\Component\Config\Definition\ConfigurationInterface;
|
|
|
|
class Configuration implements ConfigurationInterface
|
|
{
|
|
/**
|
|
* Generates the configuration tree.
|
|
*
|
|
* @return TreeBuilder
|
|
*/
|
|
public function getConfigTreeBuilder()
|
|
{
|
|
$treeBuilder = new TreeBuilder();
|
|
$rootNode = $treeBuilder->root('stof_doctrine_extensions');
|
|
|
|
$rootNode
|
|
->append($this->getVendorNode('orm'))
|
|
->append($this->getVendorNode('mongodb'))
|
|
->append($this->getClassNode())
|
|
->append($this->getUploadableNode())
|
|
->children()
|
|
->scalarNode('default_locale')
|
|
->cannotBeEmpty()
|
|
->defaultValue('en')
|
|
->end()
|
|
->booleanNode('translation_fallback')->defaultFalse()->end()
|
|
->booleanNode('persist_default_translation')->defaultFalse()->end()
|
|
->booleanNode('skip_translation_on_load')->defaultFalse()->end()
|
|
->end()
|
|
;
|
|
|
|
return $treeBuilder;
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
*/
|
|
private function getVendorNode($name)
|
|
{
|
|
$treeBuilder = new TreeBuilder();
|
|
$node = $treeBuilder->root($name);
|
|
|
|
$node
|
|
->useAttributeAsKey('id')
|
|
->prototype('array')
|
|
->children()
|
|
->scalarNode('translatable')->defaultFalse()->end()
|
|
->scalarNode('timestampable')->defaultFalse()->end()
|
|
->scalarNode('blameable')->defaultFalse()->end()
|
|
->scalarNode('sluggable')->defaultFalse()->end()
|
|
->scalarNode('tree')->defaultFalse()->end()
|
|
->scalarNode('loggable')->defaultFalse()->end()
|
|
->scalarNode('sortable')->defaultFalse()->end()
|
|
->scalarNode('softdeleteable')->defaultFalse()->end()
|
|
->scalarNode('uploadable')->defaultFalse()->end()
|
|
->scalarNode('reference_integrity')->defaultFalse()->end()
|
|
->end()
|
|
->end()
|
|
;
|
|
|
|
return $node;
|
|
}
|
|
|
|
private function getClassNode()
|
|
{
|
|
$treeBuilder = new TreeBuilder();
|
|
$node = $treeBuilder->root('class');
|
|
|
|
$node
|
|
->addDefaultsIfNotSet()
|
|
->children()
|
|
->scalarNode('translatable')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Gedmo\Translatable\TranslatableListener')
|
|
->end()
|
|
->scalarNode('timestampable')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Gedmo\\Timestampable\\TimestampableListener')
|
|
->end()
|
|
->scalarNode('blameable')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Gedmo\\Blameable\\BlameableListener')
|
|
->end()
|
|
->scalarNode('sluggable')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Gedmo\\Sluggable\\SluggableListener')
|
|
->end()
|
|
->scalarNode('tree')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Gedmo\\Tree\\TreeListener')
|
|
->end()
|
|
->scalarNode('loggable')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Gedmo\Loggable\LoggableListener')
|
|
->end()
|
|
->scalarNode('sortable')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Gedmo\\Sortable\\SortableListener')
|
|
->end()
|
|
->scalarNode('softdeleteable')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Gedmo\\SoftDeleteable\\SoftDeleteableListener')
|
|
->end()
|
|
->scalarNode('uploadable')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Gedmo\\Uploadable\\UploadableListener')
|
|
->end()
|
|
->scalarNode('reference_integrity')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Gedmo\\ReferenceIntegrity\\ReferenceIntegrityListener')
|
|
->end()
|
|
->end()
|
|
;
|
|
|
|
return $node;
|
|
}
|
|
|
|
private function getUploadableNode()
|
|
{
|
|
$treeBuilder = new TreeBuilder();
|
|
$node = $treeBuilder->root('uploadable');
|
|
|
|
$node
|
|
->addDefaultsIfNotSet()
|
|
->children()
|
|
->scalarNode('default_file_path')
|
|
->cannotBeEmpty()
|
|
->defaultNull()
|
|
->end()
|
|
->scalarNode('mime_type_guesser_class')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Stof\\DoctrineExtensionsBundle\\Uploadable\\MimeTypeGuesserAdapter')
|
|
->end()
|
|
->scalarNode('default_file_info_class')
|
|
->cannotBeEmpty()
|
|
->defaultValue('Stof\\DoctrineExtensionsBundle\\Uploadable\\UploadedFileInfo')
|
|
->end()
|
|
->booleanNode('validate_writable_directory')->defaultTrue()->end()
|
|
->end()
|
|
;
|
|
|
|
return $node;
|
|
}
|
|
}
|