mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-15 19:19:28 +00:00
This commit is contained in:
@@ -0,0 +1,307 @@
|
||||
<?php
|
||||
// ************************************
|
||||
// * Script befuellt/aktualisiert Aufgrund der Eintraege in der
|
||||
// * Tabelle prestudentrolle die Tabelle studentlehrverband
|
||||
// * Bei 50ern und 60ern wird das Semester fortlaufend vergeben
|
||||
// * und nicht anhand der rolle
|
||||
// **********************************
|
||||
require_once('../../../vilesci/config.inc.php');
|
||||
require_once('../../../include/studiensemester.class.php');
|
||||
require_once('../../../include/person.class.php');
|
||||
require_once('../../../include/benutzer.class.php');
|
||||
require_once('../../../include/student.class.php');
|
||||
require_once('../../../include/prestudent.class.php');
|
||||
require_once('../../../include/lehrverband.class.php');
|
||||
|
||||
if(!$conn = pg_pconnect(CONN_STRING))
|
||||
die('Fehler beim Hestellen der DB Verbindung');
|
||||
$text='';
|
||||
|
||||
//Alle Studenten mit Studiensemester der Rolle holen
|
||||
$qry = "SELECT
|
||||
distinct student_uid, tbl_prestudent.prestudent_id, tbl_prestudentrolle.studiensemester_kurzbz, tbl_student.studiengang_kz
|
||||
FROM
|
||||
public.tbl_prestudent JOIN public.tbl_student USING(prestudent_id)
|
||||
JOIN public.tbl_prestudentrolle USING(prestudent_id)
|
||||
ORDER BY
|
||||
student_uid";
|
||||
|
||||
$text.="Studentlehrverbandeintraege mit Prestudentrollen abgleichen\n\n";
|
||||
if($result = pg_query($conn, $qry))
|
||||
{
|
||||
while($row = pg_fetch_object($result))
|
||||
{
|
||||
$student = new student($conn);
|
||||
$prestd = new prestudent($conn);
|
||||
//Aktuellen Status in diesem Studiensemester holen
|
||||
if(!$prestd->getLastStatus($row->prestudent_id, $row->studiensemester_kurzbz))
|
||||
{
|
||||
$text.="Fehler beim Laden des Status von $row->prestudent_id\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
//Abbrecher und Unterbrecher ins 0. Semester verschieben
|
||||
if($prestd->rolle_kurzbz=='Abbrecher')
|
||||
{
|
||||
$semester='0';
|
||||
$verband='A';
|
||||
}
|
||||
elseif($prestd->rolle_kurzbz=='Unterbrecher')
|
||||
{
|
||||
$semester='0';
|
||||
$verband='B';
|
||||
}
|
||||
else
|
||||
{
|
||||
$semester = $prestd->ausbildungssemester;
|
||||
$verband=' ';
|
||||
}
|
||||
|
||||
//Keinen Eintrag erstellen fuer Semester in denen er noch kein Student war und
|
||||
//keinen Eintrag fuer Diplomanden und Absolventen (werden weiter unten gesondert behandelt)
|
||||
if(in_array($prestd->rolle_kurzbz, array('Interessent','Bewerber','Abgewiesener','Aufgenommener','Wartender', 'Diplomand','Absolvent')))
|
||||
continue;
|
||||
|
||||
if($student->load_studentlehrverband($row->student_uid, $row->studiensemester_kurzbz))
|
||||
{
|
||||
$student->new = false;
|
||||
|
||||
//Wenn der gleiche Eintrag schon vorhanden ist dann ueberspringen
|
||||
if($student->semester==$semester)
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
$student->new = true;
|
||||
$student->insertamum = date('Y-m-d H:i:s');
|
||||
$student->insertvon = 'chkstdlvbrolle';
|
||||
$student->verband = $verband;
|
||||
$student->gruppe = ' ';
|
||||
}
|
||||
|
||||
$student->uid = $row->student_uid;
|
||||
$student->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$student->studiengang_kz = $row->studiengang_kz;
|
||||
$student->semester = $semester;
|
||||
$student->updateamum = date('Y-m-d H:i:s');
|
||||
$student->updatevon = 'chkstdlvbrolle';
|
||||
|
||||
//Lehrverband anlegen falls dieser nicht existiert
|
||||
$lvb = new lehrverband($conn);
|
||||
if(!$lvb->exists($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe))
|
||||
{
|
||||
$lvb->studiengang_kz = $student->studiengang_kz;
|
||||
$lvb->semester = $student->semester;
|
||||
$lvb->verband = $student->verband;
|
||||
$lvb->gruppe = $student->gruppe;
|
||||
$lvb->aktiv = true;
|
||||
|
||||
if(!$lvb->save(true))
|
||||
{
|
||||
$text.="Fehler beim Anlegen des Lehrverbandes: ".$lvb->errormsg;
|
||||
}
|
||||
}
|
||||
|
||||
//Zuteilung Speichern
|
||||
if($student->save_studentlehrverband())
|
||||
{
|
||||
if($student->new)
|
||||
$text.="Erstelle Studentlehrverbandeintrag für $row->student_uid im $row->studiensemester_kurzbz in Semester $student->semester\n";
|
||||
else
|
||||
$text.="Aktualisiere Studentlehrverbandeintrag für $row->student_uid im $row->studiensemester_kurzbz in Semester $student->semester\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$text.="Fehler bei $student->uid im $student->studiensemester_kurzbz Semester $student->semester Studiengang $student->studiengang_kz Verband '$student->verband' Gruppe '$student->gruppe'\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$text.="\n\nAbsolventen, Diplomanden, 50er und 60er abgleichen\n\n";
|
||||
//Absolventen, Diplomanden, 50er und 60er
|
||||
|
||||
// Bei 50ern und 60ern wird das Semester immer weitergezaehlt. In der Prestudentrolle
|
||||
// steht aber weiterhin das wirkliche Semester. Daher wird zum Semester dass in der Prestudentrolle
|
||||
// steht die Anzahl der Semester hinzugezaehlt in denen er schon Diplomand ist.
|
||||
|
||||
//Alle Studenten holen die einen Diplomanden oder Absolventeneintrag haben
|
||||
$qry = "SELECT distinct student_uid, prestudent_id, studiengang_kz, verband FROM public.tbl_prestudentrolle JOIN public.tbl_student USING(prestudent_id) WHERE rolle_kurzbz='Diplomand' OR rolle_kurzbz='Absolvent'";
|
||||
|
||||
if($result = pg_query($conn, $qry))
|
||||
{
|
||||
while($row = pg_fetch_object($result))
|
||||
{
|
||||
//Alle Diplomandeneintraege des Studenten holen
|
||||
$qry_diplomand = "SELECT * FROM public.tbl_prestudentrolle WHERE prestudent_id='$row->prestudent_id' AND rolle_kurzbz='Diplomand' ORDER BY datum";
|
||||
|
||||
if($result_diplomand = pg_query($conn, $qry_diplomand))
|
||||
{
|
||||
$i=0;
|
||||
while($row_diplomand = pg_fetch_object($result_diplomand))
|
||||
{
|
||||
$student = new student($conn);
|
||||
$prestd = new prestudent($conn);
|
||||
|
||||
//Aktuellen Status in diesem Studiensemester holen
|
||||
if(!$prestd->getLastStatus($row->prestudent_id, $row_diplomand->studiensemester_kurzbz))
|
||||
{
|
||||
$text.="Fehler beim Laden des Status von $row->prestudent_id\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
//Wenn Diplomand nicht der letzte Status in diesem Semester ist, dann Weiterspringen
|
||||
if($prestd->rolle_kurzbz!='Diplomand')
|
||||
{
|
||||
$i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
//50er und 60er rutschen immer ein Semester weiter
|
||||
$semester = $row_diplomand->ausbildungssemester+$i;
|
||||
|
||||
//Studentlehrverband Eintrag laden
|
||||
if($student->load_studentlehrverband($row->student_uid, $row_diplomand->studiensemester_kurzbz))
|
||||
{
|
||||
$student->new = false;
|
||||
|
||||
//Wenn der gleiche Eintrag schon vorhanden ist dann ueberspringen
|
||||
if($student->semester==$semester)
|
||||
{
|
||||
$i++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$student->new = true;
|
||||
$student->insertamum = date('Y-m-d H:i:s');
|
||||
$student->insertvon = 'chkstdlvbrolle';
|
||||
$student->verband = ' ';
|
||||
$student->gruppe = ' ';
|
||||
}
|
||||
|
||||
$student->uid = $row->student_uid;
|
||||
$student->studiensemester_kurzbz = $row_diplomand->studiensemester_kurzbz;
|
||||
$student->studiengang_kz = $row->studiengang_kz;
|
||||
$student->semester = $semester;
|
||||
$student->updateamum = date('Y-m-d H:i:s');
|
||||
$student->updatevon = 'chkstdlvbrolle';
|
||||
|
||||
//Lehrverband anlegen falls dieser nicht existiert
|
||||
$lvb = new lehrverband($conn);
|
||||
if(!$lvb->exists($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe))
|
||||
{
|
||||
$lvb->studiengang_kz = $student->studiengang_kz;
|
||||
$lvb->semester = $student->semester;
|
||||
$lvb->verband = $student->verband;
|
||||
$lvb->gruppe = $student->gruppe;
|
||||
$lvb->aktiv = true;
|
||||
|
||||
if(!$lvb->save(true))
|
||||
{
|
||||
$text.="Fehler beim Anlegen des Lehrverbandes: ".$lvb->errormsg;
|
||||
}
|
||||
}
|
||||
|
||||
//Zuteilung Speichern
|
||||
if($student->save_studentlehrverband())
|
||||
{
|
||||
if($student->new)
|
||||
$text.="Erstelle Studentlehrverbandeintrag für $row->student_uid im $row_diplomand->studiensemester_kurzbz in Semester $student->semester (Diplomand)\n";
|
||||
else
|
||||
$text.="Aktualisiere Studentlehrverbandeintrag für $row->student_uid im $row_diplomand->studiensemester_kurzbz in Semester $student->semester (Diplomand)\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$text.="Fehler bei $student->uid im $student->studiensemester_kurzbz Semester $student->semester Studiengang $student->studiengang_kz Verband '$student->verband' Gruppe '$student->gruppe'\n";
|
||||
}
|
||||
//Semester um eins weiterzaehlen
|
||||
$i++;
|
||||
}
|
||||
|
||||
//Absolventen Eintrag in der Tabelle Studentlehrverband anlegen
|
||||
|
||||
//Absolventeneintrag holen
|
||||
$qry_absolvent = "SELECT * FROM public.tbl_prestudentrolle WHERE prestudent_id='$row->prestudent_id' AND rolle_kurzbz='Absolvent' ORDER BY datum";
|
||||
if($result_absolvent = pg_query($conn, $qry_absolvent))
|
||||
{
|
||||
while($row_absolvent = pg_fetch_object($result_absolvent))
|
||||
{
|
||||
$student = new student($conn);
|
||||
|
||||
//Der Absolventeneintrag befindet sich im gleichen Semester wie der letzte Diplomandeneintrag
|
||||
$semester = $row_absolvent->ausbildungssemester+($i!=0?$i-1:0);
|
||||
|
||||
//Studentlehrverband Eintrag laden
|
||||
if($student->load_studentlehrverband($row->student_uid, $row_absolvent->studiensemester_kurzbz))
|
||||
{
|
||||
$student->new = false;
|
||||
|
||||
//Wenn der gleiche Eintrag schon vorhanden ist dann ueberspringen
|
||||
if($student->semester==$semester)
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
$student->new = true;
|
||||
$student->insertamum = date('Y-m-d H:i:s');
|
||||
$student->insertvon = 'chkstdlvbrolle';
|
||||
$student->verband = $row->verband;
|
||||
$student->gruppe = ' ';
|
||||
}
|
||||
|
||||
$student->uid = $row->student_uid;
|
||||
$student->studiensemester_kurzbz = $row_absolvent->studiensemester_kurzbz;
|
||||
$student->studiengang_kz = $row->studiengang_kz;
|
||||
$student->semester = $semester;
|
||||
$student->updateamum = date('Y-m-d H:i:s');
|
||||
$student->updatevon = 'chkstdlvbrolle';
|
||||
|
||||
//Lehrverband anlegen falls dieser nicht existiert
|
||||
$lvb = new lehrverband($conn);
|
||||
if(!$lvb->exists($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe))
|
||||
{
|
||||
$lvb->studiengang_kz = $student->studiengang_kz;
|
||||
$lvb->semester = $student->semester;
|
||||
$lvb->verband = $student->verband;
|
||||
$lvb->gruppe = $student->gruppe;
|
||||
$lvb->aktiv = true;
|
||||
|
||||
if(!$lvb->save(true))
|
||||
{
|
||||
$text.="Fehler beim Anlegen des Lehrverbandes: ".$lvb->errormsg;
|
||||
}
|
||||
}
|
||||
|
||||
//Zuteilung Speichern
|
||||
if($student->save_studentlehrverband())
|
||||
{
|
||||
if($student->new)
|
||||
$text.="Erstelle Studentlehrverbandeintrag für $student->uid im $student->studiensemester_kurzbz in Semester $student->semester (Absolvent)\n";
|
||||
else
|
||||
$text.="Aktualisiere Studentlehrverbandeintrag für $student->uid im $student->studiensemester_kurzbz in Semester $student->semester (Absolvent)\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$text.="Fehler bei $student->uid im $student->studiensemester_kurzbz Semester $student->semester Studiengang $student->studiengang_kz Verband '$student->verband' Gruppe '$student->gruppe'\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$text.="\nFehler beim Ermitteln des Absolventeneintrages:".$qry_absolvent;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$text.="\nFehler beim Ermitteln des Diplomandeneintrages:".$qry_diplomand;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$text.="\nFehler beim Ermitteln der Absolventen und Diplomanden".$qry;
|
||||
}
|
||||
|
||||
echo nl2br($text);
|
||||
?>
|
||||
Reference in New Issue
Block a user