From 9f71849334908c28bcb6eb098d77d5303c3eee01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 16 Jul 2018 18:34:38 +0200 Subject: [PATCH] =?UTF-8?q?Bezeichnung=20und=20Titel=20von=20public.tbl=5F?= =?UTF-8?q?akte=20auf=2064=20Zeichen=20vergroessert=20Beim=20Archivieren?= =?UTF-8?q?=20von=20Zeugnissen=20etc=20wird=20zus=C3=A4tzlich=20das=20Stud?= =?UTF-8?q?iensemester=20angegeben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/pdfExport.php | 136 +++++++++++++++--------------- include/dokument_export.class.php | 3 +- system/dbupdate_3.3.php | 16 ++++ 3 files changed, 86 insertions(+), 69 deletions(-) diff --git a/content/pdfExport.php b/content/pdfExport.php index 2954dc276..e65a1fe89 100644 --- a/content/pdfExport.php +++ b/content/pdfExport.php @@ -63,15 +63,15 @@ if (isset($_GET['archivdokument'])) $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); @@ -90,11 +90,11 @@ if (isset($_GET['archivdokument'])) { $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 + else { // Die jeweils letzte (aktuellste) Akte dieses Typs von jedem Studierenden laden und in eine temporäre Datei schreiben foreach ($uids AS $value) @@ -102,28 +102,28 @@ if (isset($_GET['archivdokument'])) // 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 + else $errorText .= $student_obj->nachname." ".$student_obj->vorname." (".$value.") hat kein Dokument '".$dokument->bezeichnung."' im Archiv\n"; } if (count($allDocs) == 0) @@ -131,19 +131,19 @@ if (isset($_GET['archivdokument'])) 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); } @@ -155,46 +155,46 @@ if (isset($_GET['archivdokument'])) 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); } } - else + else die('Der/Die Studierenden konnte nicht geladen werden'); } } -else +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 @@ -215,7 +215,7 @@ else $uids = explode(';',$_GET['uid']); else $uids[1] = $_GET['uid']; - + $student_obj = new student(); if ($student_obj->load($uids[1])) { @@ -228,7 +228,7 @@ else $prestudent_ids = explode(';',$_GET['prestudent_id']); else $prestudent_ids[1] = $_GET['prestudent_id']; - + $prestudent_obj = new prestudent(); if ($prestudent_obj->load($prestudent_ids[1])) { @@ -241,10 +241,10 @@ else $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) { @@ -259,7 +259,7 @@ else $params .= '&'.$getkey.'='.urlencode($getvalue); } } - + if (isset($_GET['vertrag_id'])) { foreach($_GET['vertrag_id'] as $id) @@ -271,14 +271,14 @@ else $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; @@ -291,7 +291,7 @@ else $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') { @@ -304,16 +304,16 @@ else } 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) { @@ -327,7 +327,7 @@ else $isberechtigt = true; } } - + $stud = new student(); if ($stud->load($uid)) { @@ -342,7 +342,7 @@ else } } } - + if (!$isberechtigt) { echo 'Sie haben keine Berechtigung um dieses AccountInfoBlatt zu drucken'; @@ -360,7 +360,7 @@ else { if ($xsl_stg_kz == '') $xsl_stg_kz = '0'; - + $vorlagestudiengang->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); } // Wenn Berechtigung direkt beim der Vorlage angegeben ist @@ -384,7 +384,7 @@ else exit; } } - + //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen $nachname = ''; if (isset($_GET['uid']) && $_GET['uid']!='') @@ -393,10 +393,10 @@ else $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 == '') @@ -406,19 +406,19 @@ else 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 @@ -427,7 +427,7 @@ else $filename = $vorlage->bezeichnung.$nachname; else $filename = $vorlage->vorlage_kurzbz.$nachname; - + switch($xsl) { case 'LV_Informationen': @@ -444,19 +444,19 @@ else $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(); } } @@ -464,22 +464,22 @@ 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, @@ -490,14 +490,14 @@ else 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"; + $titel = mb_substr($xsl."_".strtoupper($row->typ).strtoupper($row->kurzbz)."_".$semester.'_'.$ss, 0, 64); + $bezeichnung = mb_substr($xsl." ".strtoupper($row->typ).strtoupper($row->kurzbz)." ".$semester.". Semester".' '.$ss, 0, 64); $studiengang_kz = $row->studiengang_kz; } else @@ -515,26 +515,26 @@ else $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) { $dokument->sign($user); } - + if ($dokument->create($output)) $doc = $dokument->output(false); else @@ -542,9 +542,9 @@ else $errormsg = $dokument->errormsg; $error = true; } - + $dokument->close(); - + if(!$error) { $hex = base64_encode($doc); @@ -570,7 +570,7 @@ else $akte->archiv = true; $akte->signiert = $sign; $akte->stud_selfservice = $vorlage->stud_selfservice; - + if (!$akte->save()) { echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg; diff --git a/include/dokument_export.class.php b/include/dokument_export.class.php index 0ea033e64..b1eee8df3 100644 --- a/include/dokument_export.class.php +++ b/include/dokument_export.class.php @@ -382,7 +382,8 @@ class dokument_export if($this->styles_xsl!='') unlink('styles.xml'); - unlink($this->temp_filename); + if(file_exists($this->temp_filename)) + unlink($this->temp_filename); if($this->signed_filename != '') unlink($this->signed_filename); diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 254b0be47..2ab5fbdd1 100755 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -2247,6 +2247,22 @@ if(!$result = @$db->db_query("SELECT bpk FROM public.tbl_person LIMIT 1")) echo '
public.tbl_person: Spalte bpk hinzugefuegt'; } +// titel und bezeichnung in tbl_akte verlaengert +if($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='public' AND TABLE_NAME='tbl_akte' AND COLUMN_NAME = 'titel' AND character_maximum_length=32")) +{ + if($db->db_num_rows($result)>0) + { + $qry = "ALTER TABLE public.tbl_akte ALTER COLUMN titel TYPE varchar(64); + ALTER TABLE public.tbl_akte ALTER COLUMN bezeichnung TYPE varchar(64); + "; + + if(!$db->db_query($qry)) + echo 'public.tbl_akte '.$db->db_last_error().'
'; + else + echo '
Spalte titel und bezeichnung in public.tbl_akte von varchar(32) auf varchar(64) geändert
'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

';