From 18f8c1d973fdfa93d27f78522ade06fee38259fa Mon Sep 17 00:00:00 2001 From: oesi Date: Fri, 30 Jan 2015 13:41:37 +0100 Subject: [PATCH] - Archivieren von Unoconv Dokumenten eingebaut - Archivieren des Diplomasupplements --- content/pdfExport.php | 193 +++++++++++++----- content/student/studentoverlay.js.php | 40 ++++ content/student/studentzeugnisoverlay.xul.php | 3 +- include/vorlage.class.php | 5 +- 4 files changed, 192 insertions(+), 49 deletions(-) diff --git a/content/pdfExport.php b/content/pdfExport.php index 652eb7020..d1008301c 100644 --- a/content/pdfExport.php +++ b/content/pdfExport.php @@ -443,73 +443,174 @@ if (!isset($_REQUEST["archive"])) } else { + // Archivieren von Dokumenten $uid = $_REQUEST["uid"]; - $ss = $_REQUEST["ss"]; $heute = date('Y-m-d'); - + $student=new student(); $student->load($uid); - $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(isset($_REQUEST['ss'])) { - if($row = $db->db_fetch_object($result)) + $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)) { - $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 - { - $echo = 'Datensatz wurde nicht gefunden'; + 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 + { + $echo = 'Datensatz wurde nicht gefunden'; + } } } + 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')) { - if(PDF_CREATE_FUNCTION=='FOP') + if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument')) { - $fop = new fop(); - $file = $fop->generatePdf($xml_doc->saveXML(), $xsl_content, $filename, "F"); - } - else - { - $filename = $user; - $fo2pdf = new XslFo2Pdf(); - + switch($vorlage->mimetype) + { + case 'application/vnd.oasis.opendocument.text': + $endung = 'odt'; + break; + case 'application/vnd.oasis.opendocument.spreadsheet': + $endung = 'ods'; + break; + default: + $endung = 'pdf'; + } + // 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"; - } + $buffer = $proc->transformToXml($xml_doc); + //echo $buffer; + //exit; + $tempfolder = '/tmp/'.uniqid(); + mkdir($tempfolder); + chdir($tempfolder); + file_put_contents('content.xml', $buffer); + + // Wenn ein Style XSL uebergeben wurde wird ein zweites XML File erstellt mit den + // Styleanweisungen und ebenfalls zum Zip hinzugefuegt + if(isset($_GET['style_xsl'])) + { + $style_xsl=$_GET['style_xsl']; + $style_vorlage = new vorlage(); + $style_vorlage->getAktuelleVorlage($xsl_stg_kz, $style_xsl, $version); + $style_xsl_doc = new DOMDocument; + if(!$style_xsl_doc->loadXML($style_vorlage->text)) + die('unable to load xsl'); + + // Configure the transformer + $style_proc = new XSLTProcessor; + $style_proc->importStyleSheet($style_xsl_doc); // attach the xsl rules + + $stylebuffer = $style_proc->transformToXml($xml_doc); + + file_put_contents('styles.xml', $stylebuffer); + } + + $vorlage_found=false; + $addons = new addon(); + + foreach($addons->aktive_addons as $addon) + { + $zipfile = DOC_ROOT.'addons/'.$addon.'/system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung; + + if(file_exists($zipfile)) + { + $vorlage_found=true; + break; + } + } + if(!$vorlage_found) + $zipfile = DOC_ROOT.'system/vorlage_zip/'.$vorlage->vorlage_kurzbz.'.'.$endung; + + + $tempname_zip = 'out.zip'; + if(copy($zipfile, $tempname_zip)) + { + exec("zip $tempname_zip content.xml"); + if(isset($_GET['style_xsl'])) + exec("zip $tempname_zip styles.xml"); + + clearstatcache(); + + $tempPdfName = $vorlage->vorlage_kurzbz.'.pdf'; + exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName"); + } + $file = $tempfolder.'/'.$tempPdfName; + } + else + { + 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); diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index cbdec090f..6ce4390d5 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -4407,6 +4407,46 @@ function StudentCreateDiplSupplement() window.open('content/pdfExport.php?xml=diplomasupplement.xml.php&output=pdf&xsl=DiplSupplement&xsl_stg_kz='+stg_kz+'&uid='+paramList,'DiplomaSupplement', 'height=200,width=350,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes'); } +// **** +// * Archiviert das Diplomasupplement einer Person +// **** +function StudentDiplomasupplementArchivieren() +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + tree = document.getElementById('student-tree'); + + //Markierte Studenten holen + var start = new Object(); + var end = new Object(); + var numRanges = tree.view.selection.getRangeCount(); + var paramList= ''; + var errormsg=''; + + var labelalt = document.getElementById('student-zeugnis-button-archivieren-diplomasupplement').label; + document.getElementById('student-zeugnis-button-archivieren-diplomasupplement').label='Loading...'; + for (var t = 0; t < numRanges; t++) + { + tree.view.selection.getRangeAt(t,start,end); + for (var v = start.value; v <= end.value; v++) + { + var col = tree.columns ? tree.columns["student-treecol-uid"] : "student-treecol-uid"; + var uid=tree.view.getCellText(v,col); + stg_kz=getTreeCellText(tree,"student-treecol-studiengang_kz", v); + + url = 'content/pdfExport.php?xml=diplomasupplement.xml.php&output=pdf&xsl=DiplSupplement&xsl_stg_kz='+stg_kz+'&uid='+uid+'&archive=true'; + var req = new phpRequest(url,'',''); + + var response = req.execute(); + if(response!='') + errormsg = errormsg + response; + } + } + + document.getElementById('student-zeugnis-button-archivieren-diplomasupplement').label=labelalt; + StudentAkteTreeDatasource.Refresh(false); +} + // **** // * Erstellt den Ausbildungsvertrag fuer einen oder mehrere Studenten // **** diff --git a/content/student/studentzeugnisoverlay.xul.php b/content/student/studentzeugnisoverlay.xul.php index 7ca0c32b9..3799ffbab 100644 --- a/content/student/studentzeugnisoverlay.xul.php +++ b/content/student/studentzeugnisoverlay.xul.php @@ -94,9 +94,10 @@ echo '';