From e9154da5767d9e8cce5245de9f63b246eb217c8c Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel Date: Mon, 22 Jun 2009 20:32:02 +0200 Subject: [PATCH] Provide a find() method that directly takes the search criteria. --- framework/Kolab_Server/lib/Horde/Kolab/Server.php | 12 ++++++++++ .../Kolab_Server/lib/Horde/Kolab/Server/Ldap.php | 26 ++++++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server.php b/framework/Kolab_Server/lib/Horde/Kolab/Server.php index 0780c8cd7..29763eb65 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server.php @@ -657,6 +657,18 @@ abstract class Horde_Kolab_Server abstract public function read($uid, $attrs = null); /** + * Find object data matching a given set of criteria. + * + * @param array $criteria The criteria for the search. + * @param string $params Additional search parameters. + * + * @return array The result array. + * + * @throws Horde_Kolab_Server_Exception + */ + abstract public function find($criteria, $params = array()); + + /** * Stub for saving object data. * * @param string $uid The UID of the object to be added. diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php index 7cb4a2030..07775560c 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php @@ -57,6 +57,13 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server private $_schema; /** + * The last search result. + * + * @var Net_LDAP2_Search + */ + public $lastSearch; + + /** * Construct a new Horde_Kolab_Server_ldap object. * * @param array $params Parameter array. @@ -461,6 +468,21 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server } /** + * Find object data matching a given set of criteria. + * + * @param array $criteria The criteria for the search. + * @param string $params Additional search parameters. + * + * @return array The result array. + * + * @throws Horde_Kolab_Server_Exception + */ + public function find($criteria, $params = array()) + { + return $this->search($this->searchQuery($criteria), $params); + } + + /** * Search for object data. * * @param string $filter The LDAP search filter. @@ -481,12 +503,12 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server if (!isset($base)) { $base = $this->_base_dn; } - $result = $this->_ldap->search($base, $filter, $params); + $this->lastSearch = &$this->_ldap->search($base, $filter, $params); if (is_a($result, 'PEAR_Error')) { throw new Horde_Kolab_Server_Exception($result, Horde_Kolab_Server_Exception::SYSTEM); } - $data = $result->as_struct(); + $data = $this->lastSearch->as_struct(); if (is_a($data, 'PEAR_Error')) { throw new Horde_Kolab_Server_Exception($data, Horde_Kolab_Server_Exception::SYSTEM); -- 2.11.0