vendor/coreshop/resource-bundle/DependencyInjection/Configuration.php line 30

Open in your IDE?
  1. <?php
  2. /**
  3.  * CoreShop.
  4.  *
  5.  * This source file is subject to the GNU General Public License version 3 (GPLv3)
  6.  * For the full copyright and license information, please view the LICENSE.md and gpl-3.0.txt
  7.  * files that are distributed with this source code.
  8.  *
  9.  * @copyright  Copyright (c) 2015-2020 Dominik Pfaffenbauer (https://www.pfaffenbauer.at)
  10.  * @license    https://www.coreshop.org/license     GNU General Public License version 3 (GPLv3)
  11. */
  12. namespace CoreShop\Bundle\ResourceBundle\DependencyInjection;
  13. use CoreShop\Bundle\ResourceBundle\Controller\ResourceController;
  14. use CoreShop\Bundle\ResourceBundle\CoreShopResourceBundle;
  15. use CoreShop\Component\Resource\Factory\Factory;
  16. use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
  17. use Symfony\Component\Config\Definition\Builder\TreeBuilder;
  18. use Symfony\Component\Config\Definition\ConfigurationInterface;
  19. final class Configuration implements ConfigurationInterface
  20. {
  21.     /**
  22.      * {@inheritdoc}
  23.      */
  24.     public function getConfigTreeBuilder()
  25.     {
  26.         $treeBuilder = new TreeBuilder();
  27.         $rootNode $treeBuilder->root('core_shop_resource');
  28.         $this->addResourcesSection($rootNode);
  29.         $this->addTranslationsSection($rootNode);
  30.         $this->addDriversSection($rootNode);
  31.         $this->addPimcoreResourcesSection($rootNode);
  32.         return $treeBuilder;
  33.     }
  34.     /**
  35.      * @param ArrayNodeDefinition $node
  36.      */
  37.     private function addResourcesSection(ArrayNodeDefinition $node)
  38.     {
  39.         $node
  40.             ->children()
  41.                 ->arrayNode('resources')
  42.                     ->useAttributeAsKey('name')
  43.                     ->prototype('array')
  44.                         ->children()
  45.                             ->scalarNode('driver')->defaultValue(CoreShopResourceBundle::DRIVER_DOCTRINE_ORM)->end()
  46.                             ->variableNode('options')->end()
  47.                             ->scalarNode('templates')->cannotBeEmpty()->end()
  48.                             ->arrayNode('classes')
  49.                                 ->isRequired()
  50.                                 ->addDefaultsIfNotSet()
  51.                                 ->children()
  52.                                     ->scalarNode('model')->isRequired()->cannotBeEmpty()->end()
  53.                                     ->scalarNode('interface')->cannotBeEmpty()->end()
  54.                                     ->scalarNode('controller')->defaultValue(ResourceController::class)->cannotBeEmpty()->end()
  55.                                     ->scalarNode('repository')->cannotBeEmpty()->end()
  56.                                     ->scalarNode('factory')->defaultValue(Factory::class)->end()
  57.                                 ->end()
  58.                             ->end()
  59.                             ->arrayNode('translation')
  60.                                 ->children()
  61.                                     ->variableNode('options')->end()
  62.                                     ->arrayNode('classes')
  63.                                         ->isRequired()
  64.                                         ->addDefaultsIfNotSet()
  65.                                         ->children()
  66.                                             ->scalarNode('model')->isRequired()->cannotBeEmpty()->end()
  67.                                             ->scalarNode('interface')->cannotBeEmpty()->end()
  68.                                             ->scalarNode('controller')->defaultValue(ResourceController::class)->cannotBeEmpty()->end()
  69.                                             ->scalarNode('repository')->cannotBeEmpty()->end()
  70.                                             ->scalarNode('factory')->defaultValue(Factory::class)->end()
  71.                                         ->end()
  72.                                     ->end()
  73.                                 ->end()
  74.                             ->end()
  75.                         ->end()
  76.                     ->end()
  77.                 ->end()
  78.             ->end();
  79.     }
  80.     /**
  81.      * @param ArrayNodeDefinition $node
  82.      */
  83.     private function addTranslationsSection(ArrayNodeDefinition $node)
  84.     {
  85.         $node
  86.             ->children()
  87.                 ->arrayNode('translation')
  88.                     ->canBeDisabled()
  89.                     ->children()
  90.                         ->scalarNode('locale_provider')->defaultValue('coreshop.translation_locale_provider.pimcore')->cannotBeEmpty()->end()
  91.                 ->end()
  92.             ->end();
  93.     }
  94.     /**
  95.      * @param ArrayNodeDefinition $node
  96.      */
  97.     private function addDriversSection(ArrayNodeDefinition $node)
  98.     {
  99.         $node
  100.             ->children()
  101.                 ->arrayNode('drivers')
  102.                     ->defaultValue([CoreShopResourceBundle::DRIVER_DOCTRINE_ORM])
  103.                     ->prototype('enum')->values(CoreShopResourceBundle::getAvailableDrivers())->end()
  104.                 ->end()
  105.             ->end();
  106.     }
  107.     /**
  108.      * @param ArrayNodeDefinition $node
  109.      */
  110.     private function addPimcoreResourcesSection(ArrayNodeDefinition $node)
  111.     {
  112.         $node->children()
  113.             ->arrayNode('pimcore_admin')
  114.                 ->addDefaultsIfNotSet()
  115.                 ->children()
  116.                     ->arrayNode('js')
  117.                         ->useAttributeAsKey('name')
  118.                         ->prototype('scalar')->end()
  119.                     ->end()
  120.                     ->arrayNode('css')
  121.                         ->useAttributeAsKey('name')
  122.                         ->prototype('scalar')->end()
  123.                     ->end()
  124.                     ->arrayNode('editmode_js')
  125.                         ->useAttributeAsKey('name')
  126.                         ->prototype('scalar')->end()
  127.                     ->end()
  128.                     ->arrayNode('editmode_css')
  129.                         ->useAttributeAsKey('name')
  130.                         ->prototype('scalar')->end()
  131.                     ->end()
  132.                 ->end()
  133.             ->end()
  134.         ->end();
  135.     }
  136. }