From ebeb0ca491e1ba692f7c1e550f725f742d66a58d Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Tue, 6 Mar 2018 16:59:32 +0100 Subject: [PATCH] =?UTF-8?q?Bild.php:=20Akte=20und=20Person=20vern=C3=BCnft?= =?UTF-8?q?ig=20implementiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bisher wurde der GET-Parameter "src" (akte oder person) nicht berücksichtigt und immer die Person geladen. Nun kommt mit src=akte das Bild aus der Akte - Default-Bild ist nun Dummy-Bild aus skin/images --- cis/public/bild.php | 205 ++++++++++++++++++++++++++------------------ 1 file changed, 121 insertions(+), 84 deletions(-) diff --git a/cis/public/bild.php b/cis/public/bild.php index 848af3f9e..1257e2648 100644 --- a/cis/public/bild.php +++ b/cis/public/bild.php @@ -1,119 +1,159 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . + * Andreas Oesterreicher and + * Rudolf Hangl + * Manfred Kindl . */ // Holt ein Bildes aus der DB wandelt es // um und gibt das ein Bild zurueck. // Aufruf mit keine Abfrage da diese Personen noch keine uid haben - if(!isset($_SESSION['prestudent/user']) && !isset($_SESSION['incoming/user']) && !isset($_SESSION['bewerbung/personId'])) - $uid = get_uid(); - else + // Wenn Session gesetzt ist, keine Abfrage, da diese Personen noch keine UID haben + // Von Incomingtool + if (isset($_SESSION['incoming/user'])) { - if (isset($_SESSION['incoming/user'])) - { - $person = new person(); - $person_id = $person->checkZugangscode($_SESSION['incoming/user']); - } - elseif (isset($_SESSION['prestudent/user'])) - { - $person = new person(); - $person_id = $person->checkZugangscode($_SESSION['prestudent/user']); - } - elseif (isset($_SESSION['bewerbung/personId'])) - { - $person_id = $_SESSION['bewerbung/personId']; - } + $person = new person(); + $person_id_user = $person->checkZugangscode($_SESSION['incoming/user']); + } + // Von Prestudententool + elseif (isset($_SESSION['prestudent/user'])) + { + $person = new person(); + $person_id_user = $person->checkZugangscode($_SESSION['prestudent/user']); + } + // Von Bewerbungstool + elseif (isset($_SESSION['bewerbung/personId'])) + { + $person_id_user = $_SESSION['bewerbung/personId']; + } + else + { + $uid = get_uid(); + $benutzer = new benutzer($uid); + $person_id_user = $benutzer->person_id; } } else - $serverzugriff=true; + $serverzugriff = true; -//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'])) +// Default Bild (ein weisser Pixel) +/*$cTmpHEX = '/9j/4AAQSkZJRgABAQEASABIAAD/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q/9sAQwAFAwQEBAMFBAQEBQUFBgc + MCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBodHR8fHxMXIiQiHiQcHh8e/9sAQwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4eHh4eHh4eHh4eHh + 4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/8AAEQgAAQABAwEiAAIRAQMRAf/EABUAAQEAAAAAAAAAAAAAAAAAAAAI/8QAFBABAAAAAAAAAAAAAAAAA + AAAAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCywAf/2Q==';*/ + +// Default Bild (Dummy Profilbild) +$cTmpHEX = base64_encode(file_get_contents('../../skin/images/profilbild_dummy.jpg')); + +// Hex Dump aus der DB holen + +if($source == 'person' && $person_id_foto != '') { - $qry = "SELECT tbl_akte.inhalt as foto, tbl_person.foto_sperre, tbl_akte.dms_id, tbl_person.person_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)) + $foto_gesperrt = false; + // Person laden und Fotosperre überprüfen + $person_obj = new person($person_id_foto); + if ($person_obj->foto_sperre === true) { - if($row = $db->db_fetch_object($result)) + $foto_gesperrt = true; + // Wenn der User selbst darauf zugreift darf er das Bild sehen + if ($person_id_user == $person_id_foto) + $foto_gesperrt = false; + } + elseif ($person_id_user == '' && ! $serverzugriff) + { + $foto_gesperrt = true; + } + + if ($person_obj->foto != '' && ! $foto_gesperrt) + { + $cTmpHEX = base64_decode($person_obj->foto); + } +} +if($source == 'akte' && $person_id_foto != '') +{ + $qry = "SELECT tbl_akte.inhalt AS foto, + tbl_person.foto_sperre, + tbl_akte.dms_id, + tbl_person.person_id + FROM PUBLIC.tbl_akte + JOIN PUBLIC.tbl_person USING (person_id) + WHERE tbl_akte.person_id = " . $person_id_foto . " + 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, wenn nicht, schauen, ob der User auch die selbe Person ist - if($db->db_parse_bool($row->foto_sperre)) + $foto_gesperrt = false; + + // Schauen ob eine Foto Sperre existiert, wenn nicht, schauen, ob der User auch die selbe Person ist + if ($db->db_parse_bool($row->foto_sperre)) { - $gesperrt=true; - if(isset($uid)) + $foto_gesperrt = true; + if ($person_id_user == $person_id_foto) { - //Wenn der User selbst darauf zugreift darf er das Bild sehen - $benutzer = new benutzer(); - $benutzer->load($uid); - if($benutzer->person_id==$_GET['person_id']) - $gesperrt=false; - + // Wenn der User selbst darauf zugreift darf er das Bild sehen + if ($person_id_user == $person_id_foto) + $foto_gesperrt = false; } } - elseif(!isset($uid) && $person_id != $row->person_id && !$serverzugriff) + elseif ($person_id_user == '' && ! $serverzugriff) { - $gesperrt=true; + $foto_gesperrt = true; } - if($row->foto=='' && $row->dms_id!='') + // Wenn das Foto nicht im Inhalt steht wird aus aus dem DMS geladen + 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)) + if (! $dms->load($row->dms_id)) die('Kein Dokument vorhanden'); - - $filename=DMS_PATH.$dms->filename; - + + $filename = DMS_PATH . $dms->filename; + $dms->touch($dms->dms_id, $dms->version); - - if(file_exists($filename)) + + if (file_exists($filename)) { - if($handle = fopen($filename,"r")) + if ($handle = fopen($filename, "r")) { - while (!feof($handle)) + while (! feof($handle)) { - $row->foto.= fread($handle, 8192); + $row->foto .= fread($handle, 8192); } fclose($handle); } @@ -123,31 +163,28 @@ if(isset($_GET['src']) && $_GET['src']=='person' && isset($_GET['person_id']) & else echo 'Die Datei existiert nicht'; } - - if($row->foto!='' && !$gesperrt) + + if ($row->foto != '' && ! $foto_gesperrt) { - if($row->dms_id=='') - $cTmpHEX=$row->foto; - else - $cTmpHEX=$row->foto; + $cTmpHEX = $row->foto; } } } } -//die bilder werden, sofern es funktioniert, in jpg umgewandelt da es sonst zu fehlern beim erstellen -//von pdfs kommen kann. +// 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)); -if($im!=false) +if ($im != false) { - @ob_clean(); + @ob_clean(); header("Content-type: image/jpeg"); exit(imagejpeg($im)); } else { - //bei manchen Bildern funktioniert die konvertierung nicht - //diese werden dann einfach so angezeigt. + // bei manchen Bildern funktioniert die konvertierung nicht + // diese werden dann einfach so angezeigt. @ob_clean(); header("Content-type: image/gif"); exit($cTmpHEX);