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