From b9a1ad6b6cc02625be161cdf74b9965fe7e89ecc Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Tue, 5 Jun 2018 17:37:05 +0200 Subject: [PATCH] Mehrfach-Export von Archivdokumenten MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Nach Rechtsklick auf Studierenden gibt es die Auswahl "Archivdokument exportieren" - Derzeit nur für Bescheid - Mehrfachmarkierung von Studierenden möglich --- content/pdfExport.php | 831 +++++++++++++---------- content/student/studentenoverlay.xul.php | 5 + content/student/studentoverlay.js.php | 37 + 3 files changed, 522 insertions(+), 351 deletions(-) diff --git a/content/pdfExport.php b/content/pdfExport.php index 44e30c7a0..2954dc276 100644 --- a/content/pdfExport.php +++ b/content/pdfExport.php @@ -45,6 +45,8 @@ require_once('../include/studiengang.class.php'); require_once('../include/studiensemester.class.php'); require_once('../include/studienordnung.class.php'); require_once('../include/dokument_export.class.php'); +require_once('../include/dokument.class.php'); +require_once('../include/pdf.class.php'); $user = get_uid(); $db = new basis_db(); @@ -52,414 +54,541 @@ $db = new basis_db(); $variable_obj = new variable(); $variable_obj->loadVariables($user); -//Parameter holen -if (isset($_GET['xml'])) - $xml = $_GET['xml']; -else - die('Fehlerhafte Parameteruebergabe'); -if (isset($_GET['xsl'])) - $xsl = $_GET['xsl']; -else - die('Fehlerhafte Parameteruebergabe'); +$archivdokument = ''; -if(isset($_GET['sign'])) - $sign = true; -else - $sign = false; - -// Studiengang ermitteln dessen Vorlage verwendet werden soll -$xsl_stg_kz = 0; -// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll -if (isset($_GET['xsl_stg_kz'])) - $xsl_stg_kz = $_GET['xsl_stg_kz']; -else +// Wenn der Parameter archivdokument übergeben wird, werden ein oder mehrere Dokumente aus dem Archiv zu einem PDF zusammengefügt und ausgegeben +// Ansonsten wird ein neues XML-Dokument erstellt +if (isset($_GET['archivdokument'])) { - // Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet - if (isset($_GET['stg_kz'])) - $xsl_stg_kz = $_GET['stg_kz']; - else - { - // Werden UIDs oder Prestudent_IDs uebergeben, wird die Vorlage des Studiengangs genommen - // in dem der 1. Studierende in der Liste ist - if (isset($_GET['uid']) && $_GET['uid']!='') - { - if (strstr($_GET['uid'],';')) - $uids = explode(';',$_GET['uid']); - else - $uids[1] = $_GET['uid']; + $archivdokument = $_GET['archivdokument']; + $allDocs = array(); + $errorText = ''; + + $dokument = new dokument(); + $dokument->loadDokumenttyp($archivdokument); + + $pdf = new pdf(); + + // Temporaeren Ordner fuer die Erstellung der Dokumente generieren + $tmpDir = sys_get_temp_dir() . "/fhc_archivexport_" . uniqid(); + + if (!file_exists($tmpDir)) + mkdir($tmpDir, 0777, true); - $student_obj = new student(); - if ($student_obj->load($uids[1])) + // Studierende für Rechteabfrage laden + if (isset($_GET['uid']) && $_GET['uid'] != '') + { + if (strstr($_GET['uid'],';')) + { + $uids = explode(';',$_GET['uid']); + } + else + $uids[1] = $_GET['uid']; + + $student_obj = new student(); + if ($student_obj->load($uids[1])) + { + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + + if (!$rechte->isBerechtigt('admin', $student_obj->studiengang_kz, 'suid') + && !$rechte->isBerechtigt('assistenz', $student_obj->studiengang_kz, 'suid')) + die('Sie haben keine Berechtigung für diese Studierenden'); + else { - $xsl_stg_kz = $student_obj->studiengang_kz; + // Die jeweils letzte (aktuellste) Akte dieses Typs von jedem Studierenden laden und in eine temporäre Datei schreiben + foreach ($uids AS $value) + { + // Leere Einträge überspringen + if ($value == '') + continue; + + $student_obj = new student($value); + $person_id = $student_obj->person_id; + $akte = new akte(); + $akte->getAkten($person_id, $archivdokument, null, null, true, 'erstelltam DESC'); + + if (isset($akte->result[0])) + { + $filename = ''; + if($akte->result[0]->inhalt != '') + { + $filename = $tmpDir . "/" . uniqid(); + + $fileData = base64_decode($akte->result[0]->inhalt); + file_put_contents($filename, $fileData); + + $allDocs[] = $filename; + } + else + $errorText .= "Das Dokument ".$dokument->bezeichnung." bei ".$student_obj->nachname." ".$student_obj->vorname." (".$value.") ist leer\n"; + } + else + $errorText .= $student_obj->nachname." ".$student_obj->vorname." (".$value.") hat kein Dokument '".$dokument->bezeichnung."' im Archiv\n"; + } + if (count($allDocs) == 0) + { + rmdir($tmpDir); + die('Bei keinem der gewählten Studierenden ist einen Bescheid vorhanden'); + } + + // Textseite mit Errormessages generieren und in PDF umwandeln + if ($errorText != '') + { + $errorfile = $tmpDir . "/" . uniqid() . ".txt"; + file_put_contents($errorfile, $errorText); + + $newnameErrorfile = $tmpDir . "/" . uniqid(); + + $docExport = new dokument_export(); + $docExport->convert($errorfile, $newnameErrorfile, "pdf"); + unlink($errorfile); + + // Konvertiertes File an erste Position im Array hängen + array_unshift($allDocs, $newnameErrorfile); + } + + $finishedPdf = $tmpDir . "/".$archivdokument."_Album.pdf"; + $pdf->merge($allDocs, $finishedPdf); + + foreach ($allDocs as $doc) + unlink($doc); + + $fsize = filesize($finishedPdf); + + if(!$handle = fopen($finishedPdf,'r')) + die('load failed'); + + header('Content-type: application/pdf'); + header('Content-Disposition: attachment; filename="'.$archivdokument.'_Album.pdf"'); + header('Content-Length: '.$fsize); + + while (!feof($handle)) + { + echo fread($handle, 8192); + } + fclose($handle); + + unlink($finishedPdf); + rmdir($tmpDir); } } - elseif (isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='') + else + die('Der/Die Studierenden konnte nicht geladen werden'); + } +} +else +{ + //Parameter holen + if (isset($_GET['xml'])) + $xml = $_GET['xml']; + else + die('Fehlerhafte Parameteruebergabe'); + + if (isset($_GET['xsl'])) + $xsl = $_GET['xsl']; + else + die('Fehlerhafte Parameteruebergabe'); + + if(isset($_GET['sign'])) + $sign = true; + else + $sign = false; + + // Studiengang ermitteln dessen Vorlage verwendet werden soll + $xsl_stg_kz = 0; + // Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll + if (isset($_GET['xsl_stg_kz'])) + $xsl_stg_kz = $_GET['xsl_stg_kz']; + else + { + // Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet + if (isset($_GET['stg_kz'])) + $xsl_stg_kz = $_GET['stg_kz']; + else { - if (strstr($_GET['prestudent_id'],';')) - $prestudent_ids = explode(';',$_GET['prestudent_id']); - else - $prestudent_ids[1] = $_GET['prestudent_id']; - - $prestudent_obj = new prestudent(); - if ($prestudent_obj->load($prestudent_ids[1])) + // Werden UIDs oder Prestudent_IDs uebergeben, wird die Vorlage des Studiengangs genommen + // in dem der 1. Studierende in der Liste ist + if (isset($_GET['uid']) && $_GET['uid']!='') { - $xsl_stg_kz = $prestudent_obj->studiengang_kz; + if (strstr($_GET['uid'],';')) + $uids = explode(';',$_GET['uid']); + else + $uids[1] = $_GET['uid']; + + $student_obj = new student(); + if ($student_obj->load($uids[1])) + { + $xsl_stg_kz = $student_obj->studiengang_kz; + } + } + elseif (isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='') + { + if (strstr($_GET['prestudent_id'],';')) + $prestudent_ids = explode(';',$_GET['prestudent_id']); + else + $prestudent_ids[1] = $_GET['prestudent_id']; + + $prestudent_obj = new prestudent(); + if ($prestudent_obj->load($prestudent_ids[1])) + { + $xsl_stg_kz = $prestudent_obj->studiengang_kz; + } } } } -} -if (isset($_GET['xsl_oe_kurzbz'])) - $xsl_oe_kurzbz = $_GET['xsl_oe_kurzbz']; -else - $xsl_oe_kurzbz = ''; - -//Parameter setzen -$params = 'xmlformat=xml'; - -// GET Parameter die an XML durchgereicht werden -foreach ($_GET as $getkey=>$getvalue) -{ - if (in_array($getkey, - array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id', - 'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis', - 'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort', - 'abrechnungsmonat', 'form') + if (isset($_GET['xsl_oe_kurzbz'])) + $xsl_oe_kurzbz = $_GET['xsl_oe_kurzbz']; + else + $xsl_oe_kurzbz = ''; + + //Parameter setzen + $params = 'xmlformat=xml'; + + // GET Parameter die an XML durchgereicht werden + foreach ($_GET as $getkey=>$getvalue) + { + if (in_array($getkey, + array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id', + 'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis', + 'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort', + 'abrechnungsmonat', 'form') + ) ) - ) - { - $params .= '&'.$getkey.'='.urlencode($getvalue); + { + $params .= '&'.$getkey.'='.urlencode($getvalue); + } } -} - -if (isset($_GET['vertrag_id'])) -{ - foreach($_GET['vertrag_id'] as $id) + + if (isset($_GET['vertrag_id'])) { - $params .= '&vertrag_id[]='.urlencode($id); - } -} -if (isset($_GET['version']) && is_numeric($_GET['version'])) - $version = $_GET['version']; -else - $version = null; - -$output = (isset($_GET['output'])?$_GET['output']:'odt'); - -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($user); - -//OE fuer Output ermitteln - -if ($xsl_oe_kurzbz != '') -{ - $oe_kurzbz = $xsl_oe_kurzbz; -} -else -{ - if ($xsl_stg_kz == '') - $xsl_stg_kz = '0'; - $oe = new studiengang(); - $oe->load($xsl_stg_kz); - $oe_kurzbz = $oe->oe_kurzbz; -} - -//Darf der User Dokumente in einem NICHT-PDF-Format exportieren? -if (isset($_GET['output']) && $_GET['output'] != 'pdf') -{ - if (!$rechte->isBerechtigt('system/change_outputformat',$oe_kurzbz)) - { - $output = 'pdf'; + foreach($_GET['vertrag_id'] as $id) + { + $params .= '&vertrag_id[]='.urlencode($id); + } } + if (isset($_GET['version']) && is_numeric($_GET['version'])) + $version = $_GET['version']; else - $output = $_GET['output']; -} -else - $output = 'pdf'; - -$vorlage = new vorlage(); -if(!$vorlage->loadVorlage($xsl)) - die('Vorlage wurde nicht gefunden'); - -//Berechtigung pruefen -if ($xsl == 'AccountInfo') -{ - $isberechtigt = false; - - $uids = explode(';',$_GET['uid']); - foreach ($uids as $uid) - { - //Berechtigung fuer das Drucken des Accountinfoblattes pruefen - $ma = new mitarbeiter(); - if($ma->load($uid)) - { - //Mitarbeiterrechte erforderlich - if ($rechte->isBerechtigt('admin', 0, 'suid') || $rechte->isBerechtigt('mitarbeiter', 0, 'suid')) - { - $isberechtigt = true; - } - } - - $stud = new student(); - if ($stud->load($uid)) - { - //Rechte pruefen - if ($rechte->isBerechtigt('admin', $stud->studiengang_kz, 'suid') || - $rechte->isBerechtigt('admin', 0, 'suid') || - $rechte->isBerechtigt('assistenz', $stud->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; - } -} -else -{ - $vorlagestudiengang = new vorlage(); + $version = null; + + $output = (isset($_GET['output'])?$_GET['output']:'odt'); + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + + //OE fuer Output ermitteln + if ($xsl_oe_kurzbz != '') { - $vorlagestudiengang->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version); + $oe_kurzbz = $xsl_oe_kurzbz; } else { if ($xsl_stg_kz == '') $xsl_stg_kz = '0'; - - $vorlagestudiengang->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); + $oe = new studiengang(); + $oe->load($xsl_stg_kz); + $oe_kurzbz = $oe->oe_kurzbz; } - // Wenn Berechtigung direkt beim der Vorlage angegeben ist - if (count($vorlagestudiengang->berechtigung)>0) + + //Darf der User Dokumente in einem NICHT-PDF-Format exportieren? + if (isset($_GET['output']) && $_GET['output'] != 'pdf') { - $allowed = false; - foreach($vorlagestudiengang->berechtigung as $berechtigung_kurzbz) + if (!$rechte->isBerechtigt('system/change_outputformat',$oe_kurzbz)) { - if ($rechte->isBerechtigt($berechtigung_kurzbz)) - $allowed = true; + $output = 'pdf'; } - if (!$allowed) + else + $output = $_GET['output']; + } + else + $output = 'pdf'; + + $vorlage = new vorlage(); + if(!$vorlage->loadVorlage($xsl)) + die('Vorlage wurde nicht gefunden'); + + //Berechtigung pruefen + if ($xsl == 'AccountInfo') + { + $isberechtigt = false; + + $uids = explode(';',$_GET['uid']); + foreach ($uids as $uid) { - echo 'unbekanntes Dokument oder keine Berechtigung'; + //Berechtigung fuer das Drucken des Accountinfoblattes pruefen + $ma = new mitarbeiter(); + if($ma->load($uid)) + { + //Mitarbeiterrechte erforderlich + if ($rechte->isBerechtigt('admin', 0, 'suid') || $rechte->isBerechtigt('mitarbeiter', 0, 'suid')) + { + $isberechtigt = true; + } + } + + $stud = new student(); + if ($stud->load($uid)) + { + //Rechte pruefen + if ($rechte->isBerechtigt('admin', $stud->studiengang_kz, 'suid') || + $rechte->isBerechtigt('admin', 0, 'suid') || + $rechte->isBerechtigt('assistenz', $stud->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; } } else { - echo 'unbekanntes Dokument oder keine Berechtigung'; - exit; - } -} - -//wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen -$nachname = ''; -if (isset($_GET['uid']) && $_GET['uid']!='') -{ - $uid = str_replace(';','',$_GET['uid']); - $benutzer_obj = new benutzer(); - if ($benutzer_obj->load($uid)) - $nachname = '_'.convertProblemChars($benutzer_obj->nachname); - -} -$filename = $xsl.$nachname; - -if ($xsl_oe_kurzbz == '') -{ - if ($xsl_stg_kz == '') - $xsl_stg_kz = '0'; - $stg_obj = new studiengang(); - if (!$stg_obj->load($xsl_stg_kz)) - die($stg_obj->errormsg); - $xsl_oe_kurzbz = $stg_obj->oe_kurzbz; -} - -if($sign === true && $vorlage->signierbar === false) -{ - die('Diese Vorlage darf nicht signiert werden'); -} - -if (!isset($_REQUEST["archive"])) -{ - if (mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument')) - { - $dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version); - $dokument->addDataURL($xml, $params); - - /** - * Get Filename - * TODO cleanup - */ - if ($vorlage->bezeichnung!='') - $filename = $vorlage->bezeichnung.$nachname; - else - $filename = $vorlage->vorlage_kurzbz.$nachname; - - switch($xsl) + $vorlagestudiengang = new vorlage(); + if ($xsl_oe_kurzbz != '') { - case 'LV_Informationen': - $studiengang = new studiengang($_GET['stg_kz']); - $studiensemester = new studiensemester($_GET['ss']); - $filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz; - break; - case 'Honorarvertrag': - $filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname; - break; - case 'Studienordnung': - $studienordnung = new studienordnung(); - $studienordnung->loadStudienordnung($_GET['studienordnung_id']); - $filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang; - break; + $vorlagestudiengang->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version); } - - $dokument->setFilename($filename); - - if ($sign === true) - { - $dokument->sign($user); - } - - if ($dokument->create($output)) - $dokument->output(); else - echo $dokument->errormsg; - - $dokument->close(); - } -} -else -{ - if(!$vorlage->archivierbar) - die('Dieses Dokument ist nicht archivierbar'); - - // Archivieren von Dokumenten - $uid = $_REQUEST["uid"]; - $heute = date('Y-m-d'); - - $student = new student(); - $student->load($uid); - - if (isset($_REQUEST['ss'])) - { - $ss = $_REQUEST["ss"]; - - $prestudent = new prestudent(); - $prestudent->getLastStatus($student->prestudent_id,$ss); - $semester = $prestudent->ausbildungssemester; - - $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 = ".$db->db_add_param($uid)." - AND tbl_studentlehrverband.studiensemester_kurzbz = ".$db->db_add_param($ss); - - if ($result = $db->db_query($query)) { - if ($row = $db->db_fetch_object($result)) + if ($xsl_stg_kz == '') + $xsl_stg_kz = '0'; + + $vorlagestudiengang->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); + } + // Wenn Berechtigung direkt beim der Vorlage angegeben ist + if (count($vorlagestudiengang->berechtigung)>0) + { + $allowed = false; + foreach($vorlagestudiengang->berechtigung as $berechtigung_kurzbz) { - $person_id = $row->person_id; - $titel = $xsl."_".strtoupper($row->typ).strtoupper($row->kurzbz)."_".$semester; - $bezeichnung = $xsl." ".strtoupper($row->typ).strtoupper($row->kurzbz)." ".$semester.". Semester"; - $studiengang_kz = $row->studiengang_kz; + if ($rechte->isBerechtigt($berechtigung_kurzbz)) + $allowed = true; } + if (!$allowed) + { + echo 'unbekanntes Dokument oder keine Berechtigung'; + exit; + } + } + else + { + echo 'unbekanntes Dokument oder keine Berechtigung'; + exit; + } + } + + //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen + $nachname = ''; + if (isset($_GET['uid']) && $_GET['uid']!='') + { + $uid = str_replace(';','',$_GET['uid']); + $benutzer_obj = new benutzer(); + if ($benutzer_obj->load($uid)) + $nachname = '_'.convertProblemChars($benutzer_obj->nachname); + + } + $filename = $xsl.$nachname; + + if ($xsl_oe_kurzbz == '') + { + if ($xsl_stg_kz == '') + $xsl_stg_kz = '0'; + $stg_obj = new studiengang(); + if (!$stg_obj->load($xsl_stg_kz)) + die($stg_obj->errormsg); + $xsl_oe_kurzbz = $stg_obj->oe_kurzbz; + } + + if($sign === true && $vorlage->signierbar === false) + { + die('Diese Vorlage darf nicht signiert werden'); + } + + if (!isset($_REQUEST["archive"])) + { + if (mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument')) + { + $dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version); + $dokument->addDataURL($xml, $params); + + /** + * Get Filename + * TODO cleanup + */ + if ($vorlage->bezeichnung!='') + $filename = $vorlage->bezeichnung.$nachname; else + $filename = $vorlage->vorlage_kurzbz.$nachname; + + switch($xsl) { - die('Student hat keinen Status in diesem Semester'); + case 'LV_Informationen': + $studiengang = new studiengang($_GET['stg_kz']); + $studiensemester = new studiensemester($_GET['ss']); + $filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz; + break; + case 'Honorarvertrag': + $filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname; + break; + case 'Studienordnung': + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang; + break; } + + $dokument->setFilename($filename); + + if ($sign === true) + { + $dokument->sign($user); + } + + if ($dokument->create($output)) + $dokument->output(); + else + echo $dokument->errormsg; + + $dokument->close(); } } else { - $studiengang = new studiengang(); - $studiengang->load($student->studiengang_kz); - $studiengang_kz=$student->studiengang_kz; - $person_id = $student->person_id; - $titel = $vorlage->bezeichnung.'_'.$studiengang->kuerzel; - $bezeichnung = $vorlage->bezeichnung.'_'.$studiengang->kuerzel; - } - - if ($rechte->isBerechtigt('admin', $studiengang_kz, 'suid') - || $rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid')) - { - $dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version); - $dokument->addDataURL($xml, $params); - - $dokument->setFilename($filename); - - $error = false; - - // Beim Archivieren wird das Dokument immer signiert wenn moeglich - if($vorlage->signierbar) - $sign = true; - - if ($sign === true) + if(!$vorlage->archivierbar) + die('Dieses Dokument ist nicht archivierbar'); + + // Archivieren von Dokumenten + $uid = $_REQUEST["uid"]; + $heute = date('Y-m-d'); + + $student = new student(); + $student->load($uid); + + if (isset($_REQUEST['ss'])) { - $dokument->sign($user); + $ss = $_REQUEST["ss"]; + + $prestudent = new prestudent(); + $prestudent->getLastStatus($student->prestudent_id,$ss); + $semester = $prestudent->ausbildungssemester; + + $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 = ".$db->db_add_param($uid)." + AND tbl_studentlehrverband.studiensemester_kurzbz = ".$db->db_add_param($ss); + + if ($result = $db->db_query($query)) + { + if ($row = $db->db_fetch_object($result)) + { + $person_id = $row->person_id; + $titel = $xsl."_".strtoupper($row->typ).strtoupper($row->kurzbz)."_".$semester; + $bezeichnung = $xsl." ".strtoupper($row->typ).strtoupper($row->kurzbz)." ".$semester.". Semester"; + $studiengang_kz = $row->studiengang_kz; + } + else + { + die('Student hat keinen Status in diesem Semester'); + } + } } - - if ($dokument->create($output)) - $doc = $dokument->output(false); else { - $errormsg = $dokument->errormsg; - $error = true; + $studiengang = new studiengang(); + $studiengang->load($student->studiengang_kz); + $studiengang_kz=$student->studiengang_kz; + $person_id = $student->person_id; + $titel = $vorlage->bezeichnung.'_'.$studiengang->kuerzel; + $bezeichnung = $vorlage->bezeichnung.'_'.$studiengang->kuerzel; } - - $dokument->close(); - - if(!$error) + + if ($rechte->isBerechtigt('admin', $studiengang_kz, 'suid') + || $rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid')) { - $hex = base64_encode($doc); - $akte = new akte(); - $akte->person_id = $person_id; - if($vorlage->dokument_kurzbz!='') - $akte->dokument_kurzbz = $vorlage->dokument_kurzbz; - else - $akte->dokument_kurzbz = 'Zeugnis'; - $akte->inhalt = $hex; - $akte->mimetype = 'application/pdf'; - $akte->erstelltam = $heute; - $akte->gedruckt = true; - $akte->titel = $titel.'.pdf'; - $akte->bezeichnung = $bezeichnung; - $akte->updateamum = ''; - $akte->updatevon = ''; - $akte->insertamum = date('Y-m-d H:i:s'); - $akte->insertvon = $user; - $akte->ext_id = ''; - $akte->uid = $uid; - $akte->new = true; - $akte->archiv = true; - $akte->signiert = $sign; - $akte->stud_selfservice = $vorlage->stud_selfservice; - - if (!$akte->save()) + $dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version); + $dokument->addDataURL($xml, $params); + + $dokument->setFilename($filename); + + $error = false; + + // Beim Archivieren wird das Dokument immer signiert wenn moeglich + if($vorlage->signierbar) + $sign = true; + + if ($sign === true) { - echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg; + $dokument->sign($user); + } + + if ($dokument->create($output)) + $doc = $dokument->output(false); + else + { + $errormsg = $dokument->errormsg; + $error = true; + } + + $dokument->close(); + + if(!$error) + { + $hex = base64_encode($doc); + $akte = new akte(); + $akte->person_id = $person_id; + if($vorlage->dokument_kurzbz!='') + $akte->dokument_kurzbz = $vorlage->dokument_kurzbz; + else + $akte->dokument_kurzbz = 'Zeugnis'; + $akte->inhalt = $hex; + $akte->mimetype = 'application/pdf'; + $akte->erstelltam = $heute; + $akte->gedruckt = true; + $akte->titel = $titel.'.pdf'; + $akte->bezeichnung = $bezeichnung; + $akte->updateamum = ''; + $akte->updatevon = ''; + $akte->insertamum = date('Y-m-d H:i:s'); + $akte->insertvon = $user; + $akte->ext_id = ''; + $akte->uid = $uid; + $akte->new = true; + $akte->archiv = true; + $akte->signiert = $sign; + $akte->stud_selfservice = $vorlage->stud_selfservice; + + if (!$akte->save()) + { + echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg; + return false; + } + else + { + return true; + } + } + else + { + echo $errormsg; return false; } - else - { - return true; - } } else - { - echo $errormsg; - return false; - } + echo 'Keine Berechtigung zum Speichern'; } - else - echo 'Keine Berechtigung zum Speichern'; } ?> diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php index a9de22360..b329ee4d5 100644 --- a/content/student/studentenoverlay.xul.php +++ b/content/student/studentenoverlay.xul.php @@ -75,6 +75,11 @@ else