Provide a find() method that directly takes the search criteria.
authorGunnar Wrobel <p@rdus.de>
Mon, 22 Jun 2009 18:32:02 +0000 (20:32 +0200)
committerGunnar Wrobel <p@rdus.de>
Mon, 22 Jun 2009 18:32:02 +0000 (20:32 +0200)
framework/Kolab_Server/lib/Horde/Kolab/Server.php
framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php

index 0780c8c..29763eb 100644 (file)
@@ -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.
index 7cb4a20..0777556 100644 (file)
@@ -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);