コード例 #1
0
function newname($root, $old, $new)
{
    $ok = chkdir($new);
    if ($ok) {
        $ok = rename($root . "/" . $old, $root . "/" . $new);
        if ($ok) {
            $sql = "update documents set path='{$new}' where kunde = {$old}";
            $ok = $_SESSION['db']->query($sql);
            if (!$ok) {
                rename($root . "/" . $new, $root . "/" . $old);
            }
        }
    }
    return $ok;
}
コード例 #2
0
ファイル: firma4.php プロジェクト: vanloswang/kivitendo-crm
    $link3 = "firma3.php?Q={$Q}&fid={$fid}";
    $link4 = "firma4.php?Q={$Q}&fid={$fid}&pid={$pid}";
} else {
    $fid = 0;
    $co = getKontaktStamm($pid);
    $name = $co['cp_givenname'] . ' ' . $co['cp_name'];
    $plz = $co['cp_zipcode'];
    $ort = $co['cp_city'];
    $firma = 'Einzelperson';
    $link1 = '#';
    $link2 = "firma2.php?Q={$Q}&id={$pid}";
    $link3 = '#';
    $link4 = "firma4.php?Q={$Q}&pid={$pid}&fid=0";
    $dir = $co['cp_id'];
}
$x = chkdir($dir);
$t = new Template($base);
$t->set_file(array('doc' => 'firma4.tpl'));
doHeader($t);
$t->set_var(array('CRMURL' => $_SESSION['baseurl'] . 'crm/', 'FAART' => $Q == 'C' ? '.:Customer:.' : '.:Vendor:.', 'Q' => $Q, 'FID' => $fid, 'customernumber' => $Q == 'C' ? $fa['customernumber'] : $fa['vendornumber'], 'kdnr' => $fa['nummer'], 'PID' => $pid, 'Link1' => $link1, 'Link2' => $link2, 'Link3' => $link3, 'Link4' => $link4, 'Name' => $name, 'Plz' => $plz, 'Ort' => $ort, 'Firma' => $firma . $x));
$t->set_block('doc', 'Liste', 'Block');
$user = getVorlagen();
$i = 0;
if (!$user) {
    $user[0] = array('docid' => 0, 'vorlage' => 'Keine Vorlagen eingestellt', 'applikation' => 'O');
}
if ($user) {
    foreach ($user as $zeile) {
        switch ($zeile['applikation']) {
            case 'O':
                $format = 'OOo';
コード例 #3
0
ファイル: uploader.php プロジェクト: vanloswang/kivitendo-crm
<?php

require_once "../inc/stdLib.php";
// nur wegen chkdir
//error_reporting(E_ALL | E_STRICT);
require '../jquery-plugins/FileUpload/server/php/UploadHandler.php';
//$options['upload_dir'] = getcwd().'/../dokumente/'.$_SESSION['dbname'].'/tmp/';
$options['upload_dir'] = $_SESSION['crmpath'] . '/dokumente/' . $_SESSION['dbname'] . '/' . $_SESSION['login'] . '/tmp/';
chkdir($_SESSION['login'] . '/tmp/');
$options['upload_url'] = $_SESSION['baseurl'] . 'crm/dokumente/' . $_SESSION['dbname'] . '/' . $_SESSION['login'] . '/tmp/';
$upload_handler = new UploadHandler($options);
コード例 #4
0
ファイル: serien.php プロジェクト: vanloswang/kivitendo-crm
function serbrief($data)
{
    $rc = file_exists("../dokumente/" . $_SESSION["dbname"] . "/tmp/" . $data['filename']);
    if ($rc) {
        require_once "documents.php";
        $dest = "./dokumente/" . $_SESSION["dbname"] . "/serbrief/";
        $ok = chkdir("serbrief");
        copy("../dokumente/" . $_SESSION["dbname"] . "/tmp/" . $data['filename'], '.' . $dest . $data['filename']);
        unlink("../dokumente/" . $_SESSION["dbname"] . "/tmp/" . $data['filename']);
        //Verzeichnis anlegen für die Serienbriefe
        @mkdir("." . $dest . substr($_POST['filename'], 0, -4));
        //Dokument in db speichern
        $dbfile = new document();
        $dbfile->setDocData("descript", $data["subject"]);
        $dbfile->setDocData("pfad", "serbrief");
        $dbfile->setDocData("name", $data['filename']);
        $dbfile->setDocData("descript", $data["body"]);
        $rc = $dbfile->newDocument();
        $dbfile->saveDocument();
        //benötigte Daten in Session speichern
        $_SESSION["dateiId"] = $dbfile->id;
        $_SESSION["SUBJECT"] = $_POST["subject"];
        $_SESSION["BODY"] = $_POST["body"];
        $_SESSION["DATE"] = $_POST["datum"];
        $_SESSION["src"] = $_POST["src"];
        $_SESSION["savefiledir"] = $dest . substr($_POST['filename'], 0, -4);
        $_SESSION["datei"] = $_POST['filename'];
        echo json_encode(array('rc' => true, "msg" => "Datei gesichert"));
    } else {
        echo json_encode(array('rc' => false, "msg" => "Fehler beim Upload " . $_POST['filename']));
    }
}
コード例 #5
0
function chkdir($p)
{
    $d = dirname($p);
    if (is_dir($d)) {
        return;
    }
    chkdir($d);
    if (!mkdir($d)) {
        die("Unable to create path: {$d}\n");
    }
}
コード例 #6
0
ファイル: sermail.php プロジェクト: vanloswang/kivitendo-crm
         }
     } else {
         $okA = false;
         $msg .= " Kein Absender";
     }
 }
 if ($okC && $okA) {
     $dateiname = "";
     if ($_FILES["Datei"]["name"] != "") {
         $dat["Datei"]["name"] = $_FILES["Datei"]["name"];
         $dat["Datei"]["tmp_name"] = $_FILES["Datei"]["tmp_name"];
         $dat["Datei"]["type"] = $_FILES["Datei"]["type"];
         $dat["Datei"]["size"] = $_FILES["Datei"]["size"];
         $dbfile = new document();
         $dbfile->setDocData("descript", $Subject);
         $ok = chkdir($_SESSION["login"] . '/SerMail');
         $pfad = $_SESSION["login"] . '/SerMail';
         $rc = $dbfile->uploadDocument($_FILES, $pfad);
         $dateiID = $dbfile->id;
         $dateiname = $_FILES["Datei"]["name"];
     }
     $limit = 50;
     $SubjectMail = mb_encode_mimeheader($Subject, $_SESSION["charset"], 'Q', '');
     $headers = array("Return-Path" => $user["email"], "Reply-To" => $abs, "From" => $abs, "X-Mailer" => "PHP/" . phpversion(), "Subject" => $SubjectMail);
     if ($dateiname == "") {
         $headers["Content-Type"] = "text/plain; charset=" . $_SESSION["charset"];
     }
     $_SESSION["headers"] = $headers;
     $_SESSION["Subject"] = $Subject;
     $_SESSION["bodytxt"] = $BodyText;
     $_SESSION["dateiname"] = $dateiname;
コード例 #7
0
ファイル: stdLib.php プロジェクト: vanloswang/kivitendo-crm
function anmelden()
{
    ini_set("gc_maxlifetime", "3600");
    global $ERPNAME;
    // ! das funzt nicht mit $_SESSION[ERPNAME] weil die Session in loginok.php zerstört wird...
    global $erpConfigFile;
    //Konfigurationsfile der ERP einlesen
    $deep = is_dir("../" . $ERPNAME) ? "../" : "../../";
    // anmelden() aus einem Unterverzeichnis
    if (file_exists($deep . $ERPNAME . "/config/" . $erpConfigFile . ".conf")) {
        $lxo = fopen($deep . $ERPNAME . "/config/" . $erpConfigFile . ".conf", "r");
    } else {
        if (file_exists($deep . $ERPNAME . "/config/" . $erpConfigFile . ".conf.default")) {
            $lxo = fopen($deep . $ERPNAME . "/config/" . $erpConfigFile . ".conf.default", "r");
        } else {
            return false;
        }
    }
    $dbsec = false;
    $tmp = fgets($lxo, 512);
    //Parameter für die Auth-DB in der ERP-Konfiguration finden
    while (!feof($lxo)) {
        if (preg_match("/^[\\s]*#/", $tmp) || $tmp == "\n") {
            //Kommentar, ueberlesen
            $tmp = fgets($lxo, 512);
            continue;
        }
        if ($dbsec && preg_match("!\\[.+]!", $tmp)) {
            $dbsec = false;
        }
        if ($dbsec) {
            if (preg_match("/db[ ]*=[ ]*(.+)/", $tmp, $hits)) {
                $dbname = $hits[1];
            }
            if (preg_match("/password[ ]*=[ ]*(.+)/", $tmp, $hits)) {
                $dbpasswd = $hits[1];
            }
            if (preg_match("/user[ ]*=[ ]*(.+)/", $tmp, $hits)) {
                $dbuser = $hits[1];
            }
            if (preg_match("/host[ ]*=[ ]*(.+)/", $tmp, $hits)) {
                $dbhost = $hits[1] ? $hits[1] : "localhost";
            }
            if (preg_match("/port[ ]*=[ ]*([0-9]+)/", $tmp, $hits)) {
                $dbport = $hits[1] ? $hits[1] : "5432";
            }
            if (preg_match("/\\[[a-z]+/", $tmp)) {
                $dbsec = false;
            }
            $tmp = fgets($lxo, 512);
            continue;
        }
        if (preg_match("/cookie_name[ ]*=[ ]*(.+)/", $tmp, $hits)) {
            $cookiename = $hits[1];
        }
        //if ( preg_match("/dbcharset[ ]*=[ ]*(.+)/",$tmp,$hits) )   $dbcharset = $hits[1];
        if (preg_match("/session_timeout[ ]*=[ ]*(.+)/", $tmp, $hits)) {
            $sesstime = $hits[1];
        }
        if (preg_match("!\\[authentication/database\\]!", $tmp)) {
            $dbsec = true;
        }
        $tmp = fgets($lxo, 512);
    }
    if (!$cookiename) {
        $cookiename = $_SESSION['erpConfigFile'] . '_session_id';
    }
    if (!$sesstime) {
        $sesstime = 480;
    }
    fclose($lxo);
    $cookie = $_COOKIE[$cookiename];
    if (!$cookie) {
        header("location: ups.html");
    }
    // Benutzer anmelden
    error_log("!{$ERPNAME}!{$dbhost},{$dbport},{$dbuser},{$dbpasswd},{$dbname},{$cookie}!", 0);
    $auth = authuser($dbhost, $dbport, $dbuser, $dbpasswd, $dbname, $cookie);
    if (!$auth) {
        return false;
    }
    // Anmeldung des Users fehlgeschlagen
    chkdir($auth["dbname"]);
    // gibt es unter dokumente ein Verzeichnis mit dem Instanznamen
    chkdir($auth["dbname"] . '/tmp/');
    foreach ($auth as $key => $val) {
        $_SESSION[$key] = $val;
    }
    // Mandanten + Userdaten in Session speichern
    $_SESSION["sessid"] = $cookie;
    $_SESSION["cookie"] = $cookiename;
    $_SESSION["sesstime"] = $sesstime;
    // Mit der Mandanten-DB verbinden
    $_SESSION["db"] = new myDB($_SESSION["dbhost"], $_SESSION["dbuser"], $_SESSION["dbpasswd"], $_SESSION["dbname"], $_SESSION["dbport"]);
    if (!$_SESSION["db"]) {
        return false;
    } else {
        $_SESSION['CRMTL'] = $auth['CRMTL'];
        $charset = ini_get("default_charset");
        //if ( $charset == "" ) $charset = $dbcharset;
        if ($charset == "") {
            $charset = 'UTF8';
        }
        $_SESSION["charset"] = $charset;
        include_once "inc/UserLib.php";
        $user_data = getUserStamm(0, $_SESSION["login"]);
        $BaseUrl = empty($_SERVER['HTTPS']) ? 'http://' : 'https://';
        $BaseUrl .= $_SERVER['HTTP_HOST'];
        $BaseUrl .= preg_replace("^crm/.*^", "", $_SERVER['REQUEST_URI']);
        if ($user_data) {
            foreach ($user_data as $key => $val) {
                $_SESSION[$key] = $val;
            }
        }
        if (isset($_SESSION['sql_error']) && $_SESSION['sql_error']) {
            $_SESSION['db']->setShowError(true);
        } else {
            $_SESSION['db']->setShowError(false);
        }
        $_SESSION['dir_mode'] = $user_data['dir_mode'] != '' ? octdec($user_data['dir_mode']) : 493;
        // 0755
        $_SESSION["loginCRM"] = $user_data["id"];
        $_SESSION['theme'] = $user_data['theme'] == '' || $user_data['theme'] == 'base' ? '' : $user_data['theme'];
        $sql = "SELECT  * from schema_info where tag like 'relea%' order by itime desc limit 1";
        $rs = $_SESSION["db"]->getOne($sql);
        $tmp = substr($rs['tag'], 8);
        $_SESSION["ERPver"] = strtr($tmp, '_', '.');
        $_SESSION["menu"] = makeMenu($_SESSION["sessid"], $_SESSION["token"]);
        $_SESSION["basepath"] = $BaseUrl;
        $_SESSION['token'] = False;
        return true;
    }
}
コード例 #8
0
 /**
 *	Ein Dokument hochladen
 *
 *       @access public
 *       @param  string $name	Name des Dokuments
 *       @param  string $pfad	Pfad des Dokuments
 *       @return boolean         Erfolg der Aktion
 */
 function uploadDocument($file, $pfad)
 {
     $this->log("uploadDocument");
     $this->name = $file["Datei"]["name"];
     $this->size = $file["Datei"]["size"];
     if (substr($pfad, -1) == "/" and $pfad != "/") {
         $pfad = substr($pfad, 0, -1);
     }
     $this->pfad = $pfad;
     //Gibt es das Dokument so schon in der db
     $this->id = $this->searchDocument($this->name, $pfad);
     $dest = $_SESSION['crmpath'] . "/dokumente/" . $_SESSION["dbname"] . "/" . $pfad . "/" . $this->name;
     $this->logvar();
     if (chkdir($pfad)) {
         //Zielpfad vorhanden
         //if (! copy($_SESSION['crmpath'].'/tmp/'.$file["Datei"]["tmp_name"],$dest)) {
         if (!copy($file["Datei"]["tmp_name"], $dest)) {
             $this->error = "Datei '{$dest}' wurde nicht hochgeladen!";
             $this->log($this->error);
             $this->log('Tmp_name: ' . $file["Datei"]["tmp_name"]);
             @unlink($file["Datei"]["tmp_name"]);
             return false;
         }
         //unlink($_SESSION['crmpath'].'/tmp/'.$file["Datei"]["tmp_name"]);
         @unlink($file["Datei"]["tmp_name"]);
         //chmod($dest,decoct($_SESSION['dir_mode']));
         chmod($dest, $_SESSION['dir_mode']);
         if ($_SESSION['dir_group']) {
             chgrp($dest, $_SESSION['dir_group']);
         }
     } else {
         $this->error = "Verzeichnis '{$pfad}' konte nicht angelegt werden!";
         $this->log($this->error);
         unlink($file["Datei"]["tmp_name"]);
         return false;
     }
     return $this->saveDocument();
 }
コード例 #9
0
ファイル: crmLib.php プロジェクト: vanloswang/kivitendo-crm
function kontaktWvl($id, $fid, $pfad)
{
    $sql = "select * from wiedervorlage where id={$id}";
    $rs = $_SESSION['db']->getAll($sql);
    if (!$rs) {
        return false;
    }
    $nun = date("Y-m-d H:i:00");
    $tab = substr($fid, 0, 1);
    $fid = substr($fid, 1);
    if (!$_SESSION['db']->begin()) {
        return false;
    }
    if ($rs[0]["kontaktid"] > 0 and $fid != $rs[0]["kontaktid"]) {
        // bisherigen Kontakteintrag ungültig markieren
        $sql = "update telcall set cause=cause||' storniert' where id=" . $rs[0]["tellid"];
        //$rc=$_SESSION['db']->query($sql);
        if (!$_SESSION['db']->query($sql)) {
            return false;
        }
    }
    if (!$rs[0]["kontaktid"] > 0 or empty($rs[0]["kontaktid"])) {
        $tid = mknewTelCall();
        $sql = "update telcall set cause='" . $rs[0]["cause"] . "',caller_id={$fid},calldate='{$nun}',";
        $sql .= "c_long='" . $rs[0]["descript"] . "',employee=" . $rs[0]["employee"] . ",kontakt='" . $rs[0]["kontakt"];
        $sql .= "',bezug=0,dokument=" . $rs[0]["document"] . " where id={$tid}";
        $rc = $_SESSION['db']->query($sql);
        if (!$rc) {
            $_SESSION['db']->rollback();
            return false;
        } else {
            $ok = $tid;
            $sql = "update wiedervorlage set kontaktid={$fid},kontakttab='{$tab}',tellid={$tid} where id={$id}";
            if (!$_SESSION['db']->query($sql)) {
                $_SESSION['db']->rollback();
                return false;
            }
        }
    }
    if ($rs[0]["status"] < 1) {
        if ($rs[0]["document"] && $rs[0]["kontakt"] != "M") {
            $sql = "select * from documents where id=" . $rs[0]["document"];
            $rsD = $_SESSION['db']->getAll($sql);
            $von = "dokumente/" . $_SESSION["dbname"] . "/" . $rsD[0]["employee"] . "/" . $rsD[0]["filename"];
            if (!$pfad) {
                //$pfad=$_SESSION["dbname"]."/".$pfad;
                //} else {
                $pfad = mkPfad($tab . $fid, $fid);
            }
            $ok = chkdir($pfad);
            $nach = "dokumente/" . $_SESSION["dbname"] . "/" . $pfad . "/" . $rsD[0]["filename"];
            if (file_exists($von)) {
                $rc = rename($von, $nach);
                if ($rc) {
                    $sql = "update documents set kunde=" . $fid . ", pfad='" . $pfad . "' where id=" . $rsD[0]["id"];
                    if (!$_SESSION['db']->query($sql)) {
                        $_SESSION['db']->rollback();
                        return false;
                    }
                }
            } else {
                if (file_exists($nach)) {
                    $sql = "update documents set kunde=" . $fid . ", pfad='" . $pfad . "' where id=" . $rsD[0]["id"];
                    if (!$_SESSION['db']->query($sql)) {
                        $_SESSION['db']->rollback();
                        return false;
                    }
                } else {
                    $_SESSION['db']->rollback();
                    return false;
                }
            }
        }
    }
    return $_SESSION['db']->commit();
}
コード例 #10
0
function showDir($id, $directory)
{
    if ($directory != '/') {
        $directory = trim(rtrim($directory, " /\\"));
    }
    //entferne rechts Leezeichen und Slash bzw Backslash
    chkdir($directory, ".");
    $inhalt = false;
    if (is_dir("../dokumente/" . $_SESSION["dbname"] . "/" . $directory)) {
        $dir_object = dir("../dokumente/" . $_SESSION["dbname"] . "/" . $directory);
        // Gibt neues Verzeichnis aus
        $inhalt = "<ul>";
        $dir = "<li class='ptr' onClick='dateibaum(\"{$id}\",\"%s\")'>%s";
        $datei = "<li class='ptr' onClick='showFile(\"{$id}\",\"%s\")'>%s";
        clearstatcache();
        $Eintrag = array();
        while (false !== ($entry = $dir_object->read())) {
            // '.' interessiert nicht
            if ($entry !== '.') {
                if ($entry === '..') {
                    if ($directory == "/" || $directory == "") {
                        continue;
                    } else {
                        $tmp = substr($directory, 0, strrpos($directory, "/"));
                        $Eintrag[] = sprintf($dir, $tmp, "[ .. ]");
                    }
                } else {
                    if (is_dir("../dokumente/" . $_SESSION["dbname"] . "/" . $directory . "/" . $entry)) {
                        $Eintrag[] = sprintf($dir, $directory . "/" . $entry, "[ {$entry} ]");
                    } else {
                        $Eintrag[] = sprintf($datei, $entry, "{$entry}");
                    }
                }
            }
        }
        sort($Eintrag);
        $inhalt .= join("", $Eintrag);
        $inhalt .= "</ul>";
        $dir_object->close();
    }
    echo json_encode(array('rc' => '1', 'fb' => $inhalt, 'path' => $directory ? $directory : "/"));
}
コード例 #11
0
ファイル: updcode.php プロジェクト: DWWf/pocketmine-plugins
function update_code($srcdir, $dstdir)
{
    $srcdir = preg_replace('/\\/*$/', "", $srcdir) . "/";
    $dstdir = preg_replace('/\\/*$/', "", $dstdir) . "/";
    if ($srcdir == "/" || $dstdir == "/") {
        die("Trying to use root dir!\n");
    }
    if (!is_dir($srcdir)) {
        die("Missing directory {$srcdir}\n");
    }
    //
    // Make an inventory of existing files...
    //
    $dstmanifest = [];
    $dstdirlen = strlen($dstdir);
    $srcdirlen = strlen($srcdir);
    if (is_dir($dstdir)) {
        foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dstdir)) as $it) {
            if ($it->getFileName() == "..") {
                continue;
            }
            if ($it->getFileName() == ".") {
                $f = substr(dirname($it), $dstdirlen);
                if ($f == "") {
                    continue;
                }
            } else {
                $f = substr($it, $dstdirlen);
            }
            $dstmanifest[$f] = $f;
        }
    }
    //
    // Run through source code....
    //
    foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($srcdir)) as $it) {
        //if ($it->getFileName() == "." || $it->getFileName() == "..") continue;
        if ($it->getFileName() == ".") {
            $f = substr(dirname($it), $srcdirlen);
            if (isset($dstmanifest[$f])) {
                unset($dstmanifest[$f]);
            }
            continue;
        }
        if (!is_file($it)) {
            continue;
        }
        $f = substr($it, $srcdirlen);
        if (isset($dstmanifest[$f])) {
            unset($dstmanifest[$f]);
        }
        if (($ctxt = file_get_contents($srcdir . $f)) === false) {
            continue;
        }
        $otxt = is_file($dstdir . $f) ? file_get_contents($dstdir . $f) : false;
        //echo "$f - ctxt=".strlen($ctxt)." dtxt=".strlen($otxt)."\n";
        if ($ctxt != $otxt) {
            // Text has changed...
            echo "Updating {$f}\n";
            chkdir($dstdir . $f);
            file_put_contents($dstdir . $f, $ctxt);
        }
    }
    // Clean-up unused files
    foreach ($dstmanifest as $p) {
        if (is_dir($dstdir . $p)) {
            cotinue;
        }
        echo "Removing {$p}\n";
        unlink($dstdir . $p);
    }
    foreach ($dstmanifest as $p) {
        if (!is_dir($dstdir . $p)) {
            continue;
        }
        echo "Rmdir {$p}\n";
        rmdir($dstdir . $p);
    }
}
コード例 #12
0
ファイル: persLib.php プロジェクト: vanloswang/kivitendo-crm
function savePersonStamm($daten, $datei)
{
    $tmp = 0;
    $pid = $daten["PID"];
    $bildok = false;
    // Array zu jedem Formularfed: Tabelle (0=contact,1=cust/vend),  require(0=nein,1=ja), Regel
    // cp_greeting ist raus hli
    $dbfld = array("cp_name" => array(0, 1, 1, "Name", 75), "cp_givenname" => array(0, 1, 1, "Vorname", 75), "cp_gender" => array(0, 0, 1, "Geschlecht", 1), "cp_title" => array(0, 0, 1, "Titel", 75), "cp_street" => array(0, 0, 1, "Strasse", 75), "cp_zipcode" => array(0, 0, 2, "Plz", 10), "cp_city" => array(0, 0, 1, "Ort", 75), "cp_country" => array(0, 0, 8, "Land", 3), "cp_phone1" => array(0, 0, 3, "Telefon 1", 30), "cp_phone2" => array(0, 0, 3, "Telefon 2", 30), "cp_mobile1" => array(0, 0, 3, "Mobiletelefon 1", 30), "cp_mobile2" => array(0, 0, 3, "Mobiletelefon 2", 30), "cp_homepage" => array(0, 0, 4, "Homepage", 0), "cp_fax" => array(0, 0, 3, "Fax", 30), "cp_email" => array(0, 0, 5, "eMail", 0), "cp_privatemail" => array(0, 0, 5, "Private eMail", 0), "cp_notes" => array(0, 0, 1, "Bemerkungen", 0), "cp_stichwort1" => array(0, 0, 1, "Stichworte", 50), "cp_salutation" => array(0, 0, 1, "Briefanrede", 125), "cp_privatphone" => array(0, 0, 3, "Privattelefon 1", 30), "cp_birthday" => array(0, 0, 7, "Geb-Datum", 0), "cp_beziehung" => array(0, 0, 6, "Beziehung", 0), "cp_abteilung" => array(0, 0, 1, "Abteilung", 25), "cp_position" => array(0, 0, 1, "Position", 25), "cp_cv_id" => array(0, 0, 6, "FID", 0), "name" => array(1, 0, 1, "Firma", 75), "cp_owener" => array(0, 0, 6, "CRM-User", 0), "cp_grafik" => array(0, 0, 9, "Grafik", 4));
    if (!empty($datei["Datei"]["name"]["bild"])) {
        // eine Datei wird mitgeliefert
        $pictyp = array("gif", "jpeg", "png", "jpg");
        $ext = strtolower(substr($datei["Datei"]["name"]["bild"], strrpos($datei["Datei"]["name"]["bild"], ".") + 1));
        if (in_array($ext, $pictyp)) {
            $daten["cp_grafik"] = $ext;
            $datei["Datei"]['name']["bild"] = "kopf{$pid}.{$ext}";
            $bildok = true;
        }
    } else {
        $daten["cp_grafik"] = $daten["IMG_"];
    }
    if ($daten["cp_salutation_"]) {
        $daten["cp_salutation"] = $daten["cp_salutation_"];
    }
    $keys = array_keys($daten);
    $dbf = array_keys($dbfld);
    //$fid=$daten["fid"];
    $anzahl = count($keys);
    $fehler = -1;
    $tels = array();
    $query0 = '';
    for ($i = 0; $i < $anzahl; $i++) {
        if (in_array($keys[$i], $dbf)) {
            $tmpval = trim($daten[$keys[$i]]);
            if ($dbfld[$keys[$i]][0] == 1) {
                // Daten nicht für contacts
                continue;
            } else {
                if (!chkFld($tmpval, $dbfld[$keys[$i]][1], $dbfld[$keys[$i]][2], $dbfld[$keys[$i]][4])) {
                    $fehler = $dbfld[$keys[$i]][3];
                    $fehler .= "::" . $keys[$i];
                    $i = $anzahl + 1;
                }
                if ($keys[$i] == "cp_phone1" || $keys[$i] == "cp_phone2" || $keys[$i] == "cp_fax") {
                    $tels[] = $tmpval;
                }
                $query0 .= $keys[$i] . "=";
                if (in_array($dbfld[$keys[$i]][2], array(0, 1, 2, 3, 4, 5, 7, 8, 9))) {
                    //Stringwert
                    if (empty($tmpval)) {
                        $query0 .= "null,";
                    } else {
                        $query0 .= "'" . $tmpval . "',";
                    }
                } else {
                    if (empty($tmpval)) {
                        $query0 .= "null,";
                    } else {
                        $query0 .= $tmpval . ",";
                        //Zahlwert
                    }
                }
            }
        }
    }
    if ($fehler == -1) {
        //Kein Fehler aufgetreten
        if (!$daten["PID"] or $daten["PID"] < 1) {
            $pid = mknewPerson($daten["employee"]);
        }
        //Neue Person
        if (!$pid) {
            return "keine PID";
        }
        //Hat keine PID
        if ($daten["nummer"]) {
            //Gehört zu einem Cust./Vend.
            $dir = $daten["Quelle"] . $daten["nummer"] . "/" . $pid;
        } else {
            $dir = $pid;
        }
        $ok = chkdir($dir);
        if ($bildok) {
            //Ein Bild wird mitgeliefert
            require_once "documents.php";
            // db-Eintrag und upload
            $dbfile = new document();
            $dbfile->setDocData("descript", "Foto von " . $daten["cp_givenname"] . " " . $daten["cp_name"]);
            $bild["Datei"]["name"] = $datei["Datei"]["name"]["bild"];
            $bild["Datei"]["tmp_name"] = $datei["Datei"]["tmp_name"]["bild"];
            $bild["Datei"]["size"] = $datei["Datei"]["size"]["bild"];
            $bild["Datei"]["type"] = $datei["Datei"]["type"]["bild"];
            $bild["Datei"]["error"] = $datei["Datei"]["error"]["bild"];
            $dbfile->uploadDocument($bild, "/{$dir}");
        }
        if ($datei["Datei"]["name"]["visit"]) {
            $bild["Datei"]["name"] = "vcard{$pid}." . strtolower(substr($datei["Datei"]["name"]["visit"], strrpos($datei["Datei"]["name"]["visit"], ".") + 1));
            $bild["Datei"]["tmp_name"] = $datei["Datei"]["tmp_name"]["visit"];
            $bild["Datei"]["size"] = $datei["Datei"]["size"]["visit"];
            $bild["Datei"]["type"] = $datei["Datei"]["type"]["visit"];
            $bild["Datei"]["error"] = $datei["Datei"]["error"]["visit"];
            $dbfile = new document();
            $dbfile->setDocData("descript", "Visitenkarte von " . $daten["cp_givenname"] . " " . $daten["cp_name"]);
            $dbfile->uploadDocument($bild, "/{$dir}");
        }
        mkTelNummer($pid, "P", $tels);
        $sql0 = "update contacts set " . $query0 . "cp_employee=" . $_SESSION["loginCRM"] . " where cp_id={$pid}";
        if ($_SESSION['db']->query($sql0)) {
            //Erfolgreich gesichert
            return $pid;
        } else {
            return "unbekannt";
        }
    } else {
        return $fehler;
    }
}