| | |
| | | $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; |