thomascube
2011-05-13 6b19999841f97e1addfa6ebce79a887aad7467c9
Correctly handle empty contact names when importing

3 files modified
15 ■■■■■ changed files
program/include/rcube_vcard.php 6 ●●●● patch | view | raw | blame | history
program/localization/de_DE/messages.inc 3 ●●●● patch | view | raw | blame | history
program/steps/addressbook/import.inc 6 ●●●● patch | view | raw | blame | history
program/include/rcube_vcard.php
@@ -95,6 +95,10 @@
      ($detected_charset = self::detect_encoding(self::vcard_encode($this->raw))) && $detected_charset != RCMAIL_CHARSET) {
        $this->raw = self::charset_convert($this->raw, $detected_charset);
    }
    // consider FN empty if the same as the primary e-mail address
    if ($this->raw['FN'][0][0] == $this->raw['EMAIL'][0][0])
      $this->raw['FN'][0][0] = '';
    // find well-known address fields
    $this->displayname = $this->raw['FN'][0][0];
@@ -402,7 +406,7 @@
      if (preg_match('/^END:VCARD$/i', $line)) {
        // parse vcard
        $obj = new rcube_vcard(self::cleanup($vcard_block), $charset, true);
        if (!empty($obj->displayname))
        if (!empty($obj->displayname) || !empty($obj->email))
          $out[] = $obj;
        $in_vcard_block = false;
program/localization/de_DE/messages.inc
@@ -108,7 +108,8 @@
$messages['contactremovedfromgroup'] = 'Kontakte wurden aus dieser Gruppe entfernt';
$messages['importwait'] = 'Daten werden importiert, bitte warten...';
$messages['importerror'] = 'Import fehlgeschlagen! Die hochgeladene Datei ist nicht im vCard-Format.';
$messages['importconfirm'] = '<b>Es wurden $inserted Adressen erfolgreich importiert und $skipped bestehende Einträge übersprungen</b>:<p><em>$names</em></p>';
$messages['importconfirm'] = '<b>Es wurden $inserted Adressen erfolgreich importiert</b>';
$messages['importconfirmskipped'] = '<b>$skipped bestehende Einträge wurden übersprungen</b>';
$messages['opnotpermitted'] = 'Operation nicht erlaubt!';
$messages['nofromaddress'] = 'Fehlende E-Mail-Adresse in ausgewählter Identität';
$messages['editorwarning'] = 'Beim Wechseln in den Texteditor gehen alle Textformatierungen verloren. Möchten Sie fortfahren?';
program/steps/addressbook/import.inc
@@ -156,12 +156,12 @@
      if (!$replace && $email) {
        // compare e-mail address
        $existing = $CONTACTS->search('email', $email, false, false);
        if (!$existing->count) {  // compare display name
        if (!$existing->count && $vcard->displayname) {  // compare display name
          $existing = $CONTACTS->search('name', $vcard->displayname, false, false);
        }
        if ($existing->count) {
          $IMPORT_STATS->skipped++;
          $IMPORT_STATS->skipped_names[] = $vcard->displayname;
          $IMPORT_STATS->skipped_names[] = $vcard->displayname ? $vcard->displayname : $email;
          continue;
        }
      }
@@ -180,7 +180,7 @@
      if ($success) {
        $IMPORT_STATS->inserted++;
        $IMPORT_STATS->names[] = $vcard->displayname;
        $IMPORT_STATS->names[] = $vcard->displayname ? $vcard->displayname : $email;
      } else {
        $IMPORT_STATS->errors++;
      }