Aleksander Machniak
2014-12-01 f864495b7b7ab577e3aba5f06b34f92649de4a4b
Fix import of multiple contact email addresses from Outlook-csv format (#1490169)
2 files added
5 files modified
48 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_csv2vcard.php 16 ●●●●● patch | view | raw | blame | history
program/localization/de_DE/csv2vcard.inc 2 ●●●●● patch | view | raw | blame | history
program/localization/en_US/csv2vcard.inc 2 ●●●●● patch | view | raw | blame | history
tests/Framework/Csv2vcard.php 18 ●●●●● patch | view | raw | blame | history
tests/src/Csv2vcard/outlook.csv 2 ●●●●● patch | view | raw | blame | history
tests/src/Csv2vcard/outlook.vcf 7 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Fix import of multiple contact email addresses from Outlook-csv format (#1490169)
- Fix drag-n-drop to folders expanded while dragging (#1490157)
- Fix import of multiple contact groups from Google-csv format (#1490159)
program/lib/Roundcube/rcube_csv2vcard.php
@@ -52,9 +52,9 @@
        'company'               => 'organization',
        //'company_main_phone'    => '',
        'department'            => 'department',
        //'email_2_address'       => '', //@TODO
        'email_2_address'       => 'email:other',
        //'email_2_type'          => '',
        //'email_3_address'       => '', //@TODO
        'email_3_address'       => 'email:other',
        //'email_3_type'          => '',
        'email_address'         => 'email:pref',
        //'email_type'            => '',
@@ -186,9 +186,9 @@
        //'company_main_phone' => "Company Main Phone",
        'department'        => "Department",
        //'directory_server'  => "Directory Server",
        //'email_2_address'   => "E-mail 2 Address",
        'email_2_address'   => "E-mail 2 Address",
        //'email_2_type'      => "E-mail 2 Type",
        //'email_3_address'   => "E-mail 3 Address",
        'email_3_address'   => "E-mail 3 Address",
        //'email_3_type'      => "E-mail 3 Type",
        'email_address'     => "E-mail Address",
        //'email_type'        => "E-mail Type",
@@ -554,7 +554,13 @@
        foreach ($this->map as $idx => $name) {
            $value = $data[$idx];
            if ($value !== null && $value !== '') {
                $contact[$name] = $value;
                if (!empty($contact[$name])) {
                    $contact[$name]   = (array) $contact[$name];
                    $contact[$name][] = $value;
                }
                else {
                   $contact[$name] = $value;
                }
            }
        }
program/localization/de_DE/csv2vcard.inc
@@ -33,6 +33,8 @@
$map['company'] = "Firma";
$map['department'] = "Abteilung";
$map['email_address'] = "E-Mail-Adresse";
$map['email_2_address'] = "E-Mail 2: Adresse";
$map['email_3_address'] = "E-Mail 3: Adresse";
$map['first_name'] = "Vorname";
$map['gender'] = "Geschlecht";
$map['home_city'] = "Ort privat";
program/localization/en_US/csv2vcard.inc
@@ -40,6 +40,8 @@
$map['company'] = "Company";
$map['department'] = "Department";
$map['email_address'] = "E-mail Address";
$map['email_2_address'] = "E-mail 2 Address";
$map['email_3_address'] = "E-mail 3 Address";
$map['first_name'] = "First Name";
$map['gender'] = "Gender";
$map['home_city'] = "Home City";
tests/Framework/Csv2vcard.php
@@ -73,4 +73,22 @@
        $this->assertEquals($vcf_text, $vcard);
    }
    function test_import_outlook()
    {
        $csv_text = file_get_contents(TESTS_DIR . '/src/Csv2vcard/outlook.csv');
        $vcf_text = file_get_contents(TESTS_DIR . '/src/Csv2vcard/outlook.vcf');
        $csv = new rcube_csv2vcard;
        $csv->import($csv_text);
        $result = $csv->export();
        $vcard  = $result[0]->export(false);
        $this->assertCount(1, $result);
        $vcf_text = trim(str_replace("\r\n", "\n", $vcf_text));
        $vcard    = trim(str_replace("\r\n", "\n", $vcard));
        $this->assertEquals($vcf_text, $vcard);
    }
}
tests/src/Csv2vcard/outlook.csv
New file
@@ -0,0 +1,2 @@
E-mail Address,E-mail 2 Address,E-mail 3 Address
test1@domain.tld,test2@domain.tld,test3@domain.tld
tests/src/Csv2vcard/outlook.vcf
New file
@@ -0,0 +1,7 @@
BEGIN:VCARD
VERSION:3.0
FN:test1@domain.tld
EMAIL;TYPE=INTERNET;TYPE=PREF:test1@domain.tld
EMAIL;TYPE=INTERNET;TYPE=OTHER:test2@domain.tld
EMAIL;TYPE=INTERNET;TYPE=OTHER:test3@domain.tld
END:VCARD