X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=lxo-import%2FaddressB.php;h=bd5317f05836800d95a383d110aafe432ba11fe7;hb=f393137fd963b0898bb1c1204abfca639aae27a1;hp=1cb067c3ec190e855b2a4921e338eb81a81f2750;hpb=cf094071510823753d837ad597759002a83bbad8;p=kivitendo-erp.git
diff --git a/lxo-import/addressB.php b/lxo-import/addressB.php
old mode 100755
new mode 100644
index 1cb067c3e..bd5317f05
--- a/lxo-import/addressB.php
+++ b/lxo-import/addressB.php
@@ -1,7 +1,7 @@
-
+";
exit(1);
}
-
+$dir = "../users/";
clearstatcache ();
//print_r($_FILES);
$test=$_POST["test"];
if (!empty($_FILES["Datei"]["name"])) {
$file=$_POST["ziel"];
- if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file.".csv")) {
+ if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file.".csv")) {
$file=false;
echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].") ";
}
-} else if (is_file($_POST["ziel"].".csv")) {
+} else if (is_file($dir.$_POST["ziel"].".csv")) {
$file=$_POST["ziel"];
} else {
$file=false;
@@ -67,8 +67,12 @@ if (!empty($_FILES["Datei"]["name"])) {
if (!$file) ende ("Kein Datenfile");
$trenner=($_POST["trenner"])?$_POST["trenner"]:",";
+if ($trenner=="other") {
+ $trenner=trim($trennzeichen);
+ if (substr($trenner,0,1)=="#") if (strlen($trenner)>1) $trenner=chr(substr($trenner,1));
+}
-if (!file_exists("$file.csv")) ende("$file.csv nicht im Ordner oder leer");
+if (!file_exists($dir.$file.".csv")) ende("$file.csv nicht im Ordner oder leer");
if (!$db->chkcol($file)) ende("Importspalte kann nicht angelegt werden");
@@ -78,9 +82,41 @@ if (!$employee) ende("Ungültiger User");
$kunde_fld = array_keys($address);
-$f=fopen("$file.csv","r");
+ //Zeichencodierung des Servers
+ $tmpcode = $db->getServerCode();
+ //Leider sind die Benennungen vom Server anders als von mb_detect_encoding
+ if ($tmpcode == "UTF8") {
+ define("ServerCode","UTF-8");
+ } else if ($tmpcode == "LATIN9") {
+ define("ServerCode","ISO-8859-15");
+ } else if ($tmpcode == "LATIN1") {
+ define("ServerCode","ISO-8859-1");
+ } else {
+ define("ServerCode",$tmpcode);
+ }
+ //Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos
+ //DB und LxO müssen ja nicht auf der gleichen Maschiene sein.
+ if($tmpcode<>$db->getClientCode()) {
+ $rc = $db->setClientCode($tmpcode);
+ }
+
+ // Zeichenkodierung File
+ if ($_POST["encoding"] == "auto") {
+ define("Auto",true);
+ define("Translate",true);
+ } else {
+ define("Auto",false);
+ if ($_POST["encoding"] == ServerCode) {
+ define("Translate",false);
+ } else {
+ define("Translate",true);
+ define("FileCode",$_POST["encoding"]);
+ }
+ }
+
+$f=fopen($dir.$file.".csv","r");
$zeile=fgets($f,1200);
-$infld=split($trenner,strtolower($zeile));
+$infld=explode($trenner,strtolower($zeile));
$first=true;
$ok=true;
foreach ($infld as $fld) {
@@ -103,7 +139,6 @@ if ($ok) while (!feof($f)){
$vals=" values (";
$number=false;
foreach($zeile as $data) {
- print $data . "her" ;
if (!in_array(trim($in_fld[$i]),$kunde_fld)) {
if ($in_fld[$i]=="anrede") { $anrede=addslashes(trim($data)); }
$i++;
@@ -112,14 +147,14 @@ if ($ok) while (!feof($f)){
$data=trim($data);
// seit 2.6 ist die DB-Kodierung UTF-8 @holger Ansonsten einmal vorher die DB-Encoding auslesen
// Falls die Daten ISO-kodiert kommen entsprechend wandeln
+ // done!
// UTF-8 MUSS als erstes stehen, da ansonsten die Prüfung bei ISO-8859-1 aufhört ...
+ // die blöde mb_detect... tut leider nicht immer, daher die Möglichkeit der Auswahl
// TODO Umlaute am Anfang wurden bei meinem Test nicht übernommen (Ãsterreich). S.a.:
// http://forum.de.selfhtml.org/archiv/2007/1/t143904/
- $encoding = mb_detect_encoding($data,"UTF-8,ISO-8859-1,ISO-8859-15");
- if ($encoding != "UTF-8"){
- $data=mb_convert_encoding($data, "UTF-8","$encoding");
- }
+ if (Translate) translate($data);
+
//$data=htmlentities($data);
$data=addslashes($data);
if ($in_fld[$i]==$file."number") { // customernumber || vendornumber
@@ -133,12 +168,9 @@ if ($ok) while (!feof($f)){
} else if ($in_fld[$i]=="taxincluded"){
$data=strtolower(substr($data,0,1));
if ($data!="f" && $data!="t") $data="f";
-/* } else if ($in_fld[$i]=="ustid"){
- Was passiert hier:
- $data=strtr(" ","",$data);
- SUCHE IN ' ' nach dem Vorkommen von '' mit der BOOLEAN-Interpretation von $data
- demnach gibt es immer eine leere Zeichenkette zurück.
- }*/ /*else if ($in_fld[$i]=="matchcode") {
+ } else if ($in_fld[$i]=="ustid"){
+ $data=strtr($data," ","");
+ } /*else if ($in_fld[$i]=="matchcode") {
$matchcode=$data;
$i++;
continue;
@@ -205,14 +237,31 @@ echo $j." $file importiert.\n";
- }; ?>
+