From 92bd3a7c3f60e56ec5055c96e7b2f25637d4b0ca Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sat, 17 Nov 2012 03:04:45 -0500
Subject: [PATCH] Fix parsing header in English when localized map is defined
---
program/include/rcube_csv2vcard.php | 28 +++++++++++++++++++++++-----
1 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/program/include/rcube_csv2vcard.php b/program/include/rcube_csv2vcard.php
index bde8198..6ec2158 100644
--- a/program/include/rcube_csv2vcard.php
+++ b/program/include/rcube_csv2vcard.php
@@ -229,8 +229,9 @@
'work_zipcode' => "Work ZipCode",
);
+ protected $local_label_map = array();
protected $vcards = array();
- protected $map = array();
+ protected $map = array();
/**
@@ -247,11 +248,12 @@
}
if (!empty($map)) {
- $this->label_map = array_merge($this->label_map, $map);
+ $this->local_label_map = array_merge($this->label_map, $map);
}
}
$this->label_map = array_flip($this->label_map);
+ $this->local_label_map = array_flip($this->local_label_map);
}
/**
@@ -307,13 +309,29 @@
* Parse CSV header line, detect fields mapping
*/
protected function parse_header($elements)
- {
- for ($i = 0, $size = count($elements); $i<$size; $i++) {
+ {
+ $map1 = array();
+ $map2 = array();
+ $size = count($elements);
+
+ // check English labels
+ for ($i = 0; $i < $size; $i++) {
$label = $this->label_map[$elements[$i]];
if ($label && !empty($this->csv2vcard_map[$label])) {
- $this->map[$i] = $this->csv2vcard_map[$label];
+ $map1[$i] = $this->csv2vcard_map[$label];
}
}
+ // check localized labels
+ if (!empty($this->local_label_map)) {
+ for ($i = 0; $i < $size; $i++) {
+ $label = $this->local_label_map[$elements[$i]];
+ if ($label && !empty($this->csv2vcard_map[$label])) {
+ $map2[$i] = $this->csv2vcard_map[$label];
+ }
+ }
+ }
+
+ $this->map = count($map1) >= count($map2) ? $map1 : $map2;
}
/**
--
Gitblit v1.9.1