]> git.donarmstrong.com Git - roundcube.git/blobdiff - program/include/rcube_contacts.inc
Imported Upstream version 0.1~rc2
[roundcube.git] / program / include / rcube_contacts.inc
index 3902e2a3b108681b3fca4a373031f4fa9a718aaa..f01d2227960a5c7cfcc76b50ce843371c8919b79 100644 (file)
 
 */
 
+
+/**
+ * Model class for the local address book database
+ *
+ * @package Addressbook
+ */
 class rcube_contacts
 {
   var $db = null;
@@ -55,7 +61,7 @@ class rcube_contacts
   /**
    * PHP 4 object constructor
    *
-   * @see  rcube_contacts::__construct
+   * @see rcube_contacts::__construct()
    */
   function rcube_contacts($dbconn, $user)
   {
@@ -121,10 +127,18 @@ class rcube_contacts
   }
   
   
+  /**
+   * Close connection to source
+   * Called on script shutdown
+   */
+  function close(){}
+  
+  
   /**
    * List the current set of contact records
    *
    * @param  array  List of cols to show
+   * @param  int    Only return this number of records, use negative values for tail
    * @return array  Indexed list of contact records, each a hash array
    */
   function list_records($cols=null, $subset=0)
@@ -171,7 +185,7 @@ class rcube_contacts
    * @param boolean True if results are requested, False if count only
    * @return Indexed list of contact records and 'count' value
    */
-  function search($fields, $value, $select=true)
+  function search($fields, $value, $strict=false, $select=true)
   {
     if (!is_array($fields))
       $fields = array($fields);
@@ -184,6 +198,8 @@ class rcube_contacts
         $ids = !is_array($value) ? split(',', $value) : $value;
         $add_where[] = $this->primary_key." IN (".join(',', $ids).")";
       }
+      else if ($strict)
+        $add_where[] = $this->db->quoteIdentifier($col)."=".$this->db->quote($value);
       else
         $add_where[] = $this->db->quoteIdentifier($col)." LIKE ".$this->db->quote(strlen($value)>2 ? "%$value%" : "$value%");
     }
@@ -278,7 +294,7 @@ class rcube_contacts
     $insert_id = $existing = false;
 
     if ($check)
-      $existing = $this->search('email', $save_data['email'], false);
+      $existing = $this->search('email', $save_data['email'], true, false);
 
     $a_insert_cols = $a_insert_values = array();
     foreach ($this->table_cols as $col)