* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at > * Rudolf Hangl < rudolf.hangl@technikum-wien.at > * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > */ require_once('../../config/vilesci.config.inc.php'); require_once('../../include/studiensemester.class.php'); require_once('../../include/datum.class.php'); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); $error_log=''; $error_log1=''; $error_log_all=""; $fehler=''; $maxsemester=0; $v=''; $studiensemester=new studiensemester(); $ssem=$studiensemester->getaktorNext(); $psem=$studiensemester->getPrevious(); $zaehl=0; $erhalter=''; $stgart=''; $orgform=''; $status=''; $datei=''; $aktstatus=''; $aktstatus_datum=''; $mob=''; $gast=''; $avon=''; $abis=''; $zweck=''; $bewerberM=array(); $bewerberW=array(); $bsem=array(); $stsem=array(); $usem=array(); $asem=array(); $absem=array(); $iosem=array(); $bsema=array(); $stsema=array(); $usema=array(); $asema=array(); $absema=array(); $iosema=array(); $bewerbercount=0; $bewerbercountbb=0; $bewerbercountvz=0; $bewerberM1=array(); $bewerberW1=array(); $bsem1=array(); $stsem1=array(); $bewerberM2=array(); $bewerberW2=array(); $bsem2=array(); $stsem2=array(); $datei1=''; $datei2=''; $stgorg=""; $tabelle=''; $stlist=''; $bwlist=''; $plausi=''; $storgfor=''; $sponsion=''; //Beginn- und Endedatum des aktuellen Semesters $qry="SET client_encoding TO Unicode;SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz='".$ssem."';"; if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) { $beginn=$row->start; $ende=$row->ende; } } //Ermittlung aktuelles und letztes BIS-Meldedatum if(mb_strstr($ssem,"WS")) { $bisdatum=date("Y-m-d", mktime(0, 0, 0, 11, 15, date("Y"))); $bisprevious=date("Y-m-d", mktime(0, 0, 0, 04, 15, date("Y"))); } elseif(mb_strstr($ssem,"SS")) { $bisdatum=date("Y-m-d", mktime(0, 0, 0, 04, 15, date("Y"))); $bisprevious=date("Y-m-d", mktime(0, 0, 0, 11, 15, date("Y")-1)); } else { echo "Ungültiges Semester!"; } //ausgewählter Lehrgang if(isset($_GET['stg_kz'])) { if($_GET['stg_kz']<0) { $stg_kz=$_GET['stg_kz']; } else { echo "

Es wurde kein Lehrgang ausgewählt!

"; } } else { //$stg_kz=228; echo "

Es wurde kein Lehrgang ausgewählt!

"; exit; } function myaddslashes($var) { return ($var!=''?"'".addslashes($var)."'":'null'); } //plausicheck if(isset($_GET['plausi'])) { $plausi=$_GET['plausi']; } $datumobj=new datum(); //Lehrgangsdaten auslesen $qry="SELECT * FROM public.tbl_studiengang WHERE studiengang_kz='".$stg_kz."'"; if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) { $stgart=$row->typ; $stgemail=$row->email; if(strlen(trim($row->erhalter_kz))==1) { $erhalter='00'.trim($row->erhalter_kz); } elseif(strlen(trim($row->erhalter_kz))==2) { $erhalter='0'.trim($row->erhalter_kz); } else { $erhalter=$row->erhalter_kz; } if($row->lgartcode<'1' || $row->lgartcode>'3') { echo "

Es wurde keine gültige Lehrgangart ausgewählt!

"; exit; } } } //Hauptselect $qry="SELECT DISTINCT ON(student_uid, 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) WHERE bismelden IS TRUE AND tbl_student.studiengang_kz='".$stg_kz."' AND (((tbl_prestudentstatus.studiensemester_kurzbz='".$ssem."') AND (tbl_prestudentstatus.datum<='".$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='".$psem."') AND (status_kurzbz='Absolvent' OR status_kurzbz='Abbrecher') AND tbl_prestudentstatus.datum>'".$bisprevious."') OR (status_kurzbz='Incoming' AND student_uid IN (SELECT student_uid FROM bis.tbl_bisio WHERE (tbl_bisio.bis>='".$bisprevious."') OR (tbl_bisio.von<'".$bisdatum."' AND (tbl_bisio.bis>='".$bisdatum."' OR tbl_bisio.bis IS NULL)) ))) ORDER BY student_uid, nachname, vorname "; if($result = $db->db_query($qry)) { $datei.=" ".$erhalter." ".date("dmY", $datumobj->mktime_fromdate($bisdatum))." ".($stg_kz*(-1))." ".$row->lgartcode.""; while($row = $db->db_fetch_object($result)) { //Plausichecks $qryadr="SELECT * from public.tbl_adresse WHERE heimatadresse IS TRUE AND person_id='".$row->pers_id."';"; $results=$db->db_query($qryadr); if($anz=$db->db_num_rows($results)!=1) { $error_log1="Es sind ".$anz." Heimatadressen eingetragen\n"; } if($rowadr=$db->db_fetch_object($results)) { $plz=$rowadr->plz; $gemeinde=$rowadr->gemeinde; $strasse=$rowadr->strasse; $nation=$rowadr->nation; } else { $plz=''; $gemeinde=''; $strasse=''; $nation=''; } if($row->gebdatum<'1920-01-01' OR $row->gebdatum==null OR $row->gebdatum=='') { $error_log.=(!empty($error_log)?', ':'')."Geburtsdatum ('".$row->gebdatum."')"; } if($row->geschlecht!='m' && $row->geschlecht!='w') { $error_log.=(!empty($error_log)?', ':'')."Geschlecht ('".$row->geschlecht."')"; } if($row->vorname=='' || $row->vorname==null) { $error_log.=(!empty($error_log)?', ':'')."Vorname ('".$row->vorname."')"; } if($row->nachname=='' || $row->nachname==null) { $error_log.=(!empty($error_log)?', ':'')."Nachname ('".$row->nachname."')"; } //SVNR mu߸ 10-stellig sein if($row->svnr!='' && $row->svnr!=null && mb_strlen(trim($row->svnr))!=10) { $error_log.=(!empty($error_log)?', ':'')."SVNR ('".trim($row->svnr)."') ist nicht 10 Zeichen lang"; } //Ersatzkennzeichen muß 10-stellig sein if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && mb_strlen(trim($row->ersatzkennzeichen))!=10) { $error_log.=(!empty($error_log)?', ':'')."Ersatzkennzeichen ('".trim($row->ersatzkennzeichen)."') ist nicht 10 Zeichen lang"; } //Vergleich der letzten 6 Stellen der SVNR mit Geburtsdatum - ausser bei 01.01. und 01.07. 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.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$row->gebdatum.") nicht"; } //Vergleich der letzten 6 Stellen des Ersatzkennzeichen mit Geburtsdatum if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat) { $error_log.=(!empty($error_log)?', ':'')."Ersatzkennzeichen ('".$row->ersatzkennzeichen."') enthält Geburtsdatum (".$row->gebdatum.") nicht"; } if(($row->svnr=='' || $row->svnr==null)&&($row->ersatzkennzeichen=='' || $row->ersatzkennzeichen==null)) { $error_log.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') bzw. ErsKz ('".$row->ersatzkennzeichen."') fehlt"; } if($row->staatsbuergerschaft=='' || $row->staatsbuergerschaft==null) { $error_log.=(!empty($error_log)?', ':'')."Staatsbürgerschaft ('".$row->staatsbuergerschaft."')"; } if($plz=='' || $plz==null) { $error_log.=(!empty($error_log)?', ':'')."Heimat-PLZ ('".$plz."')"; } if($gemeinde=='' || $gemeinde==null) { $error_log.=(!empty($error_log)?', ':'')."Heimat-Gemeinde ('".$gemeinde."')"; } if($strasse=='' || $strasse==null) { $error_log.=(!empty($error_log)?', ':'')."Heimat-Strasse ('".$strasse."')"; } if($nation=='' || $nation==null) { $error_log.=(!empty($error_log)?', ':'')."Heimat-Nation ('".$nation."')"; } if($row->zgv_code=='' || $row->zgv_code==null) { $error_log.=(!empty($error_log)?', ':'')."ZugangCode ('".$row->zgv_code."')"; } if($row->zgvdatum=='' || $row->zgvdatum==null) { $error_log.=(!empty($error_log)?', ':'')."ZugangDatum ('".$row->zgvdatum."')"; } else { if($row->zgvdatum>date('Y-m-d')) { $error_log.=(!empty($error_log)?', ':'')."ZugangDatum liegt in der Zukunft ('".$row->zgvdatum."')"; } if($row->zgvdatum<$row->gebdatum) { $error_log.=(!empty($error_log)?', ':'')."ZugangDatum ('".$row->zgvdatum."') kleiner als Geburtsdatum ('".$row->gebdatum."')"; } } if($stgart==2) { if($row->zgvmas_code=='' || $row->zgvmas_code==null) { $error_log.=(!empty($error_log)?', ':'')."ZugangMagStgCode ('".$row->zgvmas_code."')"; } if($row->zgvmadatum=='' || $row->zgvmadatum==null) { $error_log.=(!empty($error_log)?', ':'')."ZugangMagStgDatum ('".$row->zgvmadatum."')"; } else { if($row->zgvmadatum>date("Y-m-d")) { $error_log.=(!empty($error_log)?', ':'')."ZugangMagStgDatum liegt in der Zukunft ('".$row->zgvmadatum."')"; } if($row->zgvmadatum<$row->zgvdatum) { $error_log.=(!empty($error_log)?', ':'')."ZugangMagStgDatum ('".$row->zgvmadatum."') kleiner als Zugangdatum ('".$row->zgvdatum."')"; } if($row->zgvmadatum<$row->gebdatum) { $error_log.=(!empty($error_log)?', ':'')."ZugangMagStgDatum ('".$row->zgvmadatum."') kleiner als Geburtsdatum ('".$row->gebdatum."')"; } } } //Bestimmen der aktuellen Prestudentrolle (Status) und des akt. Ausbildungssemesters des Studenten $qrystatus="SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id='".$row->prestudent_id."' AND studiensemester_kurzbz='".$ssem."' AND (tbl_prestudentstatus.datum<'".$bisdatum."') ORDER BY datum desc, insertamum desc, ext_id desc;"; if($resultstatus = $db->db_query($qrystatus)) { if($db->db_num_rows($resultstatus)>0) { if($rowstatus = $db->db_fetch_object($resultstatus)) { $qry1="SELECT count(*) AS dipl FROM public.tbl_prestudentstatus WHERE prestudent_id='".$row->prestudent_id."' AND status_kurzbz='Diplomand'"; if($result1 = $db->db_query($qry1)) { if($row1 = $db->db_fetch_object($result1)) { $sem=$rowstatus->ausbildungssemester; if($sem>$maxsemester) { $sem=$maxsemester; } if($row1->dipl>1) { $sem=50; } if($row1->dipl>3) { $sem=60; } } } if($rowstatus->status_kurzbz=="Student" || $rowstatus->status_kurzbz=='Praktikant' || $rowstatus->status_kurzbz=="Diplomand") { $status=1; } else if($rowstatus->status_kurzbz=="Unterbrecher" ) { $status=2; } else if($rowstatus->status_kurzbz=="Absolvent" ) { $status=3; } else if($rowstatus->status_kurzbz=="Abbrecher" ) { $status=4; } else { $error_log=''; $error_log1=''; continue; } $aktstatus=$rowstatus->status_kurzbz; $aktstatus_datum=$rowstatus->datum; $storgform=$rowstatus->orgform_kurzbz; } } else { $qrystatus="SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id='".$row->prestudent_id."' AND studiensemester_kurzbz='".$psem."' AND (tbl_prestudentstatus.datum<'".$bisdatum."') ORDER BY datum desc, insertamum desc, ext_id desc;"; if($resultstatus = $db->db_query($qrystatus)) { if($rowstatus = $db->db_fetch_object($resultstatus)) { $qry1="SELECT count(*) AS dipl FROM public.tbl_prestudentstatus WHERE prestudent_id='".$row->prestudent_id."' AND status_kurzbz='Diplomand'"; if($result1 = $db->db_query($qry1)) { if($row1 = $db->db_fetch_object($result1)) { $sem=$rowstatus->ausbildungssemester; if($sem>$maxsemester) { $sem=$maxsemester; } if($row1->dipl>1) { $sem=50; } if($row1->dipl>3) { $sem=60; } } } if($rowstatus->status_kurzbz=="Absolvent" ) { $status=3; } else if($rowstatus->status_kurzbz=="Abbrecher" ) { $status=4; } else { $error_log=''; $error_log1=''; continue; } $aktstatus=$rowstatus->status_kurzbz; $aktstatus_datum=$rowstatus->datum; //$storgform=$rowstatus->orgform_kurzbz; } } } } //bei Absolventen das Beendigungsdatum (Sponsion oder Abschlussprüfung) überprüfen if($aktstatus=='Absolvent') { $qry_ap="SELECT * FROM lehre.tbl_abschlusspruefung WHERE student_uid='".$row->student_uid."' AND abschlussbeurteilung_kurzbz!='nicht' AND abschlussbeurteilung_kurzbz IS NOT NULL"; if($result_ap = $db->db_query($qry_ap)) { $ap=0; while($row_ap = $db->db_fetch_object($result_ap)) { if($row_ap->datum=='' || $row_ap->datum==null) { $error_log.=(!empty($error_log)?', ':'')."Datum der Abschlussprüfung ('".$row_ap->datum."')"; } if($row_ap->sponsion=='' || $row_ap->sponsion==null) { $error_log.=(!empty($error_log)?', ':'')."Datum der Sponsion ('".$row_ap->sponsion."')"; } $ap++; $sponsion=$row_ap->sponsion; } if($ap!=1) { $error_log.=(!empty($error_log)?', ':'').$ap." bestandene Abschlussprüfungen"; } } } if($error_log!='' OR $error_log1!='') { //Ausgabe der fehlenden Daten $v.="Bei Student (UID, Vorname, Nachname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($row->status_kurzbz): \n"; if($error_log!='') { $v.="     Fehler: ".$error_log."\n"; } if($error_log1!='') { $v.="     ".$error_log1; } $zaehl++; $v.="\n"; $error_log=''; $error_log1=''; continue; } else { //Erstellung der XML-Datei $datei.=" ".trim($row->matrikelnr)." ".date("dmY", $datumobj->mktime_fromdate($row->gebdatum))." ".strtoupper($row->geschlecht).""; if(($row->svnr!='')&&($row->ersatzkennzeichen!='')) { //$datei.=" //".$row->vorname." //".$row->nachname.""; $datei.=" ".$row->svnr.""; $datei.=" ".$row->ersatzkennzeichen.""; } else { if($row->svnr!='') { $datei.=" ".$row->svnr.""; } if($row->ersatzkennzeichen!='') { //$datei.=" //".$row->vorname." //".$row->nachname.""; $datei.=" ".$row->ersatzkennzeichen.""; } } $datei.=" ".$row->staatsbuergerschaft." ".$plz." ".$gemeinde." ".$nation." ".$row->zgv_code.""; if($row->zgvdatum!=null) { $datei.=" ".date("dmY", $datumobj->mktime_fromdate($row->zgvdatum)).""; } else { $datei.=" "; } //!!!stgart für Lehrgang überprüfen!!! if($stgart==2) { $datei.=" ".$row->zgvmas_code.""; if($row->zgvmadatum!=null) { $datei.=" ".date("dmY", $datumobj->mktime_fromdate($row->zgvmadatum)).""; } else { $datei.=" "; } } $qryad="SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id='".$row->prestudent_id."' AND (status_kurzbz='Student' OR status_kurzbz='Unterbrecher') AND (tbl_prestudentstatus.datum<'".$bisdatum."') ORDER BY datum asc;"; if($resultad = $db->db_query($qryad)) { if($rowad = $db->db_fetch_object($resultad)) { $datei.=" ".date("dmY", $datumobj->mktime_fromdate($rowad->datum)).""; } } if($aktstatus=='Absolvent') { $datei.=" ".date("dmY", $datumobj->mktime_fromdate($aktstatus_datum)).""; } $datei.=" ".$status." "; } } $datei.=" "; echo ' BIS - Lehrgangsmeldung - ('.$stg_kz.') '; echo "

BIS - Studentendaten werden überprüft! Lehrgang: ".$stg_kz."

\n"; if(strlen(trim($v))>0) { echo "

Nicht plausible BIS-Daten (für Meldung ".$ssem."):


"; echo nl2br($v."\n\n"); } $ddd='bisdaten/bismeldung_'.$ssem.'_Lehrgang'.$stg_kz.'.xml'; if(strtoupper($plausi)!='J') { $dateiausgabe=fopen($ddd,'w'); fwrite($dateiausgabe,$datei); fclose($dateiausgabe); } if(file_exists($ddd)) { echo "XML-Datei für BIS-Meldung Lehrgang ".$stg_kz."
"; } //echo $datei; } ?>