Aleksander Machniak
2012-11-17 92bd3a7c3f60e56ec5055c96e7b2f25637d4b0ca
Fix parsing header in English when localized map is defined
1 files modified
28 ■■■■ changed files
program/include/rcube_csv2vcard.php 28 ●●●● patch | view | raw | blame | history
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;
    }
    /**