diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index 1267e608352f1397cbdc118cf2b91610ea19bcae..767258e62a7f769e3b416aa21601a855f7fcedaa 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -449,6 +449,8 @@ if ($step == 2 && $datatoimport) if ($step == 3 && $datatoimport) { + $liste=$objmodelimport->liste_modeles($db); + llxHeader('',$langs->trans("NewImport"),'EN:Module_Imports_En|FR:Module_Imports|ES:Módulo_Importaciones'); $param='step=3&datatoimport='.$datatoimport.'&format='.$format; @@ -494,7 +496,8 @@ if ($step == 3 && $datatoimport) // Source file format print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>'; print '<td>'; - print $format; + $text=$objmodelimport->getDriverDesc($format); + print $html->textwithpicto($objmodelimport->getDriverLabel($format),$text); print '</td></tr>'; print '</table>'; @@ -576,6 +579,7 @@ if ($step == 3 && $datatoimport) if ($step == 4 && $datatoimport) { $model=$format; + $liste=$objmodelimport->liste_modeles($db); // Create classe to use for import $dir = DOL_DOCUMENT_ROOT . "/includes/modules/import/"; @@ -585,19 +589,37 @@ if ($step == 4 && $datatoimport) $obj = new $classname($db); // Load source fields in input file - $obj->import_open_file($dir.$file,$langs); - $fieldssource=array( + $result=$obj->import_open_file($conf->import->dir_temp.'/'.$filetoimport,$langs); + if ($result >= 0) + { + // Read first line + $arrayrecord=$obj->import_read_record(); + $fieldssource=array(); + // Put array into an array starting with 1. + $i=1; + foreach($arrayrecord as $key => $val) + { + $newval=dol_trunc($val,24); + // Autodetect format (UTF8 or ISO) + if (utf8_check($val)) $fieldssource[$i]['example1']=$newval; + else $fieldssource[$i]['example1']=utf8_encode($newval); + $i++; + } + $obj->import_close_file(); + } + +/*$fieldssource=array( 1=>array('name'=>'aa','example1'=>'val1','example2'=>'val2'), 2=>array('name'=>'bb','example1'=>'valb1','example2'=>'valb2'), 3=>array('name'=>'cc','example1'=>'valc1','example2'=>'valc2'), -/* 4=>array('name'=>'dd','example1'=>'valc1','example2'=>'valc2'), + 4=>array('name'=>'dd','example1'=>'valc1','example2'=>'valc2'), 5=>array('name'=>'ee','example1'=>'valc1','example2'=>'valc2'), 6=>array('name'=>'ff','example1'=>'valc1','example2'=>'valc2'), 7=>array('name'=>'gg','example1'=>'valc1','example2'=>'valc2'), 8=>array('name'=>'hh','example1'=>'valc1','example2'=>'valc2'), 9=>array('name'=>'ii','example1'=>'valc1','example2'=>'valc2'), -*/ ); - $obj->import_close_file(); + ); +*/ // Load targets fields in database $fieldstarget=$objimport->array_import_fields[0]; @@ -689,7 +711,8 @@ if ($step == 4 && $datatoimport) // Source file format print '<tr><td width="25%">'.$langs->trans("SourceFileFormat").'</td>'; print '<td>'; - print $format; + $text=$objmodelimport->getDriverDesc($format); + print $html->textwithpicto($objmodelimport->getDriverLabel($format),$text); print '</td></tr>'; // File to import @@ -803,7 +826,11 @@ if ($step == 4 && $datatoimport) if ($mandatoryfieldshavesource) $mandatoryfieldshavesource=(! empty($valforsourcefieldnb[$i]) && ($valforsourcefieldnb[$i] <= sizeof($fieldssource))); //print 'xx'.($i).'-'.$valforsourcefieldnb[$i].'-'.$mandatoryfieldshavesource; } - $htmltext=$langs->trans("Table").": ".$tablename."<br>".$langs->trans("Field").': '.$code; + $htmltext =$langs->trans("Table").": <b>".$tablename."</b><br>"; + $htmltext.=$langs->trans("Field").': <b>'.$code."</b><br>"; + $htmltext.=$langs->trans("Required").': <b>'.yn(eregi('\*$',$label)).'</b>'; + $note=''; + if ($note) $htmltext.=$langs->trans("Note").': '.$note; $text.=$more; print $html->textwithpicto($text,$htmltext); print '</td>'; @@ -1203,8 +1230,8 @@ function show_elem($fieldssource,$i,$pos,$key,$var) print img_picto($langs->trans("MoveField",$pos),'uparrow','class="boxhandle" style="cursor:move;"'); print '</td>'; print '<td style="font-weight: normal">'; - print $langs->trans("Field").' '.$pos.': '; - print '<b>'.$fieldssource[$pos]['name'].'</b> ('.$fieldssource[$pos]['example1'].')'; + print $langs->trans("Field").' '.$pos; + if (isset($fieldssource[$pos]['example1'])) print ' (<i>'.$fieldssource[$pos]['example1'].'</i>)'; print '</td>'; } print '</tr>'; diff --git a/htdocs/includes/modules/export/export_csv.modules.php b/htdocs/includes/modules/export/export_csv.modules.php index e26e6cc92ea97243e7bb1c052e37422b496da8d1..cd12da1be734314b4e0b09fc8372d17f0cdcbec9 100644 --- a/htdocs/includes/modules/export/export_csv.modules.php +++ b/htdocs/includes/modules/export/export_csv.modules.php @@ -59,11 +59,11 @@ class ExportCsv extends ModeleExports $this->separator=','; if (! empty($conf->global->EXPORT_CSV_SEPARATOR_TO_USE)) $this->separator=$conf->global->EXPORT_CSV_SEPARATOR_TO_USE; $this->escape='"'; - $this->string='"'; + $this->enclosure='"'; $this->id='csv'; // Same value then xxx in file name export_xxx.modules.php $this->label='Csv'; // Label of driver - $this->desc='<b>Comma Separated Value</b> file format (.csv). This is a text file format.<br>Fields are separated by separator [ '.$this->separator.' ]. If separator is found inside a field content, field is rounded by round character [ '.$this->string.' ]. Escape character to escape round character is [ '.$this->escape.' ].'; + $this->desc='<b>Comma Separated Value</b> file format (.csv). This is a text file format.<br>Fields are separated by separator [ '.$this->separator.' ]. If separator is found inside a field content, field is rounded by round character [ '.$this->enclosure.' ]. Escape character to escape round character is [ '.$this->escape.' ].'; $this->extension='csv'; // Extension for generated file by this driver $this->picto='mime/other'; // Picto $ver=split(' ','$Revision$'); diff --git a/htdocs/includes/modules/import/import_csv.modules.php b/htdocs/includes/modules/import/import_csv.modules.php index 73193bf91ba77d3fd53735272d5d0fb73a22aaf9..ac361ba24bfa97f946a74f7e39af0241d449e218 100644 --- a/htdocs/includes/modules/import/import_csv.modules.php +++ b/htdocs/includes/modules/import/import_csv.modules.php @@ -58,12 +58,12 @@ class ImportCsv extends ModeleImports $this->separator=','; if (! empty($conf->global->EXPORT_CSV_SEPARATOR_TO_USE)) $this->separator=$conf->global->EXPORT_CSV_SEPARATOR_TO_USE; + $this->enclosure='"'; $this->escape='"'; - $this->string='"'; $this->id='csv'; // Same value then xxx in file name export_xxx.modules.php $this->label='Csv'; // Label of driver - $this->desc='<b>Comma Separated Value</b> file format (.csv). This is a text file format.<br>Fields are separated by separator [ '.$this->separator.' ]. If separator is found inside a field content, field is rounded by round character [ '.$this->string.' ]. Escape character to escape round character is [ '.$this->escape.' ].'; + $this->desc='<b>Comma Separated Value</b> file format (.csv). This is a text file format.<br>Fields are separated by separator [ '.$this->separator.' ]. If separator is found inside a field content, field is rounded by round character [ '.$this->enclosure.' ]. Escape character to escape round character is [ '.$this->escape.' ].'; $this->extension='csv'; // Extension for generated file by this driver $this->picto='mime/other'; // Picto $ver=split(' ','$Revision$'); @@ -172,6 +172,10 @@ class ImportCsv extends ModeleImports $this->error=$langs->trans("ErrorFailToOpenFile",$file); $ret=-1; } + else + { + $this->file=$file; + } return $ret; } @@ -188,31 +192,29 @@ class ImportCsv extends ModeleImports /** * \brief Input record line from file */ - function import_read_record($array_alias,$array_selected_sorted,$objp) + function import_read_record() { global $conf; - if (! empty($conf->global->EXPORT_CSV_FORCE_CHARSET)) $outputlangs->charset_output=$conf->global->EXPORT_CSV_FORCE_CHARSET; + //$importlang=new Translate($this->db); + //if (! empty($conf->global->IMPORT_CSV_FORCE_CHARSET)) $importlang->charset_output=$conf->global->IMPORT_CSV_FORCE_CHARSET; - $this->col=0; - foreach($array_selected_sorted as $code => $value) + $arrayres=array(); + if (version_compare(phpversion(), '5.3') < 0) + { + $arrayres=fgetcsv($this->handle,100000,$this->separator,$this->enclosure); + } + else + { + $arrayres=fgetcsv($this->handle,100000,$this->separator,$this->enclosure,$this->escape); + } +// var_dump($this->handle); + //var_dump($arrayres);exit; + if ($arrayres && is_array($arrayres)) { - $alias=$array_alias[$code]; - if (empty($alias)) dol_print_error('','Bad value for field with code='.$code.'. Try to redefine export.'); - $newvalue=$outputlangs->convToOutputCharset($objp->$alias); - - // Translation newvalue - if (eregi('^\((.*)\)$',$newvalue,$reg)) - { - $newvalue=$outputlangs->transnoentities($reg[1]); - } - - $newvalue=$this->csv_clean($newvalue); + $this->col=sizeof($arrayres); + } - fwrite($this->handle,$newvalue.$this->separator); - $this->col++; - } - fwrite($this->handle,"\n"); - return 0; + return $arrayres; } /**