mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Mehrfach-Export von Archivdokumenten
- Nach Rechtsklick auf Studierenden gibt es die Auswahl "Archivdokument exportieren" - Derzeit nur für Bescheid - Mehrfachmarkierung von Studierenden möglich
This commit is contained in:
+480
-351
@@ -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';
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user