From a26c284d2d3356eb7159dada9407391fbb1b1008 Mon Sep 17 00:00:00 2001 From: Yonel Ceruto Date: Fri, 12 Oct 2018 11:24:05 -0400 Subject: [PATCH] Revamp LDAP options with nested definition --- .../Ldap/Adapter/ExtLdap/Connection.php | 30 +++++-------------- src/Symfony/Component/Ldap/composer.json | 5 +++- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php b/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php index 3ff790d051..73b127ce5e 100644 --- a/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php +++ b/src/Symfony/Component/Ldap/Adapter/ExtLdap/Connection.php @@ -93,31 +93,17 @@ class Connection extends AbstractConnection $resolver->setAllowedTypes('debug', 'bool'); $resolver->setDefault('referrals', false); $resolver->setAllowedTypes('referrals', 'bool'); + $resolver->setDefault('options', function (OptionsResolver $options, Options $parent) { + $options->setDefined(array_map('strtolower', array_keys((new \ReflectionClass(ConnectionOptions::class))->getConstants()))); - $resolver->setNormalizer('options', function (Options $options, $value) { - if (true === $options['debug']) { - $value['debug_level'] = 7; + if (true === $parent['debug']) { + $options->setDefault('debug_level', 7); } - if (!isset($value['protocol_version'])) { - $value['protocol_version'] = $options['version']; - } - - if (!isset($value['referrals'])) { - $value['referrals'] = $options['referrals']; - } - - return $value; - }); - - $resolver->setAllowedValues('options', function (array $values) { - foreach ($values as $name => $value) { - if (!ConnectionOptions::isOption($name)) { - return false; - } - } - - return true; + $options->setDefaults(array( + 'protocol_version' => $parent['version'], + 'referrals' => $parent['referrals'], + )); }); } diff --git a/src/Symfony/Component/Ldap/composer.json b/src/Symfony/Component/Ldap/composer.json index 2c69b7dfe0..77c3d773ce 100644 --- a/src/Symfony/Component/Ldap/composer.json +++ b/src/Symfony/Component/Ldap/composer.json @@ -17,9 +17,12 @@ ], "require": { "php": "^7.1.3", - "symfony/options-resolver": "~3.4|~4.0", + "symfony/options-resolver": "~4.2", "ext-ldap": "*" }, + "conflict": { + "symfony/options-resolver": "<4.2" + }, "autoload": { "psr-4": { "Symfony\\Component\\Ldap\\": "" }, "exclude-from-classmap": [