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

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\Controller\ImportRuleController;
  23. use Wvision\Bundle\DataDefinitionsBundle\Form\Type\ExportDefinitionType;
  24. use Wvision\Bundle\DataDefinitionsBundle\Form\Type\ImportDefinitionType;
  25. use Wvision\Bundle\DataDefinitionsBundle\Model\ExportDefinition;
  26. use Wvision\Bundle\DataDefinitionsBundle\Model\ExportDefinitionInterface;
  27. use Wvision\Bundle\DataDefinitionsBundle\Model\ImportDefinition;
  28. use Wvision\Bundle\DataDefinitionsBundle\Model\ImportDefinitionInterface;
  29. use Wvision\Bundle\DataDefinitionsBundle\Repository;
  30. class Configuration implements ConfigurationInterface
  31. {
  32.     /**
  33.      * {@inheritdoc}
  34.      */
  35.     public function getConfigTreeBuilder(): TreeBuilder
  36.     {
  37.         $treeBuilder = new TreeBuilder();
  38.         $rootNode $treeBuilder->root('wvision_data_definitions');
  39.         $rootNode
  40.             ->children()
  41.                 ->scalarNode('driver')->defaultValue(CoreShopResourceBundle::DRIVER_PIMCORE)->end()
  42.             ->end();
  43.         $this->addPimcoreResourcesSection($rootNode);
  44.         $this->addModelsSection($rootNode);
  45.         return $treeBuilder;
  46.     }
  47.     /**
  48.      * @param ArrayNodeDefinition $node
  49.      */
  50.     private function addModelsSection(ArrayNodeDefinition $node)
  51.     {
  52.         $node
  53.             ->children()
  54.                 ->arrayNode('resources')
  55.                     ->addDefaultsIfNotSet()
  56.                     ->children()
  57.                         ->arrayNode('import_definition')
  58.                             ->addDefaultsIfNotSet()
  59.                             ->children()
  60.                                 ->variableNode('options')->end()
  61.                                     ->scalarNode('permission')->defaultValue('data_definitions_import')->cannotBeOverwritten()
  62.                                 ->end()
  63.                                 ->arrayNode('classes')
  64.                                     ->addDefaultsIfNotSet()
  65.                                     ->children()
  66.                                         ->scalarNode('model')->defaultValue(ImportDefinition::class)->cannotBeEmpty()->end()
  67.                                         ->scalarNode('interface')->defaultValue(ImportDefinitionInterface::class)->cannotBeEmpty()->end()
  68.                                         ->scalarNode('admin_controller')->defaultValue(ImportDefinitionController::class)->cannotBeEmpty()->end()
  69.                                         ->scalarNode('factory')->defaultValue(Factory::class)->cannotBeEmpty()->end()
  70.                                         ->scalarNode('repository')->defaultValue(Repository\DefinitionRepository::class)->cannotBeEmpty()->end()
  71.                                         ->scalarNode('form')->defaultValue(ImportDefinitionType::class)->cannotBeEmpty()->end()
  72.                                     ->end()
  73.                                 ->end()
  74.                             ->end()
  75.                         ->end()
  76.                         ->arrayNode('export_definition')
  77.                             ->addDefaultsIfNotSet()
  78.                             ->children()
  79.                                 ->variableNode('options')->end()
  80.                                     ->scalarNode('permission')->defaultValue('data_definitions_export')->cannotBeOverwritten()
  81.                                 ->end()
  82.                                 ->arrayNode('classes')
  83.                                     ->addDefaultsIfNotSet()
  84.                                     ->children()
  85.                                         ->scalarNode('model')->defaultValue(ExportDefinition::class)->cannotBeEmpty()->end()
  86.                                         ->scalarNode('interface')->defaultValue(ExportDefinitionInterface::class)->cannotBeEmpty()->end()
  87.                                         ->scalarNode('admin_controller')->defaultValue(ExportDefinitionController::class)->cannotBeEmpty()->end()
  88.                                         ->scalarNode('factory')->defaultValue(Factory::class)->cannotBeEmpty()->end()
  89.                                         ->scalarNode('repository')->defaultValue(Repository\DefinitionRepository::class)->cannotBeEmpty()->end()
  90.                                         ->scalarNode('form')->defaultValue(ExportDefinitionType::class)->cannotBeEmpty()->end()
  91.                                     ->end()
  92.                                 ->end()
  93.                             ->end()
  94.                         ->end()
  95.                     ->end()
  96.                 ->end()
  97.             ->end()
  98.         ;
  99.     }
  100.     /**
  101.      * @param ArrayNodeDefinition $node
  102.      */
  103.     private function addPimcoreResourcesSection(ArrayNodeDefinition $node)
  104.     {
  105.         $node->children()
  106.             ->arrayNode('pimcore_admin')
  107.                 ->addDefaultsIfNotSet()
  108.                 ->children()
  109.                     ->arrayNode('js')
  110.                         ->useAttributeAsKey('name')
  111.                         ->prototype('scalar')->end()
  112.                     ->end()
  113.                     ->arrayNode('css')
  114.                         ->useAttributeAsKey('name')
  115.                         ->prototype('scalar')->end()
  116.                     ->end()
  117.                     ->arrayNode('install')
  118.                         ->addDefaultsIfNotSet()
  119.                         ->ignoreExtraKeys(false)
  120.                         ->children()
  121.                             ->scalarNode('sql')->defaultValue(['@DataDefinitionsBundle/Resources/install/pimcore/sql/data.sql'])->end()
  122.                         ->end()
  123.                     ->end()
  124.                 ->end()
  125.             ->end()
  126.         ->end();
  127.     }
  128. }