From 597b41058274a64753686efe1d99ec3e21769dd7 Mon Sep 17 00:00:00 2001 From: oesi Date: Tue, 7 Apr 2015 12:52:40 +0200 Subject: [PATCH 01/10] Upload von phtml Dateien verhindert --- cis/private/lehre/upload.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cis/private/lehre/upload.php b/cis/private/lehre/upload.php index a29cc218c..aad50cc72 100644 --- a/cis/private/lehre/upload.php +++ b/cis/private/lehre/upload.php @@ -623,7 +623,7 @@ } else { - if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && $file_name!='.htaccess') + if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && !stristr($uploadfile, '.phtml') && $file_name!='.htaccess') { if(copy($_FILES[$file]['tmp_name'], $uploadfile)) { @@ -646,7 +646,7 @@ } else { - if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && $file_name!='.htaccess') + if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && !stristr($uploadfile, '.phtml') && $file_name!='.htaccess') { if(copy($_FILES[$file]['tmp_name'], $uploadfile)) { @@ -679,7 +679,7 @@ } else { - if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && $file_name!='.htaccess') + if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && !stristr($uploadfile, '.phtml') && $file_name!='.htaccess') { if(copy($_FILES[$file]['tmp_name'], $uploadfile)) { @@ -702,7 +702,7 @@ } else { - if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && $file_name!='.htaccess') + if(!stristr($uploadfile, '.php') && !stristr($uploadfile, '.cgi') && !stristr($uploadfile, '.pl') && !stristr($uploadfile, '.phtml') && $file_name!='.htaccess') { if(copy($_FILES[$file]['tmp_name'], $uploadfile)) { @@ -1331,7 +1331,7 @@ { if(!@file_exists($dest_dir->path.'/'.$new_file_name_) && !@is_dir($dest_dir->path.'/'.$new_file_name_)) { - if(!stristr($new_file_name_, '.php') && !stristr($new_file_name_, '.cgi') && !stristr($new_file_name_, '.pl') && $new_file_name_!='.htaccess') + if(!stristr($new_file_name_, '.php') && !stristr($new_file_name_, '.cgi') && !stristr($new_file_name_, '.pl') && !stristr($new_file_name_, '.phtml') && $new_file_name_!='.htaccess') { rename($dest_dir->path.'/'.$entry, $dest_dir->path.'/'.$new_file_name_); From dba3e1eae8a22711568cd5ec191468054c91fcf5 Mon Sep 17 00:00:00 2001 From: oesi Date: Tue, 7 Apr 2015 14:22:44 +0200 Subject: [PATCH 02/10] =?UTF-8?q?Fixed=20Remote=20Code=20Execution=20L?= =?UTF-8?q?=C3=BCcke?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zipdownload_benotungstool.php | 101 +++++++++--------- cis/private/lehre/semupload.php | 8 +- include/tw/cis_menu_lv.inc.php | 70 ++++++------ 3 files changed, 92 insertions(+), 87 deletions(-) diff --git a/cis/private/lehre/benotungstool/zipdownload_benotungstool.php b/cis/private/lehre/benotungstool/zipdownload_benotungstool.php index f3cdb4b8f..e3b9a9f27 100755 --- a/cis/private/lehre/benotungstool/zipdownload_benotungstool.php +++ b/cis/private/lehre/benotungstool/zipdownload_benotungstool.php @@ -25,56 +25,61 @@ * @create 20-03-2006 * Aufruf: zipdownload.php?stg=255&sem=1$short=eng */ +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/functions.inc.php'); - require_once('../../../../config/cis.config.inc.php'); - require_once('../../../../include/functions.inc.php'); - $user = get_uid(); +$user = get_uid(); - //Gueltigkeit der Parameter pruefen - if(!isset($_GET['uebung_id']) || !is_numeric($_GET['uebung_id'])) - { - die('Fehler bei der Parameteruebergabe'); - } - if(!isset($_GET['lehreinheit_id']) || !is_numeric($_GET['lehreinheit_id'])) - { - die('Fehler bei der Parameteruebergabe'); - } - if(!isset($_GET['stsem'])) - { - die('Fehler bei der Parameteruebergabe'); - } - if(!isset($_GET['downloadname'])) - { - die('Fehler bei der Parameteruebergabe'); - } +if(!check_lektor($user)) + die('Sie haben keine Berechtigung fuer diese Seite'); - - $uebung_id = $_GET['uebung_id']; - $lehreinheit_id = $_GET['lehreinheit_id']; - $stsem = $_GET['stsem']; - $downloadname = $_GET['downloadname']; - +//Gueltigkeit der Parameter pruefen +if(!isset($_GET['uebung_id']) || !is_numeric($_GET['uebung_id'])) +{ + die('Fehler bei der Parameteruebergabe'); +} +if(!isset($_GET['lehreinheit_id']) || !is_numeric($_GET['lehreinheit_id'])) +{ + die('Fehler bei der Parameteruebergabe'); +} +if(!isset($_GET['stsem'])) +{ + die('Fehler bei der Parameteruebergabe'); +} +if(!isset($_GET['downloadname'])) +{ + die('Fehler bei der Parameteruebergabe'); +} - //Pfade bauen - $pfad = BENOTUNGSTOOL_PATH.'abgabe/'; - $filename = 'download_'.$user.'_'.$downloadname.'.zip'; - - - //Pfad wechseln - chdir($pfad); - - - //File loeschen falls es existiert - //if(file_exists("download_".$user."*")) - exec("rm download_".$user."*"); - - //Zip File erstellen - exec("zip -r ".$filename." *_[WS]S[0-9][0-9][0-9][0-9]_".$uebung_id."_*"); +$uebung_id = $_GET['uebung_id']; +$lehreinheit_id = $_GET['lehreinheit_id']; +$stsem = $_GET['stsem']; +$downloadname = $_GET['downloadname']; - //Auf Zip File Verweisen - //header("Location: $pfad$filename"); - header('Content-Type: application/octet-stream'); - header('Content-disposition: attachment; filename="'.$filename.'"'); - readfile($filename); - unlink($filename); -?> \ No newline at end of file +if(mb_strstr($downloadname,'..')) + die('Ungueltiger Parameter gefunden'); + +//Pfade bauen +$pfad = BENOTUNGSTOOL_PATH.'abgabe/'; +$filename = 'download_'.$user.'_'.$downloadname.'.zip'; + +if(!check_filename($filename)) + die('Ungueltiger Parameter gefunden'); + +//Pfad wechseln +chdir($pfad); + +//File loeschen falls es existiert +//if(file_exists("download_".$user."*")) +exec('rm download_'.$user.'*'); + +//Zip File erstellen +exec("zip -r ".escapeshellarg($filename).' *_[WS]S[0-9][0-9][0-9][0-9]_'.$uebung_id.'_*'); + +//Auf Zip File Verweisen +//header("Location: $pfad$filename"); +header('Content-Type: application/octet-stream'); +header('Content-disposition: attachment; filename="'.$filename.'"'); +readfile($filename); +unlink($filename); +?> diff --git a/cis/private/lehre/semupload.php b/cis/private/lehre/semupload.php index 5542732dd..1000a8294 100644 --- a/cis/private/lehre/semupload.php +++ b/cis/private/lehre/semupload.php @@ -102,7 +102,7 @@ $openpath = DOC_ROOT.'/documents/'.strtolower($stg_obj->kuerzel).'/'.$lv_obj->se if(is_file($openpath . $inhalt)) { writeCISlog('DELETE', "rm -r '$openpath$inhalt'"); - exec("rm -r '$openpath$inhalt'"); + exec("rm -r ".escapeshellarg($openpath.$inhalt)); echo '
'.$p->t('global/erfolgreichgelöscht').'
'; } else @@ -132,11 +132,11 @@ $openpath = DOC_ROOT.'/documents/'.strtolower($stg_obj->kuerzel).'/'.$lv_obj->se { if(!stristr($fn, '.php') && !stristr($fn, '.php3') && !stristr($fn,'.php4') && !stristr($fn, '.php5') && - !stristr($fn, '.cgi') && !stristr($fn, '.pl')) + !stristr($fn, '.cgi') && !stristr($fn, '.pl') && !stristr($fn, '.phtml')) { if(move_uploaded_file($_FILES['userfile']['tmp_name'],$openpath . $fn)) { - exec('sudo chown www-data:teacher "'.$openpath.$fn.'"'); + exec('sudo chown www-data:teacher '.escapeshellarg($openpath.$fn)); echo '
'.$p->t('semesterplan/fileErfolgreichHochgeladen').'
'; } else @@ -181,4 +181,4 @@ $openpath = DOC_ROOT.'/documents/'.strtolower($stg_obj->kuerzel).'/'.$lv_obj->se ?> - \ No newline at end of file + diff --git a/include/tw/cis_menu_lv.inc.php b/include/tw/cis_menu_lv.inc.php index 551cc2db0..e0f38aaac 100644 --- a/include/tw/cis_menu_lv.inc.php +++ b/include/tw/cis_menu_lv.inc.php @@ -86,8 +86,8 @@ function checkZeilenUmbruch() $dir_name=$DOC_ROOT.'/documents'; if(!is_dir($dir_name)) { - exec('mkdir -m 755 "'.$dir_name.'"'); - exec('sudo chown www-data:teacher "'.$dir_name.'"'); + exec('mkdir -m 755 '.escapeshellarg($dir_name)); + exec('sudo chown www-data:teacher '.escapeshellarg($dir_name)); } $angemeldet = true; if(defined('CIS_LEHRVERANSTALTUNG_WENNANGEMELDET_DETAILS_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_WENNANGEMELDET_DETAILS_ANZEIGEN && !$is_lector) @@ -123,23 +123,23 @@ function checkZeilenUmbruch() { if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/semesterplan')) { - exec('mkdir -m 775 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/semesterplan"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/semesterplan"'); + exec('mkdir -m 775 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/semesterplan')); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/semesterplan')); } } @@ -206,23 +206,23 @@ function checkZeilenUmbruch() { if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/download')) { - exec('mkdir -m 775 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/download"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/download"'); + exec('mkdir -m 775 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/download')); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/download')); } } @@ -294,23 +294,23 @@ function checkZeilenUmbruch() { if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung')) { - exec('mkdir -m 775 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung"'); + exec('mkdir -m 775 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung')); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/leistung')); } } @@ -453,7 +453,7 @@ function checkZeilenUmbruch() //Moodle $showmoodle=false; //Schauen ob Moodle fuer diesen Studiengang freigeschaltet ist - $qry = "SELECT moodle FROM public.tbl_studiengang JOIN lehre.tbl_lehrveranstaltung USING(studiengang_kz) WHERE lehrveranstaltung_id='".addslashes($lvid)."'"; + $qry = "SELECT moodle FROM public.tbl_studiengang JOIN lehre.tbl_lehrveranstaltung USING(studiengang_kz) WHERE lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER); if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) @@ -572,23 +572,23 @@ function checkZeilenUmbruch() { if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))) { - exec('mkdir -m 755 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); - exec('sudo chown www-data:teacher "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'"'); + exec('mkdir -m 755 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); } if(!@is_dir(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/upload')) { - exec('mkdir -m 775 "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/upload"'); - exec('sudo chown www-data:student "'.DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/upload"'); + exec('mkdir -m 775 '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/upload')); + exec('sudo chown www-data:student '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/upload')); } } From 4cc1ff2915cde0e18f6d6d62573b9060cc9f566f Mon Sep 17 00:00:00 2001 From: oesi Date: Wed, 8 Apr 2015 14:10:38 +0200 Subject: [PATCH 03/10] Fixed PHP Warning --- cis/testtool/admin/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cis/testtool/admin/index.php b/cis/testtool/admin/index.php index 00529d836..2be75e52e 100644 --- a/cis/testtool/admin/index.php +++ b/cis/testtool/admin/index.php @@ -518,7 +518,7 @@ echo ' + '; + } } echo ''; diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js index c8edc3860..0a099b238 100644 --- a/cis/private/lehre/pruefung/pruefung.js +++ b/cis/private/lehre/pruefung/pruefung.js @@ -453,9 +453,14 @@ function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, t */ function saveAnmeldung(lehrveranstaltung_id, termin_id) { - var lehrveranstaltung_id = $("#lehrveranstaltungHidden").val(); - var termin_id = $("#terminHidden").val(); + var uid = $("#anmeldung_hinzufuegen_uid").val(); + if(lehrveranstaltung_id === undefined) + lehrveranstaltung_id = $("#lehrveranstaltungHidden").val(); + if(termin_id === undefined) + termin_id = $("#terminHidden").val(); var bemerkungen = $("#anmeldungBemerkung").val(); + if(bemerkungen === undefined) + bemerkungen = "von Lektor hinzugefügt"; $.ajax({ dataType: 'json', @@ -465,7 +470,8 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) method: "saveAnmeldung", termin_id: termin_id, lehrveranstaltung_id: lehrveranstaltung_id, - bemerkung: bemerkungen + bemerkung: bemerkungen, + uid: uid }, error: loadError }).success(function(data){ @@ -480,7 +486,17 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) resetForm(); }).complete(function(event, xhr, settings){ $("#saveDialog").dialog("close"); - refresh(); + + if(uid === undefined) + { + //Wenn Anmeldung durch Student + refresh(); + } + else + { + //Wenn Anmeldung durch Lektor + showAnmeldungen(termin_id, lehrveranstaltung_id); + } }); } @@ -653,6 +669,7 @@ function writeAnmeldungen(data) var ort_kurzbz = data.result.ort_kurzbz; var liste = "
    "; var count = 0; + var studiensemester = $("#filter_studiensemester option:selected").val(); data.result.anmeldungen.forEach(function(d){ count++; var vorname = d.student.vorname !== "null" ? d.student.vorname : ""; @@ -683,8 +700,10 @@ function writeAnmeldungen(data) }); liste += "
"; + $("#anmeldung_hinzufuegen").html(""); $("#reihungSpeichernButton").html(""); $("#anmeldeDaten").html(liste); + $("#listeDrucken").html("Liste drucken"); if(ort_kurzbz !== null) { $("#raumLink").html("Prüfungsraum: "+ort_kurzbz); @@ -829,11 +848,12 @@ function loadStudiengaenge() $("#stgListe").empty(); if(data.error === 'false') { - var liste = ""; + var liste = ""; $("#stgListe").append(liste); } else @@ -848,15 +868,22 @@ function loadStudiengaenge() * @param {type} studiengang_kz Studiengangskennzahl * @returns {undefined} */ -function loadPruefungStudiengang(studiengang_kz) +function loadPruefungStudiengang(studiengang_kz, studiensemester) { + if(studiengang_kz === undefined) + studiengang_kz = $("#select_studiengang option:selected").val(); + + if(studiensemester === undefined) + studiensemester = $("#filter_studiensemester option:selected").val(); + $.ajax({ dataType: 'json', url: "./pruefungsanmeldung.json.php", type: "POST", data: { method: "getPruefungenStudiengang", - studiengang_kz: studiengang_kz + studiengang_kz: studiengang_kz, + studiensemester: studiensemester }, error: loadError }).success(function(data){ @@ -867,6 +894,7 @@ function loadPruefungStudiengang(studiengang_kz) { var liste = ""; data.result.forEach(function(e){ + console.log(e); liste += "
  • "+e.bezeichnung+"
      "; e.pruefung[0].termine.forEach(function(d){ liste += "
    • "+convertDateTime(d.von)+" "+convertDateTime(d.von, "time")+" - "+convertDateTime(d.bis, "time")+"
    • "; diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 28b672b2c..d0e63684a 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -1,950 +1,985 @@ -getBerechtigungen($uid); - -$studiensemester = new studiensemester(); -$aktStudiensemester = $studiensemester->getaktorNext(); - -$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; - -switch($method) -{ - case 'getPruefungByLv': - $studiensemester = isset($_REQUEST['studiensemester']) ? $_REQUEST['studiensemester'] : NULL; - $data = getPruefungByLv($studiensemester, $uid); - break; - case 'getPruefungByLvFromStudiengang': - $studiensemester = isset($_REQUEST['studiensemester']) ? $_REQUEST['studiensemester'] : NULL; - $data = getPruefungByLvFromStudiengang($studiensemester, $uid); - break; - case 'loadPruefung': - $data = loadPruefung(); - break; - case 'loadTermine': - $data = loadTermine(); - break; - case 'saveAnmeldung': - $data = saveAnmeldung($aktStudiensemester, $uid); - break; - case 'getAllPruefungen': - $data = getAllPruefungen($aktStudiensemester, $uid); - break; - case 'stornoAnmeldung': - $data = stornoAnmeldung($uid); - break; - case 'getAnmeldungenTermin': - $data = getAnmeldungenTermin(); - break; - case 'saveReihung': - $data = saveReihung(); - break; - case 'anmeldungBestaetigen': - $data = anmeldungBestaetigen($uid); - break; - case 'getStudiengaenge': - $data = getStudiengaenge(); - break; - case 'getPruefungenStudiengang': - $studiensemester = new studiensemester(); - $data = getPruefungenStudiengang($uid, $studiensemester->getaktorNext()); - break; - case 'saveKommentar': - $data = saveKommentar(); - break; - case 'getAllFreieRaeume': - $terminId = $_REQUEST["terminId"]; - $data = getAllFreieRaeume($terminId); - break; - case 'saveRaum': - $terminId = $_REQUEST["terminId"]; - $ort_kurzbz = $_REQUEST["ort_kurzbz"]; - $data = saveRaum($terminId, $ort_kurzbz, $uid); - break; - default: - break; -} - -echo json_encode($data); - -//Funktionen - -/** - * Lädt alle Prüfungen eines Studenten zu deren LVs er angemeldet ist - * @param string $aktStudiensemester kurzbz des aktuellen Studiensemester (kann auch eine älteres sein) - * @param string $uid UID des Studenten - * @return Array - */ -function getPruefungByLv($aktStudiensemester = null, $uid = null) -{ - $lehrveranstaltungen = new lehrveranstaltung(); - $lehrveranstaltungen->load_lva_student($uid, $aktStudiensemester); - $lvIds = array(); - foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) - { - array_push($lvIds, $lvs->lehrveranstaltung_id); - } - $lehrveranstaltungen=$lvIds; - $pruefung = new pruefungCis(); - if($pruefung->getPruefungByLv($lehrveranstaltungen)) - { - $pruefungen = array(); - foreach($pruefung->lehrveranstaltungen as $key=>$lv) - { - $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); - $lehrveranstaltung = $lehrveranstaltung->cleanResult(); - $lehreinheit = new lehreinheit(); - $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); - $lehreinheiten = $lehreinheit->lehreinheiten; - $prf = new stdClass(); - $temp = new pruefungCis($lv->pruefung_id); - $temp->getTermineByPruefung($lv->pruefung_id); - for($i=0; $i < sizeof($temp->termine); $i++) - { - $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); - $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); - } - $prf->pruefung = $temp; - $prf->lehrveranstaltung = $lehrveranstaltung; - if(!empty($lehreinheiten)) - { - $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); - $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); - $prf->organisationseinheit = $oe->bezeichnung; - array_push($pruefungen, $prf); - } - } - $anmeldung = new pruefungsanmeldung(); - $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); - $anmeldungsIds = array(); - foreach($anmeldungen as $anm) - { - $a = new stdClass(); - $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; - $a->pruefungstermin_id = $anm->pruefungstermin_id; - $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; - array_push($anmeldungsIds, $a); - } - $return = new stdClass(); - $return->pruefungen = $pruefungen; - $return->anmeldungen = $anmeldungsIds; - $data['result']=$return; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Lädt alle Prüfungen die im Studiengang eines Studenten angeboten werden - * @param string $aktStudiensemester kurzbz des aktuellen Studiensemester (kann auch eine älteres sein) - * @param string $uid UID des Studenten - * @return Array - */ -function getPruefungByLvFromStudiengang($aktStudiensemester = null, $uid = null) -{ - $lehrveranstaltungen = new lehrveranstaltung(); - $lv_angemeldet = new lehrveranstaltung(); - $lv_angemeldet->load_lva_student($uid, $aktStudiensemester); - $lvIds_angemeldet = array(); - foreach($lv_angemeldet->lehrveranstaltungen as $lv) - { - array_push($lvIds_angemeldet, $lv->lehrveranstaltung_id); - } - $student = new student($uid); - $lehrveranstaltungen->load_lva($student->studiengang_kz); - $lvIds = array(); - foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) - { - array_push($lvIds, $lvs->lehrveranstaltung_id); - } - $lehrveranstaltungen=$lvIds; - $pruefung = new pruefungCis(); - if($pruefung->getPruefungByLv($lehrveranstaltungen)) - { - $pruefungen = array(); - foreach($pruefung->lehrveranstaltungen as $key=>$lv) - { - $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); - $lehrveranstaltung = $lehrveranstaltung->cleanResult(); - if(in_array($lehrveranstaltung[0]->lehrveranstaltung_id, $lvIds_angemeldet)) - { - $lehrveranstaltung[0]->angemeldet = true; - } - else - { - $lehrveranstaltung[0]->angemeldet = false; - } - $lehreinheit = new lehreinheit(); - $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); - $lehreinheiten = $lehreinheit->lehreinheiten; - if(!empty($lehreinheiten) && $lehreinheiten !== null) - { - $prf = new stdClass(); - $temp = new pruefungCis($lv->pruefung_id); - $temp->getTermineByPruefung($lv->pruefung_id); - for($i=0; $i < sizeof($temp->termine); $i++) - { - $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); - $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); - } - $prf->pruefung = $temp; - $prf->lehrveranstaltung = $lehrveranstaltung; - $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); - $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); - $prf->organisationseinheit = $oe->bezeichnung; - array_push($pruefungen, $prf); - } - } - - $anmeldung = new pruefungsanmeldung(); - $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); - $anmeldungsIds = array(); - foreach($anmeldungen as $anm) - { - $a = new stdClass(); - $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; - $a->pruefungstermin_id = $anm->pruefungstermin_id; - $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; - array_push($anmeldungsIds, $a); - } - $return = new stdClass(); - $return->pruefungen = $pruefungen; - $return->anmeldungen = $anmeldungsIds; - $data['result']=$return; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Lädt die Daten zu einer einzelnen Prüfung - * @return Array - */ -function loadPruefung() -{ - $pruefung_id=$_REQUEST["pruefung_id"]; - $pruefung = new pruefungCis(); - if($pruefung->load($pruefung_id)) - { - $temp = array(); - $pruefung->getLehrveranstaltungenByPruefung(); - $pruefung->getTermineByPruefung(); - $studiengang = new studiengang(); - if(!empty($pruefung->lehrveranstaltungen)) - { - foreach($pruefung->lehrveranstaltungen as $lv) - { - $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); - $lehrveranstaltung = $lehrveranstaltung->cleanResult(); - $studiengang->load($lehrveranstaltung[0]->studiengang_kz); - $stg = new stdClass(); - $stg->bezeichnung = $studiengang->bezeichnung; - $stg->studiengang_kz = $studiengang->studiengang_kz; - $stg->kurzbzlang = $studiengang->kurzbzlang; - $lehrveranstaltung[0]->studiengang = $stg; - $prf = new stdClass(); - $prf->lehrveranstaltung = $lehrveranstaltung[0]; - $prf->pruefung = $pruefung; - array_push($temp, $prf); - } - } - else - { - $prf = new stdClass(); - $prf->pruefung = $pruefung; - array_push($temp, $prf); - } - $data['result'] = array(); - $data['result'] = $temp; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Lädt die Termine zu einer Prüfung - * @return Array - */ -function loadTermine() -{ - $pruefung_id=$_REQUEST["pruefung_id"]; - $pruefung = new pruefungCis($pruefung_id); - if($pruefung->getTermineByPruefung($pruefung_id)) - { - $data['result'] = $pruefung->termine; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * speichert eine Prüfungsanmeldung - * @param type $aktStudiensemester kurzbz des aktuellen Studiensemesters (wird für Berechnung auf ausreichend CreditPoints benötigt) - * @param type $uid UID des Studenten - * @return Array - */ -function saveAnmeldung($aktStudiensemester = null, $uid = null) -{ - $termin = new pruefungstermin($_REQUEST["termin_id"]); - $pruefung = new pruefung(); - $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); - $studiensemester = new studiensemester(); - $stdsem = $studiensemester->getLastOrAktSemester(0); - $lv_besucht = false; - - //Defaulteinstellung für Anzahlprüfungsversuche (wird durch Addon "ktu" überschrieben) - $maxAnzahlVersuche = 0; - - //Defaulteinstellung für Code Note "unetnschuldigt ferngeblieben" (wird durch Addon "ktu" überschrieben) - $noteCode_uef = -1; - - $addon = new addon(); - foreach ($addon->aktive_addons as $a) - { - if($a === "ktu") - { - require '../../../../addons/ktu/cis/prfVerwaltung_array.php'; - switch($lehrveranstaltung->oe_kurzbz) - { - case $fakultaeten[0]["fakultaet"]: - $semCounter = $fakultaeten[0]["sem"]; - break; - case $fakultaeten[1]["fakultaet"]: - $semCounter = $fakultaeten[1]["sem"]; - break; - default: - $semCounter = 2; - break; - } - } - else - { - $semCounter = 99; - } - } - $i=0; - do - { - $lehrveranstaltung->load_lva_student($uid, $stdsem); - foreach($lehrveranstaltung->lehrveranstaltungen as $lv) - { - if($lv->lehrveranstaltung_id === $lehrveranstaltung->lehrveranstaltung_id) - { - $lv_besucht = true; - } - } - $stdsem = $studiensemester->getPreviousFrom($stdsem); - $lehrveranstaltung->lehrveranstaltungen = array(); - $i++; - } - while($i<=$semCounter && $lv_besucht === FALSE); - - if(!$lv_besucht) - { - $data['error']='true'; - $data['errormsg']='Besuch der Lehrveranstaltung liegt zu weit in der Vergangenheit.'; - return $data; - } - - $pruefung->getPruefungen($uid, NULL, $lehrveranstaltung->lehrveranstaltung_id); - $anmeldung_moeglich = true; - $anzahlPruefungen = count($pruefung->result); - foreach($pruefung->result as $prf) - { - $note = new note($prf->note); - if($note->note === $noteCode_uef) - { - $pruefungsanmeldung = new pruefungsanmeldung($prf->pruefungsanmeldung_id); - $pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id); - $p = new pruefungCis($pruefungstermin->pruefung_id); - $pruefungsfenster = new pruefungsfenster($p->pruefungsfenster_id); - $studiensemester = new studiensemester(); - $stdsem = $studiensemester->getaktorNext(); - $i=0; - while($i<2) - { - if($stdsem === $pruefungsfenster->studiensemester_kurzbz) - { - $anmeldung_moeglich = false; - } - $stdsem = $studiensemester->getPreviousFrom($stdsem); - $i++; - } - } - else - { - if($note->positiv === FALSE && $anzahlPruefungen >= $maxAnzahlVersuche) - { - $anmeldung_moeglich = false; - } - } - } - - if($anmeldung_moeglich) - { - if($termin->teilnehmer_max > $termin->getNumberOfParticipants() || $termin->teilnehmer_max == NULL) - { - $pruefung = new pruefungCis(); - $reihung = $pruefung->getLastOfReihung($_REQUEST["termin_id"]); - $anmeldung = new pruefungsanmeldung(); - $anmeldung->lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; - $anmeldung->pruefungstermin_id = $_REQUEST["termin_id"]; - $anmeldung->wuensche = $_REQUEST["bemerkung"]; - $anmeldung->uid = $uid; - $anmeldung->reihung = $reihung+1; - $anmeldung->status_kurzbz = "angemeldet"; - $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); - - $konto = new konto(); - $creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester); - if($creditpoints !== false) - { - if($creditpoints < $lehrveranstaltung->ects) - { - $data['error'] = 'true'; - $data['errormsg'] = 'Credit-Points-Guthaben ist zu gering.'; - return $data; - } - } - - //Kollisionsprüfung - $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); - foreach($anmeldungen as $temp) - { - $datum = new datum(); - if(($datum->between($termin->von, $termin->bis, $temp->von)) || ($datum->between($termin->von, $termin->bis, $temp->bis))) - { - $data['result'][$temp->pruefungstermin_id] = "true"; - $data['error'] = 'true'; - $data['errormsg'] = 'Kollision mit anderer Anmeldung.'; - } - } - if(isset($data['error']) && $data['error'] = 'true') - { - return $data; - } - } - else - { - $data['error']='true'; - $data['errormsg']='Keine freien Plätze vorhanden.'; - return $data; - } - } - else - { - $data['error']='true'; - $data['errormsg']='Anmeldung auf Grund von Sperre nicht möglich.'; - return $data; - } - if($anmeldung->save(true)) - { - $to = $uid."@".DOMAIN; - $from = "noreply@".DOMAIN; - $subject = "Anmeldung zur Prüfung"; - $mail = new mail($to, $from, $subject, "Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen."); - - $student = new student($uid); - $datum = new datum(); - $pruefung = new pruefungCis($termin->pruefung_id); - $lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id); - - $html = "StudentIn ".$student->vorname." ".$student->nachname." hat sich zur Prüfung ".$lv->bezeichnung." am ".$datum->formatDatum($termin->von, "m.d.Y")." von ".$datum->formatDatum($termin->von,"h:m")." Uhr bis ".$datum->formatDatum($termin->bis,"h:m")." Uhr angemeldet."; - $mail->setHTMLContent($html); - $mail->send(); - - $data['result'] = "Anmeldung erfolgreich!"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$anmeldung->errormsg; - } - return $data; -} - -/** - * Lädt alle vorhandenen Prüfungen - * @param type $aktStudiensemester kurzbz des Studiensemesters (Filter nach Studiensemester) - * @param type $uid UID eines Studenten - * @return Array - */ -function getAllPruefungen($aktStudiensemester = null, $uid = null) -{ - $pruefung = new pruefungCis(); - if($pruefung->getAll()) - { - $pruefungen = array(); - foreach($pruefung->lehrveranstaltungen as $lv) - { - $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); - $lehrveranstaltung = $lehrveranstaltung->cleanResult(); - $lehreinheit = new lehreinheit(); - $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); - $lehreinheiten = $lehreinheit->lehreinheiten; - $prf = new stdClass(); - $temp = new pruefungCis($lv->pruefung_id); - $temp->getTermineByPruefung($lv->pruefung_id); - for($i=0; $i < sizeof($temp->termine); $i++) - { - $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); - $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); - } - $prf->pruefung = $temp; - $prf->lehrveranstaltung = $lehrveranstaltung; - if(!empty($lehreinheiten)) - { - $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); - $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); - $prf->organisationseinheit = $oe->bezeichnung; - array_push($pruefungen, $prf); - } - } - - $anmeldung = new pruefungsanmeldung(); - $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); - $anmeldungsIds = array(); - foreach($anmeldungen as $anm) - { - $a = new stdClass(); - $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; - $a->pruefungstermin_id = $anm->pruefungstermin_id; - $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; - array_push($anmeldungsIds, $a); - } - $return = new stdClass(); - $return->pruefungen = $pruefungen; - $return->anmeldungen = $anmeldungsIds; - $data['result']=$return; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Storniert eine Prüfungsanmeldung - * @param type $uid UID eines Studenten - * @return Array - */ -function stornoAnmeldung($uid = null) -{ - $pruefungsanmeldung_id=$_REQUEST['pruefungsanmeldung_id']; - $pruefungsanmeldung = new pruefungsanmeldung(); - if($pruefungsanmeldung->delete($pruefungsanmeldung_id, $uid)) - { - $data['result']='Anmeldung erfolgreich gelöscht.'; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - - - -/** - * Lädt alle Anmeldungen zu einem Prüfungstermin - * @return Array - */ -function getAnmeldungenTermin() -{ - $lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; - $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; - $pruefungstermin = new pruefungstermin($pruefungstermin_id); - $pruefungsanmeldung = new pruefungsanmeldung(); - $pruefungstermin->anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id); - foreach($pruefungstermin->anmeldungen as $a) - { - $student = new student($a->uid); - $temp = new stdClass(); - $temp->vorname = $student->vorname; - $temp->nachname = $student->nachname; - $temp->uid = $student->uid; - $a->student = $temp; - } - if(!empty($pruefungstermin->anmeldungen)) - { - $data['result']=$pruefungstermin; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - if($pruefungsanmeldung->errormsg !== null) - { - $data['errormsg']=$pruefungsanmeldung->errormsg; - } - else - { - $data['errormsg']= 'Keine Anmeldungen vorhanden'; - } - } - return $data; -} - -/** - * speichert die Reihung der Studenten eines Prüfungstermines - * @return Array - */ -function saveReihung() -{ - $anmeldung = new pruefungsanmeldung(); - $reihung = $_REQUEST["reihung"]; - if($anmeldung->saveReihung($reihung)) - { - $data['result']=true; - $data['error']='false'; - $data['errormsg']=$anmeldung->errormsg; - } - else - { - $data['error']='true'; - $data['errormsg']=$anmeldung->errormsg; - } - return $data; -} - -/** - * Ändert den Status einer Prüfungsanmeldung auf "bestaetigt" - * @return Array - */ -function anmeldungBestaetigen($uid) -{ - $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; - $status = "bestaetigt"; - $anmeldung = new pruefungsanmeldung(); - if($anmeldung->changeState($pruefungsanmeldung_id, $status, $uid)) - { - $anmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); - $termin = new pruefungstermin($anmeldung->pruefungstermin_id); - $lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id); - $ma = new mitarbeiter($uid); - $datum = new datum(); - $ort = new ort($termin->ort_kurzbz); - - $to = $anmeldung->uid."@".DOMAIN; - $from = "noreply@".DOMAIN; - $subject = "Anmeldungsbestätigung zur Prüfung"; - $html = "Ihre Anmeldung zur Prüfung wurde von ".$ma->vorname." ".$ma->nachname." bestätigt.
      "; - $html .= "
      "; - $html .= "Prüfung: ".$lv->bezeichnung."
      "; - $html .= "Termin: ".$datum->formatDatum($termin->von, "d.m.Y")." um ".$datum->formatDatum($termin->von, "h:m")."
      "; - $html .= "Ort: ".$ort->bezeichnung."
      "; - $html .= "
      "; - $html .= "Link zur Anmeldung
      "; - $html .= "
      "; - - $mail = new mail($to, $from, $subject,"Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen."); - $mail->setHTMLContent($html); - $mail->send(); - - $data['result']=true; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$anmeldung->errormsg; - } - return $data; -} - -/** - * Lädt alle Studiengänge - * @return Array - */ -function getStudiengaenge() -{ - $studiengang = new studiengang(); - if($studiengang->getAll("bezeichnung", true)) - { - $result = array(); - foreach($studiengang->result as $stg) - { - $studiengangTemp = new StdClass(); - $studiengangTemp->studiengang_kz = $stg->studiengang_kz; - $studiengangTemp->bezeichnung = $stg->bezeichnung; - $studiengangTemp->kurzbz = $stg->kurzbz; - $studiengangTemp->typ = $stg->typ; - array_push($result, $studiengangTemp); - } - $data['result']=$result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$studiengang->errormsg; - } - return $data; -} - -/** - * Lädt alle Prüfungen eines Studienganges - * @return Array - */ -function getPruefungenStudiengang($uid, $aktStudiensemester) -{ - $lehrveranstaltung = new lehrveranstaltung(); - $lehrveranstaltung->load_lva($_REQUEST["studiengang_kz"], null, null, true, true); - $result = array(); - foreach($lehrveranstaltung->lehrveranstaltungen as $lv) - { - $pruefung = new pruefungCis(); - $pruefung->getPruefungByLv($lv->lehrveranstaltung_id); - if((!empty($pruefung->lehrveranstaltungen))) - { - $lv->pruefung = array(); - foreach ($pruefung->lehrveranstaltungen as $key=>$prf) - { - $pruefung->load($prf->pruefung_id); - if($pruefung->storniert === true) - { - unset($pruefung->lehrveranstaltungen[$key]); - } - else - { - $pruefung->getTermineByPruefung(); - array_push($lv->pruefung, $pruefung); - } - } - array_push($result, $lv); - } - } - $data['result']=$result; - $data['error']='false'; - $data['errormsg']=''; - return $data; -} - -/** - * - * @return typespeichert ein Kommentar zu einer Prüfungsanmeldung - */ -function saveKommentar() -{ - $kommentar = $_REQUEST["kommentar"]; - $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; - - $pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); - $pruefungsanmeldung->kommentar = $kommentar; - if($pruefungsanmeldung->save()) - { - $data['result']=true; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungsanmeldung->errormsg; - } - return $data; -} - -/** - * liefert alle freien Räume für einen Prüfungstermin - */ -function getAllFreieRaeume($terminId) -{ - $pruefungstermin = new pruefungstermin(); - $pruefungstermin->load($terminId); - $ort = new ort(); - $datum_von = explode(" ", $pruefungstermin->von); - $datum_bis = explode(" ", $pruefungstermin->bis); - $teilnehmer = $pruefungstermin->getNumberOfParticipants(); - $teilnehmer = $teilnehmer !== false ? $teilnehmer : 0; - $pruefungstermin->getAll($pruefungstermin->von, $pruefungstermin->bis, TRUE); - - if($ort->search($datum_von[0], $datum_von[1], $datum_bis[1], null, $teilnehmer, true)) - { - foreach($pruefungstermin->result as $termin) - { - if($termin->pruefungstermin_id != $pruefungstermin->pruefungstermin_id && !is_null($termin->ort_kurzbz)) - { - $o = new ort($termin->ort_kurzbz); - $o->ort_kurzbz .= " (Sammelklausur)"; - array_push($ort->result, $o); - } - } - - usort($ort->result, "compareRaeume"); - $data['result']=$ort->result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$ort->errormsg; - } - return $data; -} - -/** - * vergleicht die Kurzbezeichnungen von 2 Räumen - * @param $a Ort-Objekt - * @param $b Ort-Objekt - * @return $a < $b Wert < 0; $a > $b Wert > 0; $a = $b Wert 0 - */ -function compareRaeume($a, $b) -{ - return strcmp($a->ort_kurzbz, $b->ort_kurzbz); -} - -function saveRaum($terminId, $ort_kurzbz, $uid) -{ - $pruefungstermin = new pruefungstermin($terminId); - $stunde = new stunde(); - $datum_von = explode(" ", $pruefungstermin->von); - $datum_bis = explode(" ", $pruefungstermin->bis); - $stunden = $stunde->getStunden($datum_von[1], $datum_bis[1]); - $reservierung = new reservierung(); - $reserviert = false; - foreach($stunden as $h) - { - if($reservierung->isReserviert($ort_kurzbz, $datum_von[0], $h)) - $reserviert = true; - } - if(!$reserviert || $pruefungstermin->sammelklausur == TRUE) - { - $pruefung = new pruefungCis($pruefungstermin->pruefung_id); - $mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid); - if($ort_kurzbz === "buero") - { - $pruefungstermin->ort_kurzbz = $mitarbeiter->ort_kurzbz; - if($pruefungstermin->save(false)) - { - $data['result']="reserviert"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungstermin->errormsg; - } - } - else - { - $reservierung->studiengang_kz = "0"; - $reservierung->ort_kurzbz = $ort_kurzbz; - $reservierung->uid = $pruefung->mitarbeiter_uid; - $reservierung->datum = $datum_von[0]; - $reservierung->titel = $pruefung->titel; - if(strlen($pruefung->titel) > 10) - { - $reservierung->titel = "Prüfung"; - } - $reservierung->beschreibung = "Prüfung"; - $reservierung->insertamum = date('Y-m-d G:i:s'); - $reservierung->insertvon = $uid; - $reservierungError = false; - - foreach($stunden as $h) - { - $reservierung->stunde = $h; - if(!$reservierung->save(true)) - { - $reservierungError = true; - } - } - if(!$reservierungError) - { - $pruefungstermin->ort_kurzbz = $reservierung->ort_kurzbz; - if($pruefungstermin->save(false)) - { - $data['result']="reserviert"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungstermin->errormsg; - } - } - else - { - $data['error']='true'; - $data['errormsg']=$reservierung->errormsg; - } - } - } - else - { - $data['error']='true'; - $data['errormsg']="Reservierung nicht möglich."; - } - return $data; -} +getBerechtigungen($uid); + +$studiensemester = new studiensemester(); +$aktStudiensemester = $studiensemester->getaktorNext(); + +$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; + +switch($method) +{ + case 'getPruefungByLv': + $studiensemester = isset($_REQUEST['studiensemester']) ? $_REQUEST['studiensemester'] : NULL; + $data = getPruefungByLv($studiensemester, $uid); + break; + case 'getPruefungByLvFromStudiengang': + $studiensemester = isset($_REQUEST['studiensemester']) ? $_REQUEST['studiensemester'] : NULL; + $data = getPruefungByLvFromStudiengang($studiensemester, $uid); + break; + case 'loadPruefung': + $data = loadPruefung(); + break; + case 'loadTermine': + $data = loadTermine(); + break; + case 'saveAnmeldung': + $student_uid = filter_input(INPUT_POST,"uid"); + if($student_uid !== "" && !is_null($student_uid)) + { + $uid = $student_uid; + } + + if($student_uid === "") + { + $data['result']=""; + $data['error']='true'; + $data['errormsg']='Studenten UID fehlt.'; + break; + } + + $data = saveAnmeldung($aktStudiensemester, $uid); + break; + case 'getAllPruefungen': + $data = getAllPruefungen($aktStudiensemester, $uid); + break; + case 'stornoAnmeldung': + $data = stornoAnmeldung($uid); + break; + case 'getAnmeldungenTermin': + $data = getAnmeldungenTermin(); + break; + case 'saveReihung': + $data = saveReihung(); + break; + case 'anmeldungBestaetigen': + $data = anmeldungBestaetigen($uid); + break; + case 'getStudiengaenge': + $data = getStudiengaenge(); + break; + case 'getPruefungenStudiengang': + $studiensemester = filter_input(INPUT_POST,"studiensemester"); + $data = getPruefungenStudiengang($uid, $studiensemester); + break; + case 'saveKommentar': + $data = saveKommentar(); + break; + case 'getAllFreieRaeume': + $terminId = $_REQUEST["terminId"]; + $data = getAllFreieRaeume($terminId); + break; + case 'saveRaum': + $terminId = $_REQUEST["terminId"]; + $ort_kurzbz = $_REQUEST["ort_kurzbz"]; + $data = saveRaum($terminId, $ort_kurzbz, $uid); + break; + default: + break; +} + +echo json_encode($data); + +//Funktionen + +/** + * Lädt alle Prüfungen eines Studenten zu deren LVs er angemeldet ist + * @param string $aktStudiensemester kurzbz des aktuellen Studiensemester (kann auch eine älteres sein) + * @param string $uid UID des Studenten + * @return Array + */ +function getPruefungByLv($aktStudiensemester = null, $uid = null) +{ + $lehrveranstaltungen = new lehrveranstaltung(); + $lehrveranstaltungen->load_lva_student($uid, $aktStudiensemester); + $lvIds = array(); + foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) + { + array_push($lvIds, $lvs->lehrveranstaltung_id); + } + $lehrveranstaltungen=$lvIds; + $pruefung = new pruefungCis(); + if($pruefung->getPruefungByLv($lehrveranstaltungen)) + { + $pruefungen = array(); + foreach($pruefung->lehrveranstaltungen as $key=>$lv) + { + $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); + $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + $lehreinheit = new lehreinheit(); + $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); + $lehreinheiten = $lehreinheit->lehreinheiten; + $prf = new stdClass(); + $temp = new pruefungCis($lv->pruefung_id); + $temp->getTermineByPruefung($lv->pruefung_id); + for($i=0; $i < sizeof($temp->termine); $i++) + { + $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); + $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); + } + $prf->pruefung = $temp; + $prf->lehrveranstaltung = $lehrveranstaltung; + if(!empty($lehreinheiten)) + { + $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); + $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); + $prf->organisationseinheit = $oe->bezeichnung; + array_push($pruefungen, $prf); + } + } + $anmeldung = new pruefungsanmeldung(); + $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); + $anmeldungsIds = array(); + foreach($anmeldungen as $anm) + { + $a = new stdClass(); + $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; + $a->pruefungstermin_id = $anm->pruefungstermin_id; + $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; + array_push($anmeldungsIds, $a); + } + $return = new stdClass(); + $return->pruefungen = $pruefungen; + $return->anmeldungen = $anmeldungsIds; + $data['result']=$return; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungen die im Studiengang eines Studenten angeboten werden + * @param string $aktStudiensemester kurzbz des aktuellen Studiensemester (kann auch eine älteres sein) + * @param string $uid UID des Studenten + * @return Array + */ +function getPruefungByLvFromStudiengang($aktStudiensemester = null, $uid = null) +{ + $lehrveranstaltungen = new lehrveranstaltung(); + $lv_angemeldet = new lehrveranstaltung(); + $lv_angemeldet->load_lva_student($uid, $aktStudiensemester); + $lvIds_angemeldet = array(); + foreach($lv_angemeldet->lehrveranstaltungen as $lv) + { + array_push($lvIds_angemeldet, $lv->lehrveranstaltung_id); + } + $student = new student($uid); + $lehrveranstaltungen->load_lva($student->studiengang_kz); + $lvIds = array(); + foreach($lehrveranstaltungen->lehrveranstaltungen as $lvs) + { + array_push($lvIds, $lvs->lehrveranstaltung_id); + } + $lehrveranstaltungen=$lvIds; + $pruefung = new pruefungCis(); + if($pruefung->getPruefungByLv($lehrveranstaltungen)) + { + $pruefungen = array(); + foreach($pruefung->lehrveranstaltungen as $key=>$lv) + { + $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); + $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + if(in_array($lehrveranstaltung[0]->lehrveranstaltung_id, $lvIds_angemeldet)) + { + $lehrveranstaltung[0]->angemeldet = true; + } + else + { + $lehrveranstaltung[0]->angemeldet = false; + } + $lehreinheit = new lehreinheit(); + $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); + $lehreinheiten = $lehreinheit->lehreinheiten; + if(!empty($lehreinheiten) && $lehreinheiten !== null) + { + $prf = new stdClass(); + $temp = new pruefungCis($lv->pruefung_id); + $temp->getTermineByPruefung($lv->pruefung_id); + for($i=0; $i < sizeof($temp->termine); $i++) + { + $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); + $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); + } + $prf->pruefung = $temp; + $prf->lehrveranstaltung = $lehrveranstaltung; + $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); + $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); + $prf->organisationseinheit = $oe->bezeichnung; + array_push($pruefungen, $prf); + } + } + + $anmeldung = new pruefungsanmeldung(); + $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); + $anmeldungsIds = array(); + foreach($anmeldungen as $anm) + { + $a = new stdClass(); + $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; + $a->pruefungstermin_id = $anm->pruefungstermin_id; + $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; + array_push($anmeldungsIds, $a); + } + $return = new stdClass(); + $return->pruefungen = $pruefungen; + $return->anmeldungen = $anmeldungsIds; + $data['result']=$return; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt die Daten zu einer einzelnen Prüfung + * @return Array + */ +function loadPruefung() +{ + $pruefung_id=$_REQUEST["pruefung_id"]; + $pruefung = new pruefungCis(); + if($pruefung->load($pruefung_id)) + { + $temp = array(); + $pruefung->getLehrveranstaltungenByPruefung(); + $pruefung->getTermineByPruefung(); + $studiengang = new studiengang(); + if(!empty($pruefung->lehrveranstaltungen)) + { + foreach($pruefung->lehrveranstaltungen as $lv) + { + $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); + $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + $studiengang->load($lehrveranstaltung[0]->studiengang_kz); + $stg = new stdClass(); + $stg->bezeichnung = $studiengang->bezeichnung; + $stg->studiengang_kz = $studiengang->studiengang_kz; + $stg->kurzbzlang = $studiengang->kurzbzlang; + $lehrveranstaltung[0]->studiengang = $stg; + $prf = new stdClass(); + $prf->lehrveranstaltung = $lehrveranstaltung[0]; + $prf->pruefung = $pruefung; + array_push($temp, $prf); + } + } + else + { + $prf = new stdClass(); + $prf->pruefung = $pruefung; + array_push($temp, $prf); + } + $data['result'] = array(); + $data['result'] = $temp; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt die Termine zu einer Prüfung + * @return Array + */ +function loadTermine() +{ + $pruefung_id=$_REQUEST["pruefung_id"]; + $pruefung = new pruefungCis($pruefung_id); + if($pruefung->getTermineByPruefung($pruefung_id)) + { + $data['result'] = $pruefung->termine; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * speichert eine Prüfungsanmeldung + * @param type $aktStudiensemester kurzbz des aktuellen Studiensemesters (wird für Berechnung auf ausreichend CreditPoints benötigt) + * @param type $uid UID des Studenten + * @return Array + */ +function saveAnmeldung($aktStudiensemester = null, $uid = null) +{ + $termin = new pruefungstermin($_REQUEST["termin_id"]); + $pruefung = new pruefung(); + $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); + $studiensemester = new studiensemester(); + $stdsem = $studiensemester->getLastOrAktSemester(0); + $lv_besucht = false; + + //Defaulteinstellung für Anzahlprüfungsversuche (wird durch Addon "ktu" überschrieben) + $maxAnzahlVersuche = 0; + + //Defaulteinstellung für Code Note "unetnschuldigt ferngeblieben" (wird durch Addon "ktu" überschrieben) + $noteCode_uef = -1; + + $addon = new addon(); + foreach ($addon->aktive_addons as $a) + { + if($a === "ktu") + { + require '../../../../addons/ktu/cis/prfVerwaltung_array.php'; + switch($lehrveranstaltung->oe_kurzbz) + { + case $fakultaeten[0]["fakultaet"]: + $semCounter = $fakultaeten[0]["sem"]; + break; + case $fakultaeten[1]["fakultaet"]: + $semCounter = $fakultaeten[1]["sem"]; + break; + default: + $semCounter = 2; + break; + } + } + else + { + $semCounter = 99; + } + } + $i=0; + do + { + $lehrveranstaltung->load_lva_student($uid, $stdsem); + foreach($lehrveranstaltung->lehrveranstaltungen as $lv) + { + if($lv->lehrveranstaltung_id === $lehrveranstaltung->lehrveranstaltung_id) + { + $lv_besucht = true; + } + } + $stdsem = $studiensemester->getPreviousFrom($stdsem); + $lehrveranstaltung->lehrveranstaltungen = array(); + $i++; + } + while($i<=$semCounter && $lv_besucht === FALSE); + + if(!$lv_besucht) + { + $data['error']='true'; + $data['errormsg']='Besuch der Lehrveranstaltung liegt zu weit in der Vergangenheit.'; + return $data; + } + + $pruefung->getPruefungen($uid, NULL, $lehrveranstaltung->lehrveranstaltung_id); + $anmeldung_moeglich = true; + $anzahlPruefungen = count($pruefung->result); + foreach($pruefung->result as $prf) + { + $note = new note($prf->note); + if($note->note === $noteCode_uef) + { + $pruefungsanmeldung = new pruefungsanmeldung($prf->pruefungsanmeldung_id); + $pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id); + $p = new pruefungCis($pruefungstermin->pruefung_id); + $pruefungsfenster = new pruefungsfenster($p->pruefungsfenster_id); + $studiensemester = new studiensemester(); + $stdsem = $studiensemester->getaktorNext(); + $i=0; + while($i<2) + { + if($stdsem === $pruefungsfenster->studiensemester_kurzbz) + { + $anmeldung_moeglich = false; + } + $stdsem = $studiensemester->getPreviousFrom($stdsem); + $i++; + } + } + else + { + if($note->positiv === FALSE && $anzahlPruefungen >= $maxAnzahlVersuche) + { + $anmeldung_moeglich = false; + } + } + } + + if($anmeldung_moeglich) + { + if($termin->teilnehmer_max > $termin->getNumberOfParticipants() || $termin->teilnehmer_max == NULL) + { + $pruefung = new pruefungCis(); + $reihung = $pruefung->getLastOfReihung($_REQUEST["termin_id"]); + $anmeldung = new pruefungsanmeldung(); + $anmeldung->lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; + $anmeldung->pruefungstermin_id = $_REQUEST["termin_id"]; + $anmeldung->wuensche = $_REQUEST["bemerkung"]; + $anmeldung->uid = $uid; + $anmeldung->reihung = $reihung+1; + $anmeldung->status_kurzbz = "angemeldet"; + $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); + + $konto = new konto(); + $creditpoints = $konto->getCreditPoints($uid, $aktStudiensemester); + if($creditpoints !== false) + { + if($creditpoints < $lehrveranstaltung->ects) + { + $data['error'] = 'true'; + $data['errormsg'] = 'Credit-Points-Guthaben ist zu gering.'; + return $data; + } + } + + //Kollisionsprüfung + $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); + foreach($anmeldungen as $temp) + { + $datum = new datum(); + if(($datum->between($termin->von, $termin->bis, $temp->von)) || ($datum->between($termin->von, $termin->bis, $temp->bis))) + { + $data['result'][$temp->pruefungstermin_id] = "true"; + $data['error'] = 'true'; + $data['errormsg'] = 'Kollision mit anderer Anmeldung.'; + } + } + if(isset($data['error']) && $data['error'] = 'true') + { + return $data; + } + } + else + { + $data['error']='true'; + $data['errormsg']='Keine freien Plätze vorhanden.'; + return $data; + } + } + else + { + $data['error']='true'; + $data['errormsg']='Anmeldung auf Grund von Sperre nicht möglich.'; + return $data; + } + if($anmeldung->save(true)) + { + $pruefung = new pruefungCis($termin->pruefung_id); + if(defined('CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG') && (CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG !== "")) + $to = CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG."@".DOMAIN; + else + $to = $pruefung->mitarbeiter_uid."@".DOMAIN; + $from = "noreply@".DOMAIN; + $subject = "Anmeldung zur Prüfung"; + $mail = new mail($to, $from, $subject, "Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen."); + + $student = new student($uid); + $datum = new datum(); + + $lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id); + + $html = "StudentIn ".$student->vorname." ".$student->nachname." hat sich zur Prüfung ".$lv->bezeichnung." am ".$datum->formatDatum($termin->von, "m.d.Y")." von ".$datum->formatDatum($termin->von,"h:i")." Uhr bis ".$datum->formatDatum($termin->bis,"h:i")." Uhr angemeldet."; + $mail->setHTMLContent($html); + $mail->send(); + + $data['result'] = "Anmeldung erfolgreich!"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$anmeldung->errormsg; + } + return $data; +} + +/** + * Lädt alle vorhandenen Prüfungen + * @param type $aktStudiensemester kurzbz des Studiensemesters (Filter nach Studiensemester) + * @param type $uid UID eines Studenten + * @return Array + */ +function getAllPruefungen($aktStudiensemester = null, $uid = null) +{ + $pruefung = new pruefungCis(); + if($pruefung->getAll()) + { + $pruefungen = array(); + foreach($pruefung->lehrveranstaltungen as $lv) + { + $lehrveranstaltung = new lehrveranstaltung($lv->lehrveranstaltung_id); + $lehrveranstaltung = $lehrveranstaltung->cleanResult(); + $lehreinheit = new lehreinheit(); + $lehreinheit->load_lehreinheiten($lehrveranstaltung[0]->lehrveranstaltung_id, $aktStudiensemester); + $lehreinheiten = $lehreinheit->lehreinheiten; + $prf = new stdClass(); + $temp = new pruefungCis($lv->pruefung_id); + $temp->getTermineByPruefung($lv->pruefung_id); + for($i=0; $i < sizeof($temp->termine); $i++) + { + $termin = new pruefungstermin($temp->termine[$i]->pruefungstermin_id); + $temp->termine[$i]->teilnehmer = $termin->getNumberOfParticipants(); + } + $prf->pruefung = $temp; + $prf->lehrveranstaltung = $lehrveranstaltung; + if(!empty($lehreinheiten)) + { + $lveranstaltung = new lehrveranstaltung($lehreinheiten[0]->lehrfach_id); + $oe = new organisationseinheit($lveranstaltung->oe_kurzbz); + $prf->organisationseinheit = $oe->bezeichnung; + array_push($pruefungen, $prf); + } + } + + $anmeldung = new pruefungsanmeldung(); + $anmeldungen = $anmeldung->getAnmeldungenByStudent($uid, $aktStudiensemester); + $anmeldungsIds = array(); + foreach($anmeldungen as $anm) + { + $a = new stdClass(); + $a->pruefungsanmeldung_id = $anm->pruefungsanmeldung_id; + $a->pruefungstermin_id = $anm->pruefungstermin_id; + $a->lehrveranstaltung_id = $anm->lehrveranstaltung_id; + array_push($anmeldungsIds, $a); + } + $return = new stdClass(); + $return->pruefungen = $pruefungen; + $return->anmeldungen = $anmeldungsIds; + $data['result']=$return; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Storniert eine Prüfungsanmeldung + * @param type $uid UID eines Studenten + * @return Array + */ +function stornoAnmeldung($uid = null) +{ + $pruefungsanmeldung_id=$_REQUEST['pruefungsanmeldung_id']; + $pruefungsanmeldung = new pruefungsanmeldung(); + if($pruefungsanmeldung->delete($pruefungsanmeldung_id, $uid)) + { + $data['result']='Anmeldung erfolgreich gelöscht.'; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + + + +/** + * Lädt alle Anmeldungen zu einem Prüfungstermin + * @return Array + */ +function getAnmeldungenTermin() +{ + $lehrveranstaltung_id = $_REQUEST["lehrveranstaltung_id"]; + $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; + $pruefungstermin = new pruefungstermin($pruefungstermin_id); + $pruefungsanmeldung = new pruefungsanmeldung(); + $pruefungstermin->anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id); + foreach($pruefungstermin->anmeldungen as $a) + { + $student = new student($a->uid); + $temp = new stdClass(); + $temp->vorname = $student->vorname; + $temp->nachname = $student->nachname; + $temp->uid = $student->uid; + $a->student = $temp; + } + if(!empty($pruefungstermin->anmeldungen)) + { + $data['result']=$pruefungstermin; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + if($pruefungsanmeldung->errormsg !== null) + { + $data['errormsg']=$pruefungsanmeldung->errormsg; + } + else + { + $data['errormsg']= 'Keine Anmeldungen vorhanden'; + } + } + return $data; +} + +/** + * speichert die Reihung der Studenten eines Prüfungstermines + * @return Array + */ +function saveReihung() +{ + $anmeldung = new pruefungsanmeldung(); + $reihung = $_REQUEST["reihung"]; + if($anmeldung->saveReihung($reihung)) + { + $data['result']=true; + $data['error']='false'; + $data['errormsg']=$anmeldung->errormsg; + } + else + { + $data['error']='true'; + $data['errormsg']=$anmeldung->errormsg; + } + return $data; +} + +/** + * Ändert den Status einer Prüfungsanmeldung auf "bestaetigt" + * @return Array + */ +function anmeldungBestaetigen($uid) +{ + $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; + $status = "bestaetigt"; + $anmeldung = new pruefungsanmeldung(); + if($anmeldung->changeState($pruefungsanmeldung_id, $status, $uid)) + { + $anmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); + $termin = new pruefungstermin($anmeldung->pruefungstermin_id); + $lv = new lehrveranstaltung($anmeldung->lehrveranstaltung_id); + $ma = new mitarbeiter($uid); + $datum = new datum(); + $ort = new ort($termin->ort_kurzbz); + $pruefung = new pruefungCis($termin->pruefung_id); + + $to = $anmeldung->uid."@".DOMAIN; + $from = "noreply@".DOMAIN; + $subject = "Anmeldungsbestätigung zur Prüfung"; + $html = "Ihre Anmeldung zur Prüfung wurde von ".$ma->vorname." ".$ma->nachname." bestätigt.
      "; + $html .= "
      "; + $html .= "Prüfung: ".$lv->bezeichnung."
      "; + if($pruefung->einzeln) + { + $date = $datum->formatDatum($termin->von, "Y-m-d h:i:s"); + $date = strtotime($date); + $date = $date+(60*$pruefung->pruefungsintervall*($anmeldung->reihung-1)); + $von = date("h:i",$date); + $html .= "Termin: ".$datum->formatDatum($termin->von, "d.m.Y")." um ".$von."
      "; + $html .= "Dauer: ".$pruefung->pruefungsintervall." Minuten
      "; + } + else + $html .= "Termin: ".$datum->formatDatum($termin->von, "d.m.Y")." um ".$datum->formatDatum($termin->von, "h:i")."
      "; + $html .= "Ort: ".$ort->bezeichnung."
      "; + $html .= "
      "; + $html .= "Link zur Anmeldung
      "; + $html .= "
      "; + + $mail = new mail($to, $from, $subject,"Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen."); + $mail->setHTMLContent($html); + $mail->send(); + + $data['result']=true; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$anmeldung->errormsg; + } + return $data; +} + +/** + * Lädt alle Studiengänge + * @return Array + */ +function getStudiengaenge() +{ + $studiengang = new studiengang(); + if($studiengang->getAll("bezeichnung", true)) + { + $result = array(); + foreach($studiengang->result as $stg) + { + $studiengangTemp = new StdClass(); + $studiengangTemp->studiengang_kz = $stg->studiengang_kz; + $studiengangTemp->bezeichnung = $stg->bezeichnung; + $studiengangTemp->kurzbz = $stg->kurzbz; + $studiengangTemp->typ = $stg->typ; + array_push($result, $studiengangTemp); + } + $data['result']=$result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$studiengang->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungen eines Studienganges + * @return Array + */ +function getPruefungenStudiengang($uid, $aktStudiensemester) +{ + $lehrveranstaltung = new lehrveranstaltung(); + $lehrveranstaltung->load_lva($_REQUEST["studiengang_kz"], null, null, true, true); + $result = array(); + foreach($lehrveranstaltung->lehrveranstaltungen as $lv) + { + $pruefung = new pruefungCis(); + $pruefung->getPruefungByLv($lv->lehrveranstaltung_id); + if((!empty($pruefung->lehrveranstaltungen))) + { + $lv->pruefung = array(); + foreach ($pruefung->lehrveranstaltungen as $key=>$prf) + { + $pruefung->load($prf->pruefung_id); +// var_dump($aktStudiensemester); +// var_dump($pruefung->studiensemester_kurzbz); + if(($pruefung->storniert === true)) + { + unset($pruefung->lehrveranstaltungen[$key]); + } + else + { + $pruefung->getTermineByPruefung(); + array_push($lv->pruefung, $pruefung); + } + } + if($pruefung->studiensemester_kurzbz === $aktStudiensemester) + array_push($result, $lv); + } + } + $data['result']=$result; + $data['error']='false'; + $data['errormsg']=''; + return $data; +} + +/** + * + * @return typespeichert ein Kommentar zu einer Prüfungsanmeldung + */ +function saveKommentar() +{ + $kommentar = $_REQUEST["kommentar"]; + $pruefungsanmeldung_id = $_REQUEST["pruefungsanmeldung_id"]; + + $pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); + $pruefungsanmeldung->kommentar = $kommentar; + if($pruefungsanmeldung->save()) + { + $data['result']=true; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungsanmeldung->errormsg; + } + return $data; +} + +/** + * liefert alle freien Räume für einen Prüfungstermin + */ +function getAllFreieRaeume($terminId) +{ + $pruefungstermin = new pruefungstermin(); + $pruefungstermin->load($terminId); + $ort = new ort(); + $datum_von = explode(" ", $pruefungstermin->von); + $datum_bis = explode(" ", $pruefungstermin->bis); + $teilnehmer = $pruefungstermin->getNumberOfParticipants(); + $teilnehmer = $teilnehmer !== false ? $teilnehmer : 0; + $pruefungstermin->getAll($pruefungstermin->von, $pruefungstermin->bis, TRUE); + + if($ort->search($datum_von[0], $datum_von[1], $datum_bis[1], null, $teilnehmer, true)) + { + foreach($pruefungstermin->result as $termin) + { + if($termin->pruefungstermin_id != $pruefungstermin->pruefungstermin_id && !is_null($termin->ort_kurzbz)) + { + $o = new ort($termin->ort_kurzbz); + $o->ort_kurzbz .= " (Sammelklausur)"; + array_push($ort->result, $o); + } + } + + usort($ort->result, "compareRaeume"); + $data['result']=$ort->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$ort->errormsg; + } + return $data; +} + +/** + * vergleicht die Kurzbezeichnungen von 2 Räumen + * @param $a Ort-Objekt + * @param $b Ort-Objekt + * @return $a < $b Wert < 0; $a > $b Wert > 0; $a = $b Wert 0 + */ +function compareRaeume($a, $b) +{ + return strcmp($a->ort_kurzbz, $b->ort_kurzbz); +} + +function saveRaum($terminId, $ort_kurzbz, $uid) +{ + $pruefungstermin = new pruefungstermin($terminId); + $stunde = new stunde(); + $datum_von = explode(" ", $pruefungstermin->von); + $datum_bis = explode(" ", $pruefungstermin->bis); + $stunden = $stunde->getStunden($datum_von[1], $datum_bis[1]); + $reservierung = new reservierung(); + $reserviert = false; + foreach($stunden as $h) + { + if($reservierung->isReserviert($ort_kurzbz, $datum_von[0], $h)) + $reserviert = true; + } + if(!$reserviert || $pruefungstermin->sammelklausur == TRUE) + { + $pruefung = new pruefungCis($pruefungstermin->pruefung_id); + $mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid); + if($ort_kurzbz === "buero") + { + $pruefungstermin->ort_kurzbz = $mitarbeiter->ort_kurzbz; + if($pruefungstermin->save(false)) + { + $data['result']="reserviert"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungstermin->errormsg; + } + } + else + { + $reservierung->studiengang_kz = "0"; + $reservierung->ort_kurzbz = $ort_kurzbz; + $reservierung->uid = $pruefung->mitarbeiter_uid; + $reservierung->datum = $datum_von[0]; + $reservierung->titel = $pruefung->titel; + if(strlen($pruefung->titel) > 10) + { + $reservierung->titel = "Prüfung"; + } + $reservierung->beschreibung = "Prüfung"; + $reservierung->insertamum = date('Y-m-d G:i:s'); + $reservierung->insertvon = $uid; + $reservierungError = false; + + foreach($stunden as $h) + { + $reservierung->stunde = $h; + if(!$reservierung->save(true)) + { + $reservierungError = true; + } + } + if(!$reservierungError) + { + $pruefungstermin->ort_kurzbz = $reservierung->ort_kurzbz; + if($pruefungstermin->save(false)) + { + $data['result']="reserviert"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungstermin->errormsg; + } + } + else + { + $data['error']='true'; + $data['errormsg']=$reservierung->errormsg; + } + } + } + else + { + $data['error']='true'; + $data['errormsg']="Reservierung nicht möglich."; + } + return $data; +} ?> \ No newline at end of file diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.php b/cis/private/lehre/pruefung/pruefungsanmeldung.php index cce58a964..e88bd279d 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.php @@ -32,6 +32,9 @@ require_once('../../../../include/student.class.php'); $uid = get_uid(); +//TODO uid entfernen + +$uid="p20132443"; $db = new basis_db(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php new file mode 100644 index 000000000..43d750df5 --- /dev/null +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php @@ -0,0 +1,264 @@ + + + */ + +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); +require_once('../../../../include/pruefungsanmeldung.class.php'); +require_once('../../../../include/pruefungCis.class.php'); +require_once('../../../../include/pruefungstermin.class.php'); +require_once('../../../../include/studiensemester.class.php'); +require_once('../../../../include/lehrveranstaltung.class.php'); +require_once('../../../../include/mitarbeiter.class.php'); +require_once('../../../../include/student.class.php'); +require_once('../../../../include/datum.class.php'); + +$uid = get_uid(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); +?> + + + + + + + + +
      +
      +

      Anmeldungsliste

      + result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin')) + die('Sie haben keine Berechtigung für diese Seite'); + + $termin_id = filter_input(INPUT_GET,"termin_id"); + $lehrveranstaltung_id = filter_input(INPUT_GET,"lehrveranstaltung_id"); + $studiensemester = filter_input(INPUT_GET, "studiensemester"); + + if(is_null($lehrveranstaltung_id)) + { + die('Fehlender Parameter lehrveranstaltung_id'); + } + else if(is_null($termin_id)) + { + die('Fehlender Parameter termin_id'); + } + else if(is_null($studiensemester)) + { + die('Fehlender Parameter studiensemester'); + } + else + { + $datum = new datum(); + $stdsem = new studiensemester($studiensemester); + $pruefungsanmeldung = new pruefungsanmeldung(); + $anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($termin_id, $lehrveranstaltung_id, $studiensemester, "bestaetigt"); + $lehrveranstaltung = new lehrveranstaltung($lehrveranstaltung_id); + $einzeln = FALSE; + if(!empty($anmeldungen)) + { + $pruefung = new pruefungCis($anmeldungen[0]->pruefung_id); + $pruefungstermin = new pruefungstermin($anmeldungen[0]->pruefungstermin_id); + $mitarbeiter = new mitarbeiter($pruefung->mitarbeiter_uid); + if($pruefung->einzeln) + { + $einzeln = TRUE; + $pruefungsintervall = $pruefung->pruefungsintervall; + } + } + ?> + Lehrveranstaltung: bezeichnung?>
      + Studiensemester: bezeichnung?>
      + Prüfer: getFullName(FALSE)?>
      +
'; //Liste der Studiengänge echo 'Studiengang: + + + + "; + + echo " + + + + + + +
Dokument:
Anmerkung:
"; +} +else +{ + echo "Es wurde keine notiz_id angegeben"; +} +?> + + + diff --git a/include/dms.class.php b/include/dms.class.php index 0e1e07d92..1e04a9570 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -254,6 +254,10 @@ class dms extends basis_db */ public function deleteDms($dms_id) { + $this->load($dms_id); + $this->getAllVersions($dms_id); + $error = false; + // lösche Versionen $qry ="BEGIN;DELETE FROM campus.tbl_dms_version WHERE dms_id =".$this->db_add_param($dms_id, FHC_INTEGER)."; "; $qry.="DELETE FROM fue.tbl_projekt_dokument WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER)."; "; @@ -261,12 +265,28 @@ class dms extends basis_db if($this->db_query($qry)) { $this->db_query('COMMIT;'); - return true; + + // Alle Versionen der Datei im Filesystem löschen + foreach($this->result as $obj) + { + if(is_file(DMS_PATH.$obj->filename) && !unlink(DMS_PATH.$obj->filename)) + $error = true; + } + + if($error) + { + $this->errormsg = "Fehler beim Löschen des Dokuments aufgetreten"; + return false; + } + else + { + return true; + } } else { $this->db_query('ROLLBACK;'); - $this->errormsg = "Fehler beim Löschen des Eintrages aufgetreten"; + $this->errormsg = "Fehler beim Löschen des Eintrages aufgetreten"; return false; } } @@ -841,6 +861,55 @@ class dms extends basis_db return false; } } + + /** + * Gibt die Dokumente einer Notiz zurück + * @param int $notiz_id + * @return boolean + */ + public function getDokumenteNotiz($notiz_id) + { + $qry = "SELECT * + FROM + campus.tbl_dms + JOIN campus.tbl_dms_version USING(dms_id) + JOIN public.tbl_notiz_dokument USING(dms_id) + WHERE (dms_id, version) in( + SELECT dms_id, max(version) + FROM campus.tbl_dms_version + GROUP BY dms_id) + AND tbl_notiz_dokument.notiz_id=".$this->db_add_param($notiz_id)." + ORDER BY name;"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new dms(); + + $obj->dms_id = $row->dms_id; + $obj->version = $row->version; + $obj->oe_kurzbz = $row->oe_kurzbz; + $obj->dokument_kurzbz = $row->dokument_kurzbz; + $obj->kategorie_kurzbz = $row->kategorie_kurzbz; + $obj->filename = $row->filename; + $obj->mimetype = $row->mimetype; + $obj->name = $row->name; + $obj->beschreibung = $row->beschreibung; + $obj->letzterzugriff = $row->letzterzugriff; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + + $this->result[] = $obj; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } /** * Laedt die Dokumente einer Projektphase diff --git a/include/js/jqSOAPClient.js b/include/js/jqSOAPClient.js index f54bc0846..8012247b3 100644 --- a/include/js/jqSOAPClient.js +++ b/include/js/jqSOAPClient.js @@ -14,6 +14,7 @@ */ //Singleton SOAP Client var SOAPClient = { + AjaxAsync: true, Proxy: "", SOAPServer: "", ContentType: "text/xml", @@ -44,7 +45,8 @@ var SOAPClient = { } } $.ajax({ - type: "POST", + async: SOAPClient.AjaxAsync, + type: "POST", url: SOAPClient.Proxy, dataType: "xml", processData: false, diff --git a/include/notiz.class.php b/include/notiz.class.php index 7d6e05cbd..eac9f5434 100644 --- a/include/notiz.class.php +++ b/include/notiz.class.php @@ -1,458 +1,520 @@ - and - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); - -class notiz extends basis_db -{ - public $new; - public $result=array(); - - //Tabellenspalten - public $notiz_id; - public $titel; - public $text; - public $verfasser_uid; - public $bearbeiter_uid; - public $start; - public $ende; - public $erledigt; - public $insertamum; - public $insertvon; - public $updateamum; - public $updatevon; - - public $projekt_kurzbz; - public $projektphase_id; - public $projekttask_id; - public $uid; - public $person_id; - public $prestudent_id; - public $bestellung_id; - public $lehreinheit_id; - public $anrechnung_id; - - /** - * Konstruktor - * @param $notiz_id - */ - public function __construct($notiz_id = null) - { - parent::__construct(); - - if($notiz_id != null) - $this->load($notiz_id); - } - - /** - * Laedt eine Notiz - * @param $notiz_id - * @return true wenn ok, false im Fehlerfall - */ - public function load($notiz_id) - { - if(!is_numeric($notiz_id)) - { - $this->errormsg = 'NotizID ist ungueltig'; - return false; - } - - $qry = "SELECT * FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->notiz_id=$row->notiz_id; - $this->titel=$row->titel; - $this->text=$row->text; - $this->verfasser_uid=$row->verfasser_uid; - $this->bearbeiter_uid=$row->bearbeiter_uid; - $this->start=$row->start; - $this->ende=$row->ende; - $this->erledigt=$this->db_parse_bool($row->erledigt); - $this->insertamum=$row->insertamum; - $this->insertvon=$row->insertvon; - $this->updateamum=$row->updateamum; - $this->updatevon=$row->updatevon; - - return true; - } - else - { - $this->errormsg = 'Datensatz wurde nicht gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Löscht eine Notiz - * @param $notiz_id - * @return true wenn ok, false im Fehlerfall - */ - public function delete($notiz_id) - { - if(!is_numeric($notiz_id)) - { - $this->errormsg = 'NotizID ist ungueltig'; - return false; - } - - $qry = "Delete FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); - - if(!$this->db_query($qry)) - { - $this->errormsg = 'Fehler beim Loeschen der Daten'; - return false; - } - return true; - } - - /** - * Prueft die Daten vor dem Speichern - * auf Gueltigkeit - */ - public function validate() - { - return true; - } - - /** - * Speichert den aktuellen Datensatz in die Datenbank - * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt - * andernfalls wird der Datensatz mit der ID in $notiz_id aktualisiert - * @return true wenn ok, false im Fehlerfall - */ - public function save($new=null) - { - if($new==null) - $new=$this->new; - - if(!$this->validate()) - return false; - - if($new) - { - //Neuen Datensatz einfuegen - $qry='BEGIN;INSERT INTO public.tbl_notiz (titel, text, verfasser_uid, - bearbeiter_uid, start, ende, erledigt, insertamum, insertvon, - updateamum, updatevon) VALUES('. - $this->db_add_param($this->titel).', '. - $this->db_add_param($this->text).', '. - $this->db_add_param($this->verfasser_uid).','. - $this->db_add_param($this->bearbeiter_uid).','. - $this->db_add_param($this->start).','. - $this->db_add_param($this->ende).','. - $this->db_add_param($this->erledigt,FHC_BOOLEAN).','. - $this->db_add_param($this->insertamum).','. - $this->db_add_param($this->insertvon).','. - $this->db_add_param($this->updateamum).','. - $this->db_add_param($this->updatevon).');'; - } - else - { - $qry='UPDATE public.tbl_notiz SET '. - 'titel='.$this->db_add_param($this->titel).', '. - 'text='.$this->db_add_param($this->text).', '. - 'verfasser_uid='.$this->db_add_param($this->verfasser_uid).', '. - 'bearbeiter_uid='.$this->db_add_param($this->bearbeiter_uid).', '. - 'start='.$this->db_add_param($this->start).', '. - 'ende='.$this->db_add_param($this->ende).', '. - 'erledigt='.$this->db_add_param($this->erledigt,FHC_BOOLEAN).', '. - 'updateamum='.$this->db_add_param($this->updateamum).', '. - 'updatevon='.$this->db_add_param($this->updatevon).' '. - 'WHERE notiz_id='.$this->db_add_param($this->notiz_id,FHC_INTEGER).';'; - } - - if($this->db_query($qry)) - { - if($new) - { - $qry="SELECT currval('seq_notiz_notiz_id') as id;"; - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - $this->notiz_id = $row->id; - $this->db_query('COMMIT;'); - return true; - } - else - { - $this->errormsg = 'Fehler beim Lesen der Sequence'; - $this->db_query('ROLLBACK'); - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Lesen der Sequence'; - $this->db_query('ROLLBACK'); - return false; - } - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; - return false; - } - } - - /** - * Speichert die Zuordnung einer Notiz - * - */ - public function saveZuordnung() - { - $qry = "INSERT INTO public.tbl_notizzuordnung(notiz_id, projekt_kurzbz, projektphase_id, projekttask_id, - uid, person_id, prestudent_id, bestellung_id, lehreinheit_id, anrechnung_id) VALUES(". - $this->db_add_param($this->notiz_id, FHC_INTEGER).','. - $this->db_add_param($this->projekt_kurzbz).','. - $this->db_add_param($this->projektphase_id, FHC_INTEGER).','. - $this->db_add_param($this->projekttask_id, FHC_INTEGER).','. - $this->db_add_param($this->uid).','. - $this->db_add_param($this->person_id, FHC_INTEGER).','. - $this->db_add_param($this->prestudent_id, FHC_INTEGER).','. - $this->db_add_param($this->bestellung_id, FHC_INTEGER).','. - $this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','. - $this->db_add_param($this->anrechnung_id, FHC_INTEGER).');'; - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Daten'; - return false; - } - } - - /** - * - * Laedt die Notizen - * @param $erledigt - * @param $projekt_kurzbz - * @param $projektphase_id - * @param $projekttask_id - * @param $uid - * @param $person_id - * @param $prestudent_id - * @param $bestellung_id - * @param $user - * @param $lehreinheit_id - * @param $anrechnung_id - * @return boolean - */ - public function getNotiz($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $stundenplandev_id=null, $anrechnung_id=null) - { - $qry = "SELECT - * - FROM - public.tbl_notiz - LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) - WHERE 1=1"; - - if(!is_null($erledigt)) - { - if($erledigt) - $qry.=" AND erledigt=true"; - else - $qry.=" AND erledigt=false"; - } - if($projekt_kurzbz!='') - $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); - if($projektphase_id!='') - $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); - if($projekttask_id!='') - $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); - if($uid!='') - $qry.=" AND uid=".$this->db_add_param($uid); - if($person_id!='') - $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); - if($prestudent_id!='') - $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - if($bestellung_id!='') - $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); - if($user!='') - $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; - if($lehreinheit_id!='') - $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); - if($anrechnung_id!='') - $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); - - $qry.=' ORDER BY start, ende, titel'; - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - $obj = new notiz(); - - $obj->notiz_id=$row->notiz_id; - $obj->titel=$row->titel; - $obj->text=$row->text; - $obj->verfasser_uid=$row->verfasser_uid; - $obj->bearbeiter_uid=$row->bearbeiter_uid; - $obj->start=$row->start; - $obj->ende=$row->ende; - $obj->erledigt=$this->db_parse_bool($row->erledigt); - $obj->insertamum=$row->insertamum; - $obj->insertvon=$row->insertvon; - $obj->updateamum=$row->updateamum; - $obj->updatevon=$row->updatevon; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * - * Laedt die Notizen vom Bewerbungstool - * @param $person_id int - * @return boolean - */ - public function getBewerbungstoolNotizen($person_id) - { - $qry = 'SELECT - * - FROM - public.tbl_notiz - LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) - WHERE person_id = ' . $this->db_add_param($person_id, FHC_INTEGER) . - ' AND insertvon = ' . $this->db_add_param('Bewerbungstool') . - ' ORDER BY notiz_id'; - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - $obj = new notiz(); - - $obj->notiz_id=$row->notiz_id; - $obj->titel=$row->titel; - $obj->text=$row->text; - $obj->verfasser_uid=$row->verfasser_uid; - $obj->bearbeiter_uid=$row->bearbeiter_uid; - $obj->start=$row->start; - $obj->ende=$row->ende; - $obj->erledigt=$this->db_parse_bool($row->erledigt); - $obj->insertamum=$row->insertamum; - $obj->insertvon=$row->insertvon; - $obj->updateamum=$row->updateamum; - $obj->updatevon=$row->updatevon; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - - * - - * Laedt die Notizen - * @param $erledigt - * @param $projekt_kurzbz - * @param $projektphase_id - * @param $projekttask_id - * @param $uid - * @param $person_id - * @param $prestudent_id - * @param $bestellung_id - * @param $user - * @param $lehreinheit_id - * @param $anrechnung_id - * @return boolean - */ - public function getAnzahlNotizen($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $anrechnung_id=null) - { - $qry = "SELECT - count(*) as anzahl - FROM - public.tbl_notiz - LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) - WHERE 1=1"; - - if(!is_null($erledigt)) - { - if($erledigt) - $qry.=" AND erledigt=true"; - else - $qry.=" AND erledigt=false"; - } - if($projekt_kurzbz!='') - $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); - if($projektphase_id!='') - $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); - if($projekttask_id!='') - $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); - if($uid!='') - $qry.=" AND uid=".$this->db_add_param($uid); - if($person_id!='') - $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); - if($prestudent_id!='') - $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - if($bestellung_id!='') - $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); - if($user!='') - $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; - if($lehreinheit_id!='') - $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); - if($anrechnung_id!='') - $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - return $row->anzahl; - else - { - $this->errormsg='Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } -} + and + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/dms.class.php'); + +class notiz extends basis_db +{ + public $new; + public $result=array(); + public $dokumente=array(); + + //Tabellenspalten + public $notiz_id; + public $titel; + public $text; + public $verfasser_uid; + public $bearbeiter_uid; + public $start; + public $ende; + public $erledigt; + public $insertamum; + public $insertvon; + public $updateamum; + public $updatevon; + + public $projekt_kurzbz; + public $projektphase_id; + public $projekttask_id; + public $uid; + public $person_id; + public $prestudent_id; + public $bestellung_id; + public $lehreinheit_id; + public $anrechnung_id; + + /** + * Konstruktor + * @param $notiz_id + */ + public function __construct($notiz_id = null) + { + parent::__construct(); + + if($notiz_id != null) + $this->load($notiz_id); + } + + /** + * Laedt eine Notiz + * @param $notiz_id + * @return true wenn ok, false im Fehlerfall + */ + public function load($notiz_id) + { + if(!is_numeric($notiz_id)) + { + $this->errormsg = 'NotizID ist ungueltig'; + return false; + } + + $qry = "SELECT * FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->notiz_id=$row->notiz_id; + $this->titel=$row->titel; + $this->text=$row->text; + $this->verfasser_uid=$row->verfasser_uid; + $this->bearbeiter_uid=$row->bearbeiter_uid; + $this->start=$row->start; + $this->ende=$row->ende; + $this->erledigt=$this->db_parse_bool($row->erledigt); + $this->insertamum=$row->insertamum; + $this->insertvon=$row->insertvon; + $this->updateamum=$row->updateamum; + $this->updatevon=$row->updatevon; + $this->getDokumente($row->notiz_id); + + return true; + } + else + { + $this->errormsg = 'Datensatz wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Löscht eine Notiz + * @param $notiz_id + * @return true wenn ok, false im Fehlerfall + */ + public function delete($notiz_id) + { + if(!is_numeric($notiz_id)) + { + $this->errormsg = 'NotizID ist ungueltig'; + return false; + } + + // Dokumente der Notiz löschen + $this->getDokumente($notiz_id); + if(!empty($this->dokumente)) + { + $dms = new dms(); + + foreach($this->dokumente as $dms_id) + { + $dms->deleteDms($dms_id); + } + } + + $qry = "Delete FROM public.tbl_notiz WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler beim Loeschen der Daten'; + return false; + } + return true; + } + + /** + * Prueft die Daten vor dem Speichern + * auf Gueltigkeit + */ + public function validate() + { + return true; + } + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $notiz_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function save($new=null) + { + if($new==null) + $new=$this->new; + + if(!$this->validate()) + return false; + + if($new) + { + //Neuen Datensatz einfuegen + $qry='BEGIN;INSERT INTO public.tbl_notiz (titel, text, verfasser_uid, + bearbeiter_uid, start, ende, erledigt, insertamum, insertvon, + updateamum, updatevon) VALUES('. + $this->db_add_param($this->titel).', '. + $this->db_add_param($this->text).', '. + $this->db_add_param($this->verfasser_uid).','. + $this->db_add_param($this->bearbeiter_uid).','. + $this->db_add_param($this->start).','. + $this->db_add_param($this->ende).','. + $this->db_add_param($this->erledigt,FHC_BOOLEAN).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).','. + $this->db_add_param($this->updateamum).','. + $this->db_add_param($this->updatevon).');'; + } + else + { + $qry='UPDATE public.tbl_notiz SET '. + 'titel='.$this->db_add_param($this->titel).', '. + 'text='.$this->db_add_param($this->text).', '. + 'verfasser_uid='.$this->db_add_param($this->verfasser_uid).', '. + 'bearbeiter_uid='.$this->db_add_param($this->bearbeiter_uid).', '. + 'start='.$this->db_add_param($this->start).', '. + 'ende='.$this->db_add_param($this->ende).', '. + 'erledigt='.$this->db_add_param($this->erledigt,FHC_BOOLEAN).', '. + 'updateamum='.$this->db_add_param($this->updateamum).', '. + 'updatevon='.$this->db_add_param($this->updatevon).' '. + 'WHERE notiz_id='.$this->db_add_param($this->notiz_id,FHC_INTEGER).';'; + } + + if($this->db_query($qry)) + { + if($new) + { + $qry="SELECT currval('seq_notiz_notiz_id') as id;"; + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->notiz_id = $row->id; + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Lesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Lesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + } + + /** + * Speichert die Zuordnung einer Notiz + * + */ + public function saveZuordnung() + { + $qry = "INSERT INTO public.tbl_notizzuordnung(notiz_id, projekt_kurzbz, projektphase_id, projekttask_id, + uid, person_id, prestudent_id, bestellung_id, lehreinheit_id, anrechnung_id) VALUES(". + $this->db_add_param($this->notiz_id, FHC_INTEGER).','. + $this->db_add_param($this->projekt_kurzbz).','. + $this->db_add_param($this->projektphase_id, FHC_INTEGER).','. + $this->db_add_param($this->projekttask_id, FHC_INTEGER).','. + $this->db_add_param($this->uid).','. + $this->db_add_param($this->person_id, FHC_INTEGER).','. + $this->db_add_param($this->prestudent_id, FHC_INTEGER).','. + $this->db_add_param($this->bestellung_id, FHC_INTEGER).','. + $this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','. + $this->db_add_param($this->anrechnung_id, FHC_INTEGER).');'; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Speichert ein Dokument zur Notiz + * @param int $dms_id + * @return boolean + */ + public function saveDokument($dms_id) + { + $qry = "INSERT INTO public.tbl_notiz_dokument(notiz_id, dms_id) VALUES(". + $this->db_add_param($this->notiz_id, FHC_INTEGER).','. + $this->db_add_param($dms_id, FHC_INTEGER).');'; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * + * Laedt die Notizen + * @param $erledigt + * @param $projekt_kurzbz + * @param $projektphase_id + * @param $projekttask_id + * @param $uid + * @param $person_id + * @param $prestudent_id + * @param $bestellung_id + * @param $user + * @param $lehreinheit_id + * @param $anrechnung_id + * @return boolean + */ + public function getNotiz($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $stundenplandev_id=null, $anrechnung_id=null) + { + $qry = "SELECT + * + FROM + public.tbl_notiz + LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) + WHERE 1=1"; + + if(!is_null($erledigt)) + { + if($erledigt) + $qry.=" AND erledigt=true"; + else + $qry.=" AND erledigt=false"; + } + if($projekt_kurzbz!='') + $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + if($projektphase_id!='') + $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); + if($projekttask_id!='') + $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); + if($uid!='') + $qry.=" AND uid=".$this->db_add_param($uid); + if($person_id!='') + $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); + if($prestudent_id!='') + $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + if($bestellung_id!='') + $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); + if($user!='') + $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; + if($lehreinheit_id!='') + $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); + if($anrechnung_id!='') + $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); + + $qry.=' ORDER BY start, ende, titel'; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new notiz(); + + $obj->notiz_id=$row->notiz_id; + $obj->titel=$row->titel; + $obj->text=$row->text; + $obj->verfasser_uid=$row->verfasser_uid; + $obj->bearbeiter_uid=$row->bearbeiter_uid; + $obj->start=$row->start; + $obj->ende=$row->ende; + $obj->erledigt=$this->db_parse_bool($row->erledigt); + $obj->insertamum=$row->insertamum; + $obj->insertvon=$row->insertvon; + $obj->updateamum=$row->updateamum; + $obj->updatevon=$row->updatevon; + $obj->getDokumente($row->notiz_id); + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * + * Laedt die Notizen vom Bewerbungstool + * @param $person_id int + * @return boolean + */ + public function getBewerbungstoolNotizen($person_id) + { + $qry = 'SELECT + * + FROM + public.tbl_notiz + LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) + WHERE person_id = ' . $this->db_add_param($person_id, FHC_INTEGER) . + ' AND insertvon = ' . $this->db_add_param('Bewerbungstool') . + ' ORDER BY notiz_id'; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new notiz(); + + $obj->notiz_id=$row->notiz_id; + $obj->titel=$row->titel; + $obj->text=$row->text; + $obj->verfasser_uid=$row->verfasser_uid; + $obj->bearbeiter_uid=$row->bearbeiter_uid; + $obj->start=$row->start; + $obj->ende=$row->ende; + $obj->erledigt=$this->db_parse_bool($row->erledigt); + $obj->insertamum=$row->insertamum; + $obj->insertvon=$row->insertvon; + $obj->updateamum=$row->updateamum; + $obj->updatevon=$row->updatevon; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + + * + + * Laedt die Notizen + * @param $erledigt + * @param $projekt_kurzbz + * @param $projektphase_id + * @param $projekttask_id + * @param $uid + * @param $person_id + * @param $prestudent_id + * @param $bestellung_id + * @param $user + * @param $lehreinheit_id + * @param $anrechnung_id + * @return boolean + */ + public function getAnzahlNotizen($erledigt=null, $projekt_kurzbz=null, $projektphase_id=null, $projekttask_id=null, $uid=null, $person_id=null, $prestudent_id=null, $bestellung_id=null, $user=null, $lehreinheit_id=null, $anrechnung_id=null) + { + $qry = "SELECT + count(*) as anzahl + FROM + public.tbl_notiz + LEFT JOIN public.tbl_notizzuordnung USING(notiz_id) + WHERE 1=1"; + + if(!is_null($erledigt)) + { + if($erledigt) + $qry.=" AND erledigt=true"; + else + $qry.=" AND erledigt=false"; + } + if($projekt_kurzbz!='') + $qry.=" AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz); + if($projektphase_id!='') + $qry.=" AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER); + if($projekttask_id!='') + $qry.=" AND projekttask_id=".$this->db_add_param($projekttask_id, FHC_INTEGER); + if($uid!='') + $qry.=" AND uid=".$this->db_add_param($uid); + if($person_id!='') + $qry.=" AND person_id=".$this->db_add_param($person_id, FHC_INTEGER); + if($prestudent_id!='') + $qry.=" AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + if($bestellung_id!='') + $qry.=" AND bestellung_id=".$this->db_add_param($bestellung_id, FHC_INTEGER); + if($user!='') + $qry.=" AND (verfasser_uid=".$this->db_add_param($user)." OR bearbeiter_uid=".$this->db_add_param($user).")"; + if($lehreinheit_id!='') + $qry.=" AND lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); + if($anrechnung_id!='') + $qry.=" AND anrechnung_id=".$this->db_add_param($anrechnung_id, FHC_INTEGER); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + return $row->anzahl; + else + { + $this->errormsg='Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt die Dokumente der Notiz + * @return boolean + */ + public function getDokumente($notiz_id) + { + $qry = "SELECT dms_id FROM public.tbl_notiz_dokument WHERE notiz_id=".$this->db_add_param($notiz_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $this->dokumente[] = $row->dms_id; + } + + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } +} diff --git a/rdf/dms.rdf.php b/rdf/dms.rdf.php index 67a77a7b6..b15e87aa7 100755 --- a/rdf/dms.rdf.php +++ b/rdf/dms.rdf.php @@ -44,6 +44,11 @@ elseif(isset($_GET['filter'])) $filter = $_GET['filter']; $dms->search($filter); } +elseif(isset($_GET['notiz_id'])) +{ + $notiz_id = $_GET['notiz_id']; + $dms->getDokumenteNotiz($notiz_id); +} else die('projekt_kurzbz oder projektphase_id muss uebergeben werden'); diff --git a/rdf/notiz.rdf.php b/rdf/notiz.rdf.php index 32634de94..cdf890f31 100644 --- a/rdf/notiz.rdf.php +++ b/rdf/notiz.rdf.php @@ -93,6 +93,7 @@ foreach($notiz->result as $row) start.']]> ende.']]> erledigt?'true':'false').']]> + dokumente).']]> insertamum.']]> insertvon.']]> formatDatum($row->updateamum,'d.m.Y H:i:s').']]> diff --git a/soap/notiz.soap.php b/soap/notiz.soap.php index 7e02ad67e..b9c32be2f 100755 --- a/soap/notiz.soap.php +++ b/soap/notiz.soap.php @@ -30,10 +30,12 @@ require_once('../include/notiz.class.php'); require_once('../include/datum.class.php'); require_once('../include/functions.inc.php'); require_once('../include/benutzerberechtigung.class.php'); +require_once('../include/dms.class.php'); $SOAPServer = new SoapServer(APP_ROOT."/soap/notiz.wsdl.php?".microtime()); $SOAPServer->addFunction("saveNotiz"); $SOAPServer->addFunction("deleteNotiz"); +$SOAPServer->addFunction("deleteDokument"); $SOAPServer->addFunction("setErledigt"); $SOAPServer->handle(); @@ -133,6 +135,29 @@ function deleteNotiz($username, $passwort, $notiz_id) return new SoapFault("Server", $projekttask->errormsg); } +/** + * + * Löscht das Dokument mit der vom Webservice übergebenen DMS-ID + * @param $dms_id + */ +function deleteDokument($username, $passwort, $dms_id) +{ + if(!$user = check_user($username, $passwort)) + return new SoapFault("Server", "Invalid Credentials"); + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + + if(!$rechte->isBerechtigt('basis/notiz', null, 'suid')) + return new SoapFault("Server", "Sie haben keine Berechtigung zum Loeschen von Dokumenten"); + + $dms = new dms(); + if($dms->deleteDms($dms_id)) + return "OK"; + else + return new SoapFault("Server", $dms->errormsg); +} + /** * * Setzt den erledigt Status diff --git a/soap/notiz.wsdl.php b/soap/notiz.wsdl.php index 20ea77d0c..604da9c03 100755 --- a/soap/notiz.wsdl.php +++ b/soap/notiz.wsdl.php @@ -49,6 +49,14 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + + + + + + + @@ -66,6 +74,10 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + + + @@ -92,6 +104,15 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> + + " /> + + + + + + + " /> diff --git a/system/checksystem.php b/system/checksystem.php index 32617e700..5d3c1ec06 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -2826,6 +2826,30 @@ if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants } } +// Dokumentenupload für Notizen +if(!$result = @$db->db_query("SELECT 1 FROM public.tbl_notiz_dokument LIMIT 1;")) +{ + $qry = " + + CREATE TABLE public.tbl_notiz_dokument + ( + notiz_id integer NOT NULL, + dms_id integer NOT NULL + ); + + ALTER TABLE public.tbl_notiz_dokument ADD CONSTRAINT fk_notiz_dokument_notiz FOREIGN KEY (notiz_id) REFERENCES public.tbl_notiz (notiz_id) ON UPDATE CASCADE ON DELETE CASCADE; + ALTER TABLE public.tbl_notiz_dokument ADD CONSTRAINT fk_notiz_dokument_dms FOREIGN KEY (dms_id) REFERENCES campus.tbl_dms (dms_id) ON UPDATE CASCADE ON DELETE CASCADE; + + GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_notiz_dokument TO vilesci; + GRANT SELECT, INSERT, UPDATE, DELETE ON public.tbl_notiz_dokument TO web; + "; + + if(!$db->db_query($qry)) + echo 'Dokumentenupload fuer Notizen: '.$db->db_last_error().'
'; + else + echo ' Tabellen fuer Dokumentenupload fuer Notizen hinzugefuegt!
'; +} + echo '


'; $tabellen=array( @@ -3003,7 +3027,8 @@ $tabellen=array( "public.tbl_mitarbeiter" => array("mitarbeiter_uid","personalnummer","telefonklappe","kurzbz","lektor","fixangestellt","bismelden","stundensatz","ausbildungcode","ort_kurzbz","standort_id","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","kleriker"), "public.tbl_notiz" => array("notiz_id","titel","text","verfasser_uid","bearbeiter_uid","start","ende","erledigt","insertamum","insertvon","updateamum","updatevon","ext_id"), "public.tbl_notizzuordnung" => array("notizzuordnung_id","notiz_id","projekt_kurzbz","projektphase_id","projekttask_id","uid","person_id","prestudent_id","bestellung_id","lehreinheit_id","ext_id","anrechnung_id"), - "public.tbl_ort" => array("ort_kurzbz","bezeichnung","planbezeichnung","max_person","lehre","reservieren","aktiv","lageplan","dislozierung","kosten","ausstattung","updateamum","updatevon","insertamum","insertvon","ext_id","stockwerk","standort_id","telefonklappe","content_id","m2","gebteil","oe_kurzbz"), + "public.tbl_notiz_dokument" => array("notiz_id","dms_id"), + "public.tbl_ort" => array("ort_kurzbz","bezeichnung","planbezeichnung","max_person","lehre","reservieren","aktiv","lageplan","dislozierung","kosten","ausstattung","updateamum","updatevon","insertamum","insertvon","ext_id","stockwerk","standort_id","telefonklappe","content_id","m2","gebteil","oe_kurzbz"), "public.tbl_ortraumtyp" => array("ort_kurzbz","hierarchie","raumtyp_kurzbz"), "public.tbl_organisationseinheit" => array("oe_kurzbz", "oe_parent_kurzbz", "bezeichnung","organisationseinheittyp_kurzbz", "aktiv","mailverteiler","freigabegrenze","kurzzeichen","lehre"), "public.tbl_organisationseinheittyp" => array("organisationseinheittyp_kurzbz", "bezeichnung", "beschreibung"), From ab98e6422ac4bd675b93dd673fe2cb4e3e894311 Mon Sep 17 00:00:00 2001 From: Nikolaus Krondraf Date: Thu, 9 Apr 2015 12:44:15 +0200 Subject: [PATCH 05/10] Extended class DMS so it can delete files in the filesystem --- cms/tinymce_dms.php | 32 ++++---------------------------- include/dms.class.php | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 30 deletions(-) diff --git a/cms/tinymce_dms.php b/cms/tinymce_dms.php index 2d940d92d..e21e69c02 100644 --- a/cms/tinymce_dms.php +++ b/cms/tinymce_dms.php @@ -347,40 +347,16 @@ if(isset($_REQUEST['delete'])) // DB Eintrag löschen if(!$dms->deleteVersion($dms_id, $version)) echo ''.$dms->errormsg.''; - else - { - // File im Filesystem löschen - if(unlink(DMS_PATH.$dms->filename)) - echo 'Erfolgreich gelöscht!'; - else - echo 'Fehler beim löschen aus dem Filesystem aufgetreten!'; - } - }else + } + else { // lösche gesamten Eintrag + $dms = new dms(); $dms_id = $_REQUEST['dms_id']; - $dms = new dms(); - $error = false; - - $dms->getAllVersions($dms_id); - - // DB Einträge löschen + // DB Einträge und Dokumente löschen if(!$dms->deleteDms($dms_id)) echo ''.$dms->errormsg.''; - else - { - // Alle Versionen der Datei vom Filesystem löschen - foreach($dms->result as $obj) - { - if(is_file(DMS_PATH.$obj->filename) && !unlink(DMS_PATH.$obj->filename)) - $error = true; - } - if($error) - echo 'Fehler beim löschen aus dem Filesystem aufgetreten!'; - else - echo 'Erfolgreich gelöscht!'; - } } } diff --git a/include/dms.class.php b/include/dms.class.php index 1e04a9570..08f28c997 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -220,6 +220,9 @@ class dms extends basis_db */ public function deleteVersion($dms_id, $version) { + $dms = new dms(); + $dms->load($dms_id, $version); + $qry ="DELETE FROM campus.tbl_dms_version WHERE dms_id = ".$this->db_add_param($dms_id, FHC_INTEGER)." and version =".$this->db_add_param($version, FHC_INTEGER).';'; if($this->db_query($qry)) @@ -227,13 +230,20 @@ class dms extends basis_db $qry_anzahl ="SELECT 1 FROM campus.tbl_dms_version WHERE dms_id =".$this->db_add_param($dms_id, FHC_INTEGER).';'; if($result = $this->db_query($qry_anzahl)) { - // Wenn letzte Version gelöscht wurde -> lösche gesamten Eintrag + // File der Version im Filesystem löschen + if(is_file(DMS_PATH.$dms->filename) && !unlink(DMS_PATH.$dms->filename)) + { + $this->errormsg = "Fehler beim Löschen des Dokuments aufgetreten"; + return false; + } + + // Wenn letzte Version gelöscht wurde -> lösche gesamten Eintrag if($this->db_num_rows($result) == 0 ) { if(!$this->deleteDms($dms_id)) { $this->errormsg = "Fehler beim Löschen aufgetreten"; - return false; + return false; } else return true; From ad6cebfa941837443ccdd49e0099e52030823ce4 Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Thu, 9 Apr 2015 13:00:59 +0200 Subject: [PATCH 06/10] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 94761687c9b9a75c74ec7311bfa9023b651bd0fd Author: Stefan Puraner Date: Thu Apr 9 12:56:25 2015 +0200 Prüfungsanmelung: Studenten können durch Lektor hinzugefügt werden; Es kann eine Liste aller Anmeldungen erstellt und ausgedruckt werden. Desing Änderungen commit 27bb213c8c70ec81916cf4a3b3dabf3e325c1dad Author: Stefan Puraner Date: Thu Apr 9 10:57:57 2015 +0200 Lageplan kann im Infoterminal ausgeblendet werden commit 471a39f816c4951b478b95f035dca85124fe5642 Author: Stefan Puraner Date: Thu Apr 9 10:39:27 2015 +0200 Drucken des Studienblattes im CIS commit 58c283a389c0b18ca5186e6fd012afa0cdc84103 Author: Stefan Puraner Date: Wed Mar 25 16:15:59 2015 +0100 Studenten können durch Lektor/Sekretariat manuell zu Prüfungen hinzugefügt werden. commit fc9ae291c5e13ce4cd7a65baf43242ba5124616f Author: Stefan Puraner Date: Tue Mar 24 08:55:55 2015 +0100 Änderungen/Löschen von Noten werden im Undo-Log protokolliert und können rückgängig gemacht werden. --- cis/infoterminal/index.php | 5 +- cis/private/lehre/pruefung/pruefung.js | 44 +- .../pruefung/pruefungsanmeldung.json.php | 1933 +++++++++-------- .../lehre/pruefung/pruefungsanmeldung.php | 3 + .../pruefung/pruefungsanmeldungen_liste.php | 264 +++ .../pruefungsanmeldungen_verwalten.php | 575 ++--- .../lehre/pruefung/pruefungstermin.json.php | 1241 +++++------ cis/private/pdfExport.php | 270 ++- cis/private/profile/dokumente.php | 14 + config/cis.config-default.inc.php | 9 +- config/global.config-default.inc.php | 3 + content/student/studentDBDML.php | 51 +- include/lehrveranstaltung.class.php | 3 +- include/person.class.php | 19 + include/pruefungCis.class.php | 1436 ++++++------ include/studiensemester.class.php | 1579 +++++++------- include/zeugnisnote.class.php | 977 +++++---- locale/de-AT/tools.php | 147 +- 18 files changed, 4619 insertions(+), 3954 deletions(-) create mode 100644 cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php diff --git a/cis/infoterminal/index.php b/cis/infoterminal/index.php index 9dbd0a09a..3e7f7ed2d 100644 --- a/cis/infoterminal/index.php +++ b/cis/infoterminal/index.php @@ -533,8 +533,10 @@ $refreshtime = ($sdtools?99999:(isset($_SESSION[constSESSIONNAME]["uid"]) && !em else { // Lageplan + if(defined('CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN') && CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN) + { echo ' -
@@ -543,6 +545,7 @@ $refreshtime = ($sdtools?99999:(isset($_SESSION[constSESSIONNAME]["uid"]) && !em
 
+ + + + + + + + + + + uid); + $prfTermin = new pruefungstermin($anmeldung->pruefungstermin_id); + + if($einzeln) + { + $date = $datum->formatDatum($prfTermin->von, "Y-m-d H:i:s"); + $date = strtotime($date); + $date = $date+(60*$pruefungsintervall*($count)); + $date = $datum->formatDatum($prfTermin->von,"d.m.Y").' - '.date("h:i",$date); + $count++; + } + else + { + $date = $datum->formatDatum($prfTermin->von,"d.m.Y - H:i"); + } + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + ?> + + +
#VornameNachnameMatrikelnummerDatum
'.$anmeldung->reihung.''.$student->vorname.''.$student->nachname.''.$student->matrikelnr.''.$date.'
+ + + + \ No newline at end of file diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php index 47e6273d8..3995a2c66 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php @@ -1,269 +1,306 @@ - - - */ - -require_once('../../../../config/cis.config.inc.php'); -require_once('../../../../include/functions.inc.php'); -require_once('../../../../include/benutzerberechtigung.class.php'); -require_once('../../../../include/pruefungCis.class.php'); -require_once('../../../../include/studiensemester.class.php'); - -$uid = get_uid(); -$db = new basis_db(); -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($uid); - -$studiensemester = new studiensemester(); -$pruefung = new pruefungCis(); -$pruefung->getPruefungByMitarbeiter($uid, $studiensemester->getaktorNext()); -if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin')) - die('Sie haben keine Berechtigung für diese Seite'); - -?> - - - - Prüfungsanmeldung Verwaltung - - - - - - - - - - - - - -

Anmeldungen Verwalten

-
-
-

Studiengänge

-
    - -
-
-
-
-
-

Prüfungen

-
    - -
-
-
-
-
-

Anmeldungen

-
- -
-
- -
-
- -
-
- -
- -
-
- -
-
- -
-
-
-
- -
-
- - + + + */ + +require_once('../../../../config/cis.config.inc.php'); +require_once('../../../../include/functions.inc.php'); +require_once('../../../../include/benutzerberechtigung.class.php'); +require_once('../../../../include/pruefungCis.class.php'); +require_once('../../../../include/studiensemester.class.php'); + +$uid = get_uid(); +$db = new basis_db(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +$studiensemester = new studiensemester(); +$pruefung = new pruefungCis(); +$pruefung->getPruefungByMitarbeiter($uid, $studiensemester->getaktorNext()); +if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungAdmin')) + die('Sie haben keine Berechtigung für diese Seite'); + +?> + + + + Prüfungsanmeldung Verwaltung + + + + + + + + + + + + + +

Anmeldungen Verwalten

+
+
+
+

Studiengänge

+
+ +
+
+
+

Studiensemester

+ '; + $aktuellesSemester = $studiensemester->getaktorNext(); + $studiensemester->getAll(); + foreach($studiensemester->studiensemester as $sem) + { + /*@var $sem studiensemester */ + if($aktuellesSemester == $sem->studiensemester_kurzbz) + { + echo ''; + } + else + { + echo ''; + } + } + echo '

'; + ?> +
+
+
+
+
+

Prüfungen

+
    + +
+
+
+
+
+

Anmeldungen

+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+
+ +
+
+ +
+
+
+
+ +
+
+ + diff --git a/cis/private/lehre/pruefung/pruefungstermin.json.php b/cis/private/lehre/pruefung/pruefungstermin.json.php index 1b8c94077..f8536061f 100644 --- a/cis/private/lehre/pruefung/pruefungstermin.json.php +++ b/cis/private/lehre/pruefung/pruefungstermin.json.php @@ -1,621 +1,622 @@ -getBerechtigungen($uid); - -$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; - -switch($method) -{ - case 'loadPruefungstypen': - $data = loadPruefungstypen("false"); - break; - case 'loadStudiensemester': - $studiensemester = new studiensemester(); - $aktStudiensemester = $studiensemester->getaktorNext(); - $data = loadStudiensemester($aktStudiensemester); - break; - case 'getPruefungsfensterByStudiensemester': - $studiensemester = new studiensemester(); - $aktStudiensemester = $studiensemester->getaktorNext(); - $studiensemester_kurzbz = isset($_REQUEST["studiensemester_kurzbz"]) ? $_REQUEST["studiensemester_kurzbz"] : $aktStudiensemester; - $data = getPruefungsfensterByStudiensemester($studiensemester_kurzbz, $aktStudiensemester); - break; - case 'savePruefungstermin': - $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; - $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; - $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; - $titel = isset($_POST["titel"])?$_POST["titel"]:null; - $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; - $methode = isset($_POST["methode"])?$_POST["methode"]:null; - $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; - $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; - $termine = isset($_POST["termine"])?$_POST["termine"]:null; - $pruefungsintervall = NULL; - if(isset($_REQUEST["pruefungsintervall"]) && ($_REQUEST["pruefungsintervall"] !== "false")) - { - $pruefungsintervall = $_REQUEST["pruefungsintervall"]; - } - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; - } - else - { - $mitarbeiter_uid = $uid; - } - $data = savePruefungstermin($mitarbeiter_uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall); - break; - case 'getLehrveranstaltungenByMitarbeiter': - $mitarbeiter_uid = $_POST["mitarbeiter_uid"]; - $studiensemester_kurzbz = $_POST["studiensemester_kurzbz"]; - $data = getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz); - break; - case 'updatePruefungstermin': - $pruefung_id = isset($_POST["pruefung_id"])?$_POST["pruefung_id"]:null; - $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; - $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; - $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; - $titel = isset($_POST["titel"])?$_POST["titel"]:null; - $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; - $methode = isset($_POST["methode"])?$_POST["methode"]:null; - $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; - $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; - $termine = isset($_POST["termine"])?$_POST["termine"]:null; - $termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null; - $pruefungsintervall = NULL; - if((isset($_REQUEST["pruefungsintervall"]) && $_REQUEST["pruefungsintervall"] !== false)) - { - $pruefungsintervall = $_REQUEST["pruefungsintervall"]; - } - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; - } - else - { - $mitarbeiter_uid = $uid; - } - $data = updatePruefungstermin($mitarbeiter_uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall); - break; - case 'deleteLehrveranstaltungFromPruefung': - $lvId = $_POST["lehrveranstaltung_id"]; - $pruefung_id = $_POST["pruefung_id"]; - $data = deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id); - break; - case 'stornoPruefung': - $pruefung_id = $_REQUEST["pruefung_id"]; - $data = stornoPruefung($pruefung_id); - break; - case 'deleteTermin': - $pruefung_id = $_REQUEST["pruefung_id"]; - $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; - $data = deleteTermin($pruefung_id, $pruefungstermin_id); - break; - case 'getAllPruefungen': - if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) - { - $data = getAllPruefungen($_REQUEST["uid"]); - } - else - { - $data = getAllPruefungen($uid); - } - break; - default: - break; -} -echo json_encode($data); - - -/** - * Lädt alle Prüfungstypen aus der Datenbank - * @param boolean $abschluss Gibt an ob Prüfungstypen einer Abschlussprüfunge geladen werden sollen oder nicht - * @return Array - */ -function loadPruefungstypen($abschluss) -{ - $pruefungstermin = new pruefungstermin(); - $pruefungstypen = $pruefungstermin->getAllPruefungstypen($abschluss); - if(!empty($pruefungstypen)) - { - $data['result']=$pruefungstypen; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungstermin->errormsg; - } - return $data; -} - -/** - * Lädt alle Studiensemester aus der Datenbank - * @param String $aktStudiensemester das Aktuelle Studiensemester - * @return Array - */ -function loadStudiensemester($aktStudiensemester = null) -{ - $studiensemester = new studiensemester(); - if($studiensemester->getAll()) - { - $data['result']=$studiensemester->studiensemester; - if(!is_null($aktStudiensemester)) - { - $data['aktSem']=$aktStudiensemester; - } - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$studiensemester->errormsg; - } - return $data; -} - -/** - * Lädt alle Prüfungsfenster eines Studiensemesters - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @return Array - */ -function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) -{ - $pruefungsfenster = new pruefungsfenster(); - if($pruefungsfenster->getByStudiensemester($studiensemester_kurzbz)) - { - $data['result']=$pruefungsfenster->result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefungsfenster->errormsg; - } - return $data; -} - -/** - * Speichet einen Prüfungstermin - * @param int $uid UID des Lektors - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @param int $pruefungsfenster_id ID des Prüfungsfensters - * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps - * @param String $titel Titel der Prüfung - * @param String $beschreibung Beschreibung zur Prüfung - * @param String $methode Methode der Prüfung - * @param boolen $einzeln TRUE, wenn Einzelprüfung - * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung - * @param Array $termine Termine zur Prüfung - * @return Array - */ -function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall) -{ - if($lehrveranstaltungen === null) - { - $data['error']='true'; - $data['errormsg']="Keine Lehrverantaltung angegeben."; - return $data; - } - $termineArray = array(); - foreach ($termine as $key => $t) { - $termin = new stdClass(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->min = $t["min"]; - $termin->max = $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - $termin->sammelklausur = $t["sammelklausur"]; -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { - if(!(checkCollision($uid, $termin->beginn, $termin->ende))) - { - array_push($termineArray, $termin); - } - else - { - $data['error']='true'; - $data['errormsg']="Kollision mit anderem Termin."; - return $data; - } -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - - $pruefung = new pruefungCis(); - $pruefung->termine = $termineArray; - $pruefung->mitarbeiter_uid = $uid; - $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; - $pruefung->pruefungsfenster_id = $pruefungsfenster_id; - $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; - $pruefung->titel = $titel; - $pruefung->beschreibung = $beschreibung; - $pruefung->methode = $methode; - $pruefung->einzeln = $einzeln; - $pruefung->insertvon = get_uid(); - $pruefung->pruefungsintervall = $pruefungsintervall; - - foreach ($lehrveranstaltungen as $lv) { - if($lv != "null") - { - array_push($pruefung->lehrveranstaltungen, $lv); - } - } - - if($pruefung->save(true)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - - //TODO Mail-Inhalt fehlt -// foreach ($pruefung->lehrveranstaltungen as $lvId) -// { -// $lv = new lehrveranstaltung($lvId); -// $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n" -// . "Die Prüfung kann am " -// .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." " -// . "in der Zeit von " -// .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis " -// .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden."; -// //$text = "test"; -// $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz); -// $mailto = ""; -// foreach ($empfaenger as $e) { -// $mailto .= $e.'@'.DOMAIN.', '; -// } -// -// $email = new mail($mailto, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text); -// $email->setReplyTo($uid."@".DOMAIN); -//// var_dump($email); -// $email->send(); -// } - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Lädt alle Lehrveranstaltungen eines Mitarbeiters - * @param int $mitarbeiter_uid UID des Mitarbeiters - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @return Array - */ -function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz) -{ - $lehrveranstaltung = new lehrveranstaltung(); - if($lehrveranstaltung->getLVByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz)) - { - $stg = new studiengang(); - foreach($lehrveranstaltung->lehrveranstaltungen as $key=>$lv) - { - $stg->load($lv->studiengang_kz); - $lv->studiengang_bezeichnung = $stg->kurzbzlang; - } - $data['result']=$lehrveranstaltung->lehrveranstaltungen; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$lehrveranstaltung->errormsg; - } - return $data; -} - -/** - * Speichet einen Prüfungstermin - * @param int $uid UID des Lektors - * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @param int $pruefungsfenster_id ID des Prüfungsfensters - * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps - * @param String $titel Titel der Prüfung - * @param String $beschreibung Beschreibung zur Prüfung - * @param String $methode Methode der Prüfung - * @param boolen $einzeln TRUE, wenn Einzelprüfung - * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung - * @param Array $termine Termine zur Prüfung (bestehende) - * @param type $termineNeu Neu hinzugefügte Termine - * @return Array - */ -function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall) -{ - $pruefungsfenster = new pruefungsfenster(); - $pruefungsfenster->load($pruefungsfenster_id); - $datum = new datum(); - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - - if($termineNeu !== null) - { - $termineNeuArray = array(); - foreach ($termineNeu as $key => $t) { - $termin = new stdClass(); - $datum = new datum(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->min = $t["min"]; - $termin->max = $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); - $termin->sammelklausur = $t["sammelklausur"]; -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { - if(!(checkCollision($uid, $termin->beginn, $termin->ende))) - { - array_push($termineNeuArray, $termin); - } - else - { - $data['error']='true'; - $data['errormsg']="Kollision mit anderem Termin."; - return $data; - } -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - foreach ($termineNeuArray as $t) - { - $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur); - } - } - - if($termine !== null) - { - $termineArray = array(); - foreach ($termine as $key => $t) { - $termin = new stdClass(); - $datum = new datum(); - $date = $t["datum"]; - $beginn = $t["beginn"]; - $ende = $t["ende"]; - $termin->pruefungstermin_id = $t["pruefungstermin_id"]; - $termin->min = $t["min"]; - $termin->max = ($t["max"] === "null") ? NULL : $t["max"]; - $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); - $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); -// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) -// { -// array_push($termineArray, $termin); -// } -// else -// { -// $data['error']='true'; -// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; -// return $data; -// } - } - foreach($termineArray as $key=>$t) - { - $termineArray[$key] = (object) $t; - } - $pruefung->termine = $termineArray; - } - - $pruefung->mitarbeiter_uid = $uid; - $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; - $pruefung->pruefungsfenster_id = $pruefungsfenster_id; - $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; - $pruefung->titel = $titel; - $pruefung->beschreibung = $beschreibung; - $pruefung->methode = $methode; - $pruefung->einzeln = $einzeln; - $pruefung->updatevon = get_uid(); - $pruefung->pruefungsintervall = $pruefungsintervall; - if($lehrveranstaltungen !== null) - { - foreach ($lehrveranstaltungen as $lv) - { - if($lv != "null") - { - array_push($pruefung->lehrveranstaltungen, $lv); - } - } - } - if($pruefung->save(false)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - - //TODO Mail-Inhalt fehlt - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Löscht Lehrveranstaltungen von einer Prüfung - * @param int $lvId ID der Lehrveranstaltung - * @param int $pruefung_id ID der Prüfung - * @return Array - */ -function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) -{ - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - if($pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Storniert eine Prüfung - * @param int $pruefung_id ID der Prüfung - * @return Array - */ -function stornoPruefung($pruefung_id) -{ - $pruefung = new pruefungCis(); - if($pruefung->pruefungStornieren($pruefung_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Löscht einen Termin einer Prüfung - * @param int $pruefung_id ID der Prüfung - * @param int $pruefungstermin_id ID des Termins - * @return Array - */ -function deleteTermin($pruefung_id, $pruefungstermin_id) -{ - $pruefung = new pruefungCis(); - $pruefung->load($pruefung_id); - if($pruefung->deleteTerminPruefung($pruefungstermin_id)) - { - $data['result']="true"; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Lädt alle Prüfungen eines Mitarbeiters - * @param String $mitarbeiter_uid UID des Mitarbeiters - * @return Array - */ -function getAllPruefungen($mitarbeiter_uid) -{ - $pruefung = new pruefungCis(); - if($pruefung->getAllPruefungen($mitarbeiter_uid)) - { - foreach ($pruefung->result as $prf) - { - $prf->getLehrveranstaltungenByPruefung(); - foreach($prf->lehrveranstaltungen as $key=>$lv) - { - $temp = new lehrveranstaltung($lv->lehrveranstaltung_id); - $array = $temp->cleanResult(); - $prf->lehrveranstaltungen[$key] = $array[0]; - } - $prf->getTermineByPruefung(); - } - $data['result']=$pruefung->result; - $data['error']='false'; - $data['errormsg']=''; - } - else - { - $data['error']='true'; - $data['errormsg']=$pruefung->errormsg; - } - return $data; -} - -/** - * Überprüft ob das angegebene Datum innerhalb eines Prüfungsfensters ist - * @param int $pruefungsfenster_id ID des Prüfungsfensters - * @param String $datum - * @return boolean - */ -function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) -{ - $pruefungsfenster = new pruefungsfenster($pruefungsfenster_id); - $date = new datum(); - if($date->between($pruefungsfenster->start, $pruefungsfenster->ende, $datum)) - { - return true; - } - return false; -} - -/** - * Überprüft ob es eine Kollision zu anderen Prüfungen des Mitarbeiters gibt - * @param String $uid UID des Mitarbeiters - * @param String $beginn Beginn des Termins - * @param String $ende Ende des Termins - * @return boolean - */ -function checkCollision($uid, $beginn, $ende) -{ - $collision = false; - $pruefung = new pruefungCis(); - $pruefung->getAllPruefungen($uid); - $datum = new datum(); - foreach($pruefung->result as $prf) - { - $prf->getTermineByPruefung(); - foreach($prf->termine as $termin) - { - if(($datum->between($termin->von, $termin->bis, $beginn)) || ($datum->between($termin->von, $termin->bis, $ende))) - { - $collision = true; - } - } - } - if($collision) - { - return true; - } - return false; -} +getBerechtigungen($uid); + +$method = isset($_REQUEST['method'])?$_REQUEST['method']:''; + +switch($method) +{ + case 'loadPruefungstypen': + $data = loadPruefungstypen("false"); + break; + case 'loadStudiensemester': + $studiensemester = new studiensemester(); + $aktStudiensemester = $studiensemester->getaktorNext(); + $data = loadStudiensemester($aktStudiensemester); + break; + case 'getPruefungsfensterByStudiensemester': + $studiensemester = new studiensemester(); + $aktStudiensemester = $studiensemester->getaktorNext(); + $studiensemester_kurzbz = isset($_REQUEST["studiensemester_kurzbz"]) ? $_REQUEST["studiensemester_kurzbz"] : $aktStudiensemester; + $data = getPruefungsfensterByStudiensemester($studiensemester_kurzbz, $aktStudiensemester); + break; + case 'savePruefungstermin': + $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; + $titel = isset($_POST["titel"])?$_POST["titel"]:null; + $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; + $methode = isset($_POST["methode"])?$_POST["methode"]:null; + $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; + $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; + $termine = isset($_POST["termine"])?$_POST["termine"]:null; + $pruefungsintervall = NULL; + if(isset($_REQUEST["pruefungsintervall"]) && ($_REQUEST["pruefungsintervall"] !== "false")) + { + $pruefungsintervall = $_REQUEST["pruefungsintervall"]; + } + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; + } + else + { + $mitarbeiter_uid = $uid; + } + $data = savePruefungstermin($mitarbeiter_uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall); + break; + case 'getLehrveranstaltungenByMitarbeiter': + $mitarbeiter_uid = $_POST["mitarbeiter_uid"]; + $studiensemester_kurzbz = $_POST["studiensemester_kurzbz"]; + $data = getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz); + break; + case 'updatePruefungstermin': + $pruefung_id = isset($_POST["pruefung_id"])?$_POST["pruefung_id"]:null; + $studiensemester_kurzbz = isset($_POST["studiensemester_kurzbz"])?$_POST["studiensemester_kurzbz"]:null; + $pruefungsfenster_id = isset($_POST["pruefungsfenster_id"])?$_POST["pruefungsfenster_id"]:null; + $pruefungstyp_kurzbz = isset($_POST["pruefungstyp_kurzbz"])?$_POST["pruefungstyp_kurzbz"]:null; + $titel = isset($_POST["titel"])?$_POST["titel"]:null; + $beschreibung = isset($_POST["beschreibung"])?$_POST["beschreibung"]:null; + $methode = isset($_POST["methode"])?$_POST["methode"]:null; + $einzeln = (isset($_POST["einzeln"]) && $_POST["einzeln"] ==="true")?true:false; + $lehrveranstaltungen = isset($_POST["lehrveranstaltungen"]) ? $_POST["lehrveranstaltungen"] : null; + $termine = isset($_POST["termine"])?$_POST["termine"]:null; + $termineNeu = isset($_POST["termineNeu"])?$_POST["termineNeu"]:null; + $pruefungsintervall = NULL; + if((isset($_REQUEST["pruefungsintervall"]) && $_REQUEST["pruefungsintervall"] !== false)) + { + $pruefungsintervall = $_REQUEST["pruefungsintervall"]; + } + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $mitarbeiter_uid = $_REQUEST["mitarbeiter_uid"]; + } + else + { + $mitarbeiter_uid = $uid; + } + $data = updatePruefungstermin($mitarbeiter_uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall); + break; + case 'deleteLehrveranstaltungFromPruefung': + $lvId = $_POST["lehrveranstaltung_id"]; + $pruefung_id = $_POST["pruefung_id"]; + $data = deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id); + break; + case 'stornoPruefung': + $pruefung_id = $_REQUEST["pruefung_id"]; + $data = stornoPruefung($pruefung_id); + break; + case 'deleteTermin': + $pruefung_id = $_REQUEST["pruefung_id"]; + $pruefungstermin_id = $_REQUEST["pruefungstermin_id"]; + $data = deleteTermin($pruefung_id, $pruefungstermin_id); + break; + case 'getAllPruefungen': + if($rechte->isBerechtigt('lehre/pruefungsterminAdmin')) + { + $data = getAllPruefungen($_REQUEST["uid"]); + } + else + { + $data = getAllPruefungen($uid); + } + break; + default: + break; +} +echo json_encode($data); + + +/** + * Lädt alle Prüfungstypen aus der Datenbank + * @param boolean $abschluss Gibt an ob Prüfungstypen einer Abschlussprüfunge geladen werden sollen oder nicht + * @return Array + */ +function loadPruefungstypen($abschluss) +{ + $pruefungstermin = new pruefungstermin(); + $pruefungstypen = $pruefungstermin->getAllPruefungstypen($abschluss); + if(!empty($pruefungstypen)) + { + $data['result']=$pruefungstypen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungstermin->errormsg; + } + return $data; +} + +/** + * Lädt alle Studiensemester aus der Datenbank + * @param String $aktStudiensemester das Aktuelle Studiensemester + * @return Array + */ +function loadStudiensemester($aktStudiensemester = null) +{ + $studiensemester = new studiensemester(); + if($studiensemester->getAll()) + { + $data['result']=$studiensemester->studiensemester; + if(!is_null($aktStudiensemester)) + { + $data['aktSem']=$aktStudiensemester; + } + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$studiensemester->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungsfenster eines Studiensemesters + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @return Array + */ +function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) +{ + $pruefungsfenster = new pruefungsfenster(); + if($pruefungsfenster->getByStudiensemester($studiensemester_kurzbz)) + { + $data['result']=$pruefungsfenster->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefungsfenster->errormsg; + } + return $data; +} + +/** + * Speichet einen Prüfungstermin + * @param int $uid UID des Lektors + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps + * @param String $titel Titel der Prüfung + * @param String $beschreibung Beschreibung zur Prüfung + * @param String $methode Methode der Prüfung + * @param boolen $einzeln TRUE, wenn Einzelprüfung + * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung + * @param Array $termine Termine zur Prüfung + * @return Array + */ +function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall) +{ + if($lehrveranstaltungen === null) + { + $data['error']='true'; + $data['errormsg']="Keine Lehrverantaltung angegeben."; + return $data; + } + $termineArray = array(); + foreach ($termine as $key => $t) { + $termin = new stdClass(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->min = $t["min"]; + $termin->max = $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + $termin->sammelklausur = $t["sammelklausur"]; + //Termin soll auch außerhalb eines Prüfungsfensters angelegt werden können +// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) +// { + if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + { + array_push($termineArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']="Kollision mit anderem Termin."; + return $data; + } +// } +// else +// { +// $data['error']='true'; +// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; +// return $data; +// } + } + + $pruefung = new pruefungCis(); + $pruefung->termine = $termineArray; + $pruefung->mitarbeiter_uid = $uid; + $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; + $pruefung->pruefungsfenster_id = $pruefungsfenster_id; + $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $pruefung->titel = $titel; + $pruefung->beschreibung = $beschreibung; + $pruefung->methode = $methode; + $pruefung->einzeln = $einzeln; + $pruefung->insertvon = get_uid(); + $pruefung->pruefungsintervall = $pruefungsintervall; + + foreach ($lehrveranstaltungen as $lv) { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + + if($pruefung->save(true)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + + //TODO Mail-Inhalt fehlt +// foreach ($pruefung->lehrveranstaltungen as $lvId) +// { +// $lv = new lehrveranstaltung($lvId); +// $text = "Ein Prüfungstermin zu Ihrer Lehrveranstaltung ".$lv->bezeichnung." wurde angelegt.\n" +// . "Die Prüfung kann am " +// .date('d.m.Y', strtotime($pruefung->termine[0]->beginn))." " +// . "in der Zeit von " +// .date('H:i', strtotime($pruefung->termine[0]->beginn))." bis " +// .date('H:i', strtotime($pruefung->termine[0]->ende))." abgelegt werden."; +// //$text = "test"; +// $empfaenger = $lv->getStudentsOfLv($lvId, $pruefung->studiensemester_kurzbz); +// $mailto = ""; +// foreach ($empfaenger as $e) { +// $mailto .= $e.'@'.DOMAIN.', '; +// } +// +// $email = new mail($mailto, "fhcomplete", "Prüfungstermin für ".$lv->bezeichnung, $text); +// $email->setReplyTo($uid."@".DOMAIN); +//// var_dump($email); +// $email->send(); +// } + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt alle Lehrveranstaltungen eines Mitarbeiters + * @param int $mitarbeiter_uid UID des Mitarbeiters + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @return Array + */ +function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz) +{ + $lehrveranstaltung = new lehrveranstaltung(); + if($lehrveranstaltung->getLVByMitarbeiter($mitarbeiter_uid, $studiensemester_kurzbz)) + { + $stg = new studiengang(); + foreach($lehrveranstaltung->lehrveranstaltungen as $key=>$lv) + { + $stg->load($lv->studiengang_kz); + $lv->studiengang_bezeichnung = $stg->kurzbzlang; + } + $data['result']=$lehrveranstaltung->lehrveranstaltungen; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$lehrveranstaltung->errormsg; + } + return $data; +} + +/** + * Speichet einen Prüfungstermin + * @param int $uid UID des Lektors + * @param String $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $pruefungstyp_kurzbz Kurzbezeichnung des Prüfungstyps + * @param String $titel Titel der Prüfung + * @param String $beschreibung Beschreibung zur Prüfung + * @param String $methode Methode der Prüfung + * @param boolen $einzeln TRUE, wenn Einzelprüfung + * @param Array $lehrveranstaltungen Lehrveranstaltungen zur Prüfung + * @param Array $termine Termine zur Prüfung (bestehende) + * @param type $termineNeu Neu hinzugefügte Termine + * @return Array + */ +function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall) +{ + $pruefungsfenster = new pruefungsfenster(); + $pruefungsfenster->load($pruefungsfenster_id); + $datum = new datum(); + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + + if($termineNeu !== null) + { + $termineNeuArray = array(); + foreach ($termineNeu as $key => $t) { + $termin = new stdClass(); + $datum = new datum(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->min = $t["min"]; + $termin->max = $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); + $termin->sammelklausur = $t["sammelklausur"]; +// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) +// { + if(!(checkCollision($uid, $termin->beginn, $termin->ende))) + { + array_push($termineNeuArray, $termin); + } + else + { + $data['error']='true'; + $data['errormsg']="Kollision mit anderem Termin."; + return $data; + } +// } +// else +// { +// $data['error']='true'; +// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; +// return $data; +// } + } + foreach ($termineNeuArray as $t) + { + $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur); + } + } + + if($termine !== null) + { + $termineArray = array(); + foreach ($termine as $key => $t) { + $termin = new stdClass(); + $datum = new datum(); + $date = $t["datum"]; + $beginn = $t["beginn"]; + $ende = $t["ende"]; + $termin->pruefungstermin_id = $t["pruefungstermin_id"]; + $termin->min = $t["min"]; + $termin->max = ($t["max"] === "null") ? NULL : $t["max"]; + $termin->beginn = date('Y-m-d H:i', strtotime($date." ".$beginn)); + $termin->ende = date('Y-m-d H:i', strtotime($date." ".$ende)); +// if(checkTerminPruefungsfenster($pruefungsfenster_id, $date)) +// { +// array_push($termineArray, $termin); +// } +// else +// { +// $data['error']='true'; +// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; +// return $data; +// } + } + foreach($termineArray as $key=>$t) + { + $termineArray[$key] = (object) $t; + } + $pruefung->termine = $termineArray; + } + + $pruefung->mitarbeiter_uid = $uid; + $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; + $pruefung->pruefungsfenster_id = $pruefungsfenster_id; + $pruefung->pruefungstyp_kurzbz = $pruefungstyp_kurzbz; + $pruefung->titel = $titel; + $pruefung->beschreibung = $beschreibung; + $pruefung->methode = $methode; + $pruefung->einzeln = $einzeln; + $pruefung->updatevon = get_uid(); + $pruefung->pruefungsintervall = $pruefungsintervall; + if($lehrveranstaltungen !== null) + { + foreach ($lehrveranstaltungen as $lv) + { + if($lv != "null") + { + array_push($pruefung->lehrveranstaltungen, $lv); + } + } + } + if($pruefung->save(false)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + + //TODO Mail-Inhalt fehlt + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Löscht Lehrveranstaltungen von einer Prüfung + * @param int $lvId ID der Lehrveranstaltung + * @param int $pruefung_id ID der Prüfung + * @return Array + */ +function deleteLehrveranstaltungFromPruefung($lvId, $pruefung_id) +{ + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + if($pruefung->deleteLehrveranstaltungPruefung($lvId, $pruefung_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Storniert eine Prüfung + * @param int $pruefung_id ID der Prüfung + * @return Array + */ +function stornoPruefung($pruefung_id) +{ + $pruefung = new pruefungCis(); + if($pruefung->pruefungStornieren($pruefung_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Löscht einen Termin einer Prüfung + * @param int $pruefung_id ID der Prüfung + * @param int $pruefungstermin_id ID des Termins + * @return Array + */ +function deleteTermin($pruefung_id, $pruefungstermin_id) +{ + $pruefung = new pruefungCis(); + $pruefung->load($pruefung_id); + if($pruefung->deleteTerminPruefung($pruefungstermin_id)) + { + $data['result']="true"; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Lädt alle Prüfungen eines Mitarbeiters + * @param String $mitarbeiter_uid UID des Mitarbeiters + * @return Array + */ +function getAllPruefungen($mitarbeiter_uid) +{ + $pruefung = new pruefungCis(); + if($pruefung->getAllPruefungen($mitarbeiter_uid)) + { + foreach ($pruefung->result as $prf) + { + $prf->getLehrveranstaltungenByPruefung(); + foreach($prf->lehrveranstaltungen as $key=>$lv) + { + $temp = new lehrveranstaltung($lv->lehrveranstaltung_id); + $array = $temp->cleanResult(); + $prf->lehrveranstaltungen[$key] = $array[0]; + } + $prf->getTermineByPruefung(); + } + $data['result']=$pruefung->result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$pruefung->errormsg; + } + return $data; +} + +/** + * Überprüft ob das angegebene Datum innerhalb eines Prüfungsfensters ist + * @param int $pruefungsfenster_id ID des Prüfungsfensters + * @param String $datum + * @return boolean + */ +function checkTerminPruefungsfenster($pruefungsfenster_id, $datum) +{ + $pruefungsfenster = new pruefungsfenster($pruefungsfenster_id); + $date = new datum(); + if($date->between($pruefungsfenster->start, $pruefungsfenster->ende, $datum)) + { + return true; + } + return false; +} + +/** + * Überprüft ob es eine Kollision zu anderen Prüfungen des Mitarbeiters gibt + * @param String $uid UID des Mitarbeiters + * @param String $beginn Beginn des Termins + * @param String $ende Ende des Termins + * @return boolean + */ +function checkCollision($uid, $beginn, $ende) +{ + $collision = false; + $pruefung = new pruefungCis(); + $pruefung->getAllPruefungen($uid); + $datum = new datum(); + foreach($pruefung->result as $prf) + { + $prf->getTermineByPruefung(); + foreach($prf->termine as $termin) + { + if(($datum->between($termin->von, $termin->bis, $beginn)) || ($datum->between($termin->von, $termin->bis, $ende))) + { + $collision = true; + } + } + } + if($collision) + { + return true; + } + return false; +} ?> \ No newline at end of file diff --git a/cis/private/pdfExport.php b/cis/private/pdfExport.php index 646ff8d68..f80346eb0 100644 --- a/cis/private/pdfExport.php +++ b/cis/private/pdfExport.php @@ -33,6 +33,7 @@ require_once('../../include/akte.class.php'); require_once('../../include/konto.class.php'); require_once('../../include/benutzer.class.php'); require_once('../../include/vorlage.class.php'); +require_once('../../include/addon.class.php'); if (!$db = new basis_db()) die('Fehler beim Oeffnen der Datenbankverbindung'); @@ -89,31 +90,34 @@ if(isset($_GET['abschlusspruefung_id'])) $params.='&abschlusspruefung_id='.$_GET['abschlusspruefung_id']; if(isset($_GET['typ'])) $params.='&typ='.$_GET['typ']; - +if(isset($_GET['output'])) + $output=$_GET['output']; +else + $output='pdf'; $konto = new konto(); if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) { - if($xsl=='Inskription' && (!$konto->checkStudienbeitrag($user, $_GET["ss"]))) - die('Der Studienbeitrag wurde noch nicht bezahlt'); + if(($xsl=='Inskription' || $xsl == 'Studienblatt') && (!$konto->checkStudienbeitrag($user, $_GET["ss"]))) + die('Der Studienbeitrag wurde noch nicht bezahlt'); if(isset($_GET['buchungsnummern'])) { - //Beim Drucken von Buchungsbestaetigungen pruefen ob diese Buchungen auch zu diesem Benutzer gehoeren - $buchungsnr = explode(';',$_GET['buchungsnummern']); - $user_obj = new benutzer(); - $user_obj->load($user); - foreach($buchungsnr as $bnr) + //Beim Drucken von Buchungsbestaetigungen pruefen ob diese Buchungen auch zu diesem Benutzer gehoeren + $buchungsnr = explode(';',$_GET['buchungsnummern']); + $user_obj = new benutzer(); + $user_obj->load($user); + foreach($buchungsnr as $bnr) + { + if($bnr!='') { - if($bnr!='') - { - $konto->load($bnr); - if($konto->person_id!=$user_obj->person_id) - die('Sie haben keine Berechtigung fuer diese Buchung'); - if($konto->getDifferenz($bnr)!=0) - die('Diese Zahlung wurde noch nicht beglichen'); - } + $konto->load($bnr); + if($konto->person_id!=$user_obj->person_id) + die('Sie haben keine Berechtigung fuer diese Buchung'); + if($konto->getDifferenz($bnr)!=0) + die('Diese Zahlung wurde noch nicht beglichen'); } + } } $xml_url=XML_ROOT.$xml.$params; //echo $xml_url; @@ -134,49 +138,217 @@ if (($user == $_GET["uid"]) || $rechte->isBerechtigt('admin')) { if($xsl_stg_kz=='') $xsl_stg_kz='0'; - + $vorlage->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); } - - // Load the XSL source - $xsl_doc = new DOMDocument; - - if(!$xsl_doc->loadXML($vorlage->text)) - die('unable to load xsl'); - - // Configure the transformer - $proc = new XSLTProcessor; - $proc->importStyleSheet($xsl_doc); // attach the xsl rules - - $buffer = $proc->transformToXml($xml_doc); - //in $buffer steht nun das xsl-fo file mit den daten - $buffer = ''.substr($buffer, strpos($buffer,"\n"),strlen($buffer)); - - //Pdf erstellen - $fo2pdf = new XslFo2Pdf(); - - //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen - $nachname=''; + + if(mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument')) + { + 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($vorlage->text)) + die('unable to load xsl'); + + // Configure the transformer + $proc = new XSLTProcessor; + $proc->importStyleSheet($xsl_doc); // attach the xsl rules + + $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(); + if($vorlage->bezeichnung!='') + $filename = $vorlage->bezeichnung; + else + $filename = $vorlage->vorlage_kurzbz; + if($output == 'pdf') + { + if($xsl == 'LV_Informationen') + { + $studiengang = new studiengang($_GET['stg_kz']); + $studiensemester = new studiensemester($_GET['ss']); + $tempPdfName = $vorlage->vorlage_kurzbz.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf'; + $filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz.'.pdf'; + } + elseif($xsl == "Honorarvertrag") + { + $tempPdfName = $vorlage->vorlage_kurzbz.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf'; + $filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname.'.pdf'; + } + elseif($xsl == "Studienordnung") + { + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.pdf'; + $tempPdfName = $vorlage->vorlage_kurzbz.'.pdf'; + } + else + { + $tempPdfName = $vorlage->vorlage_kurzbz.'.pdf'; + $filename = $filename.'.pdf'; + } + exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > $tempPdfName"); + + $fsize = filesize($tempPdfName); + $handle = fopen($tempPdfName,'r'); + header('Content-type: application/pdf'); + header('Content-Disposition: attachment; filename="'.$filename.'"'); + header('Content-Length: '.$fsize); + } + else if($output =='odt') + { + if($xsl == "Studienordnung") + { + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = $filename.'_'.$studienordnung->studiengangkurzbzlang; + } + $fsize = filesize($tempname_zip); + $handle = fopen($tempname_zip,'r'); + header('Content-type: '.$vorlage->mimetype); + header('Content-Disposition: attachment; filename="'.$filename.'.'.$endung.'"'); + header('Content-Length: '.$fsize); + } + else if($output =='doc') + { + $tempPdfName = $vorlage->vorlage_kurzbz.'.doc'; + if($xsl == "Studienordnung") + { + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = $filename.'_'.$studienordnung->studiengangkurzbzlang.'.doc'; + } + else + { + $filename = $filename.'.doc'; + } + exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > $tempPdfName"); + + $fsize = filesize($tempPdfName); + $handle = fopen($tempPdfName,'r'); + header('Content-type: application/vnd.ms-word'); + header('Content-Disposition: attachment; filename="'.$filename.'"'); + header('Content-Length: '.$fsize); + } + while (!feof($handle)) + { + echo fread($handle, 8192); + } + fclose($handle); + + unlink('content.xml'); + if(isset($_GET['style_xsl'])) + unlink('styles.xml'); + unlink($tempname_zip); + if($output=='pdf' || $output=='doc') + unlink($filename); + rmdir($tempfolder); + } + } + else + { + // Load the XSL source + $xsl_doc = new DOMDocument; + + if(!$xsl_doc->loadXML($vorlage->text)) + die('unable to load xsl'); + + // Configure the transformer + $proc = new XSLTProcessor; + $proc->importStyleSheet($xsl_doc); // attach the xsl rules + + $buffer = $proc->transformToXml($xml_doc); + //in $buffer steht nun das xsl-fo file mit den daten + $buffer = ''.substr($buffer, strpos($buffer,"\n"),strlen($buffer)); + + //Pdf erstellen + $fo2pdf = new XslFo2Pdf(); + + //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen + $nachname=''; - if(isset($_GET['uid']) && $_GET['uid']!='') - { + if(isset($_GET['uid']) && $_GET['uid']!='') + { $uid = str_replace(';','',$_GET['uid']); $qry = "SELECT nachname FROM campus.vw_benutzer WHERE uid=".$db->db_add_param($uid); - + if($result = $db->db_query($qry)) { - if($row = $db->db_fetch_object($result)) - { - $nachname = '_'.$row->nachname; - } + if($row = $db->db_fetch_object($result)) + { + $nachname = '_'.$row->nachname; + } } - } - $filename=$xsl.$nachname; - - if (!$fo2pdf->generatePdf($buffer, $filename, "D")) - { + } + $filename=$xsl.$nachname; + + if (!$fo2pdf->generatePdf($buffer, $filename, "D")) + { echo('Failed to generate PDF'); + } } } else diff --git a/cis/private/profile/dokumente.php b/cis/private/profile/dokumente.php index 6ac8d804a..00d833287 100755 --- a/cis/private/profile/dokumente.php +++ b/cis/private/profile/dokumente.php @@ -135,6 +135,7 @@ echo $p->t('global/studiensemester')." - - - - ".$p->t('incoming/dokumenttyp').": - - - - -   - - - - - - - - "; - -} -else -{ - echo "Es wurde keine Person_id angegeben"; -} - -?> - - diff --git a/include/studiengang.class.php b/include/studiengang.class.php index b7575bbe9..301904ae7 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -260,7 +260,7 @@ class studiengang extends basis_db . 'USING (studienordnung_id) ' . 'WHERE aktiv ' . 'AND studiengang_kz = ' . $this->db_add_param($studiengang_kz, FHC_INTEGER) - . ' AND orgform_kurzbz NOT IN (' . $this->db_add_param('DDP') . ', ' . $this->db_add_param('DL') . ')'; + . ' AND orgform_kurzbz!='. $this->db_add_param('DDP'); if($result = $this->db_query($qry)) { diff --git a/locale/de-AT/bewerbung.php b/locale/de-AT/bewerbung.php index 254968ed0..91216acbd 100755 --- a/locale/de-AT/bewerbung.php +++ b/locale/de-AT/bewerbung.php @@ -37,6 +37,7 @@ $this->phrasen['bewerbung/egal']='egal'; $this->phrasen['bewerbung/orgform']='Organisationsform'; $this->phrasen['bewerbung/orgform/berufsbegleitend']='Berufsbegleitend'; $this->phrasen['bewerbung/orgform/vollzeit']='Vollzeit'; +$this->phrasen['bewerbung/orgform/distance']='Fernstudium'; $this->phrasen['bewerbung/sprache']='Sprache'; $this->phrasen['bewerbung/sprache/deutsch']='Deutsch'; $this->phrasen['bewerbung/sprache/englisch']='Englisch'; diff --git a/system/checksystem.php b/system/checksystem.php index 5d3c1ec06..d6fea5fb1 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -2621,7 +2621,7 @@ if(!$result = @$db->db_query("SELECT pflicht FROM public.tbl_dokumentstudiengang } // Spalten zgvnation, zgvmanation, zgvdoktornation in public.tbl_prestudent -if(!$result = @$db->db_query("SELECT pflicht FROM public.tbl_prestudent LIMIT 1")) +if(!$result = @$db->db_query("SELECT zgvnation FROM public.tbl_prestudent LIMIT 1")) { $qry = "ALTER TABLE public.tbl_prestudent ADD COLUMN zgvnation character varying(3); ALTER TABLE public.tbl_prestudent ADD COLUMN zgvmanation character varying(3) ; @@ -3044,7 +3044,7 @@ $tabellen=array( "public.tbl_preoutgoing_lehrveranstaltung" => array("preoutgoing_lehrveranstaltung_id","preoutgoing_id","bezeichnung","ects","endversion","insertamum","insertvon","updateamum","updatevon","wochenstunden","unitcode"), "public.tbl_preoutgoing_preoutgoing_status" => array("status_id","preoutgoing_status_kurzbz","preoutgoing_id","datum","insertamum","insertvon","updateamum","updatevon"), "public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"), - "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor"), + "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation"), "public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung"), "public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung"), "public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich"), From 31371eab5e4979f107520e595b9947ef994aa8bb Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 9 Apr 2015 19:01:00 +0200 Subject: [PATCH 08/10] Documents Folder added to ignore List --- .gitignore | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 4e8053fec..706a9c3a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,4 @@ .htaccess /nbproject/ /.idea/ -documents/dms/5501ab0195d74.pdf -documents/dms/5501abcc7300b.pdf -documents/dms/5501b6ed6b073.jpg -documents/dms/5501d1a12fa02.jpg +documents/ From e728daf034f22808ac643806dca52c18410269ee Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 9 Apr 2015 19:01:55 +0200 Subject: [PATCH 09/10] Fehler in der Caldav Schnittstelle behoben bei der die Termine nicht immer korrekt exportiert wurden wenn zur selben Zeit ein LVPlan Eintrag und eine Reservierung vorhanden ist --- include/wochenplan.class.php | 5 ++++- webdav/Caldav_Backend.php | 12 ++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php index 76e497230..c924f098c 100644 --- a/include/wochenplan.class.php +++ b/include/wochenplan.class.php @@ -2438,6 +2438,8 @@ class wochenplan extends basis_db 'Description'=>$description, 'dtstart'=>$start_date_time_ical, 'dtend'=>$end_date_time_ical, + 'reservierung'=>$this->std_plan[$i][$j][$idx]->reservierung, + 'reservierung_id'=>($this->std_plan[$i][$j][$idx]->reservierung?$this->std_plan[$i][$j][$idx]->stundenplan_id:''), 'updateamum'=>$this->std_plan[$i][$j][$idx]->updateamum, 'data'=>'BEGIN:VEVENT'.$this->crlf .'UID:'.$UID.$this->crlf @@ -2488,7 +2490,8 @@ class wochenplan extends basis_db $lektor1 = $this->std_plan[$tag][$stunde][$idx]->lektor; $lektor2 = $this->std_plan[$tag][$stunde][$idx1]->lektor; - if($unr1==$unr2 && ($ort1==$ort2 || $lektor1==$lektor2)) + if($unr1==$unr2 && ($ort1==$ort2 || $lektor1==$lektor2) + && !$this->std_plan[$tag][$stunde][$idx]->reservierung && !$this->std_plan[$tag][$stunde][$idx1]->reservierung) return true; else return false; diff --git a/webdav/Caldav_Backend.php b/webdav/Caldav_Backend.php index 71f5780c1..d107341d2 100644 --- a/webdav/Caldav_Backend.php +++ b/webdav/Caldav_Backend.php @@ -211,7 +211,7 @@ class MySabre_CalDAV_Backend extends \Sabre\CalDAV\Backend\AbstractBackend foreach($val as $row) { //einzelnen Eintrag holen - if($row['dtstart']==$dtstart && $row['unr'][0]==$unr) + if($row['dtstart']==$dtstart && ($row['unr'][0]==$unr) || $unr=='R'.$row['reservierung_id']) { return $row; } @@ -221,6 +221,7 @@ class MySabre_CalDAV_Backend extends \Sabre\CalDAV\Backend\AbstractBackend $data=array_merge($data, $val); } $endtime = microtime(true); + //error_log("\n\nDATA".print_r($data,true)); //error_log("getCalendarData time:".($endtime-$starttime)); //$data.="\nEND:VCALENDAR"; return $data; @@ -280,9 +281,16 @@ END:VTIMEZONE\n".$event."\nEND:VCALENDAR"; $return = array(); foreach($data as $row) { + // Reservierungen werden mit einem R markiert und mit der ReservierungID da sonst + // Termine verloren gehen koennen wenn zur selben Zeit eine Reservierung und ein LVPlan Eintrag vorhanden ist + if($row['reservierung']) + $uri = $row['dtstart'].'-R'.$row['reservierung_id']; + else + $uri = $row['dtstart'].'-'.$row['unr'][0]; + $return[] = array("id"=>$row['UID'], "calendardata"=>$this->makeCal($row['data']), - "uri"=>$row['dtstart'].'-'.$row['unr'][0], + "uri"=>$uri, "lastmodified"=>$row['updateamum'], "etag"=>'"'.$row['UID'].'"', "calendarid"=>$calendarId); From cad7a714c149538d0cc01f20d20de414cae2f2db Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 9 Apr 2015 19:04:27 +0200 Subject: [PATCH 10/10] =?UTF-8?q?Addon=20Hooks=20f=C3=BCr=20LV-Detail=20Se?= =?UTF-8?q?ite=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/lesson.php | 33 ++++++++++++++++++++++++++++++++- include/tw/cis_menu_lv.inc.php | 2 +- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/cis/private/lehre/lesson.php b/cis/private/lehre/lesson.php index 0948eefcd..b3b6f2e1d 100644 --- a/cis/private/lehre/lesson.php +++ b/cis/private/lehre/lesson.php @@ -92,11 +92,42 @@ if (isset($_GET["handbuch"])){ readfile($filename); exit; } -?> +?> + + + +loadAddons(); +foreach($addon_obj->result as $addon) +{ + if(file_exists('../../../addons/'.$addon->kurzbz.'/cis/init.js.php')) + echo ''; +} + +// Wenn Seite fertig geladen ist Addons aufrufen +echo ' + +'; + +?>