, * 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'); require_once('../include/organisationsform.class.php'); require_once('../include/prestudent.class.php'); 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 = ''; echo ' Check Studenten

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"; if ($studiengang_kz != '') { $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."
"; } } else $text .= "Fehler bei der Abfrage aufgetreten.
"; /* * Abbrecher dürfen nicht mehr aktiv sein */ $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"; if ($studiengang_kz != '') $qry .= " AND pre.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER); if ($db->db_query($qry)) { while ($row = $db->db_fetch_object()) { $ausgabe[$row->studiengang][2][] = $row->uid; $text .= "Studenten-uid: ".$row->uid."
"; } } else $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) ...

"; $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 = ".$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)) { 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 (!in_array($studentOrgform, $orgArray)) { $ausgabe[$row->studiengang][3][] = $row->student_uid; $text .= "Student_uid: $student_uid
"; } } } } else $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...

"; $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 ($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()) { $student_uid = $row->student_uid; $prestudent_id = $row->prestudent_id; $prestudentLast->result = array(); $prestudentLast->getLastStatus($prestudent_id); if ($prestudentLast->status_kurzbz != 'Abbrecher') { $ausgabe[$row->studiengang][4][] = $student_uid; $text .= "Studenten-uid: ".$student_uid."
"; } } } /* * 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 ...

"; $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 = ".$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 ($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()) { $student_uid = $row->student_uid; if ($row->ausbildungssemester != $row->semester) { $ausgabe[$row->studiengang][5][] = $student_uid; $text .= "Studenten-uid: ".$student_uid."
"; } } } /* * Inaktive Studenten sollen keinen "aktiven" Status haben (Diplomant, Student, Unterbrecher, Praktikant) */ $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, ".$db->db_add_param($aktSem).") in ('Student', 'Diplomand', 'Unterbrecher', 'Praktikant')"; 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()) { $ausgabe[$row->studiengang][6][] = $row->student_uid; $text .= "Studenten-uid: ".$row->student_uid."
"; } } /* * Das Datum der Inskription darf nicht vor der letzten BIS-Meldung liegen * zB. Wenn Student im WS2009 studiert darf Studentenstatus nicht vor 15.4.2009 liegen * 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 ...

"; $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 ($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()) { $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) { $datumBIS = getDateForInscription($aktSem); $datumInscription = $datum->formatDatum($prestudent->datum, 'Y-m-d'); // Wenn Inscriptionsdatum vor der letzten BIS Meldung liegt if ($datumInscription < $datumBIS) { $ausgabe[$row->studiengang][7][] = $row->student_uid; $text .= $row->student_uid." Inskribiert am: ".$datumInscription." BIS Meldung: ".$datumBIS."
"; } } } } /* * 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 ...

"; $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=".$db->db_add_param($aktSem); 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)) { $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)) { $prestudentSecond->result = array(); $prestudentFirst->result = array(); while ($row = $db->db_fetch_object($result1)) { $prestudentStatus = new prestudent(); $prestudentStatus->prestudent_id = $row->prestudent_id; $prestudentStatus->status_kurzbz = $row->status_kurzbz; $prestudentStatus->studiensemester_kurzbz = $row->studiensemester_kurzbz; $prestudentStatus->ausbildungssemester = $row->ausbildungssemester; $prestudentStatus->datum = $row->datum; $prestudentStatus->insertamum = $row->insertamum; $prestudentStatus->insertvon = $row->insertvon; $prestudentStatus->updateamum = $row->updateamum; $prestudentStatus->updatevon = $row->updatevon; $prestudentStatus->ext_id = $row->ext_id; $prestudentStatus->orgform_kurzbz = $row->orgform_kurzbz; $prestudentFirst->result[] = $prestudentStatus; } } else $text .= "Fehler"; if (!$prestudentSecond->getPrestudentRolle($student->prestudent_id, null, null, 'Datum DESC, insertamum DESC')) $text .= "ERROR:".$prestudentSecond->errormsg; $anzahl_stati = count($prestudentFirst->result); for ($i = 0; $i < $anzahl_stati; $i++) { if ($prestudentFirst->result[$i]->studiensemester_kurzbz != $prestudentSecond->result[$i]->studiensemester_kurzbz) { $ausgabe[$student->studiengang][8][] = $student->student_uid; $text .= "Studenten-uid: ".$student->student_uid."
"; continue 2; } } } } /* * Aktive Studenten ohne Status in aktuellen Studiensemester */ $prestudent = new prestudent(); $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"; 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)) { if (!$prestudent->getLastStatus($row->prestudent_id, $aktSem) && !$prestudent->getLastStatus($row->prestudent_id, $nextSem)) { $ausgabe[$row->studiengang][9][] = $row->student_uid; $text .= $row->student_uid."
"; } } } /* * Bewerber im aktuellen StSem die in Mischformstudiengängen keine Orgform eingetragen haben */ $text .= "

Suche alle Bewerber die keine Orgform eingetragen haben.

"; $qry = " SELECT tbl_prestudent.prestudent_id, tbl_person.vorname, tbl_person.nachname, tbl_prestudent.studiengang_kz as studiengang FROM public.tbl_prestudent JOIN public.tbl_person USING(person_id) JOIN public.tbl_prestudentstatus USING(prestudent_id) JOIN public.tbl_studiengang USING(studiengang_kz) WHERE tbl_prestudentstatus.status_kurzbz='Bewerber' AND tbl_studiengang.mischform AND (tbl_prestudentstatus.orgform_kurzbz='' OR tbl_prestudentstatus.orgform_kurzbz is null) 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][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.

"; $qry = " SELECT tbl_prestudent.prestudent_id, tbl_person.vorname, tbl_person.nachname, tbl_prestudent.studiengang_kz as studiengang FROM public.tbl_prestudent JOIN public.tbl_person USING(person_id) JOIN public.tbl_prestudentstatus USING(prestudent_id) JOIN public.tbl_studiengang USING(studiengang_kz) WHERE tbl_prestudentstatus.status_kurzbz='Student' AND tbl_studiengang.mischform AND (tbl_prestudentstatus.orgform_kurzbz='' OR tbl_prestudentstatus.orgform_kurzbz is null) 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][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

"; $qry = " SELECT distinct tbl_person.vorname, tbl_person.nachname, tbl_prestudent.studiengang_kz as studiengang, tbl_prestudent.prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING(prestudent_id) 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 "; 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][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) { //Wenn eine Studiengangskennzahl uebergeben wird, nur diese anzeigen und die anderen ueberspringen if ($studiengang_kz != $stg_kz) continue; $studiengang = new studiengang(); $studiengang->load($stg_kz); echo "

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

"; echo ""; foreach ($value as $code => $uid) { switch ($code) { case 1: echo ' '; break; case 2: echo " "; break; case 3: echo " "; break; case 4: echo " "; break; case 5: echo " "; break; case 6: echo " "; break; case 7: echo " "; break; case 8: echo " "; break; case 9: echo " "; break; case 10: echo " "; break; case 11: echo " "; break; case 12: echo " "; break; case 13: echo " "; break; default: echo ""; break; } foreach ($uid as $student_id) { echo ""; $student = new student(); if ($student->load($student_id)) echo ''; else echo ''; echo ""; } } echo "
 
Studenten deren Studiengänge (Prestudent <-> Student) nicht gleich sind
 
Abrecher die noch aktiv sind
 
Studenten mit nicht identischen Organisationsformeinträgen (Studiengang <-> Prestudentstatus)
 
Abbrecher die wieder einen Status bekommen haben
 
Studenten deren Semester nicht mit dem Ausbildungssemester des aktuellen Status übereinstimmt
 
Inaktive Studenten mit einem aktiven Status
 
Studenten deren Inskription im aktuellen Semester vor der letzten BIS-Meldung liegt
 
Studenten die Datum und Studiensemestern in deren Stati in falscher Reihenfolge haben
 
Aktive Studenten die keinen Status im aktuellen oder nächsten Studiensemester haben
 
Bewerberstati die keiner Organisationsform zugeordnet sind
 
Studierendenstati die keiner Organisationsform zugeordnet sind
 
Studienplan passt nicht zum Studiengang des Studierenden
 
Studienplan ist in diesem Semester nicht gültig
 
Ungültiger Code
'.$student->vorname.''.$student->nachname.''.$student->uid.''.$student_id.'
"; } /** * 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) { global $datum; $semesterYear = substr($semester, 2, 6); $semesterType = substr($semester, 0, 2); if ($semesterType == 'SS') { $date = "15.11.".($semesterYear - 1); $date = $datum->formatDatum($date, 'Y-m-d'); return $date; } if ($semesterType == 'WS') { $date = '15.04'.$semesterYear; $date = $datum->formatDatum($date, 'Y-m-d'); return $date; } } echo ' ';