From d287a9be8c21bc9002200446e917091eec9d5348 Mon Sep 17 00:00:00 2001 From: oesi Date: Mon, 10 Aug 2015 13:11:08 +0200 Subject: [PATCH] =?UTF-8?q?-=20Lichtbilder=20die=20anstatt=20im=20Inhalt?= =?UTF-8?q?=20der=20Akte=20im=20DMS=20abgelegt=20sind=20werden=20jetzt=20a?= =?UTF-8?q?uch=20korrekt=20angezeigt=20-=20Fehler=20behoben=20bei=20dem=20?= =?UTF-8?q?die=20Bilder=20nicht=20=C3=BCbers=20CIS=20nicht=20korrekt=20ges?= =?UTF-8?q?peichert=20wurden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/crop.php | 35 +++++++++++++-------------- cis/public/bild.php | 57 +++++++++++++++++++++++++++++++++++--------- content/bild.php | 51 ++++++++++++++++++++++++++++++++------- 3 files changed, 105 insertions(+), 38 deletions(-) diff --git a/cis/private/crop.php b/cis/private/crop.php index 077774fd8..32c538ada 100644 --- a/cis/private/crop.php +++ b/cis/private/crop.php @@ -15,7 +15,7 @@ $user = get_uid(); function resize($filename, $width, $height) { $ext = 'jpg'; - + // Hoehe und Breite neu berechnen list($width_orig, $height_orig) = getimagesize($filename); @@ -36,9 +36,9 @@ function resize($filename, $width, $height) imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); else $image_p = $image; - + imagejpeg($image_p, $filename, 80); - + @imagedestroy($image_p); @imagedestroy($image); } @@ -59,25 +59,25 @@ else die($p->t('global/fehlerBeiDerParameteruebergabe')); //file als png und jpg abspeichern -file_put_contents('image.png', base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $src))); -$imageTmp=imagecreatefrompng('image.png'); -imagejpeg($imageTmp, 'imagee.jpg', 100); +$tmpfname = tempnam(sys_get_temp_dir(), 'FHC'); +file_put_contents($tmpfname, base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $src))); +$imageTmp=imagecreatefrompng($tmpfname); +imagejpeg($imageTmp, $tmpfname, 100); $person_id = $_POST['person_idValue']; -$filename = 'imagee.jpg'; //profilbild speichern -if(file_exists($filename)) -{ +if(file_exists($tmpfname)) +{ $width=101; $height=130; //groesse auf maximal 827x1063 begrenzen - resize($filename, 827, 1063); + resize($tmpfname, 827, 1063); - $fp = fopen($filename,'r'); + $fp = fopen($tmpfname,'r'); //auslesen - $content = fread($fp, filesize($filename)); + $content = fread($fp, filesize($tmpfname)); fclose($fp); $akte = new akte(); @@ -117,13 +117,13 @@ if(file_exists($filename)) } //groesse auf maximal 101x130 begrenzen - resize($filename, 101, 130); + resize($tmpfname, 101, 130); //in DB speichern //File oeffnen - $fp = fopen($filename,'r'); + $fp = fopen($tmpfname,'r'); //auslesen - $content = fread($fp, filesize($filename)); + $content = fread($fp, filesize($tmpfname)); fclose($fp); //in base64-Werte umrechnen $content = base64_encode($content); @@ -158,6 +158,5 @@ if(file_exists($filename)) } //temporäre files löschen -unlink($filename); -unlink('image.png'); -?> \ No newline at end of file +unlink($tmpfname); +?> diff --git a/cis/public/bild.php b/cis/public/bild.php index 9a262fa57..54d39523a 100644 --- a/cis/public/bild.php +++ b/cis/public/bild.php @@ -26,6 +26,7 @@ require_once('../../config/cis.config.inc.php'); require_once('../../include/functions.inc.php'); require_once('../../include/basis_db.class.php'); require_once('../../include/benutzer.class.php'); +require_once('../../include/dms.class.php'); session_start(); @@ -33,7 +34,7 @@ if (!$db = new basis_db()) die('Fehler beim Oeffnen der Datenbankverbindung'); //Wenn das Bild direkt aufgerufen wird, ist eine Authentifizierung erforderlich -//Wenn es vom Server selbst aufgerufen wird, ist keine Auth. notwendig +//Wenn es vom Server selbst aufgerufen wird, ist keine Auth. notwendig //(z.B. fuer die Erstellung von PDFs) if($_SERVER['REMOTE_ADDR']!=$_SERVER['SERVER_ADDR']) { @@ -41,19 +42,19 @@ if($_SERVER['REMOTE_ADDR']!=$_SERVER['SERVER_ADDR']) if(!isset($_SESSION['prestudent/user']) && !isset($_SESSION['incoming/user'])) $uid = get_uid(); } - + //default bild (ein weisser pixel) $cTmpHEX='/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q/9sAQwAFAwQEBAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/9sAQwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/8AAEQgAAQABAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAAI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCywAf/2Q=='; //Hex Dump aus der DB holen if(isset($_GET['src']) && $_GET['src']=='person' && isset($_GET['person_id']) && is_numeric($_GET['person_id'])) { - $qry = "SELECT tbl_akte.inhalt as foto, tbl_person.foto_sperre FROM public.tbl_akte JOIN public.tbl_person USING(person_id) WHERE tbl_akte.person_id='".addslashes($_GET['person_id'])."' AND dokument_kurzbz='Lichtbil'"; + $qry = "SELECT tbl_akte.inhalt as foto, tbl_person.foto_sperre, tbl_akte.dms_id FROM public.tbl_akte JOIN public.tbl_person USING(person_id) WHERE tbl_akte.person_id=".$db->db_add_param($_GET['person_id'], FHC_INTEGER)." AND dokument_kurzbz='Lichtbil'"; if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) { $gesperrt=false; - + //Schauen ob eine Foto Sperre existiert if($db->db_parse_bool($row->foto_sperre)) { @@ -65,20 +66,54 @@ if(isset($_GET['src']) && $_GET['src']=='person' && isset($_GET['person_id']) & $benutzer->load($uid); if($benutzer->person_id==$_GET['person_id']) $gesperrt=false; + } } - + + if($row->foto=='' && $row->dms_id!='') + { + // Wenn das Foto nicht im Inhalt steht wird aus aus dem DMS geladen + $dms = new dms(); + if(!$dms->load($row->dms_id)) + die('Kein Dokument vorhanden'); + + $filename=DMS_PATH.$dms->filename; + + $dms->touch($dms->dms_id, $dms->version); + + if(file_exists($filename)) + { + if($handle = fopen($filename,"r")) + { + while (!feof($handle)) + { + $row->foto.= fread($handle, 8192); + } + fclose($handle); + } + else + echo 'Fehler: Datei konnte nicht geoeffnet werden'; + } + else + echo 'Die Datei existiert nicht'; + } + if($row->foto!='' && !$gesperrt) - $cTmpHEX=$row->foto; + { + if($row->dms_id=='') + $cTmpHEX=base64_decode($row->foto); + else + $cTmpHEX=$row->foto; + } } } } - //die bilder werden, sofern es funktioniert, in jpg umgewandelt da es sonst zu fehlern beim erstellen //von pdfs kommen kann. -$im = @imagecreatefromstring(base64_decode($cTmpHEX)); + +$im = @imagecreatefromstring($cTmpHEX); if($im!=false) -{ +{ @ob_clean(); header("Content-type: image/jpeg"); exit(imagejpeg($im)); @@ -89,6 +124,6 @@ else //diese werden dann einfach so angezeigt. @ob_clean(); header("Content-type: image/gif"); - exit(base64_decode($cTmpHEX)); + exit($cTmpHEX); } -?> \ No newline at end of file +?> diff --git a/content/bild.php b/content/bild.php index 4ae2180c8..b8ee46bb0 100644 --- a/content/bild.php +++ b/content/bild.php @@ -24,6 +24,8 @@ // Aufruf mit db_add_param($_GET['person_id'], FHC_INTEGER); if($result = $db->db_query($qry)) { - if($row = $db->db_fetch_object($result)) - $cTmpHEX=$row->foto; - } + if($row = $db->db_fetch_object($result)) + $cTmpHEX=base64_decode($row->foto); + } } elseif(isset($_GET['src']) && $_GET['src']=='akte' && isset($_GET['person_id'])) { - $qry = "SELECT inhalt as foto FROM public.tbl_akte WHERE person_id=".$db->db_add_param($_GET['person_id'], FHC_INTEGER)." AND dokument_kurzbz='Lichtbil'"; + $qry = "SELECT inhalt as foto, dms_id FROM public.tbl_akte WHERE person_id=".$db->db_add_param($_GET['person_id'], FHC_INTEGER)." AND dokument_kurzbz='Lichtbil'"; if($result = $db->db_query($qry)) { - if($row = $db->db_fetch_object($result)) - $cTmpHEX=$row->foto; - } + if($row = $db->db_fetch_object($result)) + { + if($row->foto!='') + $cTmpHEX=base64_decode($row->foto); + elseif($row->dms_id!='') + { + // Wenn das Foto nicht im Inhalt steht wird aus aus dem DMS geladen + $dms = new dms(); + if(!$dms->load($row->dms_id)) + die('Kein Dokument vorhanden'); + + $filename=DMS_PATH.$dms->filename; + + $dms->touch($dms->dms_id, $dms->version); + + if(file_exists($filename)) + { + if($handle = fopen($filename,"r")) + { + $cTmpHEX=''; + while (!feof($handle)) + { + $cTmpHEX.= fread($handle, 8192); + } + fclose($handle); + } + else + echo 'Fehler: Datei konnte nicht geoeffnet werden'; + } + else + echo 'Die Datei existiert nicht'; + } + } + } } //Header fuer Bild schicken header("Content-type: image/gif"); //base64 Werte in Zeichen umwandeln und ausgeben -exit(base64_decode($cTmpHEX)); -?> \ No newline at end of file +exit($cTmpHEX); +?>