*/
header("Content-Type: text/html; charset=utf-8");
require_once ('../../config/cis.config.inc.php');
require_once ('../../include/functions.inc.php');
require_once ('../../include/person.class.php');
require_once ('../../include/benutzer.class.php');
require_once ('../../include/akte.class.php');
require_once ('../../include/phrasen.class.php');
require_once ('../../include/fotostatus.class.php');
require_once ('../../include/dms.class.php');
require_once ('../../include/benutzerberechtigung.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('basis/fhausweis','suid'))
{
die($rechte->errormsg);
}
// Bild kommt im Seitenverhältnis 3:4 passend für FH-Ausweis
$base64_src = isset($_POST['src']) ? $_POST['src'] : die($p->t('global/fehlerBeiDerParameteruebergabe').'"src"');
$person_id = isset($_POST['person_id']) ? $_POST['person_id'] : die($p->t('global/fehlerBeiDerParameteruebergabe').'"person_id"');
$img_filename = isset($_POST['img_filename']) ? $_POST['img_filename'] : die($p->t('global/fehlerBeiDerParameteruebergabe').'"img_filename"');
$img_type = isset($_POST['img_type']) ? $_POST['img_type'] : die($p->t('global/fehlerBeiDerParameteruebergabe').'"img_type"');
$result_obj = array();
// Entfernt den data-string (data:image/png;base64,) vom Beginn des Codes damit nur der reine base64 Code zurueckgegeben wird
$base64_src = (preg_replace('/^data:(.*?)base64,/', '', $base64_src));
// Falls die $base64_src danach leer sein sollte, wird abgebrochen
if ($base64_src == '')
{
$result_obj['type'] = "error";
$result_obj['msg'] = "Fehler: $akte->errormsg";
echo json_encode($result_obj);
exit;
}
function resize($base64, $width, $height) // 828 x 1104 -> 240 x 320
{
ob_start();
$image = imagecreatefromstring (base64_decode($base64));
// Hoehe und Breite neu berechnen
list ($width_orig, $height_orig) = getimagesizefromstring (base64_decode($base64));
if ($width && ($width_orig < $height_orig))
{
$width = intval(($height / $height_orig) * $width_orig);
}
else
{
$height = intval(($width / $width_orig) * $height_orig);
}
$image_p = imagecreatetruecolor($width, $height);
//$image = imagecreatefromjpeg($filename);
// Bild nur verkleinern aber nicht vergroessern
if ($width_orig > $width || $height_orig > $height)
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
else
$image_p = $image;
imagejpeg($image_p);
$retval = ob_get_contents();
ob_end_clean();
$retval = base64_encode($retval);
@imagedestroy($image_p);
@imagedestroy($image);
return $retval;
}
// Wenn der Fotostatus "Akzeptiert" ist, darf kein neues Foto hochgeladen werden
// Auskommentiert, da mit Recht basis/fhausweis schon möglich
/*$fs = new fotostatus();
if ($fs->akzeptiert($person_id))
die($p->t('profil/profilfotoUploadGesperrt'));*/
// DMS eintrag erstellen
$ext = strtolower(pathinfo($img_filename, PATHINFO_EXTENSION));
$dms_filename = uniqid();
$dms_filename .= "." . $ext;
$filename_path = DMS_PATH . $dms_filename;
// Im DMS wird das Bild in der Originalauflösung von 828x1104 gespeichert
$newfile = fopen($filename_path, 'w');
fwrite($newfile, base64_decode($base64_src));
if (fclose($newfile))
{
// Wenn Akte mit DMS-ID vorhanden, dann neue DMS-Version hochladen
$akte = new akte();
$version = '0';
$dms_id = '';
if ($akte->getAkten($person_id, 'Lichtbil'))
{
// Erste Akte @todo: Ist auch so in content/akte.php. Kann irrefuehrende Ergebisse liefern, wenn bereits mehrere Akten des selben Typs vorhanden sind.
if (isset($akte->result[0]))
{
$akte = $akte->result[0];
if ($akte->dms_id != '')
{
$dms = new dms();
$dms->load($akte->dms_id);
$version = $dms->version + 1;
$dms_id = $akte->dms_id;
}
}
}
$dms = new dms();
$dms->dms_id = $dms_id;
$dms->version = $version;
$dms->kategorie_kurzbz = 'Akte';
$dms->insertamum = date('Y-m-d H:i:s');
$dms->insertvon = $uid;
$dms->mimetype = cutString($img_type, 256);
$dms->filename = $dms_filename;
$dms->name = cutString($img_filename, 256, '~', true);
if ($dms->save(true))
{
$dms_id = $dms->dms_id;
$akte = new akte();
if ($akte->getAkten($person_id, 'Lichtbil'))
{
if (count($akte->result) > 0)
{
$akte = $akte->result[0];
$akte->new = false;
$akte->updateamum = date('Y-m-d H:i:s');
$akte->updatevon = $uid;
}
else
{
$akte->new = true;
$akte->insertamum = date('Y-m-d H:i:s');
$akte->insertvon = $uid;
}
}
else
{
$akte->new = true;
$akte->insertamum = date('Y-m-d H:i:s');
$akte->insertvon = $uid;
}
$akte->dokument_kurzbz = 'Lichtbil';
$akte->person_id = $person_id;
//$akte->inhalt = base64_encode($content); Fotos werden nur als DMS und in tbl_person gespeichert
$akte->mimetype = $img_type;
$akte->erstelltam = date('Y-m-d H:i:s');
$akte->gedruckt = false;
$akte->titel = cutString($img_filename, 32, '~', true); // Filename
$akte->bezeichnung = "Lichtbild gross";
$akte->uid = '';
$akte->nachgereicht = false;
// $akte->anmerkung = ''; Auch bei nachträglichem Upload bleibt die Anmerkung erhalten
$akte->dms_id = $dms_id;
if (! $akte->save())
{
$result_obj['type'] = "error";
$result_obj['msg'] = "Fehler: $akte->errormsg";
echo json_encode($result_obj);
}
}
else
{
$result_obj['type'] = "error";
$result_obj['msg'] = $p->t('global/fehlerBeimSpeichernDerDaten');
echo json_encode($result_obj);
}
}
else
{
$result_obj['type'] = "error";
$result_obj['msg'] = $p->t('global/dateiNichtErfolgreichHochgeladen');
echo json_encode($result_obj);
}
// Bild in tbl_person auf 240x320 skalieren
$base64_src = resize($base64_src, 240, 320);
$person = new person();
if ($person->load($person_id))
{
// base64 Wert in die Datenbank speichern
$person->foto = $base64_src;
$person->new = false;
// Fotostatus auf "hochgeladen" setzen
if ($person->save())
{
$fs = new fotostatus();
$fs->person_id = $person->person_id;
$fs->fotostatus_kurzbz = 'hochgeladen';
$fs->datum = date('Y-m-d');
$fs->insertamum = date('Y-m-d H:i:s');
$fs->insertvon = $uid;
$fs->updateamum = date('Y-m-d H:i:s');
$fs->updatevon = $uid;
if (! $fs->save(true))
echo 'Fehler beim Setzen des Bildstatus';
else
{
$result_obj['type'] = "success";
$result_obj['msg'] = "Bild wurde erfolgreich gespeichert";
echo json_encode($result_obj);
}
}
else
{
$result_obj['type'] = "error";
$result_obj['msg'] = "" . $person->errormsg . "";
echo json_encode($result_obj);
}
}