|
|
@ -1109,6 +1109,14 @@ class rcube_ldap extends rcube_addressbook
|
|
|
|
$ldap_data = $this->_map_data($save_cols);
|
|
|
|
$ldap_data = $this->_map_data($save_cols);
|
|
|
|
$old_data = $record['_raw_attrib'];
|
|
|
|
$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) {
|
|
|
|
foreach ($this->fieldmap as $col => $fld) {
|
|
|
|
if ($fld) {
|
|
|
|
if ($fld) {
|
|
|
|
$val = $ldap_data[$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)) {
|
|
|
|
if (is_array($old) && count($old) == 1 && !is_array($val)) {
|
|
|
|
$old = array_pop($old);
|
|
|
|
$old = array_pop($old);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (is_array($val) && count($val) == 1 && !is_array($old)) {
|
|
|
|
|
|
|
|
$val = array_pop($val);
|
|
|
|
|
|
|
|
}
|
|
|
|
// Subentries must be handled separately
|
|
|
|
// Subentries must be handled separately
|
|
|
|
if (!empty($this->prop['sub_fields']) && isset($this->prop['sub_fields'][$fld])) {
|
|
|
|
if (!empty($this->prop['sub_fields']) && isset($this->prop['sub_fields'][$fld])) {
|
|
|
|
if ($old != $val) {
|
|
|
|
if ($old != $val) {
|
|
|
@ -1136,6 +1147,7 @@ class rcube_ldap extends rcube_addressbook
|
|
|
|
}
|
|
|
|
}
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// The field does exist compare it to the ldap record.
|
|
|
|
// The field does exist compare it to the ldap record.
|
|
|
|
if ($old != $val) {
|
|
|
|
if ($old != $val) {
|
|
|
|
// Changed, but find out how.
|
|
|
|
// Changed, but find out how.
|
|
|
|