From 75f21145ce502c66254fd2ebe56969bd0320662d Mon Sep 17 00:00:00 2001 From: oesi Date: Mon, 27 Mar 2017 10:32:46 +0200 Subject: [PATCH] =?UTF-8?q?-=20Vorr=C3=BCckung=20der=20Studierenden=20pr?= =?UTF-8?q?=C3=BCft=20die=20G=C3=BCltigkeit=20des=20Studienplans.=20Wenn?= =?UTF-8?q?=20dieser=20nicht=20g=C3=BCltig=20ist=20wird=20versucht=20den?= =?UTF-8?q?=20neueren=20Studienplan=20zu=20finden.=20Wird=20kein=20eindeut?= =?UTF-8?q?iger=20Studienplan=20gefunden=20bleibt=20der=20alte=20Studienpl?= =?UTF-8?q?an.=20-=20CheckStudenten=20pr=C3=BCft=20die=20Studienpl=C3=A4ne?= =?UTF-8?q?=20und=20zeigt=20Warnungen=20an=20wenn=20Studierende=20einen=20?= =?UTF-8?q?ung=C3=BCltigen=20Studienplan=20zugeordnet=20haben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- system/checkStudenten.php | 658 +++++++++++++++------- vilesci/personen/student_vorrueckung.php | 670 ++++++++++++++++------- 2 files changed, 929 insertions(+), 399 deletions(-) diff --git a/system/checkStudenten.php b/system/checkStudenten.php index 1278dc2f6..ad1c09f93 100644 --- a/system/checkStudenten.php +++ b/system/checkStudenten.php @@ -19,7 +19,6 @@ * Andreas Oesterreicher and * Karl Burkhart */ - require_once('../config/vilesci.config.inc.php'); require_once('../include/basis_db.class.php'); require_once('../include/studiensemester.class.php'); @@ -29,138 +28,179 @@ require_once('../include/student.class.php'); require_once('../include/studiengang.class.php'); require_once('../include/functions.inc.php'); require_once('../include/datum.class.php'); +require_once('../include/benutzerberechtigung.class.php'); $db = new basis_db(); $datum = new datum(); + +$uid = get_uid(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +if (!$rechte->isBerechtigt('student/stammdaten', null, 's')) + die($rechte->errormsg); + +if (isset($_REQUEST['stg_kz'])) + $studiengang_kz = $_REQUEST['stg_kz']; +else + $studiengang_kz = null; + $studiensemester = new studiensemester(); $aktSem = $studiensemester->getaktorNext(); $nextSem = $studiensemester->getNextFrom($aktSem); $ausgabe = array(); +$text = ''; -$text =""; -?> +echo ' - + Check Studenten - - - + - - - -

Studenten Checkskript für BIS-Meldung

- + +

Studenten Checkskript für BIS-Meldung

'; /* * Studiengang muss beim Prestudenten und beim Studenten gleich sein */ +$qry = " +SELECT + stud.student_uid, pre.studiengang_kz, stud.studiengang_kz studiengang +FROM + public.tbl_prestudent pre + JOIN public.tbl_student stud using(prestudent_id) +WHERE + stud.studiengang_kz != pre.studiengang_kz"; -$qry="select stud.student_uid, pre.studiengang_kz, stud.studiengang_kz studiengang -from public.tbl_prestudent pre -join public.tbl_student stud using(prestudent_id) -where stud.studiengang_kz != pre.studiengang_kz;"; - -$text.="Suche Studiengänge die bei Prestudenten und Studenten nicht gleich sind ...

"; - -if($db->db_query($qry)) +if ($studiengang_kz != '') { - while($row = $db->db_fetch_object()) + $qry .= " AND + ( + stud.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." + OR pre.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." + )"; +} + +$text .= "Suche Studiengänge die bei Prestudenten und Studenten nicht gleich sind ...

"; + +if ($db->db_query($qry)) +{ + while ($row = $db->db_fetch_object()) { - $ausgabe[$row->studiengang][1][]= $row->student_uid; - $text.="Studenten-uid: ".$row->student_uid."
"; + $ausgabe[$row->studiengang][1][] = $row->student_uid; + $text .= "Studenten-uid: ".$row->student_uid."
"; } } else - $text.="Fehler bei der Abfrage aufgetreten.
"; + $text .= "Fehler bei der Abfrage aufgetreten.
"; /* * Abbrecher dürfen nicht mehr aktiv sein */ +$text .= "
Suche alle Abbrecher die noch aktiv sind ...

"; -$text.= "
Suche alle Abbrecher die noch aktiv sind ...

"; +$qry = " +SELECT + pre_status.status_kurzbz, benutzer.aktiv, benutzer.uid, student.studiengang_kz studiengang +FROM + public.tbl_prestudentstatus pre_status + JOIN public.tbl_prestudent pre using(prestudent_id) + JOIN public.tbl_student student using(prestudent_id) + JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid) +WHERE + pre_status.status_kurzbz ='Abbrecher' and benutzer.aktiv=true"; -$qry ="select pre_status.status_kurzbz, benutzer.aktiv, benutzer.uid, student.studiengang_kz studiengang -from public.tbl_prestudentstatus pre_status -join public.tbl_prestudent pre using(prestudent_id) -join public.tbl_student student using(prestudent_id) -join public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid) -where pre_status.status_kurzbz ='Abbrecher' and benutzer.aktiv = 'true';"; +if ($studiengang_kz != '') + $qry .= " AND pre.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); -if($db->db_query($qry)) +if ($db->db_query($qry)) { - while($row = $db->db_fetch_object()) + while ($row = $db->db_fetch_object()) { - $ausgabe[$row->studiengang][2][]= $row->uid; - $text .="Studenten-uid: ".$row->uid."
"; + $ausgabe[$row->studiengang][2][] = $row->uid; + $text .= "Studenten-uid: ".$row->uid."
"; } } else - $text.= "Fehler bei der Abfrage aufgetreten.
"; - - + $text .= "Fehler bei der Abfrage aufgetreten.
"; /* * Organisationsform eines Studienganges, sollte mit den Organisationsformen der Studenten übereinstimmen */ -$text.= "
Suche Studenten mit ungleichen Organisationsformeinträgen (Studiengang <--> Prestudentstatus) ...

"; +$text .= "
Suche Studenten mit ungleichen Organisationsformeinträgen + (Studiengang <--> Prestudentstatus) ...

"; $orgArray = array(); $orgForm = new organisationsform(); -$qry ="select studiengang.orgform_kurzbz as studorgkz, student.student_uid, prestudentstatus.orgform_kurzbz as studentorgkz, student.studiengang_kz studiengang -from public.tbl_studiengang studiengang -join public.tbl_student student using(studiengang_kz) -join public.tbl_prestudent prestudent using(prestudent_id) -join public.tbl_prestudentstatus prestudentstatus using(prestudent_id) -join public.tbl_benutzer benutzer on(benutzer.uid = student.student_uid) -where benutzer.aktiv = 'true' and prestudentstatus.status_kurzbz ='Student' -and studiengang.studiengang_kz < 10000 -and prestudentstatus.studiensemester_kurzbz = '$aktSem' -order by student_uid; "; +$qry = " +SELECT + studiengang.orgform_kurzbz as studorgkz, student.student_uid, + prestudentstatus.orgform_kurzbz as studentorgkz, student.studiengang_kz studiengang +FROM + public.tbl_studiengang studiengang + JOIN public.tbl_student student using(studiengang_kz) + JOIN public.tbl_prestudent prestudent using(prestudent_id) + JOIN public.tbl_prestudentstatus prestudentstatus using(prestudent_id) + JOIN public.tbl_benutzer benutzer on(benutzer.uid = student.student_uid) +WHERE + benutzer.aktiv = true + AND prestudentstatus.status_kurzbz='Student' + AND studiengang.studiengang_kz < 10000 + AND prestudentstatus.studiensemester_kurzbz = ".$db->db_add_param($aktSem); +if ($studiengang_kz != '') + $qry .= " AND prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); +$qry .= " ORDER BY student_uid"; -if($db->db_query($qry)) +if ($db->db_query($qry)) { - while($row = $db->db_fetch_object()) + while ($row = $db->db_fetch_object()) { $studOrgform = $row->studorgkz; $student_uid = $row->student_uid; $studentOrgform = $row->studentorgkz; $orgArray = $orgForm->checkOrgForm($studOrgform); - if(is_array($orgArray)) + if (is_array($orgArray)) { - if(!in_array($studentOrgform, $orgArray)) + if (!in_array($studentOrgform, $orgArray)) { - $ausgabe[$row->studiengang][3][]= $row->student_uid; - $text.= "Student_uid: $student_uid
"; + $ausgabe[$row->studiengang][3][] = $row->student_uid; + $text .= "Student_uid: $student_uid
"; } } } } else - $text.="Fehler bei der Abfrage aufgetreten.
"; + $text .= "Fehler bei der Abfrage aufgetreten.
"; /* * Abbrecher dürfen nicht wieder einen Status bekommen */ - $prestudentAbbrecher = new prestudent(); $prestudentLast = new prestudent(); -$text.= "
Suche alle Abbrecher die wieder einen Status bekommen haben...

"; +$text .= "
Suche alle Abbrecher die wieder einen Status bekommen haben...

"; -$qry ="select student.student_uid, prestudent.prestudent_id, student.studiengang_kz studiengang -from public.tbl_student student -join public.tbl_prestudent prestudent using(prestudent_id) -join public.tbl_prestudentstatus prestatus using(prestudent_id) -where prestatus.status_kurzbz = 'Abbrecher'; "; +$qry = " +SELECT + student.student_uid, prestudent.prestudent_id, student.studiengang_kz studiengang +FROM + public.tbl_student student + JOIN public.tbl_prestudent prestudent using(prestudent_id) + JOIN public.tbl_prestudentstatus prestatus using(prestudent_id) +WHERE + prestatus.status_kurzbz = 'Abbrecher'"; -if($db->db_query($qry)) +if ($studiengang_kz != '') + $qry .= " AND prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + +if ($db->db_query($qry)) { - while($row = $db->db_fetch_object()) + while ($row = $db->db_fetch_object()) { $student_uid = $row->student_uid; $prestudent_id = $row->prestudent_id; @@ -169,10 +209,10 @@ if($db->db_query($qry)) $prestudentLast->getLastStatus($prestudent_id); - if($prestudentLast->status_kurzbz != 'Abbrecher') + if ($prestudentLast->status_kurzbz != 'Abbrecher') { - $ausgabe[$row->studiengang][4][]= $student_uid; - $text.= "Studenten-uid: ".$student_uid."
"; + $ausgabe[$row->studiengang][4][] = $student_uid; + $text .= "Studenten-uid: ".$student_uid."
"; } } } @@ -182,29 +222,39 @@ if($db->db_query($qry)) * Aktuelles Semester beim Studenten stimmt nicht mit dem Ausbildungssemester des aktuellen Status überein */ -$text .="

Suche Studenten deren Semstern nicht mit dem Ausbildungssemesters des aktuellen Status übereinstimmt ...

"; +$text .= "

Suche Studenten deren Semstern nicht mit dem +Ausbildungssemesters des aktuellen Status übereinstimmt ...

"; $student = new student(); $prestudent = new prestudent(); -$qry = "select distinct(student.student_uid), prestudent.prestudent_id, status.ausbildungssemester, lv.semester, student.studiengang_kz studiengang -from public.tbl_student student -join public.tbl_studentlehrverband lv using(student_uid) -join public.tbl_prestudent prestudent using(prestudent_id) -join public.tbl_prestudentstatus status using(prestudent_id) -WHERE status.studiensemester_kurzbz = '$aktSem' -and lv.studiensemester_kurzbz = '$aktSem' AND status.status_kurzbz NOT IN ('Interessent','Bewerber') -and get_rolle_prestudent (prestudent_id, '$aktSem')='Student';"; +$qry = " +SELECT + distinct(student.student_uid), prestudent.prestudent_id, status.ausbildungssemester, + lv.semester, student.studiengang_kz studiengang +FROM + public.tbl_student student + JOIN public.tbl_studentlehrverband lv using(student_uid) + JOIN public.tbl_prestudent prestudent using(prestudent_id) + JOIN public.tbl_prestudentstatus status using(prestudent_id) +WHERE + status.studiensemester_kurzbz = ".$db->db_add_param($aktSem)." + AND lv.studiensemester_kurzbz = ".$db->db_add_param($aktSem)." + AND status.status_kurzbz NOT IN ('Interessent','Bewerber') + AND get_rolle_prestudent (prestudent_id, ".$db->db_add_param($aktSem).")='Student'"; -if($db->db_query($qry)) +if ($studiengang_kz != '') + $qry .= " AND prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + +if ($db->db_query($qry)) { - while($row = $db->db_fetch_object()) + while ($row = $db->db_fetch_object()) { $student_uid = $row->student_uid; - if($row->ausbildungssemester != $row->semester) + if ($row->ausbildungssemester != $row->semester) { - $ausgabe[$row->studiengang][5][]= $student_uid; - $text.="Studenten-uid: ".$student_uid."
"; + $ausgabe[$row->studiengang][5][] = $student_uid; + $text .= "Studenten-uid: ".$student_uid."
"; } } } @@ -214,21 +264,29 @@ if($db->db_query($qry)) * Inaktive Studenten sollen keinen "aktiven" Status haben (Diplomant, Student, Unterbrecher, Praktikant) */ -$text.="

Suche alle inaktiven Studenten mit einem aktiven Status ...

"; +$text .= "

Suche alle inaktiven Studenten mit einem aktiven Status ...

"; -$qry = "Select distinct(student.student_uid), student.studiengang_kz studiengang -from public.tbl_benutzer benutzer -join public.tbl_student student on(benutzer.uid = student.student_uid) -join public.tbl_prestudent prestudent using(prestudent_id) -where benutzer.aktiv = 'false' -and get_rolle_prestudent (prestudent_id, '$aktSem') in ('Student', 'Diplomand', 'Unterbrecher', 'Praktikant')"; +$qry = " +SELECT + distinct(student.student_uid), student.studiengang_kz studiengang +FROM + public.tbl_benutzer benutzer + JOIN public.tbl_student student on(benutzer.uid = student.student_uid) + JOIN public.tbl_prestudent prestudent using(prestudent_id) +WHERE + benutzer.aktiv=false + AND get_rolle_prestudent(prestudent_id, ".$db->db_add_param($aktSem).") + in ('Student', 'Diplomand', 'Unterbrecher', 'Praktikant')"; -if($db->db_query($qry)) +if ($studiengang_kz != '') + $qry .= " AND prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + +if ($db->db_query($qry)) { - while($row = $db->db_fetch_object()) + while ($row = $db->db_fetch_object()) { - $ausgabe[$row->studiengang][6][]= $row->student_uid; - $text.="Studenten-uid: ".$row->student_uid."
"; + $ausgabe[$row->studiengang][6][] = $row->student_uid; + $text .= "Studenten-uid: ".$row->student_uid."
"; } } @@ -238,36 +296,43 @@ if($db->db_query($qry)) * zB. Wenn Student im SS2010 studiert darf Studentenstatus nicht vor 15.11.2009 liegen */ -$text.="

Suche alle Studenten deren Inskription im aktuellen Semester vor der letzten BIS-Meldung liegt ...

"; +$text .= "

Suche alle Studenten deren Inskription im aktuellen +Semester vor der letzten BIS-Meldung liegt ...

"; -$qry ="Select distinct(student.student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang -from public.tbl_benutzer benutzer -join public.tbl_student student on(benutzer.uid = student.student_uid) -join public.tbl_prestudent prestudent using(prestudent_id) -join public.tbl_prestudentstatus prestatus using(prestudent_id) -where benutzer.aktiv = 'true'"; +$qry = " +SELECT + distinct(student.student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang +FROM + public.tbl_benutzer benutzer + JOIN public.tbl_student student on(benutzer.uid = student.student_uid) + JOIN public.tbl_prestudent prestudent using(prestudent_id) + JOIN public.tbl_prestudentstatus prestatus using(prestudent_id) +WHERE + benutzer.aktiv=true"; -if($db->db_query($qry)) +if ($studiengang_kz != '') + $qry .= " AND prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + +if ($db->db_query($qry)) { - while($row = $db->db_fetch_object()) + while ($row = $db->db_fetch_object()) { $prestudent = new prestudent(); $prestudent->getFirstStatus($row->prestudent_id, 'Student'); // wenn Student im aktuellen Semester zum ersten Mal den Status Student bekommt - if($prestudent->studiensemester_kurzbz == $aktSem) + if ($prestudent->studiensemester_kurzbz == $aktSem) { $datumBIS = getDateForInscription($aktSem); $datumInscription = $datum->formatDatum($prestudent->datum, 'Y-m-d'); // Wenn Inscriptionsdatum vor der letzten BIS Meldung liegt - if($datumInscription < $datumBIS) + if ($datumInscription < $datumBIS) { - $ausgabe[$row->studiengang][7][]= $row->student_uid; - $text.= $row->student_uid ." Inskribiert am: ".$datumInscription." BIS Meldung: ".$datumBIS."
"; + $ausgabe[$row->studiengang][7][] = $row->student_uid; + $text .= $row->student_uid." Inskribiert am: ".$datumInscription." BIS Meldung: ".$datumBIS."
"; } } - } } @@ -276,35 +341,48 @@ if($db->db_query($qry)) * Datum und Studiensemester bei den Stati sind in falscher Reihenfolge */ -$text.="

Suche alle Studenten die Datum und Studiensemester in deren Stati in falscher Reihenfolge haben ...

"; +$text .= "

Suche alle Studenten die Datum und Studiensemester +in deren Stati in falscher Reihenfolge haben ...

"; $prestudentFirst = new prestudent(); $prestudentSecond = new prestudent(); $i = 0; // alle aktiven Studenten die im aktuellen Semster den Status Student haben -$qry_student ="Select distinct(student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang -from public.tbl_student student -join public.tbl_benutzer benutzer on(student.student_uid = benutzer.uid) -join public.tbl_prestudent prestudent using(prestudent_id) -join public.tbl_prestudentstatus status using(prestudent_id) -where benutzer.aktiv = 'true' -and status.status_kurzbz ='Student' -and status.studiensemester_kurzbz = '$aktSem';"; +$qry_student = " +SELECT + distinct(student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang +FROM + public.tbl_student student + JOIN public.tbl_benutzer benutzer on(student.student_uid = benutzer.uid) + JOIN public.tbl_prestudent prestudent using(prestudent_id) + JOIN public.tbl_prestudentstatus status using(prestudent_id) +WHERE + benutzer.aktiv=true + AND status.status_kurzbz='Student' + AND status.studiensemester_kurzbz=".$db->db_add_param($aktSem); -if($result = $db->db_query($qry_student)) +if ($studiengang_kz != '') + $qry .= " AND prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + +if ($result = $db->db_query($qry_student)) { - while($student = $db->db_fetch_object($result)) + while ($student = $db->db_fetch_object($result)) { - $qry_orderSemester ="SELECT * FROM public.tbl_prestudentstatus status - join public.tbl_studiensemester semester using(studiensemester_kurzbz) - where prestudent_id = '$student->prestudent_id' - order by start DESC, datum DESC;"; + $qry_orderSemester = " + SELECT + status.* + FROM + public.tbl_prestudentstatus status + JOIN public.tbl_studiensemester semester using(studiensemester_kurzbz) + WHERE + prestudent_id = ".$db->db_add_param($student->prestudent_id, FHC_INTEGER)." + ORDER BY semester.start DESC, status.datum DESC;"; - if($result1 = $db->db_query($qry_orderSemester)) + if ($result1 = $db->db_query($qry_orderSemester)) { $prestudentSecond->result = array(); $prestudentFirst->result = array(); - while($row = $db->db_fetch_object($result1)) + while ($row = $db->db_fetch_object($result1)) { $prestudentStatus = new prestudent(); @@ -324,17 +402,19 @@ if($result = $db->db_query($qry_student)) } } else - $text.= "Fehler"; + $text .= "Fehler"; - if(!$prestudentSecond->getPrestudentRolle($student->prestudent_id,null,null,'Datum DESC, insertamum DESC')) - $text.= "ERROR:".$prestudentSecond->errormsg; + if (!$prestudentSecond->getPrestudentRolle($student->prestudent_id, null, null, 'Datum DESC, insertamum DESC')) + $text .= "ERROR:".$prestudentSecond->errormsg; - for($i=0; $iresult); $i++) + $anzahl_stati = count($prestudentFirst->result); + for ($i = 0; $i < $anzahl_stati; $i++) { - if($prestudentFirst->result[$i]->studiensemester_kurzbz != $prestudentSecond->result[$i]->studiensemester_kurzbz) + if ($prestudentFirst->result[$i]->studiensemester_kurzbz + != $prestudentSecond->result[$i]->studiensemester_kurzbz) { - $ausgabe[$student->studiengang][8][]= $student->student_uid; - $text.= "Studenten-uid: ".$student->student_uid."
"; + $ausgabe[$student->studiengang][8][] = $student->student_uid; + $text .= "Studenten-uid: ".$student->student_uid."
"; continue 2; } } @@ -346,24 +426,31 @@ if($result = $db->db_query($qry_student)) */ $prestudent = new prestudent(); -$text.="

Suche alle aktiven Studenten die keinen Status im aktuellen Studiensemester haben.

"; +$text .= "

Suche alle aktiven Studenten die keinen Status im aktuellen Studiensemester haben.

"; -$qry ="Select distinct (student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang -from public.tbl_student student -join public.tbl_benutzer benutzer on (benutzer.uid = student.student_uid) -join public.tbl_prestudent prestudent using(prestudent_id) -join public.tbl_prestudentstatus status using(prestudent_id) -where benutzer.aktiv = 'true'"; +$qry = " +SELECT + distinct (student_uid), prestudent.prestudent_id, student.studiengang_kz studiengang +FROM + public.tbl_student student + JOIN public.tbl_benutzer benutzer on (benutzer.uid = student.student_uid) + JOIN public.tbl_prestudent prestudent using(prestudent_id) + JOIN public.tbl_prestudentstatus status using(prestudent_id) +WHERE + benutzer.aktiv=true"; -if($result = $db->db_query($qry)) +if ($studiengang_kz != '') + $qry .= " AND prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + +if ($result = $db->db_query($qry)) { - while($row = $db->db_fetch_object($result)) + while ($row = $db->db_fetch_object($result)) { - if(!$prestudent->getLastStatus($row->prestudent_id, $aktSem) + if (!$prestudent->getLastStatus($row->prestudent_id, $aktSem) && !$prestudent->getLastStatus($row->prestudent_id, $nextSem)) { - $ausgabe[$row->studiengang][9][]= $row->student_uid; - $text.= $row->student_uid."
"; + $ausgabe[$row->studiengang][9][] = $row->student_uid; + $text .= $row->student_uid."
"; } } } @@ -371,9 +458,9 @@ if($result = $db->db_query($qry)) /* * Bewerber im aktuellen StSem die in Mischformstudiengängen keine Orgform eingetragen haben */ -$text.="

Suche alle Bewerber die keine Orgform eingetragen haben.

"; +$text .= "

Suche alle Bewerber die keine Orgform eingetragen haben.

"; -$qry =" +$qry = " SELECT tbl_prestudent.prestudent_id, tbl_person.vorname, tbl_person.nachname, tbl_prestudent.studiengang_kz as studiengang FROM @@ -387,21 +474,24 @@ WHERE AND (tbl_prestudentstatus.orgform_kurzbz='' OR tbl_prestudentstatus.orgform_kurzbz is null) AND tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($aktSem); -if($result = $db->db_query($qry)) +if ($studiengang_kz != '') + $qry .= " AND tbl_prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + +if ($result = $db->db_query($qry)) { - while($row = $db->db_fetch_object($result)) + while ($row = $db->db_fetch_object($result)) { - $ausgabe[$row->studiengang][10][]= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; - $text.= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; + $ausgabe[$row->studiengang][10][] = $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; + $text .= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; } } /* * Studierende im aktuellen StSem die in Mischformstudiengängen keine Orgform eingetragen haben */ -$text.="

Suche alle Bewerber die keine Orgform eingetragen haben.

"; +$text .= "

Suche alle Bewerber die keine Orgform eingetragen haben.

"; -$qry =" +$qry = " SELECT tbl_prestudent.prestudent_id, tbl_person.vorname, tbl_person.nachname, tbl_prestudent.studiengang_kz as studiengang FROM @@ -415,23 +505,27 @@ WHERE AND (tbl_prestudentstatus.orgform_kurzbz='' OR tbl_prestudentstatus.orgform_kurzbz is null) AND tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($aktSem); -if($result = $db->db_query($qry)) +if ($studiengang_kz != '') + $qry .= " AND tbl_prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + +if ($result = $db->db_query($qry)) { - while($row = $db->db_fetch_object($result)) + while ($row = $db->db_fetch_object($result)) { - $ausgabe[$row->studiengang][11][]= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; - $text.= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; + $ausgabe[$row->studiengang][11][] = $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; + $text .= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; } } /* * Studiengang des Prestudenten passt nicht zu Studiengang des Studienplans */ -$text.="

Suche alle bei denen Studiengang des Prestudenten nicht zum Studiengang des Studienplans passt

"; +$text .= "

Suche alle bei denen Studiengang des Prestudenten +nicht zum Studiengang des Studienplans passt

"; -$qry =" +$qry = " SELECT - distinct tbl_person.*, + distinct tbl_person.vorname, tbl_person.nachname, tbl_prestudent.studiengang_kz as studiengang, tbl_prestudent.prestudent_id FROM @@ -440,115 +534,263 @@ FROM JOIN lehre.tbl_studienplan USING(studienplan_id) JOIN lehre.tbl_studienordnung USING(studienordnung_id) JOIN public.tbl_person USING(person_id) -WHERE tbl_prestudent.studiengang_kz<>tbl_studienordnung.studiengang_kz +WHERE + tbl_prestudent.studiengang_kz<>tbl_studienordnung.studiengang_kz "; -if($result = $db->db_query($qry)) + +if ($studiengang_kz != '') + $qry .= " AND tbl_prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + +if ($result = $db->db_query($qry)) { - while($row = $db->db_fetch_object($result)) + while ($row = $db->db_fetch_object($result)) { - $ausgabe[$row->studiengang][12][]= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; - $text.= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; + $ausgabe[$row->studiengang][12][] = $row->vorname.' '.$row->nachname.' '.$row->prestudent_id; + $text .= $row->vorname.' '.$row->nachname.' '.$row->prestudent_id."
"; + } +} + +/* + * Studienplan ist nicht gueltig + */ +$text .= "

Studienplan ist im gewaehlten Ausbildungssemester nicht gueltig

"; + +$qry = " +SELECT + distinct tbl_person.vorname, tbl_person.nachname, + tbl_prestudent.prestudent_id, + tbl_studienplan.bezeichnung, + tbl_prestudent.studiengang_kz as studiengang, + tbl_prestudentstatus.status_kurzbz, + tbl_prestudentstatus.studiensemester_kurzbz, + tbl_prestudentstatus.ausbildungssemester +FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + JOIN public.tbl_person USING(person_id) + JOIN lehre.tbl_studienplan USING(studienplan_id) +WHERE + status_kurzbz in('Student', 'Interessent','Bewerber','Aufgenommener') + AND NOT EXISTS ( + SELECT + 1 + FROM + lehre.tbl_studienplan_semester + WHERE + studienplan_id=tbl_prestudentstatus.studienplan_id + AND tbl_studienplan_semester.semester = tbl_prestudentstatus.ausbildungssemester + AND tbl_studienplan_semester.studiensemester_kurzbz = Tbl_prestudentstatus.studiensemester_kurzbz + ) + AND tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($aktSem); + +if ($studiengang_kz != '') + $qry .= " AND tbl_prestudent.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); + +if ($result = $db->db_query($qry)) +{ + while ($row = $db->db_fetch_object($result)) + { + $ausgabe[$row->studiengang][13][] = $row->vorname.' '.$row->nachname. + ' ('.$row->studiensemester_kurzbz.' '.$row->status_kurzbz.' '.$row->ausbildungssemester.'.Sem)'; + $text .= $row->vorname.' '.$row->nachname. + ' ('.$row->studiensemester_kurzbz.' '.$row->status_kurzbz.' '.$row->ausbildungssemester.".Sem)
"; } } // Ausgabe der Studenten -foreach($ausgabe as $stg_kz=>$value) +foreach ($ausgabe as $stg_kz => $value) { //Wenn eine Studiengangskennzahl uebergeben wird, nur diese anzeigen und die anderen ueberspringen - if(isset($_REQUEST['stg_kz']) && $_REQUEST['stg_kz']!=$stg_kz) + if ($studiengang_kz != $stg_kz) continue; $studiengang = new studiengang(); $studiengang->load($stg_kz); - echo "

".$studiengang->bezeichnung ." (".$studiengang->kurzbzlang.")

"; + echo "

".$studiengang->bezeichnung." (".$studiengang->kurzbzlang.")

"; echo ""; - foreach($value as $code=>$uid) + foreach ($value as $code => $uid) { switch ($code) { case 1: - echo ''; - break; + echo ' + + + + + + '; + break; case 2: - echo ""; - break; + echo " + + + + + + "; + break; case 3: - echo ""; - break; + echo " + + + + + + "; + break; case 4: - echo ""; - break; + echo " + + + + + + "; + break; case 5: - echo ""; - break; + echo " + + + + + + "; + break; case 6: - echo ""; - break; + echo " + + + + + + "; + break; case 7: - echo ""; - break; + echo " + + + + + + "; + break; case 8: - echo ""; - break; + echo " + + + + + + "; + break; case 9: - echo ""; - break; + echo " + + + + + + "; + break; case 10: - echo ""; - break; + echo " + + + + + + "; + break; case 11: - echo ""; - break; + echo " + + + + + + "; + break; case 12: - echo ""; - break; - + echo " + + + + + + "; + break; + case 13: + echo " + + + + + + "; + break; default: - echo ""; - break; + echo ""; + break; } foreach ($uid as $student_id) { echo ""; $student = new student(); - if($student->load($student_id)) + if ($student->load($student_id)) echo ''; else - echo ''; + echo ''; echo ""; } - } echo "
 
Studenten deren Studiengänge (Prestudent <-> Student) nicht gleich sind
 
+ Studenten deren Studiengänge (Prestudent <-> Student) nicht gleich sind +
 
Abrecher die noch aktiv sind
 
Abrecher die noch aktiv sind
 
Studenten mit nicht identischen Organisationsformeinträgen (Studiengang <-> Prestudentstatus)
 
+ Studenten mit nicht identischen Organisationsformeinträgen + (Studiengang <-> Prestudentstatus) +
 
Abbrecher die wieder einen Status bekommen haben
 
Abbrecher die wieder einen Status bekommen haben
 
Studenten deren Semester nicht mit dem Ausbildungssemester des aktuellen Status übereinstimmt
 
+ Studenten deren Semester nicht mit dem Ausbildungssemester + des aktuellen Status übereinstimmt +
 
Inaktive Studenten mit einem aktiven Status
 
Inaktive Studenten mit einem aktiven Status
 
Studenten deren Inskription im aktuellen Semester vor der letzten BIS-Meldung liegt
 
+ Studenten deren Inskription im aktuellen Semester + vor der letzten BIS-Meldung liegt +
 
Studenten die Datum und Studiensemestern in deren Stati in falscher Reihenfolge haben
 
+ Studenten die Datum und Studiensemestern in deren Stati + in falscher Reihenfolge haben +
 
Aktive Studenten die keinen Status im aktuellen oder nächsten Studiensemester haben
 
+ Aktive Studenten die keinen Status im aktuellen + oder nächsten Studiensemester haben +
 
Bewerberstati die keiner Organisationsform zugeordnet sind
 
Bewerberstati die keiner Organisationsform zugeordnet sind
 
Studierendenstati die keiner Organisationsform zugeordnet sind
 
Studierendenstati die keiner Organisationsform zugeordnet sind
 
Studienplan passt nicht zum Studiengang des Studierenden
 
Studienplan passt nicht zum Studiengang des Studierenden
 
Studienplan ist in diesem Semester nicht gültig
 
Ungültiger Code
 
Ungültiger Code
'.$student->vorname.''.$student->nachname.''.$student->uid.''.$student_id,''.$student_id.'
"; } -//echo $text; - -/* +/** * Gibt das Datum der BIS Meldung des übergebenen Semesters zurück + * @param string $semester Studiensemester_kurzbz. + * @return Datum der BIS-Meldung des uebergebeben Semesters. */ -function getDateForInscription ($semester) +function getDateForInscription($semester) { global $datum; - $semesterYear = substr($semester,2,6); - $semesterType = substr($semester,0,2); + $semesterYear = substr($semester, 2, 6); + $semesterType = substr($semester, 0, 2); - if($semesterType == 'SS') + if ($semesterType == 'SS') { - $date = "15.11.".($semesterYear-1); + $date = "15.11.".($semesterYear - 1); $date = $datum->formatDatum($date, 'Y-m-d'); return $date; } - if($semesterType == 'WS') + if ($semesterType == 'WS') { $date = '15.04'.$semesterYear; $date = $datum->formatDatum($date, 'Y-m-d'); return $date; } } -?> +echo ' - \ No newline at end of file +'; diff --git a/vilesci/personen/student_vorrueckung.php b/vilesci/personen/student_vorrueckung.php index 02e539975..960413c2a 100644 --- a/vilesci/personen/student_vorrueckung.php +++ b/vilesci/personen/student_vorrueckung.php @@ -29,6 +29,9 @@ require_once('../../include/studiengang.class.php'); require_once('../../include/studiensemester.class.php'); require_once('../../include/functions.inc.php'); require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/lehrverband.class.php'); +require_once('../../include/studienordnung.class.php'); +require_once('../../include/studienplan.class.php'); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); @@ -37,29 +40,42 @@ $user = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); -if(!$rechte->isBerechtigt('student/vorrueckung', null, 'suid')) +if (!$rechte->isBerechtigt('student/vorrueckung', null, 'suid')) die('Sie haben keine Berechtigung fuer diese Seite'); -$ausbildungssemester=0; -$s=new studiengang(); -$s->loadArray($rechte->getStgKz('student/vorrueckung'),'typ, kurzbz', true); -$studiengang=$s->result; +$ausbildungssemester = 0; +$s = new studiengang(); +$s->loadArray($rechte->getStgKz('student/vorrueckung'), 'typ, kurzbz', true); +$studiengang = $s->result; -echo ' +echo ' + Studenten Vorrueckung - - - - + + + '; +include('../../include/meta/jquery.php'); +include('../../include/meta/jquery-tablesorter.php'); +echo ' + -'; +'; // Output flushen damit nach dem aendern des Dropdowns gleich die neue Seite geladen wird. // Sonst wird bei zu langen Ladezeiten vom User noch auf einen anderen Link gedrueckt und der Studiengang -// wieder zurueckgesetzt +// wieder zurueckgesetzt // This prevent the notice error "ob_flush(): failed to flush buffer. No buffer to flush" -if(ob_get_contents() != false) +if (ob_get_contents() != false) { ob_flush(); } @@ -68,8 +84,8 @@ flush(); //Einlesen der studiensemester in einen Array $ss = new studiensemester(); -$ss->getAll(); -foreach($ss->studiensemester as $studiensemester) +$ss->getAll('desc'); +foreach ($ss->studiensemester as $studiensemester) { $ss_arr[] = $studiensemester->studiensemester_kurzbz; } @@ -78,305 +94,489 @@ foreach($ss->studiensemester as $studiensemester) //studiengang if (isset($_GET['stg_kz']) || isset($_POST['stg_kz'])) { - $stg_kz=(isset($_GET['stg_kz'])?$_GET['stg_kz']:$_POST['stg_kz']); + $stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:$_POST['stg_kz']); } else { - $stg_kz=$studiengang[0]->studiengang_kz; + $stg_kz = $studiengang[0]->studiengang_kz; } //semester anzeige if (isset($_GET['semester']) || isset($_POST['semester'])) { - $semester=(isset($_GET['semester'])?$_GET['semester']:$_POST['semester']); + $semester = (isset($_GET['semester'])?$_GET['semester']:$_POST['semester']); } else { - $semester=100; + $semester = 100; } //semester vorrückung if (isset($_GET['semesterv']) || isset($_POST['semesterv'])) { - $semesterv=(isset($_GET['semesterv'])?$_GET['semesterv']:$_POST['semesterv']); + $semesterv = (isset($_GET['semesterv'])?$_GET['semesterv']:$_POST['semesterv']); } else { - $semesterv=100; + $semesterv = 100; } //angezeigtes studiensemester if (isset($_GET['studiensemester_kurzbz']) || isset($_POST['studiensemester_kurzbz'])) { - $studiensemester_kurzbz=(isset($_GET['studiensemester_kurzbz'])?$_GET['studiensemester_kurzbz']:$_POST['studiensemester_kurzbz']); + if (isset($_GET['studiensemester_kurzbz'])) + $studiensemester_kurzbz = $_GET['studiensemester_kurzbz']; + else + $studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; } else { - if (!$studiensemester_kurzbz=$ss->getakt()) - $studiensemester_kurzbz=$ss->getaktorNext(); + if (!$studiensemester_kurzbz = $ss->getakt()) + $studiensemester_kurzbz = $ss->getaktorNext(); } //ausgangssemester für vorrückung if (isset($_GET['studiensemester_kurzbz_akt']) || isset($_POST['studiensemester_kurzbz_akt'])) { - $studiensemester_kurzbz_akt=(isset($_GET['studiensemester_kurzbz_akt'])?$_GET['studiensemester_kurzbz_akt']:$_POST['studiensemester_kurzbz_akt']); + if (isset($_GET['studiensemester_kurzbz_akt'])) + $studiensemester_kurzbz_akt = $_GET['studiensemester_kurzbz_akt']; + else + $studiensemester_kurzbz_akt = $_POST['studiensemester_kurzbz_akt']; } else { -# $studiensemester_kurzbz_akt=$studiensemester_kurzbz; -# $studiensemester_kurzbz_akt=$ss->getPrevious(); - $studiensemester_kurzbz_akt=$ss->getLastOrAktSemester(30); + $studiensemester_kurzbz_akt = $ss->getLastOrAktSemester(30); } //zielsemester für vorrückung if (isset($_GET['studiensemester_kurzbz_zk']) || isset($_POST['studiensemester_kurzbz_zk'])) { - $studiensemester_kurzbz_zk=(isset($_GET['studiensemester_kurzbz_zk'])?$_GET['studiensemester_kurzbz_zk']:$_POST['studiensemester_kurzbz_zk']); + if (isset($_GET['studiensemester_kurzbz_zk'])) + $studiensemester_kurzbz_zk = $_GET['studiensemester_kurzbz_zk']; + else + $studiensemester_kurzbz_zk = $_POST['studiensemester_kurzbz_zk']; } else { - $studiensemester_kurzbz_zk=$ss->getNextFrom($studiensemester_kurzbz_akt); + $studiensemester_kurzbz_zk = $ss->getNextFrom($studiensemester_kurzbz_akt); } -if(!is_numeric($stg_kz)) +if (!is_numeric($stg_kz)) { - $stg_kz=0; + $stg_kz = 0; } //semester=100 bedeutet die Auswahl aller Semester -if(!is_numeric($semester)) +if (!is_numeric($semester)) { - $semester=100; + $semester = 100; } //Einlesen der maximalen, regulären Dauer der Studiengänge in einen Array -$qry_stg="SELECT * FROM public.tbl_studiengang"; -if ($result_stg=$db->db_query($qry_stg)) +$stg = new studiengang(); +$stg->getAll(); +foreach ($stg->result as $row_stg) { - while($row_stg=$db->db_fetch_object($result_stg)) - { - $max[$row_stg->studiengang_kz]=$row_stg->max_semester; - } -} - + $max[$row_stg->studiengang_kz] = $row_stg->max_semester; +} + //select für die Anzeige -$sql_query="SELECT tbl_student.*,tbl_person.*, tbl_studentlehrverband.semester as semester_stlv, tbl_studentlehrverband.verband as verband_stlv, - tbl_studentlehrverband.gruppe as gruppe_stlv FROM tbl_studentlehrverband JOIN tbl_student USING (student_uid) +$sql_query = "SELECT + tbl_student.*, + tbl_person.vorname, tbl_person.nachname, tbl_person.person_id, + tbl_studentlehrverband.semester as semester_stlv, + tbl_studentlehrverband.verband as verband_stlv, + tbl_studentlehrverband.gruppe as gruppe_stlv + FROM + tbl_studentlehrverband + JOIN tbl_student USING (student_uid) JOIN tbl_benutzer ON (student_uid=uid) JOIN tbl_person USING (person_id) - WHERE tbl_benutzer.aktiv AND tbl_studentlehrverband.studiengang_kz=".$db->db_add_param($stg_kz, FHC_INTEGER)." - AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz); -if($semester<100) -{ - $sql_query.=" AND tbl_studentlehrverband.semester=".$db->db_add_param($semester, FHC_INTEGER); //semester = 100 wählt alle aus -} -$sql_query.=" ORDER BY semester, nachname"; + WHERE + tbl_benutzer.aktiv + AND tbl_studentlehrverband.studiengang_kz=".$db->db_add_param($stg_kz, FHC_INTEGER)." + AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz); -//echo $sql_query; -if (!$result_std=$db->db_query($sql_query)) +if ($semester < 100) //semester = 100 wählt alle aus +{ + $sql_query .= " AND tbl_studentlehrverband.semester=".$db->db_add_param($semester, FHC_INTEGER); +} +$sql_query .= " ORDER BY semester, nachname"; + +if (!$result_std = $db->db_query($sql_query)) { error("Studenten not found!"); } -$outp=''; +$outp = ''; // ****************************** Vorrücken ****************************** if (isset($_POST['vorr'])) { + $statisticAdded = 0; + $statisticUebersprungen = 0; + $statisticStudienplanKorrektur = 0; + $stg_help = new studiengang(); - if(!$stg_help->load($stg_kz)) + if (!$stg_help->load($stg_kz)) die("Studiengang mit der Kennzahl $stg_kz kann nicht geladen werden"); - - if(!$rechte->isBerechtigt('student/vorrueckung',$stg_help->oe_kurzbz, 'suid')) + + if (!$rechte->isBerechtigt('student/vorrueckung', $stg_help->oe_kurzbz, 'suid')) die('Sie haben keine Berechtigung fuer diese Aktion'); - + //select für die Vorrückung - $sql_query="SELECT tbl_student.*,tbl_person.*, tbl_studentlehrverband.semester as semester_stlv, tbl_studentlehrverband.verband as verband_stlv, - tbl_studentlehrverband.gruppe as gruppe_stlv FROM tbl_studentlehrverband JOIN tbl_student USING (student_uid) - JOIN tbl_benutzer ON (student_uid=uid) - JOIN tbl_person USING (person_id) - WHERE tbl_benutzer.aktiv AND tbl_studentlehrverband.studiengang_kz=".$db->db_add_param($stg_kz, FHC_INTEGER)." - AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz_akt); - - if($semester<100) + $sql_query = "SELECT + tbl_student.*, + tbl_person.vorname, tbl_person.nachname, tbl_person.person_id, + tbl_studentlehrverband.semester as semester_stlv, + tbl_studentlehrverband.verband as verband_stlv, + tbl_studentlehrverband.gruppe as gruppe_stlv + FROM + tbl_studentlehrverband JOIN tbl_student USING (student_uid) + JOIN tbl_benutzer ON (student_uid=uid) + JOIN tbl_person USING (person_id) + WHERE + tbl_benutzer.aktiv + AND tbl_studentlehrverband.studiengang_kz=".$db->db_add_param($stg_kz, FHC_INTEGER)." + AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz_akt); + + if ($semester < 100) //semester = 100 wählt alle aus { - $sql_query.="AND tbl_studentlehrverband.semester=".$db->db_add_param($semesterv); //semester = 100 wählt alle aus + $sql_query .= "AND tbl_studentlehrverband.semester=".$db->db_add_param($semesterv); } - $sql_query.="ORDER BY semester, nachname"; - - //echo $sql_query; - if (!$result_std=$db->db_query($sql_query)) + $sql_query .= "ORDER BY semester, nachname"; + + if (!$result_std = $db->db_query($sql_query)) { error("Studenten not found!"); } - $next_ss=$studiensemester_kurzbz_zk; - while($row=$db->db_fetch_object($result_std)) + + $next_ss = $studiensemester_kurzbz_zk; + while ($row = $db->db_fetch_object($result_std)) { //aktuelle Rolle laden - $qry_status="SELECT * FROM public.tbl_prestudentstatus JOIN public.tbl_prestudent USING(prestudent_id) - WHERE prestudent_id=".$db->db_add_param($row->prestudent_id, FHC_INTEGER)." - AND studiengang_kz=".$db->db_add_param($row->studiengang_kz, FHC_INTEGER)." - AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz_akt)." - ORDER BY datum desc, tbl_prestudentstatus.insertamum desc, tbl_prestudentstatus.ext_id desc LIMIT 1;"; - if ($result_status=$db->db_query($qry_status)) + $qry_status = " + SELECT + * + FROM + public.tbl_prestudentstatus + JOIN public.tbl_prestudent USING(prestudent_id) + WHERE + prestudent_id=".$db->db_add_param($row->prestudent_id, FHC_INTEGER)." + AND studiengang_kz=".$db->db_add_param($row->studiengang_kz, FHC_INTEGER)." + AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz_akt)." + ORDER BY datum desc, tbl_prestudentstatus.insertamum desc, tbl_prestudentstatus.ext_id desc + LIMIT 1;"; + + if ($result_status = $db->db_query($qry_status)) { - if($row_status=$db->db_fetch_object($result_status)) + if ($row_status = $db->db_fetch_object($result_status)) { //Studenten im letzten Semester bleiben dort, wenn aktiv - + // Semester fuer Studentlehrverband - if(VORRUECKUNG_LEHRVERBAND_MAX_SEMESTER!='') + if (VORRUECKUNG_LEHRVERBAND_MAX_SEMESTER != '') { - if($row->semester_stlv>=VORRUECKUNG_LEHRVERBAND_MAX_SEMESTER) - $s=$row->semester_stlv; + if ($row->semester_stlv >= VORRUECKUNG_LEHRVERBAND_MAX_SEMESTER) + $s = $row->semester_stlv; else - $s=$row->semester_stlv+1; + $s = $row->semester_stlv + 1; } else { - if($row->semester_stlv>=$max[$stg_kz] || $row->semester_stlv==0) - $s=$row->semester_stlv; + if ($row->semester_stlv >= $max[$stg_kz] || $row->semester_stlv == 0) + $s = $row->semester_stlv; else - $s=$row->semester_stlv+1; + $s = $row->semester_stlv + 1; } - - if(!VORRUECKUNG_STATUS_MAX_SEMESTER) - $ausbildungssemester=$row_status->ausbildungssemester+1; - else + + if (!VORRUECKUNG_STATUS_MAX_SEMESTER) + $ausbildungssemester = $row_status->ausbildungssemester + 1; + else { // Semester fuer Status - if($row_status->ausbildungssemester>=$max[$stg_kz] || $row_status->status_kurzbz=="Unterbrecher" || $row_status->status_kurzbz=="Incoming") + if ($row_status->ausbildungssemester >= $max[$stg_kz] + || $row_status->status_kurzbz == "Unterbrecher" + || $row_status->status_kurzbz == "Incoming") { - $ausbildungssemester=$row_status->ausbildungssemester; + $ausbildungssemester = $row_status->ausbildungssemester; } - else + else { - $ausbildungssemester=$row_status->ausbildungssemester+1; + $ausbildungssemester = $row_status->ausbildungssemester + 1; } } + + $lvb = new lehrverband(); + //Lehrverbandgruppe anlegen, wenn noch nicht vorhanden - $qry_lvb="SELECT * FROM public.tbl_lehrverband - WHERE studiengang_kz=".$db->db_add_param($row->studiengang_kz, FHC_INTEGER)." AND semester=".$db->db_add_param($s)." - AND verband=".$db->db_add_param($row->verband_stlv)." AND gruppe=".$db->db_add_param($row->gruppe_stlv).";"; - if($db->db_num_rows($db->db_query($qry_lvb))<1) + if (!$lvb->exists($row->studiengang_kz, $s, $row->verband_stlv, $row->gruppe_stlv)) { - $lvb_ins="INSERT INTO public.tbl_lehrverband (studiengang_kz, semester, verband, gruppe, aktiv, bezeichnung, ext_id) VALUES (". - $db->db_add_param($row->studiengang_kz).", ". - $db->db_add_param($s).", ". - $db->db_add_param($row->verband_stlv).", ". - $db->db_add_param($row->gruppe_stlv).", - TRUE, NULL, NULL);"; - if (!$r=$db->db_query($lvb_ins)) - die($db->db_last_error()); + $lvb = new lehrverband(); + $lvb->studiengang_kz = $row->studiengang_kz; + $lvb->semester = $s; + $lvb->verband = $row->verband_stlv; + $lvb->gruppe = $row->gruppe_stlv; + $lvb->aktiv = true; + $lvb->new = true; + if (!$lvb->save()) + die($lvb->errormsg); } //Überprüfen ob Eintrag schon vorhanden - $qry_chk="SELECT * FROM public.tbl_studentlehrverband - WHERE student_uid=".$db->db_add_param($row->student_uid)." - AND studiensemester_kurzbz=".$db->db_add_param($next_ss).";"; - $sql=''; - if($db->db_num_rows($db->db_query($qry_chk))<1) + $qry_chk = "SELECT + * + FROM + public.tbl_studentlehrverband + WHERE + student_uid=".$db->db_add_param($row->student_uid)." + AND studiensemester_kurzbz=".$db->db_add_param($next_ss).";"; + + $sql = ''; + if ($db->db_num_rows($db->db_query($qry_chk)) < 1) { //Eintragen der neuen Gruppe - $sql="INSERT INTO public.tbl_studentlehrverband (student_uid, studiensemester_kurzbz, studiengang_kz, semester, verband, gruppe, updateamum, updatevon, insertamum, insertvon, ext_id) - VALUES (".$db->db_add_param($row->student_uid).",".$db->db_add_param($next_ss).",".$db->db_add_param($row->studiengang_kz).", - ".$db->db_add_param($s).",".$db->db_add_param($row->verband_stlv).",".$db->db_add_param($row->gruppe_stlv).",NULL,NULL,now(),".$db->db_add_param($user).",NULL);"; + $sql = "INSERT INTO public.tbl_studentlehrverband (student_uid, studiensemester_kurzbz, + studiengang_kz, semester, verband, gruppe, updateamum, updatevon, + insertamum, insertvon, ext_id) + VALUES (".$db->db_add_param($row->student_uid).", ". + $db->db_add_param($next_ss).", ". + $db->db_add_param($row->studiengang_kz).", ". + $db->db_add_param($s).", ". + $db->db_add_param($row->verband_stlv).", ". + $db->db_add_param($row->gruppe_stlv).",NULL,NULL,now(),". + $db->db_add_param($user).",NULL);"; } - $qry_chk="SELECT * FROM public.tbl_prestudentstatus - WHERE prestudent_id=".$db->db_add_param($row->prestudent_id)." - AND studiensemester_kurzbz=".$db->db_add_param($next_ss).";"; - if($db->db_num_rows($db->db_query($qry_chk))<1) + $qry_chk = "SELECT + * + FROM + public.tbl_prestudentstatus + WHERE + prestudent_id=".$db->db_add_param($row->prestudent_id)." + AND studiensemester_kurzbz=".$db->db_add_param($next_ss).";"; + + if ($db->db_num_rows($db->db_query($qry_chk)) < 1) { + // Pruefen ob der Studienplan fuer das vorgerueckte Semester noch gueltig ist + // und GGf einen besseren Studienplan suchen + $studienplan_id = getCorrectedStudienplan( + $next_ss, + $ausbildungssemester, + $row_status->studienplan_id + ); + + if ($row_status->studienplan_id != $studienplan_id) + $statisticStudienplanKorrektur++; + //Eintragen des neuen Status - $sql.="INSERT INTO public.tbl_prestudentstatus (prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester, datum, insertamum, insertvon, updateamum, updatevon, ext_id, orgform_kurzbz, studienplan_id) - VALUES (".$db->db_add_param($row->prestudent_id).", ".$db->db_add_param($row_status->status_kurzbz).", ".$db->db_add_param($next_ss).", - ".$db->db_add_param($ausbildungssemester).", now(), now(), ".$db->db_add_param($user).", - NULL, NULL, NULL, ".$db->db_add_param($row_status->orgform_kurzbz).",".$db->db_add_param($row_status->studienplan_id).");"; + $sql .= "INSERT INTO public.tbl_prestudentstatus (prestudent_id, status_kurzbz, + studiensemester_kurzbz, ausbildungssemester, datum, insertamum, + insertvon, updateamum, updatevon, ext_id, orgform_kurzbz, studienplan_id) + VALUES (".$db->db_add_param($row->prestudent_id).", ". + $db->db_add_param($row_status->status_kurzbz).", ". + $db->db_add_param($next_ss).", ". + $db->db_add_param($ausbildungssemester).", now(), now(), ". + $db->db_add_param($user).", NULL, NULL, NULL, ". + $db->db_add_param($row_status->orgform_kurzbz).", ". + $db->db_add_param($studienplan_id).");"; } - if($sql!='') + if ($sql != '') { - if (!$r=$db->db_query($sql)) + if (!$r = $db->db_query($sql)) { die($db->db_last_error()."
".$sql); } + else + { + $statisticAdded++; + } + } + else + { + $statisticUebersprungen++; } } } } - + echo ''; + echo 'Vorgerückte Personen:'.$statisticAdded.'
'; + echo 'Übersprungene Personen:'.$statisticUebersprungen.'
'; + echo 'Studienplanzuordnung korrigiert:'.$statisticStudienplanKorrektur.'
'; + echo '
'; } // **************** Ausgabe vorbereiten ****************************** -$s=array(); -$outp.="-----Anzeige------------------------------------------------------------------------------------------------------------------------------------------"; -$outp.="
Studiengang:                           '; + //Auswahl Studiengang foreach ($studiengang as $stg) { - $outp.=""; - //$outp.= ''.$stg->kuerzel.' - '; - @$s[$stg->studiengang_kz]->max_sem=$stg->max_semester; - $s[$stg->studiengang_kz]->kurzbz=$stg->kurzbzlang; + $url = $_SERVER['PHP_SELF']."?stg_kz=$stg->studiengang_kz"; + $url .= "&semester=$semester"; + $url .= "&semesterv=$semesterv"; + $url .= "&studiensemester_kurzbz=$studiensemester_kurzbz"; + $url .= "&studiensemester_kurzbz_akt=$studiensemester_kurzbz_akt"; + $url .= "&studiensemester_kurzbz_zk=$studiensemester_kurzbz_zk"; + + $outp .= ""; + if (!isset($s[$stg->studiengang_kz])) + $s[$stg->studiengang_kz] = new stdClass(); + + $s[$stg->studiengang_kz]->max_sem = $stg->max_semester; + $s[$stg->studiengang_kz]->kurzbz = $stg->kurzbzlang; } -$outp.=''; +$outp .= ' + +'; //Auswahl angezeigtes Studiensemester -$outp.="
Angezeigtes Studiensemester: \n"; if (isset($ss_arr) && is_array($ss_arr)) { - foreach ($ss_arr AS $sts) + foreach ($ss_arr as $sts) { if ($studiensemester_kurzbz == $sts) $sel = " selected "; else $sel = ''; - $outp.=" "; + + $url = $_SERVER['PHP_SELF']."?stg_kz=$stg_kz"; + $url .= "&semester=$semester"; + $url .= "&semesterv=$semesterv"; + $url .= "&studiensemester_kurzbz=$sts"; + $url .= "&studiensemester_kurzbz_akt=$studiensemester_kurzbz_akt"; + $url .= "&studiensemester_kurzbz_zk=$studiensemester_kurzbz_zk"; + + $outp .= ""; } } -$outp.=" "; -$outp.= '
Ausbildungssemester der Anzeige: -- '; -for ($i=0;$i<=$s[$stg_kz]->max_sem;$i++) +$outp .= " + +"; +$outp .= ' + + Ausbildungssemester der Anzeige: + -- '; +for ($i = 0; $i <= $s[$stg_kz]->max_sem; $i++) { - $outp.= ''.$i.' -- '; + $url = $_SERVER['PHP_SELF'].'?stg_kz='.$stg_kz; + $url .= '&semester='.$i; + $url .= '&semesterv='.$semesterv; + $url .= '&studiensemester_kurzbz='.$studiensemester_kurzbz; + $url .= '&studiensemester_kurzbz_akt='.$studiensemester_kurzbz_akt; + $url .= '&studiensemester_kurzbz_zk='.$studiensemester_kurzbz_zk; + + $outp .= ''.$i.' -- '; } -$outp.= 'alle -- '; + +$url = $_SERVER['PHP_SELF'].'?stg_kz='.$stg_kz; +$url .= '&semesterv='.$semesterv; +$url .= '&semester=100'; +$url .= '&studiensemester_kurzbz='.$studiensemester_kurzbz; +$url .= '&studiensemester_kurzbz_akt='.$studiensemester_kurzbz_akt; +$url .= '&studiensemester_kurzbz_zk='.$studiensemester_kurzbz_zk; + +$outp .= 'alle -- '; //Auswahl Studiensemester von dem weg vorgerückt werden soll -$outp.="
-----Vorrückung Studiengang ".$s[$stg_kz]->kurzbz."----------------------------------------------------------------------------------------------------------"; -$outp.="
Ausgangs-Studiensemester:     '; if (isset($ss_arr) && is_array($ss_arr)) { - foreach ($ss_arr AS $sts2) + foreach ($ss_arr as $sts2) { if ($studiensemester_kurzbz_akt == $sts2) $sel2 = " selected "; else $sel2 = ''; - $outp.=" "; + + $url = $_SERVER['PHP_SELF']."?stg_kz=$stg_kz"; + $url .= "&semester=$semester"; + $url .= "&semesterv=$semesterv"; + $url .= "&studiensemester_kurzbz=$studiensemester_kurzbz"; + $url .= "&studiensemester_kurzbz_akt=$sts2"; + $url .= "&studiensemester_kurzb_zk=$studiensemester_kurzbz_zk"; + + $outp .= ""; } } -$outp.=" \n"; -$outp.= '
Ausgangs-Ausbildungssemester:   -- '; -for ($j=0;$j<=$s[$stg_kz]->max_sem;$j++) +$outp .= " + +\n"; +$outp .= ' + + Ausgangs-Ausbildungssemester: + -- '; +for ($j = 0; $j <= $s[$stg_kz]->max_sem; $j++) { - $outp.= ''.$j.' -- '; + $url = $_SERVER['PHP_SELF'].'?stg_kz='.$stg_kz; + $url .= '&semester='.$semester; + $url .= '&semesterv='.$j; + $url .= '&studiensemester_kurzbz='.$studiensemester_kurzbz; + $url .= '&studiensemester_kurzbz_akt='.$studiensemester_kurzbz_akt; + $url .= '&studiensemester_kurzbz_zk='.$studiensemester_kurzbz_zk; + + $outp .= ''.$j.' -- '; } -$outp.= 'alle -- '; + +$url = $_SERVER['PHP_SELF'].'?stg_kz='.$stg_kz; +$url .= '&semester='.$semester; +$url .= '&semesterv=100'; +$url .= '&studiensemester_kurzbz='.$studiensemester_kurzbz; +$url .= '&studiensemester_kurzbz_akt='.$studiensemester_kurzbz_akt; +$url .= '&studiensemester_kurzbz_zk='.$studiensemester_kurzbz_zk; + +$outp .= 'alle -- + +'; //Auswahl Studiensemester in das vorgerückt werden soll -$outp.="
Ziel-Studiensemester:              \n"; if (isset($ss_arr) && is_array($ss_arr)) { - foreach ($ss_arr AS $sts3) + foreach ($ss_arr as $sts3) { if ($studiensemester_kurzbz_zk == $sts3) $sel3 = " selected "; else $sel3 = ''; - $outp.=" "; + + $url = $_SERVER['PHP_SELF']."?stg_kz=$stg_kz"; + $url .= "&semester=$semester"; + $url .= "&semesterv=$semesterv"; + $url .= "&studiensemester_kurzbz=$studiensemester_kurzbz"; + $url .= "&studiensemester_kurzbz_akt=$studiensemester_kurzbz_akt"; + $url .= "&studiensemester_kurzbz_zk=$sts3"; + + $outp .= ""; } } -$outp.=" \n"; -$outp.="
Vorrückung von ".$studiensemester_kurzbz_akt." / ".($semesterv<100?$semesterv.".":'alle')." Semester -> ".$studiensemester_kurzbz_zk; - -// ------------------------------------------------------- +$outp .= " \n + + +"; +$outp .= "Vorrückung von ".$studiensemester_kurzbz_akt." / ".($semesterv < 100?$semesterv.".":'alle'); +$outp .= "Semester -> ".$studiensemester_kurzbz_zk; //Überschrift -echo "

Studenten Vorrückung (".$s[$stg_kz]->kurzbz." - ".($semester<100?$semester:'alle')." - ". +echo "

Studenten Vorrückung (".$s[$stg_kz]->kurzbz." - ".($semester < 100?$semester:'alle')." - ". $studiensemester_kurzbz."), DB:".DB_NAME."

"; @@ -389,52 +589,140 @@ echo '


'; echo ' '; echo ''; //Überschrift Anzeige -echo "

Übersicht (".$studiensemester_kurzbz."/".($semester<100?$semester.".":'alle')." Semester )

- - - "; +echo "

Übersicht (".$studiensemester_kurzbz."/".($semester < 100?$semester.".":'alle')." Semester )

"; //Anzeige Tabelle -if ($result_std!=0) +if ($result_std != 0) { - $num_rows=$db->db_num_rows($result_std); + $num_rows = $db->db_num_rows($result_std); echo 'Anzahl: '.$num_rows; - echo "\n"; - echo ""; - echo ""; - for($i=0;$i<$num_rows;$i++) + echo ' +
NachnameVornameSTGSemVerGrpStatusAusbSem
+ + + + + + + + + + + + + + '; + + for ($i = 0; $i < $num_rows; $i++) { - $row=$db->db_fetch_object($result_std,$i); - $qry_status="SELECT status_kurzbz, ausbildungssemester FROM public.tbl_prestudentstatus - JOIN public.tbl_prestudent USING(prestudent_id) WHERE person_id=".$db->db_add_param($row->person_id, FHC_INTEGER)." - AND studiengang_kz=".$db->db_add_param($row->studiengang_kz, FHC_INTEGER)." - AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." + $row = $db->db_fetch_object($result_std, $i); + $qry_status = " + SELECT + status_kurzbz, ausbildungssemester, tbl_studienplan.studienplan_id, tbl_studienplan.bezeichnung + FROM + public.tbl_prestudentstatus + JOIN public.tbl_prestudent USING(prestudent_id) + LEFT JOIN lehre.tbl_studienplan USING(studienplan_id) + WHERE + person_id=".$db->db_add_param($row->person_id, FHC_INTEGER)." + AND studiengang_kz=".$db->db_add_param($row->studiengang_kz, FHC_INTEGER)." + AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." ORDER BY datum desc, tbl_prestudentstatus.insertamum desc, tbl_prestudentstatus.ext_id desc LIMIT 1;"; - if ($result_status=$db->db_query($qry_status)) + + if ($result_status = $db->db_query($qry_status)) { - if($row_status=$db->db_fetch_object($result_status)) + $status_kurzbz = ''; + $ausbildungssemester = ''; + $studienplan_id = ''; + $studienplan_bezeichnung = ''; + + if ($row_status = $db->db_fetch_object($result_status)) { - echo ""; - echo ""; - echo "\n"; - } - else - { - echo ""; - echo ""; - echo "\n"; + $status_kurzbz = $row_status->status_kurzbz; + $ausbildungssemester = $row_status->ausbildungssemester; + $studienplan_id = $row_status->studienplan_id; + $studienplan_bezeichnung = $row_status->bezeichnung; } + + if ($studienplan_id != '') + $studienplan_bezeichnung .= '('.$studienplan_id.')'; + echo " + + + + + + + + + + + \n"; } - else + else { - error("Roles not found!"); + error("Roles not found!"); } } - echo ''; + echo ' +
NachnameVornameSTGSemVerGrpStatusAusbSemStudienplan
$row->nachname$row->vorname$row->studiengang_kz$row->semester_stlv$row->verband_stlv$row->gruppe_stlv$row_status->status_kurzbz$row_status->ausbildungssemester
$row->nachname$row->vorname$row->studiengang_kz$row->semester_stlv$row->verband_stlv$row->gruppe_stlv
".$db->convert_html_chars($row->nachname)."".$db->convert_html_chars($row->vorname)."".$db->convert_html_chars($row->studiengang_kz)."".$db->convert_html_chars($row->semester_stlv)."".$db->convert_html_chars($row->verband_stlv)."".$db->convert_html_chars($row->gruppe_stlv)."".$db->convert_html_chars($status_kurzbz)."".$db->convert_html_chars($ausbildungssemester)."".$db->convert_html_chars($studienplan_bezeichnung)."
'; } else echo "Kein Eintrag gefunden!"; + +/** + * Prüft ob der Studienplan im vorgerueckten Studiensemester noch aktiv ist + * falls dieser dort keine Gueltigkeit mehr hat, wird versucht den neuen Studienplan zu suchen + * wenn ein eindeutiger gefunden wird, wird der neue gesetzt + * Wenn kein eindeutiger gefunden wird, bleibt der alte Studienplan eingetragen + * + * @param string $studiensemester_kurzbz Neues Studiensemester. + * @param int $ausbildungssemester Neues Ausbildungssemester. + * @param int $studienplan_id Alte Studienplan_id. + * @return neue Studienplan_id + */ +function getCorrectedStudienplan($studiensemester_kurzbz, $ausbildungssemester, $studienplan_id) +{ + if ($studienplan_id == '') + { + // Wenn kein Studienplan eingetragen ist auch keinen suchen + return ''; + } + + $studienplan = new studienplan(); + if ($studienplan->isSemesterZugeordnet($studienplan_id, $studiensemester_kurzbz, $ausbildungssemester)) + return $studienplan_id; + else + { + if ($studienplan->loadStudienplan($studienplan_id)) + { + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($studienplan->studienordnung_id); + + $stp_neu = new studienplan(); + $ret = $stp_neu->getStudienplaeneFromSem( + $studienordnung->studiengang_kz, + $studiensemester_kurzbz, + $ausbildungssemester, + $studienplan->orgform_kurzbz + ); + + if ($ret === true && count($stp_neu->result) == 1) + { + // Es wurde ein eindeutiger neue Studienplan gefunden + return $stp_neu->result[0]->studienplan_id; + } + else + { + // Kein eindeutiger gefunden -> es bleibt der alte + return $studienplan_id; + } + } + else + { + return $studienplan_id; + } + } +} ?> - -