From 0f1faec39271130500b836d8c81ce060fc5cbc07 Mon Sep 17 00:00:00 2001 From: thomascube Date: Thu, 11 Aug 2011 22:24:29 +0000 Subject: Fix saving and deleting LDAP contacts; skip client-side input validation for contacts, this is done server-side --- program/include/rcube_ldap.php | 15 ++++++++++++--- program/js/app.js | 7 +------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/program/include/rcube_ldap.php b/program/include/rcube_ldap.php index 41d722e5b..76217acc1 100644 --- a/program/include/rcube_ldap.php +++ b/program/include/rcube_ldap.php @@ -728,6 +728,15 @@ class rcube_ldap extends rcube_addressbook $newdata = array(); $replacedata = array(); $deletedata = array(); + + // flatten composite fields in $record + if (is_array($record['address'])) { + foreach ($record['address'] as $i => $struct) { + foreach ($struct as $col => $val) { + $record[$col][$i] = $val; + } + } + } foreach ($this->fieldmap as $col => $fld) { $val = $save_cols[$col]; @@ -843,10 +852,10 @@ class rcube_ldap extends rcube_addressbook { if (!is_array($ids)) { // Not an array, break apart the encoded DNs. - $dns = explode(',', $ids); + $ids = explode(',', $ids); } // end if - foreach ($dns as $id) { + foreach ($ids as $id) { $dn = base64_decode($id); $this->_debug("C: Delete [dn: $dn]"); // Delete the record. @@ -869,7 +878,7 @@ class rcube_ldap extends rcube_addressbook } } // end foreach - return count($dns); + return count($ids); } diff --git a/program/js/app.js b/program/js/app.js index 9334dc8e2..a4fa4194b 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -642,11 +642,6 @@ function rcube_webmail() if (props == 'reload') { form.action += '?_reload=1'; } - else if ((input = $("input[name='_name']", form)) &&input.length && input.val() == '') { - alert(this.get_label('nonamewarning')); - input.focus(); - break; - } else if (this.task == 'settings' && (this.env.identities_level % 2) == 0 && (input = $("input[name='_email']", form)) && input.length && !rcube_check_email(input.val()) ) { @@ -4427,7 +4422,7 @@ function rcube_webmail() this.set_photo_actions = function(id) { var n, buttons = this.buttons['upload-photo']; - for (n=0; n < buttons.length; n++) + for (n=0; n < buttons && buttons.length; n++) $('#'+buttons[n].id).html(this.get_label(id == '-del-' ? 'addphoto' : 'replacephoto')); $('#ff_photo').val(id); -- cgit v1.2.3