From: Jan Schneider Date: Mon, 20 Sep 2010 12:49:06 +0000 (+0200) Subject: Add Horde_Ldap_Filter::build() to create filters from common configuration values. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=905637649a413fb8d0dda349a43e76ac36ec34e9;p=horde.git Add Horde_Ldap_Filter::build() to create filters from common configuration values. --- diff --git a/framework/Group/lib/Horde/Group/Ldap.php b/framework/Group/lib/Horde/Group/Ldap.php index 25cf3a132..807ddf0ee 100644 --- a/framework/Group/lib/Horde/Group/Ldap.php +++ b/framework/Group/lib/Horde/Group/Ldap.php @@ -86,21 +86,7 @@ class Horde_Group_Ldap extends Horde_Group } /* Generate LDAP search filter. */ - if (!empty($this->_params['filter'])) { - $this->_filter = Horde_Ldap_Filter::parse($this->_params['filter']); - } elseif (!is_array($this->_params['objectclass'])) { - $this->_filter = Horde_Ldap_Filter::create('objectclass', 'equals', $this->_params['objectclass']); - } else { - $filters = array(); - foreach ($this->_params['objectclass'] as $objectclass) { - $filters[] = Horde_Ldap_Filter::create('objectclass', 'equals', $objectclass); - } - if (count($filters) == 1) { - $this->_filter = $filters[0]; - } else { - $this->_filter = Horde_Ldap_Filter::combine('and', $filters); - } - } + $this->_filter = Horde_Ldap_Filter::build($this->_params); /* Connect to server. */ $this->_ldap = new Horde_Ldap($this->_params); diff --git a/framework/Ldap/lib/Horde/Ldap/Filter.php b/framework/Ldap/lib/Horde/Ldap/Filter.php index 3e4850b16..f37aceb7b 100644 --- a/framework/Ldap/lib/Horde/Ldap/Filter.php +++ b/framework/Ldap/lib/Horde/Ldap/Filter.php @@ -253,6 +253,38 @@ class Horde_Ldap_Filter } /** + * Builds a filter (commonly for objectClass attributes) from different + * configuration options. + * + * @param array $params Hash with configuration options that build the + * search filter. Possible hash keys: + * - 'filter': An LDAP filter string. + * - 'objectclass' (string): An objectClass name. + * - 'objectclass' (array): A list of objectClass + * names. + * + * @return Horde_Ldap_Filter A filter matching the specified criteria. + * @throws Horde_Ldap_Exception + */ + public static function build(array $params) + { + if (!empty($params['filter'])) { + return Horde_Ldap_Filter::parse($params['filter']); + } + if (!is_array($params['objectclass'])) { + return Horde_Ldap_Filter::create('objectclass', 'equals', $params['objectclass']); + } + $filters = array(); + foreach ($params['objectclass'] as $objectclass) { + $filters[] = Horde_Ldap_Filter::create('objectclass', 'equals', $objectclass); + } + if (count($filters) == 1) { + return $filters[0]; + } + return Horde_Ldap_Filter::combine('and', $filters); + } + + /** * Parses a string into a Horde_Ldap_Filter object. * * @todo Leaf-mode: Do we need to escape at all? what about *-chars? Check