From 4372f5b62c011b991f56aca6fb3fc6ed3f8793af Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Wed, 14 Dec 2016 14:46:11 +0100 Subject: [PATCH] fixed selection of studienverpflichtung at registration for exam --- cis/private/lehre/pruefung/pruefung.js | 35 +++- cis/private/lehre/pruefung/pruefung.js.php | 33 +++- .../pruefung/pruefungsanmeldung.json.php | 173 ++++++++++++++---- .../lehre/pruefung/pruefungsanmeldung.php | 14 ++ include/lehrveranstaltung.class.php | 69 +++++++ locale/de-AT/pruefung.php | 2 + 6 files changed, 285 insertions(+), 41 deletions(-) diff --git a/cis/private/lehre/pruefung/pruefung.js b/cis/private/lehre/pruefung/pruefung.js index 620f20db0..801854f19 100644 --- a/cis/private/lehre/pruefung/pruefung.js +++ b/cis/private/lehre/pruefung/pruefung.js @@ -446,6 +446,34 @@ function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, t }); $("#studienverpflichtung").html(html); }); + + $.ajax({ + dataType: 'json', + url: "./pruefungsanmeldung.json.php", + type: "POST", + data: { + method: "getPrestudenten" + }, + error: loadError + }).success(function(data) + { + if(data.error !== false) + { + var html = ""; + + console.log(html); + + $("#studiengang").html("t('pruefung/AnrechnungInStudiengang'); ?>:"+html+""); + } + }); var start = terminVon; var ende = terminBis; @@ -487,6 +515,10 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) var studienverpflichtung_id = null; if($("#studienverpflichtung").length) studienverpflichtung_id = $("#studienverpflichtung option:selected").val(); + + var studiengang_kz = null; + if($('#prestudent_studiengang').length) + studiengang_kz = $('#prestudent_studiengang option:selected').val(); $.ajax({ dataType: 'json', @@ -498,7 +530,8 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) lehrveranstaltung_id: lehrveranstaltung_id, bemerkung: bemerkungen, uid: uid, - studienverpflichtung_id: studienverpflichtung_id + studienverpflichtung_id: studienverpflichtung_id, + studiengang_kz: studiengang_kz }, error: loadError }).success(function(data){ diff --git a/cis/private/lehre/pruefung/pruefung.js.php b/cis/private/lehre/pruefung/pruefung.js.php index 9f4fa48a9..d1be2e8bb 100755 --- a/cis/private/lehre/pruefung/pruefung.js.php +++ b/cis/private/lehre/pruefung/pruefung.js.php @@ -491,6 +491,32 @@ function openDialog(lehrveranstaltung_id, termin_id, lvBezeichnung, terminVon, t $("#studienverpflichtung").html(html); }); + $.ajax({ + dataType: 'json', + url: "./pruefungsanmeldung.json.php", + type: "POST", + data: { + method: "getPrestudenten" + }, + error: loadError + }).success(function(data) + { + if(data.error !== false) + { + //show if more than 1 active prestudent exists + if(data.result.length > 1) + { + var html = ""; + + $("#studiengang").html("t('pruefung/AnrechnungInStudiengang'); ?>:"+html+""); + } + } + }); + var start = terminVon; var ende = terminBis; start = start.split(' '); @@ -532,6 +558,10 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) if($("#studienverpflichtung").length) studienverpflichtung_id = $("#studienverpflichtung option:selected").val(); + var studiengang_kz = null; + if($('#prestudent_studiengang').length) + studiengang_kz = $('#prestudent_studiengang option:selected').val(); + $.ajax({ dataType: 'json', url: "./pruefungsanmeldung.json.php", @@ -542,7 +572,8 @@ function saveAnmeldung(lehrveranstaltung_id, termin_id) lehrveranstaltung_id: lehrveranstaltung_id, bemerkung: bemerkungen, uid: uid, - studienverpflichtung_id: studienverpflichtung_id + studienverpflichtung_id: studienverpflichtung_id, + studiengang_kz: studiengang_kz }, error: loadError }).success(function(data){ diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 803bbc33e..6a1eb085b 100755 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -41,6 +41,7 @@ $lang->load($sprache); $p = new phrasen($sprache); $uid = get_uid(); +$uid = "p20110133"; $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); @@ -120,6 +121,9 @@ switch($method) $lvid = filter_input(INPUT_POST, "lehrveranstaltung_id"); $data = getLvKompatibel($lvid); break; + case 'getPrestudenten': + $data = getPrestudenten($uid, $aktStudiensemester); + break; default: break; } @@ -376,6 +380,7 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $stdsem = $studiensemester->getLastOrAktSemester(0); $lv_besucht = false; $studienverpflichtung_id = filter_input(INPUT_POST, "studienverpflichtung_id"); + $studiengang_kz = filter_input(INPUT_POST, "studiengang_kz"); //Defaulteinstellung für Anzahlprüfungsversuche (wird durch Addon "ktu" überschrieben) $maxAnzahlVersuche = 0; @@ -583,6 +588,7 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) $anrechnung = new anrechnung(); $lv_komp = new lehrveranstaltung($studienverpflichtung_id); + $lehrveranstaltung = new lehrveranstaltung($_REQUEST["lehrveranstaltung_id"]); $person = new person(); $person->getPersonFromBenutzer($uid); $prestudent = new prestudent(); @@ -592,39 +598,92 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) if ($aktStudiensemester) $stdsem = $aktStudiensemester; - if(count($prestudent->result) > 0) + $prestudenten = array(); + + foreach ($prestudent->result as $ps) { - $prestudent_id = ""; - foreach($prestudent->result as $ps) - { - if($ps->getLaststatus($ps->prestudent_id, $stdsem)) - { - if(($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - $prestudent_id = $ps->prestudent_id; - } - else - { - if($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) - { - if(($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - $prestudent_id = $ps->prestudent_id; - } - } - } - } - else - { - if($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) - { - if(($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) - { - $prestudent_id = $ps->prestudent_id; - } - } - } - } + if ($ps->getLaststatus($ps->prestudent_id, $stdsem)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + array_push($prestudenten, $ps); + } + } + } + + if (count($prestudenten) > 0) + { + $prestudent_id = ""; + if (count($prestudenten) != 1) + { + foreach ($prestudenten as $ps) + { + if($ps->studiengang_kz === $studiengang_kz) + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + else + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + } + } + } + else + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + } + } + } + } + } + else + { + foreach ($prestudenten as $ps) + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + else + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + } + } + } + else + { + if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) + { + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + { + $prestudent_id = $ps->prestudent_id; + } + } + } + } + } + if($prestudent_id != "") { $anrechungSaveResult = false; @@ -1165,18 +1224,54 @@ function saveRaum($terminId, $ort_kurzbz, $uid) function getLvKompatibel($lvid) { $lv = new lehrveranstaltung(); - if($lv->getLVkompatibel($lvid)) + if($lv->getLVkompatibelTo($lvid)) { - $data['result']=$lv->lehrveranstaltungen; - $data['error']='false'; - $data['errormsg']=''; + $data['result']=$lv->lehrveranstaltungen; + $data['error']='false'; + $data['errormsg']=''; } else { - $data['result']=""; - $data['error']='true'; - $data['errormsg']=$lv->errormsg; + $data['result']=""; + $data['error']='true'; + $data['errormsg']=$lv->errormsg; } return $data; } + +function getPrestudenten($uid, $aktStudiensemester) +{ + $person = new person(); + $person->getPersonFromBenutzer($uid); + $prestudent = new prestudent(); + $prestudent->getPrestudenten($person->person_id); + $result = array(); + + if (count($prestudent->result) > 0) + { + foreach ($prestudent->result as $key=>$ps) + { + if ($ps->getLaststatus($ps->prestudent_id)) + { + if(($ps->status_kurzbz === 'Student') || ($ps->status_kurzbz == 'Unterbrecher')) + { + $studiengang = new studiengang($ps->studiengang_kz); + array_push($result, $studiengang); + } + } + } + + $data['result']=$result; + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['result']=""; + $data['error']='true'; + $data['errormsg']=$lv->errormsg; + } + + return $data; +} ?> diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.php b/cis/private/lehre/pruefung/pruefungsanmeldung.php index 5551adb70..1a9c43875 100755 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.php @@ -40,6 +40,17 @@ $p = new phrasen($sprache); //TODO $uid = get_uid(); +if(isset($_GET['uid'])) +{ + // Administratoren duerfen die UID als Parameter uebergeben um den Studienplan + // von anderen Personen anzuzeigen + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($uid); + if($rechte->isBerechtigt('admin')) + $uid=$_GET['uid']; +} + $db = new basis_db(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); @@ -302,6 +313,9 @@ $studiensemester->getAll(); + + + t('global/anmerkung'); ?>: diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index ced930158..010863068 100755 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -1592,6 +1592,75 @@ class lehrveranstaltung extends basis_db } } + /** + * Lädt alle Lehrveranstaltungen zu denen die übergebene LV ID kompatibel ist + * @param $lehrveranstaltung_id ID der Lehrveranstaltung + */ + public function getLVkompatibelTo($lehrveranstaltung_id) + { + if (!is_numeric($lehrveranstaltung_id)) + { + $this->errormsg = 'Lehrveranstaltung_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id IN ( + SELECT lehrveranstaltung_id + FROM lehre.tbl_lehrveranstaltung_kompatibel + WHERE lehrveranstaltung_id_kompatibel=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).");"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $lv_obj = new lehrveranstaltung(); + + $lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $lv_obj->studiengang_kz = $row->studiengang_kz; + $lv_obj->bezeichnung = $row->bezeichnung; + $lv_obj->kurzbz = $row->kurzbz; + $lv_obj->lehrform_kurzbz = $row->lehrform_kurzbz; + $lv_obj->semester = $row->semester; + $lv_obj->ects = $row->ects; + $lv_obj->semesterstunden = $row->semesterstunden; + $lv_obj->anmerkung = $row->anmerkung; + $lv_obj->lehre = $this->db_parse_bool($row->lehre); + $lv_obj->lehreverzeichnis = $row->lehreverzeichnis; + $lv_obj->aktiv = $this->db_parse_bool($row->aktiv); + $lv_obj->ext_id = $row->ext_id; + $lv_obj->insertamum = $row->insertamum; + $lv_obj->insertvon = $row->insertvon; + $lv_obj->planfaktor = $row->planfaktor; + $lv_obj->planlektoren = $row->planlektoren; + $lv_obj->planpersonalkosten = $row->planpersonalkosten; + $lv_obj->plankostenprolektor = $row->plankostenprolektor; + $lv_obj->updateamum = $row->updateamum; + $lv_obj->updatevon = $row->updatevon; + $lv_obj->sprache = $row->sprache; + $lv_obj->sort = $row->sort; + $lv_obj->incoming = $row->incoming; + $lv_obj->zeugnis = $this->db_parse_bool($row->zeugnis); + $lv_obj->projektarbeit = $this->db_parse_bool($row->projektarbeit); + $lv_obj->koordinator = $row->koordinator; + $lv_obj->bezeichnung_english = $row->bezeichnung_english; + $lv_obj->orgform_kurzbz = $row->orgform_kurzbz; + $lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz; + $lv_obj->farbe = $row->farbe; + $lv_obj->benotung = $this->db_parse_bool($row->benotung); + $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); + $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + + $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; + $lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english; + if ($lv_obj->bezeichnung_arr['English'] == '') + $lv_obj->bezeichnung_arr['English'] = $lv_obj->bezeichnung_arr['German']; + + $this->lehrveranstaltungen[] = $lv_obj; + } + return true; + } + } + /** * Speichert eine Kombination aus LV und ihrer kompatiblen Lehrveranstaltung * @param $lehrveranstaltung_id ID der Lehrveranstaltung diff --git a/locale/de-AT/pruefung.php b/locale/de-AT/pruefung.php index 19114ac1c..38b41cf9c 100755 --- a/locale/de-AT/pruefung.php +++ b/locale/de-AT/pruefung.php @@ -149,5 +149,7 @@ Die Prüfung zur LV %1$s wurde verschoben. Der neue Termin für die Prüfung ist am %2$s um %3$s Uhr.'; $this->phrasen['pruefung/emailVerschiebungSubject'] = 'Verschiebung einer Prüfung'; +$this->phrasen['pruefung/AnrechnungInStudiengang'] = 'Studiengang für Anrechnung'; + ?>