From ad6cebfa941837443ccdd49e0099e52030823ce4 Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Thu, 9 Apr 2015 13:00:59 +0200 Subject: [PATCH] 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 '; + } } 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)?>
      + + + + + + + + + + + + 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')."