vendor/w-vision/data-definitions/src/DataDefinitionsBundle/DependencyInjection/Configuration.php line 40

Open in your IDE?
  1. <?php
  2. /**
  3.  * Data Definitions.
  4.  *
  5.  * LICENSE
  6.  *
  7.  * This source file is subject to the GNU General Public License version 3 (GPLv3)
  8.  * For the full copyright and license information, please view the LICENSE.md and gpl-3.0.txt
  9.  * files that are distributed with this source code.
  10.  *
  11.  * @copyright  Copyright (c) 2016-2019 w-vision AG (https://www.w-vision.ch)
  12.  * @license    https://github.com/w-vision/DataDefinitions/blob/master/gpl-3.0.txt GNU General Public License version 3 (GPLv3)
  13.  */
  14. namespace Wvision\Bundle\DataDefinitionsBundle\DependencyInjection;
  15. use CoreShop\Bundle\ResourceBundle\CoreShopResourceBundle;
  16. use CoreShop\Component\Resource\Factory\Factory;
  17. use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
  18. use Symfony\Component\Config\Definition\Builder\TreeBuilder;
  19. use Symfony\Component\Config\Definition\ConfigurationInterface;
  20. use Wvision\Bundle\DataDefinitionsBundle\Controller\ExportDefinitionController;
  21. use Wvision\Bundle\DataDefinitionsBundle\Controller\ImportDefinitionController;
  22. use Wvision\Bundle\DataDefinitionsBundle\Form\Type\ExportDefinitionType;
  23. use Wvision\Bundle\DataDefinitionsBundle\Form\Type\ImportDefinitionType;
  24. use Wvision\Bundle\DataDefinitionsBundle\Model\ExportDefinition;
  25. use Wvision\Bundle\DataDefinitionsBundle\Model\ExportDefinitionInterface;
  26. use Wvision\Bundle\DataDefinitionsBundle\Model\ImportDefinition;
  27. use Wvision\Bundle\DataDefinitionsBundle\Model\ImportDefinitionInterface;
  28. use Wvision\Bundle\DataDefinitionsBundle\Repository;
  29. class Configuration implements ConfigurationInterface
  30. {
  31.     /**
  32.      * {@inheritdoc}
  33.      */
  34.     public function getConfigTreeBuilder(): TreeBuilder
  35.     {
  36.         $treeBuilder = new TreeBuilder();
  37.         $rootNode $treeBuilder->root('wvision_data_definitions');
  38.         $rootNode
  39.             ->children()
  40.                 ->scalarNode('driver')->defaultValue(CoreShopResourceBundle::DRIVER_PIMCORE)->end()
  41.             ->end();
  42.         $this->addPimcoreResourcesSection($rootNode);
  43.         $this->addModelsSection($rootNode);
  44.         return $treeBuilder;
  45.     }
  46.     /**
  47.      * @param ArrayNodeDefinition $node
  48.      */
  49.     private function addModelsSection(ArrayNodeDefinition $node)
  50.     {
  51.         $node
  52.             ->children()
  53.                 ->arrayNode('resources')
  54.                     ->addDefaultsIfNotSet()
  55.                     ->children()
  56.                         ->arrayNode('import_definition')
  57.                         ->addDefaultsIfNotSet()
  58.                         ->children()
  59.                             ->variableNode('options')->end()
  60.                                 ->scalarNode('permission')->defaultValue('data_definitions_import')->cannotBeOverwritten()
  61.                             ->end()
  62.                             ->arrayNode('classes')
  63.                                 ->addDefaultsIfNotSet()
  64.                                 ->children()
  65.                                     ->scalarNode('model')->defaultValue(ImportDefinition::class)->cannotBeEmpty()->end()
  66.                                     ->scalarNode('interface')->defaultValue(ImportDefinitionInterface::class)->cannotBeEmpty()->end()
  67.                                     ->scalarNode('admin_controller')->defaultValue(ImportDefinitionController::class)->cannotBeEmpty()->end()
  68.                                     ->scalarNode('factory')->defaultValue(Factory::class)->cannotBeEmpty()->end()
  69.                                     ->scalarNode('repository')->defaultValue(Repository\DefinitionRepository::class)->cannotBeEmpty()->end()
  70.                                     ->scalarNode('form')->defaultValue(ImportDefinitionType::class)->cannotBeEmpty()->end()
  71.                                     ->end()
  72.                                 ->end()
  73.                             ->end()
  74.                         ->end()
  75.                         ->arrayNode('export_definition')
  76.                             ->addDefaultsIfNotSet()
  77.                             ->children()
  78.                                 ->variableNode('options')->end()
  79.                                     ->scalarNode('permission')->defaultValue('data_definitions_export')->cannotBeOverwritten()
  80.                                 ->end()
  81.                                 ->arrayNode('classes')
  82.                                     ->addDefaultsIfNotSet()
  83.                                     ->children()
  84.                                         ->scalarNode('model')->defaultValue(ExportDefinition::class)->cannotBeEmpty()->end()
  85.                                         ->scalarNode('interface')->defaultValue(ExportDefinitionInterface::class)->cannotBeEmpty()->end()
  86.                                         ->scalarNode('admin_controller')->defaultValue(ExportDefinitionController::class)->cannotBeEmpty()->end()
  87.                                         ->scalarNode('factory')->defaultValue(Factory::class)->cannotBeEmpty()->end()
  88.                                         ->scalarNode('repository')->defaultValue(Repository\DefinitionRepository::class)->cannotBeEmpty()->end()
  89.                                         ->scalarNode('form')->defaultValue(ExportDefinitionType::class)->cannotBeEmpty()->end()
  90.                                     ->end()
  91.                                 ->end()
  92.                             ->end()
  93.                         ->end()
  94.                     ->end()
  95.                 ->end()
  96.             ->end()
  97.         ;
  98.     }
  99.     /**
  100.      * @param ArrayNodeDefinition $node
  101.      */
  102.     private function addPimcoreResourcesSection(ArrayNodeDefinition $node)
  103.     {
  104.         $node->children()
  105.             ->arrayNode('pimcore_admin')
  106.                 ->addDefaultsIfNotSet()
  107.                 ->children()
  108.                     ->arrayNode('js')
  109.                         ->useAttributeAsKey('name')
  110.                         ->prototype('scalar')->end()
  111.                     ->end()
  112.                     ->arrayNode('css')
  113.                         ->useAttributeAsKey('name')
  114.                         ->prototype('scalar')->end()
  115.                     ->end()
  116.                     ->arrayNode('install')
  117.                         ->addDefaultsIfNotSet()
  118.                         ->ignoreExtraKeys(false)
  119.                         ->children()
  120.                             ->scalarNode('sql')->defaultValue(['@DataDefinitionsBundle/Resources/install/pimcore/sql/data.sql'])->end()
  121.                         ->end()
  122.                     ->end()
  123.                 ->end()
  124.             ->end()
  125.         ->end();
  126.     }
  127. }