. */ require_once(dirname(__FILE__).'/../config/vilesci.config.inc.php'); require_once(dirname(__FILE__).'/../include/pdf.class.php'); require_once(dirname(__FILE__).'/../include/dokument_export.class.php'); require_once(dirname(__FILE__).'/../include/phrasen.class.php'); require_once(dirname(__FILE__).'/../include/prestudent.class.php'); require_once(dirname(__FILE__).'/../include/dms.class.php'); require_once(dirname(__FILE__).'/../include/adresse.class.php'); require_once(dirname(__FILE__).'/../include/nation.class.php'); require_once(dirname(__FILE__).'/../include/kontakt.class.php'); require_once(dirname(__FILE__).'/../include/studiengang.class.php'); require_once(dirname(__FILE__).'/../include/notiz.class.php'); $sprache = getSprache(); $p=new phrasen($sprache); $db = new basis_db(); $errors = array(); $user = get_uid(); if(!isset($_GET["prestudent_ids"]) || !isset($_GET["vorlage_kurzbz"])) die($p->t('anwesenheitsliste/fehlerhafteParameteruebergabe')); $vorlage_kurzbz = $_GET["vorlage_kurzbz"]; $prestudent_ids = explode(";", $_GET["prestudent_ids"]); if(empty($prestudent_ids)) die($p->t('anwesenheitsliste/fehlerhafteParameteruebergabe')); ( isset($_GET["force"]) ? $force = true : $force = false); /* * Temporaeren Ordner fuer die erstellung der Dokumente generieren */ $tmpDir = sys_get_temp_dir() . "/dokumentenakt_" . uniqid(); if (!file_exists($tmpDir)) mkdir($tmpDir, 0777, true); /* * converter classes */ $pdf = new pdf(); $docExp = new dokument_export(); /* * Create Documents */ $allDocs = array(); foreach($prestudent_ids as $pid) { $preErrors = array(); $prestudent = new prestudent(); $dokumente = array(); if(!$prestudent->load($pid)) { $preErrors[] = $p->t('tools/studentWurdeNichtGefunden')."(".$pid.")"; } if(empty($preErrors)) { /* * Determine the oe_kurzbz */ $query= ' SELECT oe_kurzbz FROM public.tbl_prestudent JOIN public.tbl_studiengang USING(studiengang_kz) WHERE prestudent_id='.$db->db_add_param($pid, FHC_INTEGER).' '; if(!$res = $db->db_query($query)) die("Es ist ein Fehler bei der Ermittlung der Organisationseinheit aufgetreten"); if(!$row = $db->db_fetch_object($res)) die("Es ist ein Fehler bei der Ermittlung der Organisationseinheit aufgetreten"); $vorlagestudiengang_id = recursiveGetVorlagestudiengang_id($row->oe_kurzbz, $db); $oe_kurzbz = $row->oe_kurzbz; /* * Get all Documents */ $query= ' SELECT tbl_akte.bezeichnung as dateiname, titel, dms_id, inhalt, mimetype, dokument_kurzbz, tbl_dokument.bezeichnung, tbl_akte.bezeichnung as aktbezeichnung, sort, akte_id, nachgereicht, tbl_akte.anmerkung FROM public.tbl_vorlagedokument JOIN public.tbl_dokument USING(dokument_kurzbz) JOIN public.tbl_akte USING(dokument_kurzbz) JOIN public.tbl_prestudent USING(person_id) WHERE vorlagestudiengang_id='.$db->db_add_param($vorlagestudiengang_id).' AND prestudent_id='.$db->db_add_param($pid).' ORDER BY sort asc; '; $preDocs = array(); $result = $db->db_query($query); while($row = $db->db_fetch_object($result)) { $docErrors = array(); $convertSuccess = true; $filename = ""; if($row->inhalt != null) { $filename = $tmpDir . "/" . uniqid(); $fileData = base64_decode($row->inhalt); file_put_contents($filename, $fileData); } else if($row->dms_id != null) { $dms = new dms(); $dms->load($row->dms_id); if ($dms->mimetype != $row->mimetype) { $docErrors[] = "Mimetype von Akte-ID ".$row->akte_id." \"".$row->mimetype."\" und DMS-ID ".$row->dms_id." \"".$dms->mimetype."\" stimmen nicht ueberein. Bitte kontaktieren Sie einen Administrator"; } $filename = DMS_PATH . $dms->filename; if(!file_exists($filename)) { $docErrors[] = "".$row->dokument_kurzbz." '".$filename."': Datei nicht gefunden (DMS-ID ".$row->dms_id."; Akte-ID ".$row->akte_id.")"; } } // this should never happen if($filename == "" && $row->nachgereicht == 'f') { $docErrors[] = "".$row->dokument_kurzbz." '".$row->akte_id."': Diese Akte hat keinen Inhalt und keine dms_id"; } if(empty($docErrors)) { /* * Determine the filetype * and convert, if nessecary */ $fullFilename = ""; $explodedTitle = explode(".", $row->dateiname); $type = $explodedTitle[count($explodedTitle)-1]; if( $type == "jpg" || $type == "jpeg" || $row->mimetype == "image/jpeg" || $row->mimetype == "image/jpg" || $row->mimetype == "image/pjpeg" ) { $fullFilename = $tmpDir . "/".uniqid() . ".pdf"; if(!$pdf->jpegToPdf($filename, $fullFilename)) cleanUpAndDie($pdf->errormsg, $tmpDir); } else if ( $type == "odt" || $type == "doc" || $type == "docx" || $row->mimetype == "application/vnd.oasis.opendocument.spreadsheet" || $row->mimetype == "application/msword" || $row->mimetype == "application/vnd.openxmlformats-officedocument.wordprocessingml.document" || $row->mimetype == "application/haansoftdocx" || $row->mimetype == "application/vnd.ms-word" || $row->mimetype == "application/vnd.oasis.opendocument.text" ) { $fullFilename = $tmpDir . "/".uniqid() . ".pdf"; $convert = $docExp->convert($filename, $fullFilename, "pdf"); if(!$convert) { $convertSuccess = false; $docErrors[] = ($row->titel != ''? $row->titel:$row->bezeichnung)." (Akte_ID ".$row->akte_id."): Konvertierung fehlgeschlagen(".$row->mimetype.")"; } } else if( $type == "pdf" || $row->mimetype == "application/pdf" ) { $fullFilename = $filename; } // only filled, if the file is supported if($fullFilename != "") { if(file_exists($fullFilename)) { $preDocs[] = $fullFilename; if(isset($row->bezeichnung) && $row->bezeichnung && $row->bezeichnung != "") { if ($row->titel != '') $dokumente[]['dokument'] = array( "name" => $row->bezeichnung, "filename" => $row->titel, "nachgereicht" => ($row->nachgereicht == 't'?'true':'false'), "anmerkung" => $row->anmerkung); else $dokumente[]['dokument'] = array( "name" => $row->bezeichnung, "filename" => $row->aktbezeichnung, "nachgereicht" => ($row->nachgereicht == 't'?'true':'false'), "anmerkung" => $row->anmerkung); } else { if ($row->titel != '') $dokumente[]['dokument'] = array( "name" => $row->dokument_kurzbz, "filename" => $row->titel, "nachgereicht" => ($row->nachgereicht == 't'?'true':'false'), "anmerkung" => $row->anmerkung); else $dokumente[]['dokument'] = array( "name" => $row->dokument_kurzbz, "filename" => $row->aktbezeichnung, "nachgereicht" => ($row->nachgereicht == 't'?'true':'false'), "anmerkung" => $row->anmerkung); } } else { $addString = ""; if($row->dms_id) $addString = "(DMS)"; else $addString = "(DB)"; if($convertSuccess) $docErrors[] = '"$row->dokument_kurzbz: Akte-ID '.$row->akte_id.' '.$row->titel.'":' . $addString . ' Dokument nicht gefunden'; } } else { $docErrors[] ="$row->dokument_kurzbz: Akte-ID $row->akte_id $row->titel hat einen nicht unterstützten mimetype: $row->mimetype"; $dokumente[]['dokument'] = array( "name" => $row->bezeichnung, "filename" => $row->aktbezeichnung, "nachgereicht" => ($row->nachgereicht == 't'?'true':'false'), "anmerkung" => $row->anmerkung, "errormsg" => 'Dieses Dateiformat kann nicht in diesem PDF ausgegeben werden.'); } } if(!empty($docErrors)) { if(!isset($errors[$pid])) $errors[$pid] = array(); $errors[$pid] = array_merge($errors[$pid], $docErrors); } } /* * Deckblatt */ $adresse = new adresse(); $adresse->load_pers($prestudent->person_id); $strasse = ''; $plz = ''; $bundesland = ''; $heimatBundesland = ''; $zustellBundesland = ''; $nation = new nation($prestudent->geburtsnation); $geburtsnation = $nation->kurztext; $nation->load($prestudent->staatsbuergerschaft); $staatsbuergerschaft = $nation->kurztext; $nation->load($prestudent->zgvnation); $zgvnation = $nation->kurztext; $svnr = ($prestudent->svnr == '')?($prestudent->ersatzkennzeichen != ''?'Ersatzkennzeichen: '.$prestudent->ersatzkennzeichen:''):$prestudent->svnr; foreach($adresse->result as $row_adresse) { if($row_adresse->heimatadresse) { $heimatStrasse = $row_adresse->strasse; $heimatPlz = $row_adresse->plz; $heimatOrt = $row_adresse->ort; // Bundesland ermitteln if ($row_adresse->gemeinde != '') { $qry= ' SELECT tbl_bundesland.bezeichnung AS bundesland FROM bis.tbl_gemeinde JOIN bis.tbl_bundesland ON (tbl_gemeinde.bulacode = tbl_bundesland.bundesland_code) WHERE tbl_gemeinde.name='.$db->db_add_param($row_adresse->gemeinde).' LIMIT 1; '; if ($res = $db->db_query($qry)) { if ($row = $db->db_fetch_object($res)) $heimatBundesland = $row->bundesland; else $errors[$pid][] = "Es ist ein Fehler bei der Ermittlung des Bundeslandes der Heimatadresse aufgetreten"; } else $errors[$pid][] = "Es ist ein Fehler bei der Ermittlung des Bundeslandes der Heimatadresse aufgetreten"; } else $errors[$pid][] = "Heimat-Bundesland kann nicht ermittelt werden, da keine Gemeinde eingetragen ist"; } if($row_adresse->zustelladresse) { $zustellStrasse = $row_adresse->strasse; $zustellPlz = $row_adresse->plz; $zustellOrt = $row_adresse->ort; // Bundesland ermitteln if ($row_adresse->gemeinde != '') { $qry= ' SELECT tbl_bundesland.bezeichnung AS bundesland FROM bis.tbl_gemeinde JOIN bis.tbl_bundesland ON (tbl_gemeinde.bulacode = tbl_bundesland.bundesland_code) WHERE tbl_gemeinde.name='.$db->db_add_param($row_adresse->gemeinde).' LIMIT 1; '; if ($res = $db->db_query($qry)) { if ($row = $db->db_fetch_object($res)) $zustellBundesland = $row->bundesland; else $errors[$pid][] = "Es ist ein Fehler bei der Ermittlung des Bundeslandes der Heimatadresse aufgetreten"; } else $errors[$pid][] = "Es ist ein Fehler bei der Ermittlung des Bundeslandes der Heimatadresse aufgetreten"; } else $errors[$pid][] = "Zustelladresse-Bundesland kann nicht ermittelt werden, da keine Gemeinde eingetragen ist"; //break; } } $kontakt = new kontakt(); $kontakt->load_pers($prestudent->person_id); $telefonnummer = ''; foreach($kontakt->result as $row) { if ($row->zustellung) { if ($row->kontakttyp == 'mobil') { $telefonnummer = $row->kontakt; } elseif ($row->kontakttyp == 'telefon' && $telefonnummer == '') { $telefonnummer = $row->kontakt; } if ($row->kontakttyp == 'email') { $mailadresse = $row->kontakt; } } } // Studiengang der Bewerbung $studiengang = new studiengang(); $studiengang->load($prestudent->studiengang_kz); // Datum Bewerbungabgschickt $prestudentstatus = new prestudent(); $prestudentstatus->getLastStatus($pid, '', 'Interessent'); // Spezielle Notizen auslesen und aufbereiten $notiz = new notiz(); $notiz->getNotiz('','','','','','',$pid,'','','','','','aufnahme/spezialisierung'); $notiz_text_array = array(); foreach ($notiz->result as $notiz_row) { // Entfernt alle HTML und PHP-Tags aus der Notiz und splittet sie als array auf $array_help = explode(';', strip_tags($notiz_row->text)); foreach ($array_help as $key => $value) $notiz_text_array[]['aufnahme_notiz'] = $value; } $doc = new dokument_export($vorlage_kurzbz, $oe_kurzbz); $doc->addDataArray(array( 'studiengang_kuerzel' => strtoupper($studiengang->typ.$studiengang->kurzbz), 'orgform_kurzbz' => $prestudent->orgform_kurzbz, 'bewerbung_abgeschicktamum' => date('d.m.Y H:i',strtotime($prestudentstatus->bewerbung_abgeschicktamum)), 'vorname' => $prestudent->vorname, 'nachname' => $prestudent->nachname, 'geb_datum' => date('d.m.Y',strtotime($prestudent->gebdatum)), 'gebort' => $prestudent->gebort, 'heimat_strasse' => $heimatStrasse, 'heimat_plz' => $heimatPlz, 'heimat_ort' => $heimatOrt, 'heimat_bundesland' => $heimatBundesland, 'zustell_strasse' => $zustellStrasse, 'zustell_plz' => $zustellPlz, 'zustell_ort' => $zustellOrt, 'zustell_bundesland' => $zustellBundesland, 'geburtsnation' => $geburtsnation, 'svnr' => $svnr, 'staatsbuergerschaft' => $staatsbuergerschaft, 'geschlecht' => $prestudent->geschlecht, 'telefonnummer' => $telefonnummer, 'email' => $mailadresse, 'zgvort' => $prestudent->zgvort, 'zgvdatum' => $prestudent->zgvdatum, 'zgvnation' => $zgvnation, array('dokumente'=> $dokumente), array('aufnahme_notizen'=> $notiz_text_array) ),"dokumentenakt" ); //echo $doc->getXML();exit; if(!$doc->create('pdf')) die($doc->errormsg); $filename = $tmpDir.'/'.uniqid(); file_put_contents($filename, $doc->output(false)); $doc->close(); $allDocs[] = $filename; $allDocs = array_merge($allDocs, $preDocs); unset($doc); } } /* * generate the merged PDF */ if(count($errors) == 0 || $force) { $finishedPdf = $tmpDir . "/Dokumentenakt.pdf"; //$finishedPdf = "/Dokumentenakt.pdf"; if(!$pdf->merge($allDocs, $finishedPdf)) cleanUpAndDie($pdf->errormsg, $tmpDir); $fsize = filesize($finishedPdf); if(!$handle = fopen($finishedPdf,'r')) die('load failed'); header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="Dokumentenakt.pdf"'); header('Content-Length: '.$fsize); while (!feof($handle)) { echo fread($handle, 8192); } fclose($handle); } else { ?>
Es sind folgende Fehler aufgetreten:"; foreach($errors as $pid => $pre) { $ps = new prestudent(); if(!$ps->load($pid)) echo "Fehlerhafte Dokumente können übersprungen werden:
"; echo ""; ?> db_add_param($oe_kurzbz).' AND aktiv ORDER BY version DESC LIMIT 1 '; if(!$res = $db->db_query($query)) die("Fehler beim holen der Dokumentenliste"); if(!$db->db_num_rows($res)) { /* * Nothing found, so we determine the * oe_parent_kurzbz and try it again */ $queryParent= ' SELECT oe_parent_kurzbz FROM public.tbl_organisationseinheit WHERE oe_kurzbz='.$db->db_add_param($oe_kurzbz).' '; if(!$resultParent = $db->db_query($queryParent)) die("Fehler beim holen der Dokumentenliste"); if(!$rowParent = $db->db_fetch_object($resultParent)) return false; return recursiveGetVorlagestudiengang_id($rowParent->oe_parent_kurzbz, $db); } else { $row = $db->db_fetch_object($res); return $row->vorlagestudiengang_id; } return false; } ?>