mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Export für alle Bachelor und Masterstudiengänge. BIS-Datum als GET
This commit is contained in:
+161
-100
@@ -54,7 +54,6 @@ $error_log_hinweis='';
|
||||
$error_log1='';
|
||||
$error_log_all="";
|
||||
$error_log_io = ''; // error log fuer plausichecks von incomings/outgoings
|
||||
$stgart='';
|
||||
$fehler='';
|
||||
$maxsemester=0;
|
||||
$v='';
|
||||
@@ -106,6 +105,8 @@ $student_data=array();
|
||||
$datum_obj = new datum();
|
||||
|
||||
//Beginn- und Endedatum des aktuellen Semesters
|
||||
// Update 07.12.2021 kindlm: scheint nicht verwendet zu werden
|
||||
/*
|
||||
$qry="SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($ssem).";";
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
@@ -114,7 +115,8 @@ if($result = $db->db_query($qry))
|
||||
$beginn=$row->start;
|
||||
$ende=$row->ende;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
//Ermittlung aktuelles und letztes BIS-Meldedatum
|
||||
if(mb_strstr($ssem,"WS"))
|
||||
{
|
||||
@@ -130,6 +132,13 @@ else
|
||||
{
|
||||
die('Ungültiges Studiensemester!');
|
||||
}
|
||||
|
||||
//Wenn bisdatum als GET-Parameter übergeben wird, dieses Datum nehmen
|
||||
if (isset($_GET['bisdatum']))
|
||||
{
|
||||
$bisdatum = $_GET['bisdatum'];
|
||||
}
|
||||
|
||||
//ausgewaehlter Studiengang
|
||||
if(isset($_GET['stg_kz']))
|
||||
{
|
||||
@@ -178,75 +187,46 @@ $kodex_studstatuscode_array['Unterbrecher']=2;
|
||||
$kodex_studstatuscode_array['Absolvent'] =3;
|
||||
$kodex_studstatuscode_array['Abbrecher'] =4;
|
||||
|
||||
//Studiengangsdaten auslesen
|
||||
$stg_obj = new studiengang();
|
||||
if($stg_obj->load($stg_kz))
|
||||
{
|
||||
$maxsemester=$stg_obj->max_semester;
|
||||
if($maxsemester==0)
|
||||
{
|
||||
echo "Die maximale Semesteranzahl des Studienganges ist nicht angegeben!";
|
||||
exit;
|
||||
}
|
||||
|
||||
$erhalter = sprintf('%03s',$stg_obj->erhalter_kz);
|
||||
|
||||
switch($stg_obj->typ)
|
||||
{
|
||||
case 'b': $stgart=1; break;
|
||||
case 'm': $stgart=2; break;
|
||||
case 'd': $stgart=3; break;
|
||||
case 'e': $stgart=4; break;
|
||||
default: die('<h2>Dieser Studiengangstyp kann nicht gemeldet werden. Typ muss (b, m, d oder e) sein</h2>'); break;
|
||||
}
|
||||
|
||||
// DoubleDegree Studierende werden per Default aus BB gemeldet.
|
||||
// Wenn es ein reiner VZ Studiengang ist, dann sollen diese aber als VZ gemeldet werden.
|
||||
if($stg_obj->orgform_kurzbz=='VZ')
|
||||
$orgform_code_array['DDP']=$orgform_code_array['VZ'];
|
||||
|
||||
$orgform_code = $orgform_code_array[$stg_obj->orgform_kurzbz];
|
||||
$orgform_kurzbz=$stg_obj->orgform_kurzbz;
|
||||
}
|
||||
else
|
||||
die('Fehler:'.$stg_obj->errormsg);
|
||||
|
||||
|
||||
//Ausgabe aktiver Studenten, die nicht gemeldet werden
|
||||
$qry_akt="
|
||||
SELECT
|
||||
DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id
|
||||
FROM
|
||||
public.tbl_student
|
||||
JOIN public.tbl_benutzer ON(student_uid=uid)
|
||||
JOIN public.tbl_person USING (person_id)
|
||||
JOIN public.tbl_prestudent USING (prestudent_id)
|
||||
JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
|
||||
WHERE
|
||||
bismelden=FALSE
|
||||
AND tbl_student.studiengang_kz=".$db->db_add_param($stg_kz)."
|
||||
AND (tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)." AND status_kurzbz IN ('Student','Diplomand','Unterbrecher','Praktikant','Outgoing'))
|
||||
AND tbl_prestudent.prestudent_id NOT IN
|
||||
(
|
||||
SELECT prestudent_id
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE
|
||||
tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)."
|
||||
AND (status_kurzbz='Abbrecher' OR status_kurzbz='Absolvent')
|
||||
)
|
||||
ORDER BY student_uid, nachname, vorname
|
||||
";
|
||||
if($result_akt = $db->db_query($qry_akt))
|
||||
if ($stg_kz != 'alleBaMa')
|
||||
{
|
||||
while($row_akt = $db->db_fetch_object($result_akt))
|
||||
$qry_akt = "
|
||||
SELECT
|
||||
DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id
|
||||
FROM
|
||||
public.tbl_student
|
||||
JOIN public.tbl_benutzer ON(student_uid=uid)
|
||||
JOIN public.tbl_person USING (person_id)
|
||||
JOIN public.tbl_prestudent USING (prestudent_id)
|
||||
JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
|
||||
WHERE
|
||||
bismelden=FALSE
|
||||
AND tbl_student.studiengang_kz=".$db->db_add_param($stg_kz)."
|
||||
AND (tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)." AND status_kurzbz IN ('Student','Diplomand','Unterbrecher','Praktikant','Outgoing'))
|
||||
AND tbl_prestudent.prestudent_id NOT IN
|
||||
(
|
||||
SELECT prestudent_id
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE
|
||||
tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)."
|
||||
AND (status_kurzbz='Abbrecher' OR status_kurzbz='Absolvent')
|
||||
)
|
||||
ORDER BY student_uid, nachname, vorname
|
||||
";
|
||||
if ($result_akt = $db->db_query($qry_akt))
|
||||
{
|
||||
$v.="<u><b>Person (UID, Vorname, Nachname) '".$row_akt->student_uid."', '".$row_akt->nachname."', '".$row_akt->vorname."'</u></b> hat Status $row_akt->status_kurzbz, wird aber nicht BIS gemeldet!!! <br>\n";
|
||||
$anzahl_fehler++;
|
||||
while ($row_akt = $db->db_fetch_object($result_akt))
|
||||
{
|
||||
$v .= "<u><b>Person (UID, Vorname, Nachname) '".$row_akt->student_uid."', '".$row_akt->nachname."', '".$row_akt->vorname."'</u></b> hat Status $row_akt->status_kurzbz, wird aber nicht BIS gemeldet!!! <br>\n";
|
||||
$anzahl_fehler++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($stg_kz != 'alleBaMa')
|
||||
{
|
||||
//Incoming ohne I/O Datensatz anzeigen
|
||||
$qry_in="
|
||||
$qry_in = "
|
||||
SELECT
|
||||
DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id
|
||||
FROM
|
||||
@@ -261,16 +241,16 @@ $qry_in="
|
||||
AND (status_kurzbz='Incoming' AND NOT EXISTS (SELECT 1 FROM bis.tbl_bisio WHERE student_uid=tbl_student.student_uid))
|
||||
ORDER BY student_uid, nachname, vorname
|
||||
";
|
||||
if($result_in = $db->db_query($qry_in))
|
||||
{
|
||||
while($row_in = $db->db_fetch_object($result_in))
|
||||
if ($result_in = $db->db_query($qry_in))
|
||||
{
|
||||
$v.="<u>Bei Student (UID, Vorname, Nachname) '".$row_in->student_uid."', '".$row_in->nachname."', '".$row_in->vorname."' ($row_in->status_kurzbz): </u>\n";
|
||||
$v.=" Es fehlt der I/O-Datensatz\n\n";
|
||||
$anzahl_fehler++;
|
||||
while ($row_in = $db->db_fetch_object($result_in))
|
||||
{
|
||||
$v .= "<u>Bei Student (UID, Vorname, Nachname) '".$row_in->student_uid."', '".$row_in->nachname."', '".$row_in->vorname."' ($row_in->status_kurzbz): </u>\n";
|
||||
$v .= " Es fehlt der I/O-Datensatz\n\n";
|
||||
$anzahl_fehler++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Hauptselect
|
||||
// An der FHTW können nur die Incomings ausgelesen werden, wenn die stg_kz 10006 übergeben wird
|
||||
if (CAMPUS_NAME == 'FH Technikum Wien' && $stg_kz==10006)
|
||||
@@ -292,6 +272,34 @@ if (CAMPUS_NAME == 'FH Technikum Wien' && $stg_kz==10006)
|
||||
ORDER BY student_uid, nachname, vorname
|
||||
";
|
||||
}
|
||||
// Wenn "alleBaMa" als $stg_kz übergeben wird, wird ein großes XML mit allen Studiengängen geladen
|
||||
elseif ($stg_kz == 'alleBaMa')
|
||||
{
|
||||
$qry="
|
||||
SELECT
|
||||
DISTINCT ON(tbl_studiengang.typ, tbl_student.studiengang_kz, matrikelnummer, nachname, vorname) *, public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat
|
||||
FROM
|
||||
public.tbl_student
|
||||
JOIN public.tbl_benutzer ON(student_uid=uid)
|
||||
JOIN public.tbl_person USING (person_id)
|
||||
JOIN public.tbl_prestudent USING (prestudent_id)
|
||||
JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
|
||||
JOIN public.tbl_studiengang ON (tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz)
|
||||
WHERE
|
||||
bismelden=TRUE
|
||||
AND tbl_studiengang.typ IN ('b','m')
|
||||
AND (((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem).") AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).")
|
||||
AND (status_kurzbz='Student' OR status_kurzbz='Outgoing'
|
||||
OR status_kurzbz='Praktikant' OR status_kurzbz='Diplomand' OR status_kurzbz='Absolvent'
|
||||
OR status_kurzbz='Abbrecher' OR status_kurzbz='Unterbrecher'))
|
||||
OR ((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($psem).") AND (status_kurzbz='Absolvent'
|
||||
OR status_kurzbz='Abbrecher') AND tbl_prestudentstatus.datum>".$db->db_add_param($bisprevious).")
|
||||
OR (status_kurzbz='Incoming' AND student_uid IN (SELECT student_uid FROM bis.tbl_bisio WHERE (tbl_bisio.bis>=".$db->db_add_param($bisprevious).")
|
||||
OR (tbl_bisio.von<=".$db->db_add_param($bisdatum)." AND (tbl_bisio.bis>=".$db->db_add_param($bisdatum)." OR tbl_bisio.bis IS NULL))
|
||||
)))
|
||||
ORDER BY tbl_studiengang.typ, tbl_student.studiengang_kz, matrikelnummer, nachname, vorname
|
||||
";
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry="
|
||||
@@ -321,25 +329,72 @@ else
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
$header ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
||||
<Erhalter>
|
||||
<ErhKz>".$erhalter."</ErhKz>
|
||||
<MeldeDatum>".date("dmY", $datumobj->mktime_fromdate($bisdatum))."</MeldeDatum>
|
||||
<StudierendenBewerberMeldung>
|
||||
<Studiengang>
|
||||
<StgKz>".$stg_kz."</StgKz>";
|
||||
|
||||
|
||||
$datei .= $header;
|
||||
$dateiNurBewerber .= $header;
|
||||
$stg_kz_index = '';
|
||||
|
||||
while($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$datei.= GenerateXMLStudentBlock($row);
|
||||
if ($row->studiengang_kz != $stg_kz_index)
|
||||
{
|
||||
//Studiengangsdaten auslesen
|
||||
$stg_obj = new studiengang();
|
||||
if($stg_obj->load($row->studiengang_kz))
|
||||
{
|
||||
$maxsemester = $stg_obj->max_semester;
|
||||
if($maxsemester == 0)
|
||||
{
|
||||
echo "Die maximale Semesteranzahl des Studienganges ist nicht angegeben!";
|
||||
exit;
|
||||
}
|
||||
|
||||
$erhalter = sprintf('%03s',$stg_obj->erhalter_kz);
|
||||
|
||||
switch($stg_obj->typ)
|
||||
{
|
||||
case 'b': $stgart = 1; break;
|
||||
case 'm': $stgart = 2; break;
|
||||
case 'd': $stgart = 3; break;
|
||||
case 'e': $stgart = 4; break;
|
||||
default: die('<h2>Dieser Studiengangstyp kann nicht gemeldet werden. Typ muss (b, m, d oder e) sein</h2>'); break;
|
||||
}
|
||||
|
||||
// DoubleDegree Studierende werden per Default aus BB gemeldet.
|
||||
// Wenn es ein reiner VZ Studiengang ist, dann sollen diese aber als VZ gemeldet werden.
|
||||
if($stg_obj->orgform_kurzbz == 'VZ')
|
||||
$orgform_code_array['DDP'] = $orgform_code_array['VZ'];
|
||||
|
||||
$orgform_code = $orgform_code_array[$stg_obj->orgform_kurzbz];
|
||||
$orgform_kurzbz = $stg_obj->orgform_kurzbz;
|
||||
}
|
||||
else
|
||||
die('Fehler:'.$stg_obj->errormsg);
|
||||
|
||||
// Header am Beginn rausschreiben
|
||||
if ($stg_kz_index == '')
|
||||
{
|
||||
$header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
||||
<Erhalter>
|
||||
<ErhKz>".$erhalter."</ErhKz>
|
||||
<MeldeDatum>".date("dmY", $datumobj->mktime_fromdate($bisdatum))."</MeldeDatum>
|
||||
<StudierendenBewerberMeldung>";
|
||||
|
||||
$datei .= $header;
|
||||
$dateiNurBewerber .= $header;
|
||||
}
|
||||
if ($stg_kz_index != '' && $row->studiengang_kz != $stg_kz_index)
|
||||
{
|
||||
$datei .= "
|
||||
</Studiengang>";
|
||||
}
|
||||
$stg_kz_index = $row->studiengang_kz;
|
||||
$datei .= "
|
||||
<Studiengang>
|
||||
<StgKz>".$row->studiengang_kz."</StgKz>";
|
||||
}
|
||||
$datei .= GenerateXMLStudentBlock($row);
|
||||
}
|
||||
|
||||
//Bewerberblock bei Ausserordentlichen nicht anzeigen
|
||||
if($stg_kz!=('9'.$erhalter))
|
||||
/*if($stg_kz!=('9'.$erhalter))
|
||||
{
|
||||
$stg_obj = new studiengang();
|
||||
|
||||
@@ -360,7 +415,7 @@ if($result = $db->db_query($qry))
|
||||
$datei.=$bewerberBlock;
|
||||
$dateiNurBewerber.=$bewerberBlock;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
$footer="
|
||||
@@ -421,6 +476,7 @@ if ($rechte->isBerechtigt('admin'))
|
||||
{
|
||||
echo '<form name="frm_studiengang" action='.$_SERVER['PHP_SELF'].' method="GET">';
|
||||
echo 'Studiengang: <SELECT name="stg_kz" onchange="document.frm_studiengang.submit()">';
|
||||
echo '<OPTION value="alleBaMa" '.($stg_kz == 'alleBaMa' ? 'selected' : '').'>Alle Bachelor und Master</OPTION>';
|
||||
$studiengang = new studiengang();
|
||||
$studiengang->getAll('typ, kurzbz', true);
|
||||
$types = new studiengang();
|
||||
@@ -457,10 +513,17 @@ if ($rechte->isBerechtigt('admin'))
|
||||
echo '</select>';
|
||||
echo '</form>';
|
||||
}
|
||||
$studiengang = new studiengang($stg_kz);
|
||||
$typ = new studiengang($stg_kz);
|
||||
$typ->getStudiengangTyp($studiengang->typ);
|
||||
echo "<H1>BIS - Studentendaten werden überprüft! Studiengang: ".$db->convert_html_chars($stg_kz)." - ".$typ->bezeichnung." ".$studiengang->bezeichnung."</H1>\n";
|
||||
if ($stg_kz != 'alleBaMa')
|
||||
{
|
||||
$studiengang = new studiengang($stg_kz);
|
||||
$typ = new studiengang($stg_kz);
|
||||
$typ->getStudiengangTyp($studiengang->typ);
|
||||
echo "<H1>BIS - Studentendaten werden überprüft. Studiengang: ".$db->convert_html_chars($stg_kz)." - ".$typ->bezeichnung." ".$studiengang->bezeichnung."</H1>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<H1>BIS - Studentendaten aller Bachelor- und Master-Studiengänge werden überprüft.</H1>\n";
|
||||
}
|
||||
echo "<H2>Nicht plausible BIS-Daten (für Meldung ".$db->convert_html_chars($ssem)."): </H2><br>";
|
||||
echo nl2br($v."\n\n");
|
||||
|
||||
@@ -821,7 +884,7 @@ function GenerateXMLStudentBlock($row)
|
||||
}
|
||||
if($row->svnr!='' && $row->svnr!=null && substr($row->svnr,4,6)!=$row->vdat && substr($row->vdat,0,4)!='0101' && substr($row->vdat,0,4)!='0107')
|
||||
{
|
||||
$error_log_hinweis.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht";
|
||||
$error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht";
|
||||
}
|
||||
if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat)
|
||||
{
|
||||
@@ -853,7 +916,7 @@ function GenerateXMLStudentBlock($row)
|
||||
}
|
||||
if($row->bpk == '' || $row->bpk == null)
|
||||
{
|
||||
$error_log .= (!empty($error_log) ? ', ' : '') . "bPK fehlt";
|
||||
$error_log_hinweis .= (!empty($error_log_hinweis) ? ', ' : '') . "bPK fehlt";
|
||||
}
|
||||
if($row->bpk != '' && $row->bpk != null)
|
||||
{
|
||||
@@ -996,8 +1059,7 @@ function GenerateXMLStudentBlock($row)
|
||||
{
|
||||
if ($db->db_num_rows($resultAbbrecher) == 0)
|
||||
{
|
||||
$error_log .= (!empty($error_log) ? ', ' : '')."Der Student ist Abbrecher vor der ersten BIS-Meldung. Bitte im FAS das Hakerl bei \"Bismelden\" im Reiter \"Prestudent\" entfernen";
|
||||
|
||||
//$error_log .= (!empty($error_log) ? ', ' : '')."Der Student ist Abbrecher vor der ersten BIS-Meldung. Bitte im FAS das Hakerl bei \"Bismelden\" im Reiter \"Prestudent\" entfernen";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1322,9 +1384,11 @@ function GenerateXMLStudentBlock($row)
|
||||
<ErsKz>" . $row->ersatzkennzeichen . "</ErsKz>";
|
||||
}
|
||||
|
||||
$datei .= "
|
||||
<bPK>" . $row->bpk . "</bPK>
|
||||
";
|
||||
if($row->bpk != '' && $row->bpk != null)
|
||||
{
|
||||
$datei.="
|
||||
<bPK>".$row->bpk."</bPK>";
|
||||
}
|
||||
|
||||
$datei .= "
|
||||
<StaatsangehoerigkeitCode>" . $row->staatsbuergerschaft . "</StaatsangehoerigkeitCode>
|
||||
@@ -1333,14 +1397,11 @@ function GenerateXMLStudentBlock($row)
|
||||
<HeimatStrasse><![CDATA[" . $strasse . "]]></HeimatStrasse>
|
||||
<HeimatNation>" . $nation . "</HeimatNation>";
|
||||
|
||||
if (!$ausserordentlich && !$incoming)
|
||||
{
|
||||
$datei .= "
|
||||
$datei .= "
|
||||
<ZustellPLZ>" . $zustell_plz . "</ZustellPLZ>
|
||||
<ZustellGemeinde>" . $zustell_gemeinde . "</ZustellGemeinde>
|
||||
<ZustellStrasse>" . $zustell_strasse . "</ZustellStrasse>
|
||||
<ZustellNation>" . $zustell_nation . "</ZustellNation>";
|
||||
}
|
||||
|
||||
if ($co_name != '')
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user