summaryrefslogtreecommitdiff
path: root/program/steps/addressbook/import.inc
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2012-09-17 12:23:34 +0200
committerAleksander Machniak <alec@alec.pl>2012-09-17 12:23:34 +0200
commit32ba62889c1def94f555c3e683fc8087ee16c9b3 (patch)
treea58b9d64a5f04f85e2ee4a6a7cdefc07401669ac /program/steps/addressbook/import.inc
parentfa4bf4388b00b6093df6c770b3db865cc1fa4f40 (diff)
Don't directly require email address on contact import, allowing import
of contacts being validated by addressbook validation code. The same as for create/edit contact actions.
Diffstat (limited to 'program/steps/addressbook/import.inc')
-rw-r--r--program/steps/addressbook/import.inc22
1 files changed, 13 insertions, 9 deletions
diff --git a/program/steps/addressbook/import.inc b/program/steps/addressbook/import.inc
index 654a33602..15e04b82a 100644
--- a/program/steps/addressbook/import.inc
+++ b/program/steps/addressbook/import.inc
@@ -189,32 +189,36 @@ if (is_array($_FILES['_file'])) {
$IMPORT_STATS->names = array();
$IMPORT_STATS->skipped_names = array();
$IMPORT_STATS->count = count($vcards);
- $IMPORT_STATS->inserted = $IMPORT_STATS->skipped = $IMPORT_STATS->nomail = $IMPORT_STATS->errors = 0;
+ $IMPORT_STATS->inserted = $IMPORT_STATS->skipped = $IMPORT_STATS->invalid = $IMPORT_STATS->errors = 0;
if ($replace) {
$CONTACTS->delete_all();
}
foreach ($vcards as $vcard) {
- $email = $vcard->email[0];
$a_record = $vcard->get_assoc();
- // skip entries without an e-mail address or invalid
- if (empty($email) || !$CONTACTS->validate($a_record, true)) {
- $IMPORT_STATS->nomail++;
+ // skip invalid (incomplete) entries
+ if (!$CONTACTS->validate($a_record, true)) {
+ $IMPORT_STATS->invalid++;
continue;
}
// We're using UTF8 internally
+ $email = $vcard->email[0];
$email = rcube_idn_to_utf8($email);
- if (!$replace && $email) {
+ if (!$replace) {
+ $existing = null;
// compare e-mail address
- $existing = $CONTACTS->search('email', $email, 1, false);
- if (!$existing->count && $vcard->displayname) { // compare display name
+ if ($email) {
+ $existing = $CONTACTS->search('email', $email, 1, false);
+ }
+ // compare display name if email not found
+ if ((!$existing || !$existing->count) && $vcard->displayname) {
$existing = $CONTACTS->search('name', $vcard->displayname, 1, false);
}
- if ($existing->count) {
+ if ($existing && $existing->count) {
$IMPORT_STATS->skipped++;
$IMPORT_STATS->skipped_names[] = $vcard->displayname ? $vcard->displayname : $email;
continue;