summaryrefslogtreecommitdiff
path: root/roundcubemail/program/include/rcube_ldap.php
diff options
context:
space:
mode:
authoralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2012-04-12 11:52:09 +0000
committeralec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c>2012-04-12 11:52:09 +0000
commite2787e1a6d649494122250acf63cb2ff88509cae (patch)
treee20a12ecb28f2afcfbfc2d1ffb326f234a997c41 /roundcubemail/program/include/rcube_ldap.php
parentc07116f6b7517e083a6e423a1de1967916a0af76 (diff)
- Fix importing to LDAP addressbook when mail attribute is required by
validating input data with autofix git-svn-id: https://svn.roundcube.net/trunk@6067 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include/rcube_ldap.php')
-rw-r--r--roundcubemail/program/include/rcube_ldap.php17
1 files changed, 15 insertions, 2 deletions
diff --git a/roundcubemail/program/include/rcube_ldap.php b/roundcubemail/program/include/rcube_ldap.php
index 130eada63..08b7cd99c 100644
--- a/roundcubemail/program/include/rcube_ldap.php
+++ b/roundcubemail/program/include/rcube_ldap.php
@@ -993,10 +993,13 @@ class rcube_ldap extends rcube_addressbook
if ($missing) {
// try to complete record automatically
if ($autofix) {
- $reverse_map = array_flip($this->fieldmap);
- $name_parts = preg_split('/[\s,.]+/', $save_data['name']);
$sn_field = $this->fieldmap['surname'];
$fn_field = $this->fieldmap['firstname'];
+ $mail_field = $this->fieldmap['email'];
+
+ // try to extract surname and firstname from displayname
+ $reverse_map = array_flip($this->fieldmap);
+ $name_parts = preg_split('/[\s,.]+/', $save_data['name']);
if ($sn_field && $missing[$sn_field]) {
$save_data['surname'] = array_pop($name_parts);
@@ -1007,6 +1010,16 @@ class rcube_ldap extends rcube_addressbook
$save_data['firstname'] = array_shift($name_parts);
unset($missing[$fn_field]);
}
+
+ // try to fix missing e-mail, very often on import
+ // from vCard we have email:other only defined
+ if ($mail_field && $missing[$mail_field]) {
+ $emails = $this->get_col_values('email', $save_data, true);
+ if (!empty($emails) && ($email = array_shift($emails))) {
+ $save_data['email'] = $email;
+ unset($missing[$mail_field]);
+ }
+ }
}
// TODO: generate message saying which fields are missing