diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 8a6588c1b..c46730061 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -24,7 +24,8 @@ require_once('../../../../include/reservierung.class.php'); require_once('../../../../include/mitarbeiter.class.php'); require_once('../../../../include/pruefung.class.php'); require_once('../../../../include/pruefungsfenster.class.php'); - +require_once('../../../../include/note.class.php'); +require_once('../../../../include/addon.class.php'); $uid = get_uid(); @@ -134,10 +135,13 @@ function getPruefungByLv($aktStudiensemester = null, $uid = null) } $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); + 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); @@ -336,11 +340,74 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) { $termin = new pruefungstermin($_REQUEST["termin_id"]); $pruefung = new pruefung(); - $pruefung->getPruefungen($uid, NULL, $_REQUEST["lehrveranstaltung_id"]); + $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"]: + //TODO Konstante für Semesterzeitraum + $semCounter = $fakultaeten[0]["sem"]; + break; + case $fakultaeten[1]["fakultaet"]: + //TODO Konstante für Semesterzeitraum + $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) { - if($prf->note === '17') + $note = new note($prf->note); + if($note->note === $noteCode_uef) { $pruefungsanmeldung = new pruefungsanmeldung($prf->pruefungsanmeldung_id); $pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id); @@ -359,6 +426,14 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $i++; } } + else + { + //TODO Codierung in config!??? + if($note->positiv === FALSE && $anzahlPruefungen >= $maxAnzahlVersuche) + { + $anmeldung_moeglich = false; + } + } } if($anmeldung_moeglich) @@ -461,10 +536,13 @@ function getAllPruefungen($aktStudiensemester = null, $uid = null) } $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); + 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(); diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 57fae9ee4..030768037 100644 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -148,10 +148,10 @@ class lehrveranstaltung extends basis_db $this->semester_alternativ = $row->semester_alternativ; $this->farbe = $row->farbe; - $this->sws = $row->sws; - $this->lvs = $row->lvs; - $this->alvs = $row->alvs; - $this->lvps = $row->lvps; + $this->sws = $row->sws; + $this->lvs = $row->lvs; + $this->alvs = $row->alvs; + $this->lvps = $row->lvps; $this->las = $row->las; $this->bezeichnung_arr['German'] = $this->bezeichnung; @@ -500,8 +500,10 @@ class lehrveranstaltung extends basis_db WHERE uid=" . $this->db_add_param($student_uid); if($studiensemester_kurzbz !== NULL) $qry .= " AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - $qry .= ") OR lehrveranstaltung_id IN(SELECT lehrveranstaltung_id FROM lehre.tbl_zeugnisnote WHERE student_uid=" . $this->db_add_param($student_uid) . ") - ORDER BY semester, bezeichnung"; + $qry .= ") OR lehrveranstaltung_id IN(SELECT lehrveranstaltung_id FROM lehre.tbl_zeugnisnote WHERE student_uid=" . $this->db_add_param($student_uid); + if($studiensemester_kurzbz !== NULL) + $qry .= ' AND studiensemester_kurzbz='.$this->db_add_param ($studiensemester_kurzbz); + $qry .= ") ORDER BY semester, bezeichnung"; //Datensaetze laden if (!$this->db_query($qry))