From 21a0d919380dd56d0c051cfb8570f3e181c34a18 Mon Sep 17 00:00:00 2001 From: alecpl Date: Wed, 11 Apr 2012 10:31:57 +0000 Subject: - Fix contact information update in case when contact photo exists (#1488420) --- program/include/rcube_ldap.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'program') diff --git a/program/include/rcube_ldap.php b/program/include/rcube_ldap.php index f42abf1ed..130eada63 100644 --- a/program/include/rcube_ldap.php +++ b/program/include/rcube_ldap.php @@ -1109,6 +1109,14 @@ class rcube_ldap extends rcube_addressbook $ldap_data = $this->_map_data($save_cols); $old_data = $record['_raw_attrib']; + // special handling of photo col + if ($photo_fld = $this->fieldmap['photo']) { + // undefined means keep old photo + if (!array_key_exists('photo', $save_cols)) { + $ldap_data[$photo_fld] = $record['photo']; + } + } + foreach ($this->fieldmap as $col => $fld) { if ($fld) { $val = $ldap_data[$fld]; @@ -1121,6 +1129,9 @@ class rcube_ldap extends rcube_addressbook if (is_array($old) && count($old) == 1 && !is_array($val)) { $old = array_pop($old); } + if (is_array($val) && count($val) == 1 && !is_array($old)) { + $val = array_pop($val); + } // Subentries must be handled separately if (!empty($this->prop['sub_fields']) && isset($this->prop['sub_fields'][$fld])) { if ($old != $val) { @@ -1136,6 +1147,7 @@ class rcube_ldap extends rcube_addressbook } continue; } + // The field does exist compare it to the ldap record. if ($old != $val) { // Changed, but find out how. -- cgit v1.2.3