plugins/kolab_addressbook

Aleksander Machniak machniak at kolabsys.com
Mon Jul 1 11:19:44 CEST 2013


 plugins/kolab_addressbook/lib/rcube_kolab_contacts.php |   32 +++++++++--------
 1 file changed, 17 insertions(+), 15 deletions(-)

New commits:
commit cab58ba23348d5e24e4139856a0558513ecf4ba2
Author: Aleksander Machniak <machniak at kolabsys.com>
Date:   Mon Jul 1 11:18:43 2013 +0200

    Fix issue where going to the next page of search result will not list found records

diff --git a/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php b/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php
index 5437056..15509ec 100644
--- a/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php
+++ b/plugins/kolab_addressbook/lib/rcube_kolab_contacts.php
@@ -252,7 +252,7 @@ class rcube_kolab_contacts extends rcube_addressbook
      */
     public function list_records($cols = null, $subset = 0)
     {
-        $this->result = new rcube_result_set(0, ($this->list_page-1) * $this->page_size);;
+        $this->result = new rcube_result_set(0, ($this->list_page-1) * $this->page_size);
 
         // list member of the selected group
         if ($this->gid) {
@@ -276,8 +276,10 @@ class rcube_kolab_contacts extends rcube_addressbook
         }
         else if (is_array($this->filter['ids'])) {
             $ids = $this->filter['ids'];
-            if ($this->result->count = count($ids))
-                $this->_fetch_contacts(array(array('uid', '=', $ids)));
+            if ($this->result->count = count($ids)) {
+                $uids = array_map(array($this, 'id2uid'), $this->filter['ids']);
+                $this->_fetch_contacts(array(array('uid', '=', $uids)));
+            }
         }
         else {
             $this->_fetch_contacts();
@@ -473,7 +475,7 @@ class rcube_kolab_contacts extends rcube_addressbook
     public function get_record($id, $assoc=false)
     {
         $rec = null;
-        $uid = $this->_id2uid($id);
+        $uid = $this->id2uid($id);
         if (strpos($uid, 'mailto:') === 0) {
             $this->_fetch_groups(true);
             $rec = $this->contacts[$id];
@@ -578,7 +580,7 @@ class rcube_kolab_contacts extends rcube_addressbook
     public function update($id, $save_data)
     {
         $updated = false;
-        if ($old = $this->storagefolder->get_object($this->_id2uid($id))) {
+        if ($old = $this->storagefolder->get_object($this->id2uid($id))) {
             $object = $this->_from_rcube_contact($save_data, $old);
 
             if (!$this->storagefolder->save($object, 'contact', $old['uid'])) {
@@ -617,7 +619,7 @@ class rcube_kolab_contacts extends rcube_addressbook
 
         $count = 0;
         foreach ($ids as $id) {
-            if ($uid = $this->_id2uid($id)) {
+            if ($uid = $this->id2uid($id)) {
                 $is_mailto = strpos($uid, 'mailto:') === 0;
                 $deleted = $is_mailto || $this->storagefolder->delete($uid, $force);
 
@@ -661,7 +663,7 @@ class rcube_kolab_contacts extends rcube_addressbook
 
         $count = 0;
         foreach ($ids as $id) {
-            $uid = $this->_id2uid($id);
+            $uid = $this->id2uid($id);
             if ($this->storagefolder->undelete($uid)) {
                 $count++;
             }
@@ -725,7 +727,7 @@ class rcube_kolab_contacts extends rcube_addressbook
             return false;
         }
         else {
-            $id = $this->_uid2id($list['uid']);
+            $id = $this->uid2id($list['uid']);
             $this->distlists[$id] = $list;
             $result = array('id' => $id, 'name' => $name);
         }
@@ -817,7 +819,7 @@ class rcube_kolab_contacts extends rcube_addressbook
         $ids = array_diff($ids, $exists);
 
         foreach ($ids as $contact_id) {
-            $uid = $this->_id2uid($contact_id);
+            $uid = $this->id2uid($contact_id);
             if ($contact = $this->storagefolder->get_object($uid)) {
                 foreach ($this->get_col_values('email', $contact, true) as $email)
                     break;
@@ -999,9 +1001,9 @@ class rcube_kolab_contacts extends rcube_addressbook
         if (!isset($this->distlists)) {
             $this->distlists = $this->groupmembers = array();
             foreach ((array)$this->storagefolder->get_objects('distribution-list') as $record) {
-                $record['ID'] = $this->_uid2id($record['uid']);
+                $record['ID'] = $this->uid2id($record['uid']);
                 foreach ((array)$record['member'] as $i => $member) {
-                    $mid = $this->_uid2id($member['uid'] ? $member['uid'] : 'mailto:' . $member['email']);
+                    $mid = $this->uid2id($member['uid'] ? $member['uid'] : 'mailto:' . $member['email']);
                     $record['member'][$i]['ID'] = $mid;
                     $record['member'][$i]['readonly'] = empty($member['uid']);
                     $this->groupmembers[$mid][] = $record['ID'];
@@ -1017,7 +1019,7 @@ class rcube_kolab_contacts extends rcube_addressbook
     /**
      * Encode object UID into a safe identifier
      */
-    private function _uid2id($uid)
+    public function uid2id($uid)
     {
         return rtrim(strtr(base64_encode($uid), '+/', '-_'), '=');
     }
@@ -1025,7 +1027,7 @@ class rcube_kolab_contacts extends rcube_addressbook
     /**
      * Convert Roundcube object identifier back into the original UID
      */
-    private function _id2uid($id)
+    public function id2uid($id)
     {
         return base64_decode(str_pad(strtr($id, '-_', '+/'), strlen($id) % 4, '=', STR_PAD_RIGHT));
     }
@@ -1035,7 +1037,7 @@ class rcube_kolab_contacts extends rcube_addressbook
      */
     private function _to_rcube_contact($record)
     {
-        $record['ID'] = $this->_uid2id($record['uid']);
+        $record['ID'] = $this->uid2id($record['uid']);
 
         // convert email, website, phone values
         foreach (array('email'=>'address', 'website'=>'url', 'phone'=>'number') as $col => $propname) {
@@ -1090,7 +1092,7 @@ class rcube_kolab_contacts extends rcube_addressbook
     private function _from_rcube_contact($contact, $old = array())
     {
         if (!$contact['uid'] && $contact['ID'])
-            $contact['uid'] = $this->_id2uid($contact['ID']);
+            $contact['uid'] = $this->id2uid($contact['ID']);
         else if (!$contact['uid'] && $old['uid'])
             $contact['uid'] = $old['uid'];
 





More information about the commits mailing list