Exemplo n.º 1
0
 private function getRootNode()
 {
     $nodeBuilder = new NodeBuilder();
     $rootNode = $nodeBuilder->arrayNode(null);
     $this->addConfiguration($rootNode);
     return $rootNode->getNode();
 }
Exemplo n.º 2
0
 private function addVisitorsSection(NodeBuilder $builder)
 {
     $builder->arrayNode('visitors')->addDefaultsIfNotSet()->children()->arrayNode('json')->addDefaultsIfNotSet()->children()->scalarNode('options')->defaultValue(0)->beforeNormalization()->ifArray()->then(function ($v) {
         $options = 0;
         foreach ($v as $option) {
             if (is_numeric($option)) {
                 $options |= (int) $option;
             } elseif (defined($option)) {
                 $options |= constant($option);
             } else {
                 throw new InvalidArgumentException('Expected either an integer representing one of the JSON_ constants, or a string of the constant itself.');
             }
         }
         return $options;
     })->end()->beforeNormalization()->ifString()->then(function ($v) {
         if (is_numeric($v)) {
             $value = (int) $v;
         } elseif (defined($v)) {
             $value = constant($v);
         } else {
             throw new InvalidArgumentException('Expected either an integer representing one of the JSON_ constants, or a string of the constant itself.');
         }
         return $value;
     })->end()->validate()->always(function ($v) {
         if (!is_int($v)) {
             throw new InvalidArgumentException('Expected either integer value or a array of the JSON_ constants.');
         }
         return $v;
     })->end()->end()->end()->end()->arrayNode('xml')->fixXmlConfig('whitelisted-doctype', 'doctype_whitelist')->addDefaultsIfNotSet()->children()->arrayNode('doctype_whitelist')->prototype('scalar')->end()->end()->end()->end()->end()->end();
 }
Exemplo n.º 3
0
 public function addConfiguration(NodeBuilder $builder)
 {
     $builder
         ->scalarNode('provider')->end()
         ->scalarNode('realm')->defaultValue('Secured Area')->end()
     ;
 }
 private function addDirectives(NodeBuilder $node)
 {
     $directives = array('default', 'script', 'object', 'style', 'img', 'media', 'frame', 'font', 'connect');
     foreach ($directives as $directive) {
         $node->arrayNode($directive)->prototype('scalar')->end();
     }
     return $node;
 }
Exemplo n.º 5
0
 /**
  * @param NodeBuilder $nodeBuilder
  *
  * @return $this
  */
 private function addOptions(NodeBuilder $nodeBuilder)
 {
     // @formatter:off
     /** @noinspection PhpUndefinedMethodInspection */
     $nodeBuilder->scalarNode('use_revisions')->defaultTrue()->end()->scalarNode('base_host')->isRequired()->end()->scalarNode('base_path')->isRequired()->end();
     // @formatter:on
     return $this;
 }
 public function testNumericNodeCreation()
 {
     $builder = new BaseNodeBuilder();
     $node = $builder->integerNode('foo')->min(3)->max(5);
     $this->assertInstanceOf('Symfony\\Component\\Config\\Definition\\Builder\\IntegerNodeDefinition', $node);
     $node = $builder->floatNode('bar')->min(3.0)->max(5.0);
     $this->assertInstanceOf('Symfony\\Component\\Config\\Definition\\Builder\\FloatNodeDefinition', $node);
 }
Exemplo n.º 7
0
 public function addConfiguration(NodeBuilder $builder)
 {
     $builder
         ->scalarNode('provider')->end()
         ->scalarNode('user')->defaultValue('SSL_CLIENT_S_DN_Email')->end()
         ->scalarNode('credentials')->defaultValue('SSL_CLIENT_S_DN')->end()
     ;
 }
Exemplo n.º 8
0
 public function testNodeBuilder()
 {
     $nodeBuilder = new NodeBuilder('root', array());
     $childNode = new NodeBuilder('child', array());
     $ret = $nodeBuilder->builder($childNode);
     $this->assertEquals(array('child' => $childNode), $nodeBuilder->children);
     $this->assertEquals($nodeBuilder, $ret);
 }
Exemplo n.º 9
0
    /**
     * Adds semantic configuration definition.
     *
     * @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $nodeBuilder Node just under ezpublish.system.<siteaccess>
     *
     * @return void
     */
    public function addSemanticConfig(NodeBuilder $nodeBuilder)
    {
        $nodeBuilder->arrayNode(static::NODE_KEY)->info(static::INFO)->children()->arrayNode('block')->useAttributeAsKey("key")->normalizeKeys(false)->prototype("array")->children()->scalarNode("template")->isRequired()->info("Your template path, as MyBundle:subdir:my_template.html.twig")->end()->scalarNode('controller')->info(<<<EOT
Use custom controller instead of the default one to display a block matching your rules.
You can use the controller reference notation supported by Symfony.
EOT
)->example('MyBundle:MyControllerClass:viewBlock')->end()->arrayNode("match")->info("Condition matchers configuration")->useAttributeAsKey("key")->prototype("variable")->end()->end()->end()->end()->end()->end()->beforeNormalization()->always()->then(function ($v) {
            return array('block' => $v);
        })->end()->end();
    }
 /**
  * @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $nodeBuilder
  */
 protected function defineGrammar(NodeBuilder $nodeBuilder)
 {
     $nodeBuilder->scalarNode('framework')->end()->arrayNode('test_targets')->addDefaultsIfNotSet()->children()->arrayNode('resources')->defaultValue(array(ApplicationContext::getInstance()->getEnvironment()->getWorkingDirectoryAtStartup()))->validate()->ifTrue(function ($v) {
         return count($v) == 0;
     })->then(function ($v) {
         return array(ApplicationContext::getInstance()->getEnvironment()->getWorkingDirectoryAtStartup());
     })->end()->prototype('scalar')->cannotBeEmpty()->end()->end()->booleanNode('recursive')->defaultFalse()->end()->arrayNode('methods')->defaultValue(array())->prototype('scalar')->cannotBeEmpty()->end()->end()->arrayNode('classes')->defaultValue(array())->prototype('scalar')->cannotBeEmpty()->end()->end()->scalarNode('file_pattern')->defaultNull()->cannotBeEmpty()->end()->end()->end()->arrayNode('autotest')->addDefaultsIfNotSet()->treatNullLike(array('enabled' => true))->treatTrueLike(array('enabled' => true))->treatFalseLike(array('enabled' => false))->children()->booleanNode('enabled')->defaultFalse()->end()->arrayNode('watch_dirs')->defaultValue(array())->prototype('scalar')->cannotBeEmpty()->end()->end()->end()->end()->booleanNode('notify')->defaultFalse()->end()->arrayNode('junit_xml')->addDefaultsIfNotSet()->beforeNormalization()->ifString()->then(function ($v) {
         return array('file' => $v);
     })->end()->children()->scalarNode('file')->defaultNull()->cannotBeEmpty()->end()->booleanNode('realtime')->defaultFalse()->end()->end()->end()->booleanNode('stop_on_failure')->defaultFalse()->end()->booleanNode('detailed_progress')->defaultFalse()->end();
 }
Exemplo n.º 11
0
 /**
  * Adds semantic configuration definition.
  *
  * @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $nodeBuilder Node just under ezpublish.system.<siteaccess>
  */
 public function addSemanticConfig(NodeBuilder $nodeBuilder)
 {
     $nodeBuilder->arrayNode('imagemagick')->info('DEPRECATED.')->children()->scalarNode('pre_parameters')->info('Parameters that must be run BEFORE the filenames and filters')->end()->scalarNode('post_parameters')->info('Parameters that must be run AFTER the filenames and filters')->end()->end()->end()->arrayNode('image_variations')->info('Configuration for your image variations (aka "image aliases")')->example(array('my_image_variation' => array('reference' => '~', 'filters' => array(array('name' => 'geometry/scaledownonly', 'params' => array(400, 350)))), 'my_cropped_variation' => array('reference' => 'my_image_variation', 'filters' => array(array('name' => 'geometry/scalewidthdownonly', 'params' => array(300)), array('name' => 'geometry/crop', 'params' => array(300, 300, 0, 0))))))->useAttributeAsKey('variation_name')->normalizeKeys(false)->prototype('array')->children()->scalarNode('reference')->info('Tells the system which original variation to use as reference image. Defaults to original')->example(array('reference' => 'large'))->end()->arrayNode('filters')->info('A list of filters to run, each filter must be supported by the active image converters')->useAttributeAsKey('name')->normalizeKeys(false)->prototype('array')->info('Array/Hash of parameters to pass to the filter')->useAttributeAsKey('options')->beforeNormalization()->ifTrue(function ($v) {
         // Check if passed array only contains a "params" key (BC with <=5.3).
         return is_array($v) && count($v) === 1 && isset($v['params']);
     })->then(function ($v) {
         // If we have the "params" key, just use the value.
         return $v['params'];
     })->end()->prototype('variable')->end()->end()->end()->arrayNode('post_processors')->info('Post processors as defined in LiipImagineBundle. See https://github.com/liip/LiipImagineBundle/blob/master/Resources/doc/filters.md#post-processors')->useAttributeAsKey('name')->prototype('array')->useAttributeAsKey('name')->prototype('variable')->end()->end()->end()->end()->end()->end();
 }
Exemplo n.º 12
0
 protected function getRelationFieldsNodeDefinition($level = 1)
 {
     $nodeBuilder = new NodeBuilder();
     $relationFieldsNode = $nodeBuilder->arrayNode('relation_fields');
     if ($level < self::RELATION_FIELDS_NODE_MAX_LEVEL) {
         $relationFieldsNode->prototype('array')->children()->scalarNode('name')->end()->enumNode('target_type')->values($this->targetTypes)->end()->arrayNode('target_fields')->prototype('scalar')->end()->end()->enumNode('relation_type')->values($this->relationTypes)->end()->append($this->getRelationFieldsNodeDefinition($level + 1))->end()->validate()->ifTrue(function ($value) {
             return !empty($value['relation_type']) && empty($value['relation_fields']) || !empty($value['relation_fields']) && empty($value['relation_type']);
         })->thenInvalid('Both or none of relation_type and relation_fields should be specified for field')->end()->end();
     }
     return $relationFieldsNode;
 }
Exemplo n.º 13
0
 public function addConfiguration(NodeBuilder $node)
 {
     $node->scalarNode('provider')->end()->booleanNode('remember_me')->defaultTrue()->end()->scalarNode('success_handler')->end()->scalarNode('failure_handler')->end();
     foreach ($this->options as $name => $default) {
         if (is_bool($default)) {
             $node->booleanNode($name)->defaultValue($default);
         } else {
             $node->scalarNode($name)->defaultValue($default);
         }
     }
 }
 /**
  * {@inheritdoc}
  */
 public function getConfigTreeBuilder()
 {
     $nodeBuilder = new NodeBuilder();
     $nodeBuilder->setNodeClass('dynamicArray', DynamicArrayNodeDefinition::class);
     $treeBuilder = new TreeBuilder();
     $rootNode = $treeBuilder->root('prooph', 'dynamicArray', $nodeBuilder);
     // our factories handles validation and we are flexible with keys
     // Please take a look at the docs or specific prooph component factory for the configuration options
     $rootNode->ignoreExtraKeys(false);
     return $treeBuilder;
 }
Exemplo n.º 15
0
 public function addConfiguration(NodeBuilder $node)
 {
     $node->scalarNode('key')->isRequired()->cannotBeEmpty()->end()->scalarNode('token_provider')->end();
     foreach ($this->options as $name => $value) {
         if (is_bool($value)) {
             $node->booleanNode($name)->defaultValue($value);
         } else {
             $node->scalarNode($name)->defaultValue($value);
         }
     }
 }
Exemplo n.º 16
0
    /**
     * Adds semantic configuration definition.
     *
     * @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $nodeBuilder Node just under ezpublish.system.<siteaccess>
     */
    public function addSemanticConfig(NodeBuilder $nodeBuilder)
    {
        $nodeBuilder->arrayNode(static::NODE_KEY)->info(static::INFO)->useAttributeAsKey("key")->normalizeKeys(false)->prototype("array")->useAttributeAsKey("key")->normalizeKeys(false)->info("View selection rulesets, grouped by view type. Key is the view type (e.g. 'full', 'line', ...)")->prototype("array")->children()->scalarNode("template")->info("Your template path, as MyBundle:subdir:my_template.html.twig")->end()->scalarNode('controller')->info(<<<EOT
Use custom controller instead of the default one to display a content matching your rules.
You can use the controller reference notation supported by Symfony.
EOT
)->example('MyBundle:MyControllerClass:view')->end()->arrayNode("match")->info("Condition matchers configuration")->isRequired()->useAttributeAsKey("key")->prototype("variable")->end()->end()->arrayNode("params")->info(<<<EOT
Arbitrary params that will be passed in the ContentView object, manageable by ViewProviders.
Those params will NOT be passed to the resulting view template by default.
EOT
)->example(array("foo" => "%some.parameter.reference%", "osTypes" => array("osx", "linux", "windows")))->useAttributeAsKey("key")->prototype("variable")->end()->end()->end()->end()->end()->end();
    }
Exemplo n.º 17
0
 public function addSemanticConfig(NodeBuilder $nodeBuilder)
 {
     $fieldTypeNodeBuilder = $nodeBuilder->arrayNode("fieldtypes")->children();
     // Delegate to configuration parsers
     foreach ($this->configParsers as $parser) {
         if ($parser instanceof FieldTypeParserInterface) {
             $parser->addSemanticConfig($fieldTypeNodeBuilder);
         } else {
             $parser->addSemanticConfig($nodeBuilder);
         }
     }
 }
Exemplo n.º 18
0
 /** {@inheritdoc} */
 public static function applyConfiguration(NodeBuilder $node_builder)
 {
     $uglify = $node_builder->arrayNode('uglifyjs')->canBeEnabled()->children();
     $compress = $uglify->arrayNode('compress')->cannotBeEmpty()->addDefaultsIfNotSet()->children();
     foreach (self::$config_map as list($option, $default, $info)) {
         $compress->booleanNode($option)->defaultValue($default)->info($info)->end();
     }
     $compress->arrayNode('global_defs')->info('global definition')->prototype('scalar')->end()->end();
     $uglify->arrayNode('mangle_except')->defaultValue(['$super', '$', 'exports', 'require'])->info('Variable names to not mangle')->prototype('scalar')->end();
     $uglify->booleanNode('source_map')->defaultTrue()->info('The plugin uses SourceMaps to map error message locations to modules. This slows down the compilation')->end();
     $uglify->scalarNode('test')->defaultValue('/\\.js($|\\?)/i')->info('RegExp to filter processed files')->end();
     $uglify->booleanNode('minimize')->defaultTrue()->info('Whether to minimize or not')->end();
 }
Exemplo n.º 19
0
 private function addValidationSection(NodeBuilder $rootNode)
 {
     $rootNode->arrayNode('validation')->canBeUnset()->beforeNormalization()->ifTrue(function ($v) {
         return is_array($v) && !empty($v['annotations']) && !empty($v['namespace']);
     })->then(function ($v) {
         $v['annotations'] = array('namespace' => $v['namespace']);
         unset($v['namespace']);
         return $v;
     })->end()->booleanNode('enabled')->end()->arrayNode('annotations')->canBeUnset()->treatNullLike(array())->treatTrueLike(array())->fixXmlConfig('namespace')->arrayNode('namespaces')->useAttributeAsKey('prefix')->prototype('scalar')->beforeNormalization()->ifTrue(function ($v) {
         return is_array($v) && isset($v['namespace']);
     })->then(function ($v) {
         return $v['namespace'];
     })->end()->end()->end()->end()->end();
 }
Exemplo n.º 20
0
 public function getConfigTreeBuilder()
 {
     $nodeBuilder = new NodeBuilder();
     $nodeBuilder->setNodeClass('task', __NAMESPACE__ . '\\Builder\\TaskNodeDefinition');
     $nodeBuilder->setNodeClass('transporter', __NAMESPACE__ . '\\Builder\\TransporterNodeDefinition');
     $nodeBuilder->setNodeClass('strategy', __NAMESPACE__ . '\\Builder\\StrategyNodeDefinition');
     $treeBuilder = new TreeBuilder();
     $rootNode = $treeBuilder->root('conveyor', 'array', $nodeBuilder);
     $validSchemes = array('git', 'svn');
     $rootNode->children()->arrayNode('repository')->isRequired()->children()->scalarNode('type')->isRequired()->cannotBeEmpty()->end()->scalarNode('url')->isRequired()->cannotBeEmpty()->end()->end()->beforeNormalization()->ifString()->then(function ($v) {
         $result = parse_url($v);
         if (false === $result) {
             throw new InvalidConfigurationException(sprintf('Could not parse repository url "%s"', $v));
         }
         return array('type' => $result['scheme'], 'url' => $v);
     })->end()->validate()->ifTrue(function ($v) use($validSchemes) {
         return false === in_array($v['type'], $validSchemes);
     })->thenInvalid('Invalid repository type "%s". Valid types are: ' . implode(', ', $validSchemes) . '.')->end()->end()->arrayNode('targets')->prototype('array')->children()->scalarNode('name')->end()->scalarNode('url')->end()->arrayNode('groups')->defaultValue(array())->beforeNormalization()->ifString()->then(function ($v) {
         return array($v);
     })->end()->prototype('scalar')->end()->end()->node('transport', 'transporter')->setTransporterFactory($this->transporterFactory)->isRequired()->beforeNormalization()->ifString()->then(function ($v) {
         $regex = '/^(?P<type>\\w+):\\/\\/(?P<user>\\w+)(:(?P<pass>\\w+))?@(?P<host>[.\\w]+)(:(?P<port>\\w+))?(?P<path>\\/[\\/\\w]+)/';
         if (is_string($v)) {
             if (preg_match($regex, $v, $matches)) {
                 return array('type' => $matches['type'], 'user' => $matches['user'], 'pass' => $matches['pass'] ?: null, 'host' => $matches['host'], 'port' => $matches['port'], 'path' => $matches['path']);
             } else {
                 throw new InvalidConfigurationException(sprintf('Could not parse "%s" as DSN', $v));
             }
         }
         return $v;
     })->end()->end()->arrayNode('parameters')->prototype('scalar')->end()->end()->end()->end()->end()->arrayNode('build')->children()->scalarNode('dir')->defaultValue('/tmp/conveyor')->beforeNormalization()->ifString()->then(function ($v) {
         // resolve home dir
         $path = preg_replace('/^\\~/', getenv('HOME'), $v);
         return $path;
     })->end()->end()->arrayNode('derived')->prototype('array')->children()->scalarNode('source')->end()->scalarNode('derived')->end()->end()->end()->end()->arrayNode('tasks')->prototype('task')->setTaskFactory($this->taskFactory)->children()->arrayNode('targets')->beforeNormalization()->ifString()->then(function ($v) {
         return array($v);
     })->end()->prototype('scalar')->end()->end()->end()->end()->end()->end()->end()->arrayNode('undeploy')->children()->arrayNode('tasks')->prototype('task')->setTaskFactory($this->taskFactory)->children()->arrayNode('targets')->beforeNormalization()->ifString()->then(function ($v) {
         return array($v);
     })->end()->prototype('scalar')->end()->end()->end()->end()->end()->end()->end()->arrayNode('deploy')->addDefaultsIfNotSet()->children()->node('strategy', 'strategy')->beforeNormalization()->ifString()->then(function ($v) {
         return array('type' => $v);
     })->end()->setStrategyFactory($this->strategyFactory)->addDefaultsIfNotSet()->children()->scalarNode('type')->isRequired()->defaultValue('releases')->end()->end()->end()->arrayNode('before')->prototype('task')->setTaskFactory($this->taskFactory)->children()->arrayNode('targets')->beforeNormalization()->ifString()->then(function ($v) {
         return array($v);
     })->end()->prototype('scalar')->end()->end()->end()->end()->end()->arrayNode('after')->prototype('task')->setTaskFactory($this->taskFactory)->children()->arrayNode('targets')->beforeNormalization()->ifString()->then(function ($v) {
         return array($v);
     })->end()->prototype('scalar')->end()->end()->end()->end()->end()->arrayNode('final')->prototype('task')->setTaskFactory($this->taskFactory)->children()->arrayNode('targets')->beforeNormalization()->ifString()->then(function ($v) {
         return array($v);
     })->end()->prototype('scalar')->end()->end()->end()->end()->end()->end()->end()->end();
     return $treeBuilder;
 }
Exemplo n.º 21
0
 /**
  * @param string      $driver
  * @param NodeBuilder $rootNode
  */
 public function addDriverSettings($driver, NodeBuilder $rootNode)
 {
     $driverNode = $rootNode->arrayNode($driver)->fixXmlConfig('server');
     if ($driver == 'Memcache') {
         $finalNode = $driverNode->info('All options except "servers" are Memcached options. See http://www.php.net/manual/en/memcached.constants.php')->addDefaultsIfNotSet()->children()->booleanNode('compression')->end()->scalarNode('serializer')->end()->scalarNode('prefix_key')->end()->scalarNode('hash')->end()->scalarNode('distribution')->end()->booleanNode('libketama_compatible')->end()->booleanNode('buffer_writes')->end()->booleanNode('binary_protocol')->end()->booleanNode('no_block')->end()->booleanNode('tcp_nodelay')->end()->booleanNode('auto_eject_hosts')->end()->scalarNode('socket_send_size')->end()->scalarNode('socket_recv_size')->end()->scalarNode('connect_timeout')->end()->scalarNode('retry_timeout')->end()->scalarNode('send_timeout')->end()->scalarNode('recv_timeout')->end()->scalarNode('poll_timeout')->end()->booleanNode('cache_lookups')->end()->scalarNode('server_failure_limit')->end()->arrayNode('servers')->info('Your Memcached server(s) configuration.')->requiresAtLeastOneElement()->example(array(array('server' => '127.0.0.1', 'port' => '11211')))->defaultValue(array(array('server' => '127.0.0.1', 'port' => '11211')))->prototype('array')->children()->scalarNode('server')->defaultValue('127.0.0.1')->end()->scalarNode('port')->defaultValue('11211')->end()->scalarNode('weight')->end()->end()->end()->end()->end();
     } elseif ($driver == 'Redis') {
         $finalNode = $driverNode->info("Accepts server info, password, and database.")->addDefaultsIfNotSet()->children()->scalarNode('password')->end()->scalarNode('database')->end()->arrayNode('servers')->info('Configuration of Redis server(s)')->requiresAtLeastOneElement()->example(array(array('server' => '127.0.0.1', 'port' => '6379')))->defaultValue(array(array('server' => '127.0.0.1', 'port' => '6379')))->prototype('array')->children()->scalarNode('server')->defaultValue('127.0.0.1')->end()->scalarNode('port')->defaultValue('6379')->end()->scalarNode('ttl')->end()->booleanNode('socket')->end()->end()->end()->end()->end();
     } else {
         $defaults = isset($this->driverSettings[$driver]) ? $this->driverSettings[$driver] : array();
         $node = $driverNode->addDefaultsIfNotSet()->children();
         foreach ($defaults as $setting => $default) {
             $node->scalarNode($setting)->defaultValue($default)->end();
         }
         $finalNode = $node->end();
     }
     $finalNode->end();
 }
Exemplo n.º 22
0
 /**
  *
  */
 public function __construct()
 {
     parent::__construct();
     $this->nodeMapping['path'] = __NAMESPACE__ . '\\PathNodeDefinition';
     $this->nodeMapping['paths'] = __NAMESPACE__ . '\\PathsNodeDefinition';
     $this->nodeMapping['level'] = __NAMESPACE__ . '\\LevelNodeDefinition';
     $this->nodeMapping['nullable_level'] = __NAMESPACE__ . '\\NullableLevelNodeDefinition';
     $this->nodeMapping['level_map'] = __NAMESPACE__ . '\\LevelMapNodeDefinition';
 }
Exemplo n.º 23
0
 public function node($name, $type)
 {
     if ($type !== 'array' || !self::$forceHack && method_exists('\\Symfony\\Component\\Config\\Definition\\Builder\\ArrayNodeDefinition', 'canBeEnabled')) {
         return parent::node($name, $type);
     }
     $node = new ArrayNodeDefinition($name);
     $this->append($node);
     return $node;
 }
Exemplo n.º 24
0
 /**
  * Overrides parent constructor to add $customNodes
  */
 public function __construct()
 {
     parent::__construct();
     foreach (self::$customNodes as $mapping => $nodeClass) {
         if (class_exists($nodeClass)) {
             $this->nodeMapping[$mapping] = $nodeClass;
         }
     }
 }
 private function addSiteAccessSettings( NodeBuilder $nodeBuilder )
 {
     $nodeBuilder
         ->arrayNode( 'templating' )
             ->children()
                 ->scalarNode( 'view_layout' )
                     ->info( 'Template reference to use as pagelayout while rendering a content view in legacy' )
                     ->example( 'eZDemoBundle::pagelayout.html.twig' )
                 ->end()
                 ->scalarNode( 'module_layout' )
                     ->info( 'Template reference to use as pagelayout for legacy modules. If not specified, pagelayout from legacy will be used.' )
                 ->end()
             ->end()
         ->end()
         ->booleanNode( 'legacy_mode' )
             ->info( 'Whether to use legacy mode or not. If true, will let the legacy kernel handle url aliases.' )
         ->end();
 }
Exemplo n.º 26
0
 protected function getNodeClass($type)
 {
     switch ($type) {
         case 'variable':
             return __NAMESPACE__ . '\\' . ucfirst($type) . 'NodeDefinition';
         case 'bar':
             return __NAMESPACE__ . '\\' . ucfirst($type) . 'NodeDefinition';
         default:
             return parent::getNodeClass($type);
     }
 }
Exemplo n.º 27
0
 public function testNodeTypesAreNotCaseSensitive()
 {
     $builder = new BaseNodeBuilder();
     $node1 = $builder->node('', 'VaRiAbLe');
     $node2 = $builder->node('', 'variable');
     $this->assertEquals(get_class($node1), get_class($node2));
     $builder->setNodeClass('CuStOm', __NAMESPACE__ . '\\SomeNodeDefinition');
     $node1 = $builder->node('', 'CUSTOM');
     $node2 = $builder->node('', 'custom');
     $this->assertEquals(get_class($node1), get_class($node2));
 }
Exemplo n.º 28
0
 /**
  * @param NodeBuilder $callbacks
  * @param string      $type
  */
 private function addSubCallbackSection(NodeBuilder $callbacks, $type)
 {
     $callbacks->arrayNode($type)->useAttributeAsKey('name')->prototype('array')->children()->scalarNode('on')->end()->variableNode('do')->end()->variableNode('from')->end()->variableNode('to')->end()->scalarNode('disabled')->defaultValue(false)->end()->end()->end()->end();
 }
Exemplo n.º 29
0
 /**
  * Shared configuration between cache control, tags and invalidation.
  *
  * @param NodeBuilder $rules
  */
 private function addMatch(NodeBuilder $rules)
 {
     $rules->arrayNode('match')->cannotBeOverwritten()->isRequired()->fixXmlConfig('method')->fixXmlConfig('ip')->fixXmlConfig('attribute')->validate()->ifTrue(function ($v) {
         return !empty($v['additional_cacheable_status']) && !empty($v['match_response']);
     })->thenInvalid('You may not set both additional_cacheable_status and match_response.')->end()->validate()->ifTrue(function ($v) {
         return !empty($v['match_response']) && !class_exists('Symfony\\Component\\ExpressionLanguage\\ExpressionLanguage');
     })->thenInvalid('Configured a match_response but ExpressionLanguage is not available')->end()->children()->scalarNode('path')->defaultNull()->info('Request path.')->end()->scalarNode('host')->defaultNull()->info('Request host name.')->end()->arrayNode('methods')->beforeNormalization()->ifString()->then(function ($v) {
         return preg_split('/\\s*,\\s*/', $v);
     })->end()->useAttributeAsKey('name')->prototype('scalar')->end()->info('Request HTTP methods.')->end()->arrayNode('ips')->beforeNormalization()->ifString()->then(function ($v) {
         return preg_split('/\\s*,\\s*/', $v);
     })->end()->useAttributeAsKey('name')->prototype('scalar')->end()->info('List of client IPs.')->end()->arrayNode('attributes')->useAttributeAsKey('name')->prototype('scalar')->end()->info('Regular expressions on request attributes.')->end()->arrayNode('additional_cacheable_status')->prototype('scalar')->end()->info('Additional response HTTP status codes that will match.')->end()->scalarNode('match_response')->defaultNull()->info('Expression to decide whether response should be matched. Replaces HTTP code check and additional_cacheable_status.')->end()->end()->end();
 }
 /**
  * Adds semantic configuration definition.
  *
  * @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $nodeBuilder Node just under ezpublish.<system>.<siteaccess>
  */
 public function addSemanticConfig(NodeBuilder $nodeBuilder)
 {
     $fieldTypeNodeBuilder = $nodeBuilder->arrayNode($this->getFieldTypeIdentifier())->children();
     $this->addFieldTypeSemanticConfig($fieldTypeNodeBuilder);
 }