| | |
| | | |
| | | /* |
| | | +-----------------------------------------------------------------------+ |
| | | | program/include/rcube_csv2vcard.php | |
| | | | | |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2008-2012, The Roundcube Dev Team | |
| | | | | |
| | |
| | | { |
| | | // Localize fields map |
| | | if ($lang && $lang != 'en_US') { |
| | | if (file_exists(INSTALL_PATH . "program/localization/$lang/csv2vcard.inc")) { |
| | | include INSTALL_PATH . "program/localization/$lang/csv2vcard.inc"; |
| | | if (file_exists(RCUBE_LOCALIZATION_DIR . "$lang/csv2vcard.inc")) { |
| | | include RCUBE_LOCALIZATION_DIR . "$lang/csv2vcard.inc"; |
| | | } |
| | | |
| | | if (!empty($map)) { |
| | |
| | | // convert to UTF-8 |
| | | $head = substr($csv, 0, 4096); |
| | | $fallback = rcube::get_instance()->config->get('default_charset', 'ISO-8859-1'); // fallback to Latin-1? |
| | | $charset = rcube_charset::detect($head, RCMAIL_CHARSET); |
| | | $charset = rcube_charset::detect($head, RCUBE_CHARSET); |
| | | $csv = rcube_charset::convert($csv, $charset); |
| | | $head = ''; |
| | | |
| | |
| | | |
| | | // Parse file |
| | | foreach (preg_split("/[\r\n]+/", $csv) as $i => $line) { |
| | | $line = trim($line); |
| | | if (empty($line)) { |
| | | continue; |
| | | } |
| | | |
| | | $elements = rcube_utils::explode_quoted_string(',', $line); |
| | | |
| | | $elements = $this->parse_line($line); |
| | | if (empty($elements)) { |
| | | continue; |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * Parse CSV file line |
| | | */ |
| | | protected function parse_line($line) |
| | | { |
| | | $line = trim($line); |
| | | if (empty($line)) { |
| | | return null; |
| | | } |
| | | |
| | | $fields = rcube_utils::explode_quoted_string(',', $line); |
| | | |
| | | // remove quotes if needed |
| | | if (!empty($fields)) { |
| | | foreach ($fields as $idx => $value) { |
| | | if (($len = strlen($value)) > 1 && $value[0] == '"' && $value[$len-1] == '"') { |
| | | // remove surrounding quotes |
| | | $value = substr($value, 1, -1); |
| | | // replace doubled quotes inside the string with single quote |
| | | $value = str_replace('""', '"', $value); |
| | | |
| | | $fields[$idx] = $value; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return $fields; |
| | | } |
| | | |
| | | /** |
| | | * Parse CSV header line, detect fields mapping |
| | | */ |
| | | protected function parse_header($elements) |