function _detect_delimiter()
 {
     if ($this->_src_file_handler == null) {
         $this->_errors = getMsg('DCONV', 'CANT_DETECT_DELIMITER');
         $this->_settings['csv_delimiter'] = null;
         return;
     }
     foreach ($this->CSV_DELIMITERS as $delimiter) {
         $_tmp_arr = convertImportDataArray(fgetcsv($this->_src_file_handler, 262144, $delimiter));
         rewind($this->_src_file_handler);
         if ($this->_check_headers_array($_tmp_arr)) {
             $this->_settings['csv_delimiter'] = $delimiter;
             return;
         }
     }
     $this->_errors = getMsg('DCONV', 'INVALID_CSV_FORMAT');
     $this->_settings['csv_delimiter'] = null;
     return;
 }
 function _detect_delimiter()
 {
     if ($this->_src_file_handler == null) {
         $this->_errors = $this->MR->getMessage('CANT_DETECT_DELIMITER');
         //'can not detect csv-delimiter. source not opened';
         $this->_settings['csv_delimiter'] = null;
         return;
     }
     reset($this->CSV_DELIMITERS);
     do {
         $delimiter = current($this->CSV_DELIMITERS);
         $_tmp_arr = convertImportDataArray(fgetcsv($this->_src_file_handler, 262144, $delimiter));
         rewind($this->_src_file_handler);
         if ($this->_check_headers_array($_tmp_arr)) {
             $this->_settings['csv_delimiter'] = $delimiter;
             return;
         }
     } while (next($this->CSV_DELIMITERS));
     $this->_errors = $this->MR->getMessage('INVALID_CSV_FORMAT');
     //'invalid csv file format';
     $this->_settings['csv_delimiter'] = null;
     return;
 }
function convertImportDataArray($text_array)
{
    if (!is_array($text_array)) {
        return convertImportData($text_array);
    }
    foreach ($text_array as $k => $v) {
        if (is_array($v)) {
            $text_array[$k] = convertImportDataArray($v);
        } else {
            $text_array[$k] = convertImportData($v);
        }
    }
    return $text_array;
}
 function parse_import_file($fname, $delimetr = ";")
 {
     if (!file_exists($fname) or !is_readable($fname)) {
         return false;
     }
     if (!in_array($delimetr, array(",", ";", "\t"))) {
         return false;
     }
     CProfiler::ioStart();
     $fh = @fopen($fname, "r");
     CProfiler::ioStop();
     if ($fh == FALSE) {
         return false;
     }
     CProfiler::ioStart($fname, 'read');
     $layout = fgetcsv($fh, 262144, $delimetr);
     $layout = convertImportDataArray($layout);
     //!!!!!
     foreach ($layout as $name => $value) {
         //            echo("!layout: name = $name; value = $value!<br>");
     }
     //!!!!!
     $csv_data = array();
     while (!feof($fh)) {
         $data = fgetcsv($fh, 262144, $delimetr);
         $data = convertImportDataArray($data);
         foreach ($data as $name => $value) {
             //               echo("!data: name = $name; value = $value!<br>");
         }
         $tmp = array();
         for ($i = 0; $i < count($layout); $i++) {
             //                echo("<i>layout[$i] = $layout[$i]</i> - ");
             //              echo("data[$i] = $data[$i]<br>");
             $tmp[$layout[$i]] = $data[$i];
         }
         $csv_data[] = $tmp;
     }
     fclose($fh);
     CProfiler::ioStop();
     return array($layout, $csv_data);
 }