children() public method

Returns a builder to add children nodes.
public children ( ) : Symfony\Component\Config\Definition\Builder\NodeBuilder
return Symfony\Component\Config\Definition\Builder\NodeBuilder
 /**
  * Setups configuration for the extension.
  *
  * @param ArrayNodeDefinition $builder
  */
 public function configure(ArrayNodeDefinition $builder)
 {
     $builder->children()->scalarNode("name")->defaultValue("emusehtml");
     $builder->children()->scalarNode("renderer")->defaultValue("behat2");
     $builder->children()->scalarNode("file_name")->defaultValue("generated");
     $builder->children()->scalarNode('output')->defaultValue('.');
 }
 /**
  * Setups configuration for the extension.
  *
  * @param ArrayNodeDefinition $builder
  */
 public function configure(ArrayNodeDefinition $builder)
 {
     $paths = $builder->children()->arrayNode('path')->children();
     foreach (array('resources', 'base') as $namespaceType) {
         $paths->scalarNode($namespaceType);
     }
     $builder->children()->variableNode('resource_map');
     $builder->children()->scalarNode('factory_class');
 }
 /**
  * @param ArrayNodeDefinition $builder
  */
 private function configurePageObjectFactory(ArrayNodeDefinition $builder)
 {
     $factory = $builder->children()->arrayNode('factory');
     $factory->beforeNormalization()->ifString()->then(function ($v) {
         return array('id' => $v);
     })->end()->children()->scalarNode('id')->info('id of a page object factory service')->end()->scalarNode('class_name_resolver')->info('id of a class name resolver service for the default factory')->end()->arrayNode('page_parameters')->info('parameters passed from the factory when creating a page')->prototype('scalar')->end()->end()->end();
 }
Beispiel #4
0
 private function addAclSection(ArrayNodeDefinition $rootNode)
 {
     $rootNode
         ->children()
             ->arrayNode('acl')
                 ->children()
                     ->scalarNode('connection')->end()
                     ->arrayNode('cache')
                         ->addDefaultsIfNotSet()
                         ->children()
                             ->scalarNode('id')->end()
                             ->scalarNode('prefix')->defaultValue('sf2_acl_')->end()
                         ->end()
                     ->end()
                     ->arrayNode('tables')
                         ->addDefaultsIfNotSet()
                         ->children()
                             ->scalarNode('class')->defaultValue('acl_classes')->end()
                             ->scalarNode('entry')->defaultValue('acl_entries')->end()
                             ->scalarNode('object_identity')->defaultValue('acl_object_identities')->end()
                             ->scalarNode('object_identity_ancestors')->defaultValue('acl_object_identity_ancestors')->end()
                             ->scalarNode('security_identity')->defaultValue('acl_security_identities')->end()
                         ->end()
                     ->end()
                     ->arrayNode('voter')
                         ->addDefaultsIfNotSet()
                         ->children()
                             ->booleanNode('allow_if_object_identity_unavailable')->defaultTrue()->end()
                         ->end()
                     ->end()
                 ->end()
             ->end()
         ->end()
     ;
 }
 private function addDynamicSection(ArrayNodeDefinition $root)
 {
     $root->children()->arrayNode('dynamic')->fixXmlConfig('controller_by_type', 'controllers_by_type')->fixXmlConfig('controller_by_class', 'controllers_by_class')->fixXmlConfig('template_by_class', 'templates_by_class')->fixXmlConfig('route_filter_by_id', 'route_filters_by_id')->fixXmlConfig('locale')->addDefaultsIfNotSet()->canBeEnabled()->children()->scalarNode('route_collection_limit')->defaultValue(0)->end()->scalarNode('generic_controller')->defaultNull()->end()->scalarNode('default_controller')->defaultNull()->end()->arrayNode('controllers_by_type')->useAttributeAsKey('type')->prototype('scalar')->end()->end()->arrayNode('controllers_by_class')->useAttributeAsKey('class')->prototype('scalar')->end()->end()->arrayNode('templates_by_class')->useAttributeAsKey('class')->prototype('scalar')->end()->end()->arrayNode('persistence')->addDefaultsIfNotSet()->validate()->ifTrue(function ($v) {
         return count(array_filter($v, function ($persistence) {
             return $persistence['enabled'];
         })) > 1;
     })->thenInvalid('Only one persistence layer can be enabled at the same time.')->end()->children()->arrayNode('phpcr')->addDefaultsIfNotSet()->canBeEnabled()->fixXmlConfig('route_basepath')->validate()->ifTrue(function ($v) {
         isset($v['route_basepath']) && isset($v['route_basepaths']);
     })->thenInvalid('Found values for both "route_basepath" and "route_basepaths", use "route_basepaths" instead.')->end()->beforeNormalization()->ifTrue(function ($v) {
         return isset($v['route_basepath']) && !is_array($v['route_basepath']);
     })->then(function ($v) {
         @trigger_error('The route_basepath setting is deprecated as of version 1.4 and will be removed in 2.0. Use route_basepaths instead.', E_USER_DEPRECATED);
         return $v;
     })->end()->children()->scalarNode('manager_name')->defaultNull()->end()->arrayNode('route_basepaths')->beforeNormalization()->ifString()->then(function ($v) {
         return array($v);
     })->end()->prototype('scalar')->end()->defaultValue(array('/cms/routes'))->end()->scalarNode('admin_basepath')->defaultNull()->end()->scalarNode('content_basepath')->defaultValue('/cms/content')->end()->enumNode('use_sonata_admin')->beforeNormalization()->ifString()->then(function ($v) {
         switch ($v) {
             case 'true':
                 return true;
             case 'false':
                 return false;
             default:
                 return $v;
         }
     })->end()->values(array(true, false, 'auto'))->defaultValue('auto')->end()->enumNode('enable_initializer')->beforeNormalization()->ifString()->then(function ($v) {
         switch ($v) {
             case 'true':
                 return true;
             case 'false':
                 return false;
             default:
                 return $v;
         }
     })->end()->values(array(true, false, 'auto'))->defaultValue('auto')->end()->end()->end()->arrayNode('orm')->addDefaultsIfNotSet()->canBeEnabled()->children()->scalarNode('manager_name')->defaultNull()->end()->end()->end()->end()->end()->scalarNode('uri_filter_regexp')->defaultValue('')->end()->scalarNode('route_provider_service_id')->end()->arrayNode('route_filters_by_id')->canBeUnset()->defaultValue(array())->useAttributeAsKey('id')->prototype('scalar')->end()->end()->scalarNode('content_repository_service_id')->end()->arrayNode('locales')->prototype('scalar')->end()->end()->integerNode('limit_candidates')->defaultValue(20)->end()->booleanNode('match_implicit_locale')->defaultValue(true)->end()->booleanNode('auto_locale_pattern')->defaultValue(false)->end()->scalarNode('url_generator')->defaultValue('cmf_routing.generator')->info('URL generator service ID')->end()->end()->end()->end();
 }
 /**
  * Adds connections definition.
  *
  * @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $node
  */
 protected function addConnectionsSection(ArrayNodeDefinition $node)
 {
     $node->children()->scalarNode('default_connection')->info('Name of the default connection')->end()->arrayNode('connections')->info('Solr Search Engine connection configuration')->useAttributeAsKey('connection_name')->performNoDeepMerging()->prototype('array')->beforeNormalization()->ifTrue(function ($v) {
         return !empty($v['mapping']) && !is_array($v['mapping']);
     })->then(function ($v) {
         // If single endpoint is set for Content mapping, use it as default
         // mapping for Content index
         $v['mapping'] = array('default' => $v['mapping']);
         return $v;
     })->end()->beforeNormalization()->ifTrue(function ($v) {
         return empty($v['entry_endpoints']) && (!empty($v['mapping']['translations']) || !empty($v['mapping']['default']) || !empty($v['mapping']['main_translations']));
     })->then(function ($v) {
         $endpointSet = array();
         if (!empty($v['mapping']['translations'])) {
             $endpointSet = array_flip($v['mapping']['translations']);
         }
         if (!empty($v['mapping']['default'])) {
             $endpointSet[$v['mapping']['default']] = true;
         }
         if (!empty($v['mapping']['main_translations'])) {
             $endpointSet[$v['mapping']['main_translations']] = true;
         }
         $v['entry_endpoints'] = array_keys($endpointSet);
         return $v;
     })->end()->children()->arrayNode('entry_endpoints')->info("A set of entry endpoint names.\n\n" . 'If not set, mapping endpoints will be used.')->example(array('endpoint1', 'endpoint2'))->prototype('scalar')->end()->end()->arrayNode('mapping')->info('Defines a map of translation language codes and Solr ' . "endpoint names for Content index.\n\n" . 'Optionally, you can define default and main translations ' . 'endpoints. Default one will be used for a translation if it ' . 'is not explicitly mapped, and main translations will be used ' . "for indexing translations in the main languages.\n\n" . 'If single endpoint name is given, it will be used as a ' . 'shortcut to define the default endpoint.')->addDefaultsIfNotSet()->example(array(array('translations' => array('cro-HR' => 'endpoint1', 'eng-GB' => 'endpoint2'), 'default' => 'endpoint3', 'main_translations' => 'endpoint4')))->children()->arrayNode('translations')->normalizeKeys(false)->useAttributeAsKey('language_code')->info('A map of translation language codes and Solr ' . 'endpoint names for Content index.')->example(array('cro-HR' => 'endpoint1', 'eng-GB' => 'endpoint2'))->prototype('scalar')->end()->end()->scalarNode('default')->defaultNull()->info('Default endpoint will be used for indexing ' . 'documents of a translation that is not explicitly ' . "mapped.\n\n" . 'This setting is optional.')->end()->scalarNode('main_translations')->defaultNull()->info('Main translations endpoint will be used to index ' . "documents of translations in the main languages\n\n" . 'This setting is optional. Use it to reduce the ' . 'number of Solr endpoints that the query is ' . 'distributed to when using always available fallback ' . 'or searching only on the main languages.')->end()->end()->end()->end()->end()->end();
 }
 /**
  * @param ArrayNodeDefinition $nodeDefinition
  * @return ArrayNodeDefinition
  *
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 public function addTriggerNodes(ArrayNodeDefinition $nodeDefinition)
 {
     $nodeDefinition->children()->enumNode('event')->defaultNull()->values(ProcessTrigger::getAllowedEvents())->end()->scalarNode('field')->defaultNull()->end()->integerNode('priority')->defaultValue(Job::PRIORITY_DEFAULT)->end()->booleanNode('queued')->defaultFalse()->end()->scalarNode('time_shift')->defaultNull()->validate()->always(function ($value) {
         // if value is an integer value
         $integerValue = filter_var($value, FILTER_VALIDATE_INT);
         if (false !== $integerValue) {
             return $integerValue;
         }
         // if value is DateInterval spec
         try {
             return ProcessTrigger::convertDateIntervalToSeconds(new \DateInterval($value));
         } catch (\Exception $e) {
             throw new \LogicException(sprintf('Time shift "%s" is not compatible with DateInterval', $value));
         }
     })->end()->end()->scalarNode('cron')->defaultNull()->validate()->always(function ($value) {
         if ($value !== null) {
             // validate expression string
             CronExpression::factory($value);
         }
         return $value;
     })->end()->end()->end()->validate()->always(function ($data) {
         if ($data['event'] && $data['cron']) {
             throw new \LogicException('Only one child node "event" or "cron" must be configured.');
         }
         if ($data['cron'] && ($data['field'] || $data['queued'] || $data['time_shift'])) {
             throw new \LogicException('Nodes "field", "queued" and "time_shift" are only allowed with event node.');
         }
         if ($data['field'] && $data['event'] !== ProcessTrigger::EVENT_UPDATE) {
             throw new \LogicException('Field is only allowed for update event');
         }
         return $data;
     })->end();
     return $nodeDefinition;
 }
 /**
  * @param ArrayNodeDefinition $rootNode
  */
 private function addFiltersSection(ArrayNodeDefinition $rootNode)
 {
     $rootNode->children()->arrayNode('filters')->validate()->ifTrue(function ($v) {
         $v = array_filter($v);
         return empty($v);
     })->thenInvalid('At least single filter must be configured.')->end()->children()->append($this->buildFilterTree('choice'))->append($this->buildFilterTree('multi_choice'))->append($this->buildFilterTree('match'))->append($this->buildFilterTree('fuzzy'))->append($this->buildFilterTree('sort'))->append($this->buildFilterTree('pager'))->append($this->buildFilterTree('document_field'))->append($this->buildFilterTree('range'))->append($this->buildFilterTree('date_range'))->append($this->buildFilterTree('variant'))->end()->end()->end();
 }
Beispiel #9
0
 /**
  * Configure the root node
  *
  * @param ArrayNodeDefinition $rootNode
  */
 protected function setupTree(ArrayNodeDefinition $rootNode)
 {
     $templateValidation = function ($value) {
         if (is_string($value)) {
             return $value;
         }
         throw new \InvalidArgumentException(sprintf('Status templates must be strings, "%s" found', $value));
     };
     $checkForNumeric = function ($value) {
         if (is_numeric($value)) {
             return $value;
         }
         throw new \InvalidArgumentException(sprintf('Status code for error templates must be numeric, "%s" found', $value));
     };
     $checkForNumericKeys = function (array $value) {
         foreach ($value as $code => $template) {
             if (!is_numeric($code)) {
                 throw new \InvalidArgumentException(sprintf('Status codes for error templates must be numeric, "%s" found', $code));
             }
         }
         return $value;
     };
     $rootNode->children()->arrayNode('error_templates')->info('Error templates setup')->canBeEnabled()->children()->scalarNode('default')->info('Default template for exceptions')->defaultValue('Exception:error.html.twig')->validate()->always($templateValidation)->end()->end()->arrayNode('by_code')->info('Specific template by status code')->example('{ 404: Exception:error.html.twig }')->useAttributeAsKey('name')->prototype('scalar')->validate()->ifTrue(function ($value) {
         return null !== $value;
     })->then($templateValidation)->end()->end()->validate()->always($checkForNumericKeys)->end()->end()->scalarNode('fallback')->info('Default status code for non-http exceptions')->defaultFalse()->treatTrueLike(Response::HTTP_INTERNAL_SERVER_ERROR)->validate()->always($checkForNumeric)->end()->end()->end()->end()->end();
 }
Beispiel #10
0
 /**
  *
  * @param ArrayNodeDefinition $root     Config root node
  * @param array               $settings
  */
 public static function append(ArrayNodeDefinition $root, $settings)
 {
     $builder = new TreeBuilder();
     $node = $builder->root('settings')->addDefaultsIfNotSet()->children()->scalarNode(self::RESOLVED_KEY)->defaultTrue()->end();
     foreach ($settings as $name => $setting) {
         $child = $node->arrayNode($name)->addDefaultsIfNotSet()->children();
         if (isset($setting['type']) && in_array($setting['type'], array('scalar', 'boolean', 'array'))) {
             $type = $setting['type'];
         } else {
             $type = 'scalar';
         }
         switch ($type) {
             case 'scalar':
                 $child->scalarNode('value')->defaultValue($setting['value']);
                 break;
             case 'boolean':
                 $child->booleanNode('value')->defaultValue((bool) $setting['value']);
                 break;
             case 'array':
                 $child->arrayNode('value')->treatNullLike(array())->prototype('scalar')->end()->defaultValue(isset($setting['value']) ? $setting['value'] : array());
                 break;
         }
         $child->scalarNode('scope')->defaultValue(isset($setting['scope']) ? $setting['scope'] : 'app');
     }
     $root->children()->append($node->end());
 }
 public function addCaptchaConfigSection(ArrayNodeDefinition $rootNode, $page, array $captchaConfig)
 {
     $captchaId = isset($captchaConfig['captcha_id']) ? $captchaConfig['captcha_id'] : 'defaultCaptcha';
     $userInputId = isset($captchaConfig['user_input_id']) ? $captchaConfig['user_input_id'] : 'captchaCode';
     $captchaConfigFilePath = isset($captchaConfig['captcha_config_file_path']) ? $captchaConfig['captcha_config_file_path'] : null;
     $rootNode->children()->arrayNode($page)->children()->scalarNode('captcha_id')->defaultValue($captchaId)->end()->scalarNode('user_input_id')->defaultValue($userInputId)->end()->scalarNode('captcha_config_file_path')->defaultValue($captchaConfigFilePath)->end()->end()->end()->end();
 }
 private function addSecuritySection(ArrayNodeDefinition $node)
 {
     $supportedSecurityXFrameOptions = [null, 'deny', 'same-origin'];
     $node->children()->arrayNode('security')->addDefaultsIfNotSet()->children()->scalarNode('x_frame_options')->validate()->ifTrue(function ($value) use($supportedSecurityXFrameOptions) {
         return !(in_array($value, $supportedSecurityXFrameOptions) || filter_var($value, FILTER_VALIDATE_URL));
     })->thenInvalid('The x_frame_options option only allows values ' . json_encode($supportedSecurityXFrameOptions) . ' or an URI.')->end()->defaultValue(null)->end()->end()->end();
 }
 /**
  * {@inheritDoc}
  */
 public function addConfiguration(ArrayNodeDefinition $builder)
 {
     $builder
         ->children()
             ->scalarNode('bucket')->isRequired()->cannotBeEmpty()->end()
             ->scalarNode('cache')->defaultValue(false)->end()
             ->scalarNode('acl')->defaultValue('public-read')->cannotBeEmpty()->end()
             ->scalarNode('cache_prefix')->defaultValue(null)->end()
             ->arrayNode('client_config')
                 ->isRequired()
                 ->useAttributeAsKey('key')
                 ->prototype('scalar')->end()
             ->end()
             /* @deprecated Use `get_options` instead */
             ->arrayNode('url_options')
                 ->useAttributeAsKey('key')
                 ->prototype('scalar')->end()
             ->end()
             ->arrayNode('get_options')
                 ->useAttributeAsKey('key')
                 ->prototype('scalar')->end()
             ->end()
             ->arrayNode('put_options')
                 ->useAttributeAsKey('key')
                 ->prototype('scalar')->end()
             ->end()
             ->arrayNode('proxies')
                 ->defaultValue(array())
                 ->prototype('scalar')->end()
             ->end()
         ->end()
     ;
 }
 public function testAppendingSomeNode()
 {
     $parent = new ArrayNodeDefinition('root');
     $child = new ScalarNodeDefinition('child');
     $parent->children()->scalarNode('foo')->end()->scalarNode('bar')->end()->end()->append($child);
     $this->assertCount(3, $this->getField($parent, 'children'));
     $this->assertTrue(in_array($child, $this->getField($parent, 'children')));
 }
 /**
  * Parses the kitpages_cms.block config section
  * Example for yaml driver:
  * tbbc_money:
  *     currencies: ["USD", "EUR"]
  *     reference_currency: "EUR"
  *
  * @param ArrayNodeDefinition $node
  * @return void
  */
 private function addCurrencySection(ArrayNodeDefinition $node)
 {
     $node->children()->arrayNode('currencies')->prototype('scalar')->end()->end()->scalarNode('reference_currency')->isRequired()->cannotBeEmpty()->end()->booleanNode('enable_pair_history')->defaultValue(false)->end()->integerNode('decimals')->defaultValue(2)->min(0)->end()->scalarNode('storage')->cannotBeEmpty()->defaultValue('csv')->validate()->ifNotInArray(array('csv', 'doctrine'))->thenInvalid('Invalid storage "%s"')->end()->end()->scalarNode('ratio_provider')->cannotBeEmpty()->defaultValue('tbbc_money.ratio_provider.yahoo_finance')->end()->arrayNode('templating')->addDefaultsIfNotSet()->children()->arrayNode('engines')->isRequired()->requiresAtLeastOneElement()->example(array('twig'))->beforeNormalization()->ifTrue(function ($v) {
         return !is_array($v);
     })->then(function ($v) {
         return array($v);
     })->end()->prototype('scalar')->validate()->ifNotInArray(array('twig', 'php'))->thenInvalid('Only "twig" and "php" engines are supported.')->end()->end()->defaultValue(array('twig'))->end()->end()->end()->end();
 }
 protected function addMappingsSection(ArrayNodeDefinition $node)
 {
     $node->children()->arrayNode('mappings')->useAttributeAsKey('id')->prototype('array')->children()->scalarNode('uri_prefix')->defaultValue('/uploads')->end()->scalarNode('upload_destination')->isRequired()->end()->arrayNode('namer')->addDefaultsIfNotSet()->beforeNormalization()->ifString()->then(function ($v) {
         return array('service' => $v, 'options' => array());
     })->end()->children()->scalarNode('service')->defaultNull()->end()->variableNode('options')->defaultNull()->end()->end()->end()->scalarNode('directory_namer')->defaultNull()->end()->scalarNode('delete_on_remove')->defaultTrue()->end()->scalarNode('delete_on_update')->defaultTrue()->end()->scalarNode('inject_on_load')->defaultFalse()->end()->scalarNode('db_driver')->defaultNull()->beforeNormalization()->ifString()->then(function ($v) {
         return strtolower($v);
     })->end()->validate()->ifNotInArray($this->supportedDbDrivers)->thenInvalid('The db driver %s is not supported. Please choose one of ' . implode(', ', $this->supportedDbDrivers))->end()->end()->end()->end()->end()->end();
 }
Beispiel #17
0
 /**
  * Setups configuration for current extension.
  *
  * @param ArrayNodeDefinition $builder
  */
 public function getConfig(ArrayNodeDefinition $builder)
 {
     $boolFilter = function ($v) {
         $filtered = filter_var($v, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
         return null === $filtered ? $v : $filtered;
     };
     $builder->children()->scalarNode('framework_script')->isRequired()->end()->scalarNode('config_script')->isRequired()->end()->booleanNode('mink_driver')->beforeNormalization()->ifString()->then($boolFilter)->end()->defaultFalse()->end()->end();
 }
Beispiel #18
0
 /**
  * {@inheritdoc}
  */
 public function getNodeDefinition(ArrayNodeDefinition $node)
 {
     $sourceNodeBuilder = $node->children()->arrayNode('keys')->useAttributeAsKey('name')->prototype('array')->performNoDeepMerging()->children();
     foreach ($this->getJWKSources() as $name => $source) {
         $sourceNode = $sourceNodeBuilder->arrayNode($name)->canBeUnset();
         $source->addConfiguration($sourceNode);
     }
 }
 private function addCacheSection(ArrayNodeDefinition $node)
 {
     $cacheNodeBuilder = $node->children()->arrayNode('cache')->useAttributeAsKey('name')->prototype('array')->performNoDeepMerging()->children();
     foreach ($this->cacheFactories as $name => $factory) {
         $factoryNode = $cacheNodeBuilder->arrayNode($name)->canBeUnset();
         $factory->addConfiguration($factoryNode);
     }
 }
 /**
  * @param ArrayNodeDefinition $node
  */
 private function addCachePools(ArrayNodeDefinition $node)
 {
     $config = $node->children()->arrayNode('pools');
     $config->useAttributeAsKey('name');
     $config->example(['poolname' => ['service' => 'service.key']]);
     $items = $config->prototype('array');
     $items->children()->scalarNode('service')->isRequired()->cannotBeEmpty()->end();
 }
 /**
  * Add container configuration for "processor" node
  *
  * @param ArrayNodeDefinition $node
  */
 private function addProcessorNode(ArrayNodeDefinition $node)
 {
     $node->children()->arrayNode('processor')->addDefaultsIfNotSet()->children()->arrayNode('security')->addDefaultsIfNotSet()->beforeNormalization()->ifTrue()->then(function ($v) {
         return ['enable' => $v];
     })->end()->children()->scalarNode('enable')->defaultFalse()->end()->scalarNode('env')->defaultNull()->end()->end()->end()->arrayNode('session')->addDefaultsIfNotSet()->beforeNormalization()->ifTrue()->then(function ($v) {
         return ['enable' => $v];
     })->end()->children()->scalarNode('enable')->defaultFalse()->end()->scalarNode('env')->defaultNull()->end()->end()->end()->end()->end()->end();
 }
 private function addDistinguishedNameSection(ArrayNodeDefinition $node)
 {
     $node->children()->scalarNode('country')->info('Country Name (2 letter code).')->isRequired()->cannotBeEmpty()->validate()->ifTrue(function ($item) {
         return 2 !== strlen($item);
     })->thenInvalid('The country code "%s" is not valid.')->end()->end()->scalarNode('state')->info('State or Province Name (full name).')->isRequired()->cannotBeEmpty()->end()->scalarNode('locality')->info('Locality Name (eg, city).')->isRequired()->cannotBeEmpty()->end()->scalarNode('organization_name')->info('Organization Name (eg, company).')->isRequired()->cannotBeEmpty()->end()->scalarNode('organization_unit_name')->info('Organizational Unit Name (eg, section).')->isRequired()->cannotBeEmpty()->end()->scalarNode('email_address')->info('Email Address (default: contact_email).')->isRequired()->cannotBeEmpty()->validate()->ifTrue(function ($item) {
         return !filter_var($item, FILTER_VALIDATE_EMAIL);
     })->thenInvalid('The email "%s" is not valid.')->end()->end()->end();
 }
 /**
  * {@inheritDoc}
  */
 public function addConfiguration(ArrayNodeDefinition $builder)
 {
     $builder
         ->children()
             ->scalarNode('data_root')->defaultValue('%kernel.root_dir%/../web')->cannotBeEmpty()->end()
         ->end()
     ;
 }
 /**
  * @param ArrayNodeDefinition $node
  */
 protected function addSecuritySection(ArrayNodeDefinition $node)
 {
     $node->children()->arrayNode('security')->addDefaultsIfNotSet()->children()->scalarNode('search_base')->info('The default DN to start the user search from.')->end()->scalarNode('ldap_object_type')->defaultValue('user')->info('The LdapTools object type for the user provider to search for.')->end()->scalarNode('default_role')->defaultValue('ROLE_USER')->info('Regardless of group membership this role will be assigned to the loaded user. Set it to null for no roles to be assigned by default.')->end()->booleanNode('check_groups_recursively')->info('If set to true then group membership will contain all groups, and nested groups, the user belongs to.')->defaultTrue()->end()->scalarNode('user')->defaultValue('\\LdapTools\\Bundle\\LdapToolsBundle\\Security\\User\\LdapUser')->info('The user class that the LDAP user provider will instantiate. If you change this the class must extend the default one.')->end()->arrayNode('default_attributes')->info('Set the default LDAP attributes mapped for the LDAP user provider class.')->addDefaultsIfNotSet()->children()->scalarNode('username')->defaultValue('username')->end()->scalarNode('accountNonLocked')->defaultValue('locked')->end()->scalarNode('accountNonExpired')->defaultValue('accountExpirationDate')->end()->scalarNode('enabled')->defaultValue('disabled')->end()->scalarNode('credentialsNonExpired')->defaultValue('passwordMustChange')->end()->scalarNode('groups')->defaultValue('groups')->end()->scalarNode('guid')->defaultValue('guid')->end()->scalarNode('stringRepresentation')->defaultValue('username')->end()->end()->end()->arrayNode('guard')->info('Guard specific configuration options.')->addDefaultsIfNotSet()->children()->scalarNode('start_path')->defaultValue('login')->info('The default entry point/starting path as a route name.')->end()->end()->end()->arrayNode('additional_attributes')->info('Any additional attribute values that should be available when the user is loaded.')->prototype('scalar')->end()->end()->arrayNode('roles')->info('Map LDAP group names to specific roles. If a user is a member of the group they will get the role mapped to it.')->useAttributeAsKey('name')->prototype('array')->beforeNormalization()->ifTrue(function ($v) {
         return !is_array($v);
     })->then(function ($v) {
         return [$v];
     })->end()->prototype('scalar')->end()->end()->end()->scalarNode('role_ldap_type')->defaultValue('group')->info('The LdapTools object type for the groups used to check for roles.')->end()->arrayNode('role_attributes')->info('When searching for groups/roles for a user, map to these attributes for GUID, SID, members, or name.')->addDefaultsIfNotSet()->children()->scalarNode('name')->defaultValue('name')->end()->scalarNode('sid')->defaultValue('sid')->end()->scalarNode('guid')->defaultValue('guid')->end()->scalarNode('members')->defaultValue('members')->end()->end()->end()->booleanNode('refresh_user_attributes')->info('Set this to true if you want user attributes re-queried on a user refresh.')->defaultFalse()->end()->booleanNode('refresh_user_roles')->info('Set this to true if you want user roles re-queried on a user refresh.')->defaultFalse()->end()->end()->end()->end();
 }
Beispiel #25
0
 /**
  * Setups configuration for current extension.
  *
  * @param ArrayNodeDefinition $builder
  */
 public function getConfig(ArrayNodeDefinition $builder)
 {
     $boolFilter = function ($v) {
         $filtered = filter_var($v, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
         return null === $filtered ? $v : $filtered;
     };
     $builder->children()->arrayNode('kernel')->children()->scalarNode('bootstrap')->defaultValue('../../autoload.php')->end()->scalarNode('path')->defaultValue('engine/Shopware/Kernel.php')->end()->scalarNode('class')->defaultValue('Shopware\\Kernel')->end()->scalarNode('env')->defaultValue('test')->end()->booleanNode('debug')->beforeNormalization()->ifString()->then($boolFilter)->end()->defaultTrue()->end()->end()->end()->end()->end();
 }
 protected static function addDownloadSection(ArrayNodeDefinition $rootNode)
 {
     $rootNode->children()->arrayNode('download')->isRequired()->children()->arrayNode('paths')->isRequired()->prototype('array')->children()->scalarNode('remote')->isRequired()->cannotBeEmpty()->validate()->ifTrue(function ($s) {
         return preg_match('/^[^\\/]/', $s) !== 1;
     })->thenInvalid('Download paths must not start with the slash character')->end()->end()->scalarNode('local')->cannotBeEmpty()->defaultValue('./')->validate()->ifTrue(function ($s) {
         return preg_match('/^[^\\/]/', $s) !== 1;
     })->thenInvalid('Download paths must not start with the slash character')->end()->end()->end()->end()->end()->arrayNode('excludes')->prototype('scalar')->end()->end()->end()->end()->end();
 }
 private function addStreamWrapperSection(ArrayNodeDefinition $node)
 {
     $node->children()->arrayNode('stream_wrapper')->children()->scalarNode('protocol')->defaultValue('gaufrette')->end()->arrayNode('filesystems')->beforeNormalization()->ifTrue(function ($array) {
         return !(bool) count(array_filter(array_keys($array), 'is_string'));
     })->then(function ($array) {
         return array_combine($array, $array);
     })->end()->useAttributeAsKey('key')->prototype('scalar')->end()->end()->end()->end()->end();
 }
 private function addExceptionSection(ArrayNodeDefinition $rootNode)
 {
     $rootNode->children()->arrayNode('exception')->fixXmlConfig('code', 'codes')->fixXmlConfig('message', 'messages')->addDefaultsIfNotSet()->canBeEnabled()->children()->scalarNode('exception_controller')->defaultNull()->end()->arrayNode('codes')->useAttributeAsKey('name')->validate()->ifTrue(function ($v) {
         return 0 !== count(array_filter($v, function ($i) {
             return !defined('FOS\\RestBundle\\Util\\Codes::' . $i) && !is_int($i);
         }));
     })->thenInvalid('Invalid HTTP code in fos_rest.exception.codes, see FOS\\RestBundle\\Util\\Codes for all valid codes.')->end()->prototype('scalar')->end()->end()->arrayNode('messages')->useAttributeAsKey('name')->prototype('boolean')->end()->end()->end()->end()->end();
 }
 private function addFormSection(ArrayNodeDefinition $rootNode)
 {
     $rootNode->children()->arrayNode('form')->addDefaultsIfNotSet()->fixXmlConfig('resource')->children()->arrayNode('resources')->addDefaultChildrenIfNoneSet()->prototype('scalar')->defaultValue('form_div_layout.html.twig')->end()->example(array('MyBundle::form.html.twig'))->validate()->ifTrue(function ($v) {
         return !in_array('form_div_layout.html.twig', $v);
     })->then(function ($v) {
         return array_merge(array('form_div_layout.html.twig'), $v);
     })->end()->end()->end()->end()->end();
 }
Beispiel #30
0
 /**
  * Adds the configuration tree for creating an archive stub.
  *
  * @param ArrayNodeDefinition $root The root tree node.
  *
  * @return Configuration For method chaining.
  */
 private function addStubTree(ArrayNodeDefinition $root)
 {
     /** @noinspection PhpUndefinedMethodInspection */
     $root->children()->arrayNode('stub')->info('The stub configuration.')->children()->scalarNode('banner')->info('The comment banner.')->defaultValue($this->defaults['stub']['banner'])->end()->scalarNode('code')->info('The custom stub code.')->defaultValue($this->defaults['stub']['code'])->end()->booleanNode('extract')->info('Enable support for self-extraction?')->defaultValue($this->defaults['stub']['extract'])->end()->booleanNode('intercept')->info('Call Phar::interceptFileFuncs() in the stub?')->defaultValue($this->defaults['stub']['intercept'])->end()->arrayNode('load')->info('The list of external archive files to load')->prototype('array')->beforeNormalization()->ifString()->then(function ($v) {
         return array('path' => $v);
     })->end()->children()->scalarNode('alias')->info('The stream alias for the archive.')->defaultNull()->end()->scalarNode('path')->info('The path to the archive file.')->cannotBeEmpty()->isRequired()->end()->end()->end()->end()->scalarNode('map')->info('The stream alias to map the archive to.')->defaultValue($this->defaults['stub']['map'])->end()->arrayNode('mount')->info('The list of external archives to mount internally.')->prototype('array')->children()->scalarNode('local')->info('The path inside the archive to mount to.')->cannotBeEmpty()->isRequired()->end()->scalarNode('path')->info('The path to the archive file that needs to be mounted.')->cannotBeEmpty()->isRequired()->end()->end()->end()->end()->arrayNode('mung')->info('The list of $_SERVER variables to modify.')->prototype('enum')->values(array('PHP_SELF', 'REQUEST_URI', 'SCRIPT_FILENAME', 'SCRIPT_NAME'))->end()->end()->scalarNode('shebang')->info('The shebang line.')->defaultValue($this->defaults['stub']['shebang'])->end()->arrayNode('web')->info('The web archive configuration.')->children()->scalarNode('alias')->info('The stream alias to map the archive to.')->defaultValue($this->defaults['stub']['web']['alias'])->end()->scalarNode('index')->info('The path to the index script in the archive.')->defaultValue($this->defaults['stub']['web']['index'])->end()->arrayNode('mime')->info('The file extension to MIME type mappings.')->prototype('scalar')->end()->defaultValue($this->defaults['stub']['web']['mime'])->end()->scalarNode('notFound')->info('The path to the script for handling 404 server errors.')->defaultValue($this->defaults['stub']['web']['notFound'])->end()->scalarNode('rewrite')->info('The callable for rewriting URLs.')->defaultValue($this->defaults['stub']['web']['rewrite'])->end()->end()->end();
     return $this;
 }