, * Andreas Oesterreicher and * Rudolf Hangl . */ /* Erstellt einen Lehrauftrag im PDF Format * * Erstellt ein XML File Transformiert dieses mit * Hilfe der XSL-FO Vorlage aus der DB und generiert * daraus ein PDF (xslfo2pdf) */ session_cache_limiter('none'); //muss gesetzt werden sonst funktioniert der Download mit IE8 nicht session_start(); require_once('../config/vilesci.config.inc.php'); require_once('../include/functions.inc.php'); require_once('../include/benutzerberechtigung.class.php'); require_once('../include/xslfo2pdf/xslfo2pdf.php'); require_once('../include/fop.class.php'); require_once('../include/akte.class.php'); require_once('../include/vorlage.class.php'); $user = get_uid(); $db = new basis_db(); loadVariables($user); function clean_string($string) { $trans = array("ä" => "ae", "Ä" => "Ae", "ö" => "oe", "Ö" => "Oe", "ü" => "ue", "Ü" => "Ue", "á" => "a", "à" => "a", "é" => "e", "è" => "e", "ó" => "o", "ò" => "o", "í" => "i", "ì" => "i", "ù" => "u", "ú" => "u", "ß" => "ss"); $string = strtr($string, $trans); return mb_ereg_replace("[^a-zA-Z0-9]", "", $string); //[:space:] } //Parameter holen if(isset($_GET['xml'])) $xml=$_GET['xml']; else die('Fehlerhafte Parameteruebergabe'); if(isset($_GET['xsl'])) $xsl=$_GET['xsl']; else die('Fehlerhafte Parameteruebergabe'); $xsl_stg_kz=0; if(isset($_GET['xsl_stg_kz'])) $xsl_stg_kz=$_GET['xsl_stg_kz']; else if(isset($_GET['stg_kz'])) $xsl_stg_kz=$_GET['stg_kz']; else if(isset($_GET['uid']) && $_GET['uid']!='') { if(strstr(';',$_GET['uid'])) $uids = explode(';',$_GET['uid']); else $uids = $_GET['uid']; //var_dump($uids); $qry = "SELECT student_uid, studiengang_kz FROM public.tbl_student WHERE student_uid='".addslashes($uids[1])."'"; if($result_std = $db->db_query($qry)) if($db->db_num_rows($result_std)==1) { $row_std = $db->db_fetch_object($result_std); $xsl_stg_kz=$row_std->studiengang_kz; } } if(isset($_GET['xsl_oe_kurzbz'])) $xsl_oe_kurzbz=$_GET['xsl_oe_kurzbz']; else $xsl_oe_kurzbz=''; //Parameter setzen $params='?xmlformat=xml'; if(isset($_GET['uid'])) $params.='&uid='.$_GET['uid']; if(isset($_GET['person_id'])) $params.='&person_id='.$_GET['person_id']; if(isset($_GET['id'])) $params.='&id='.$_GET['id']; if(isset($_GET['prestudent_id'])) $params.='&prestudent_id='.$_GET['prestudent_id']; if(isset($_GET['buchungsnummern'])) $params.='&buchungsnummern='.$_GET['buchungsnummern']; if(isset($_GET['stg_kz'])) $params.='&stg_kz='.$_GET['stg_kz']; if(isset($_GET['ss'])) $params.='&ss='.$_GET['ss']; if(isset($_GET['abschlusspruefung_id'])) $params.='&abschlusspruefung_id='.$_GET['abschlusspruefung_id']; if(isset($_GET['typ'])) $params.='&typ='.$_GET['typ']; if(isset($_GET['all'])) $params.='&all='.$_GET['all']; if(isset($_GET["lvid"])) $params.='&lvid='.$_GET["lvid"]; if(isset($_GET['version']) && is_numeric($_GET['version'])) $version = $_GET['version']; else $version =''; if($xsl=='AccountInfo') { $isberechtigt = false; $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); $uids = explode(';',$_GET['uid']); foreach ($uids as $uid) { //Berechtigung fuer das Drucken des Accountinfoblattes pruefen $qry = "SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid='".addslashes($uid)."'"; if($result_ma = $db->db_query($qry)) { if($db->db_num_rows($result_ma)==1) { //Mitarbeiterrechte erforderlich if($rechte->isBerechtigt('admin', 0, 'suid') || $rechte->isBerechtigt('mitarbeiter', 0, 'suid')) { $isberechtigt=true; } } } $qry = "SELECT student_uid, studiengang_kz FROM public.tbl_student WHERE student_uid='".addslashes($uid)."'"; if($result_std = $db->db_query($qry)) { if($db->db_num_rows($result_std)==1) { $row_std = $db->db_fetch_object($result_std); //Rechte pruefen if($rechte->isBerechtigt('admin', $row_std->studiengang_kz, 'suid') || $rechte->isBerechtigt('admin', 0, 'suid') || $rechte->isBerechtigt('assistenz', $row_std->studiengang_kz, 'suid') || $rechte->isBerechtigt('assistenz', 0, 'suid') || $rechte->isBerechtigt('support', 0, 'suid')) { $isberechtigt=true; } } } } if(!$isberechtigt) { echo 'Sie haben keine Berechtigung um dieses AccountInfoBlatt zu drucken'; exit; } } //Berechtigung pruefen $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); $xml_url=XML_ROOT.$xml.$params; // Load the XML source $xml_doc = new DOMDocument; if(!$xml_doc->load($xml_url)) die('unable to load xml: '.$xml_url); //XSL aus der DB holen $vorlage = new vorlage(); if($xsl_oe_kurzbz!='') { $vorlage->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version); } else { if($xsl_stg_kz=='') $xsl_stg_kz='0'; $vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); } //$qry = "SELECT text FROM public.tbl_vorlagestudiengang WHERE (studiengang_kz=0"; //if($xsl_stg_kz!='') //$qry.=" OR studiengang_kz='".addslashes($xsl_stg_kz)."'"; //$qry.=") AND vorlage_kurzbz='$xsl'"; //if(isset($version) && $version!='') // $qry.=" AND version='$version'"; //$qry.=" ORDER BY studiengang_kz DESC, version DESC LIMIT 1"; //echo $qry; //if(!$result = $db->db_query($qry)) // die('Fehler beim Laden der Vorlage'.$db->db_last_error()); //if(!$row = $db->db_fetch_object($result)) // die('Vorlage wurde nicht gefunden'.$qry); $xsl_content = $vorlage->text; //Pdf erstellen //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen $nachname=''; if(isset($_GET['uid']) && $_GET['uid']!='') { $uid = str_replace(';','',$_GET['uid']); $qry = "SELECT nachname FROM campus.vw_benutzer WHERE uid='".addslashes($uid)."'"; if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) { $nachname = '_'.clean_string($row->nachname); } } } $filename=$xsl.$nachname; if (!isset($_REQUEST["archive"])) { if(PDF_CREATE_FUNCTION=='FOP') { $fop = new fop(); $xml = $xml_doc->saveXML(); //$xml = ''; //$xsl='foobar'; $fop->generatePdf($xml, $xsl_content, $filename, "D"); } else { $fo2pdf = new XslFo2Pdf(); // Load the XSL source $xsl_doc = new DOMDocument; if(!$xsl_doc->loadXML($xsl_content)) die('unable to load xsl'); // Configure the transformer $proc = new XSLTProcessor; $proc->importStyleSheet($xsl_doc); // attach the xsl rules $buffer = $proc->transformToXml($xml_doc); if (!$fo2pdf->generatePdf($buffer, $filename, "D")) { echo('Failed to generate PDF'); } } } else { $uid = $_REQUEST["uid"]; $ss = $_REQUEST["ss"]; $heute = date('Y-m-d'); $query = "SELECT tbl_studiengang.studiengang_kz, tbl_studentlehrverband.semester, tbl_studiengang.typ, tbl_studiengang.kurzbz, tbl_person.person_id FROM tbl_person, tbl_benutzer, tbl_studentlehrverband, tbl_studiengang WHERE tbl_studentlehrverband.student_uid = tbl_benutzer.uid AND tbl_benutzer.person_id = tbl_person.person_id AND tbl_studentlehrverband.studiengang_kz = tbl_studiengang.studiengang_kz AND tbl_studentlehrverband.student_uid = '".addslashes($uid)."' AND tbl_studentlehrverband.studiensemester_kurzbz = '".addslashes($ss)."'"; if($result = $db->db_query($query)) { if($row = $db->db_fetch_object($result)) { $person_id = $row->person_id; $titel = "Zeugnis_".strtoupper($row->typ).strtoupper($row->kurzbz)."_".$row->semester; $bezeichnung = "Zeugnis ".strtoupper($row->typ).strtoupper($row->kurzbz)." ".$row->semester.". Semester"; $studiengang_kz = $row->studiengang_kz; } else { $echo = 'Datensatz wurde nicht gefunden'; } } if($rechte->isBerechtigt('admin', $studiengang_kz, 'suid') || $rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid')) { if(PDF_CREATE_FUNCTION=='FOP') { $fop = new fop(); $file = $fop->generatePdf($xml_doc->saveXML(), $xsl_content, $filename, "F"); } else { $filename = $user; $fo2pdf = new XslFo2Pdf(); // Load the XSL source $xsl_doc = new DOMDocument; if(!$xsl_doc->loadXML($xsl_content)) die('unable to load xsl'); // Configure the transformer $proc = new XSLTProcessor; $proc->importStyleSheet($xsl_doc); // attach the xsl rules $buffer = $proc->transformToXml($xml_doc); if (!$fo2pdf->generatePdf($buffer, $filename, 'F')) { echo('Failed to generate PDF'); } $file = "/tmp/".$filename.".pdf"; } $handle = fopen($file, "rb"); $string = fread($handle, filesize($file)); fclose($handle); //$string = file_get_contents($file); unlink($file); $hex=""; //for ($i=0;$iperson_id = $person_id; $akte->dokument_kurzbz = "Zeugnis"; $akte->inhalt = $hex; $akte->mimetype = "application/octet-stream"; $akte->erstelltam = $heute; $akte->gedruckt = true; $akte->titel = $titel.".pdf"; $akte->bezeichnung = $bezeichnung; $akte->updateamum = ""; $akte->updatevon = ""; $akte->insertamum = date('Y-m-d h:m:s'); $akte->insertvon = $user; $akte->ext_id = ""; $akte->uid = $uid; $akte->new = true; if (!$akte->save()) { echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg; return false; } else { return true; } } else echo 'Keine Berechtigung zum Speichern'; } ?>