Aleksander Machniak
2012-11-17 92bd3a7c3f60e56ec5055c96e7b2f25637d4b0ca
Fix parsing header in English when localized map is defined
1 files modified
24 ■■■■ changed files
program/include/rcube_csv2vcard.php 24 ●●●● patch | view | raw | blame | history
program/include/rcube_csv2vcard.php
@@ -229,6 +229,7 @@
        'work_zipcode'      => "Work ZipCode",
    );
    protected $local_label_map = array();
    protected $vcards = 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);
    }
    /**
@@ -308,12 +310,28 @@
     */
    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;
    }
    /**