Files
FHC-Core/vilesci/bis/lehrgangsmeldung.php
T

954 lines
29 KiB
PHP

<?php
/* Copyright (C) 2009 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
* 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');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('student/stammdaten', null, 'suid'))
die('Sie haben keine Berechtigung für diese Seite');
$error_log='';
$error_log_hinweis='';
$error_log1='';
$error_log_all="";
$fehler='';
$maxsemester=0;
$v='';
$studiensemester=new studiensemester();
if (isset($_GET['studiensemester']))
{
$ssem = $_GET['studiensemester'];
$psem = $studiensemester->getPreviousFrom($ssem);
}
else
{
$ssem=$studiensemester->getaktorNext();
$psem=$studiensemester->getPrevious();
}
$datei='';
$zaehl=0;
$lehrgangsname = '';
$standortcode = null;
$stsem_obj = new studiensemester();
$stsem_obj->load($ssem);
//Beginn- und Endedatum des aktuellen Semesters
$beginn=$stsem_obj->start;
$ende=$stsem_obj->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&uuml;ltiges Semester!";
}
//ausgewählter Lehrgang
if(isset($_GET['stg_kz']))
{
if($_GET['stg_kz']<0)
{
$stg_kz=$_GET['stg_kz'];
}
else
{
echo "<H2>Es wurde kein Lehrgang ausgew&auml;hlt!</H2>";
$stg_kz = '';
}
}
else
{
echo "<H2>Es wurde kein Lehrgang ausgew&auml;hlt!</H2>";
$stg_kz = '';
exit;
}
//plausicheck
if(isset($_GET['plausi']))
{
$plausi=$_GET['plausi'];
}
// Select für Lehrgänge
if ($rechte->isBerechtigt('admin'))
{
echo '<form name="frm_lehrgaenge" action='.$_SERVER['PHP_SELF'].' method="GET">';
echo 'Studiengang: <SELECT name="stg_kz" onchange="document.frm_lehrgaenge.submit()">';
echo '<OPTION value="">Bitte auswählen</OPTION>';
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz', true);
$types = new studiengang();
$types->getAllTypes();
$typ = '';
foreach ($studiengang->result AS $row)
{
if ($row->typ != 'l' && $row->typ != 'k')
{
continue;
}
if ($row->studiengang_kz >= 0)
{
continue;
}
if ($row->studiengang_kz == $stg_kz)
{
$selected = 'selected';
}
else
{
$selected = '';
}
if ($typ != $row->typ || $typ == '')
{
if ($typ != '')
{
echo '</optgroup>';
}
echo '<optgroup label="'.($types->studiengang_typ_arr[$row->typ] != ''?$types->studiengang_typ_arr[$row->typ]:$row->typ).'">';
}
echo '<OPTION value="'.$row->studiengang_kz.'"'.$selected.'>'.$row->kuerzel.' - '.$row->bezeichnung.'</OPTION>';
$typ = $row->typ;
}
echo '</select>';
echo '</form>';
}
if ($stg_kz == '')
{
exit();
}
// Standortcode - Obsolete da Standort nun aus DB geholt wird - auch kein Eintrag in vilesci.config->BIS_STANDORTCODE_LEHRGAENGE noetig
#####if (defined('BIS_STANDORTCODE_LEHRGAENGE') && BIS_STANDORTCODE_LEHRGAENGE != '0')
#####{
##### $standortcode = BIS_STANDORTCODE_LEHRGAENGE;
#####}
#####else
#####{
##### echo "<H2>Standortcode f&uuml;r Lehrg&auml;nge fehlt.</H2>";
##### exit;
#####}
$datumobj=new datum();
// orgform codes auslesen
$qry='SELECT * FROM bis.tbl_orgform';
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$orgform_code_array[$row->orgform_kurzbz]=$row->code;
}
}
$qry = 'SELECT * FROM bis.tbl_gsstudientyp';
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$kodex_studientyp_array[$row->gsstudientyp_kurzbz]=$row->studientyp_code;
}
}
// StudStatusCode
$kodex_studstatuscode_array['Student'] =1;
$kodex_studstatuscode_array['Unterbrecher']=2;
$kodex_studstatuscode_array['Absolvent'] =3;
$kodex_studstatuscode_array['Abbrecher'] =4;
//Lehrgangsdaten auslesen
$qry="SELECT * FROM public.tbl_studiengang WHERE studiengang_kz=".$db->db_add_param($stg_kz);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$stgart=$row->typ;
$standortcode = $row->standort_code;
$lgartcode = $row->lgartcode;
$qrylgart = "SELECT lgart_biscode FROM bis.tbl_lgartcode WHERE lgartcode=".$db->db_add_param($row->lgartcode);
if($result_lgartcode = $db->db_query($qrylgart))
{
if($row_lgartcode = $db->db_fetch_object($result_lgartcode))
{
$lgartcode=$row_lgartcode->lgart_biscode;
}
}
$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;
}
$lehrgangsname = $row->bezeichnung;
}
}
$lehrgangsnummer = $erhalter.sprintf('%04s', abs($stg_kz));
$tabelle = '<table>
<tr>
<th>UID</th>
<th>Nachname</th>
<th>Vorname</th>
<th>PersKz</th>
</tr>';
$anzahl_gemeldet=0;
//Hauptselect
$qry="SELECT DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat,
tbl_studiengang.orgform_kurzbz AS stg_orgform_kurzbz
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_prestudent.studiengang_kz=tbl_studiengang.studiengang_kz)
WHERE bismelden IS TRUE
AND tbl_student.studiengang_kz=".$db->db_add_param($stg_kz)."
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 student_uid, nachname, vorname
";
if($result = $db->db_query($qry))
{
$datei.="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Erhalter>
<ErhKz>".$erhalter."</ErhKz>
<MeldeDatum>".date("dmY", $datumobj->mktime_fromdate($bisdatum))."</MeldeDatum>
<LehrgangMeldung>
<Lehrgang>
<LehrgangNr>".$lehrgangsnummer."</LehrgangNr>";
while($row = $db->db_fetch_object($result))
{
//Pruefen ob Ausserordnetlicher Studierender (4.Stelle in Personenkennzeichen = 9)
if(mb_substr($row->matrikelnr,3,1)=='9')
$ausserordentlich=true;
else
$ausserordentlich=false;
//Plausichecks
$qryadr="SELECT * FROM public.tbl_adresse WHERE heimatadresse IS TRUE AND person_id=".$db->db_add_param($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;
$co_name = $rowadr->co_name;
}
else
{
$plz='';
$gemeinde='';
$strasse='';
$nation='';
$co_name = '';
}
// Zustelladresse & c/o Name(=abweichender Empfaenger)
$qryzustelladr = "
SELECT *
FROM public.tbl_adresse
WHERE zustelladresse IS TRUE
AND person_id=". $db->db_add_param($row->pers_id). ";
";
$results = $db->db_query($qryzustelladr);
if ($db->db_num_rows($results) != 1)
{
$error_log1.= "Es sind ".$db->db_num_rows($results)." Zustelladressen eingetragen\n";
}
$zustell_plz = '';
$zustell_gemeinde = '';
$zustell_strasse = '';
$zustell_nation = '';
if ($rowzustelladr = $db->db_fetch_object($results))
{
$zustell_plz = $rowzustelladr->plz;
$zustell_gemeinde = $rowzustelladr->gemeinde;
$zustell_strasse = $rowzustelladr->strasse;
$zustell_nation = $rowzustelladr->nation;
}
// FH eMail-Adresse FH aus UID@Domain
$email = '';
if ($row->student_uid != '')
{
$email = $row->student_uid. '@'. DOMAIN;
}
// private eMail-Adresse
$email_privat = '';
$qry_privmail = "
SELECT kontakt
FROM public.tbl_kontakt
WHERE zustellung = TRUE
AND kontakttyp = 'email'
AND person_id=". $db->db_add_param($row->pers_id). "
ORDER BY insertamum DESC
LIMIT 1;
";
if ($privmail_result = $db->db_query($qry_privmail))
{
if($db->db_num_rows($privmail_result) == 1)
{
if ($row_privmail = $db->db_fetch_object($privmail_result))
{
$email_privat = $row_privmail->kontakt;
}
}
}
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' && $row->geschlecht!='x')
{
$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."')";
}
if($row->matr_nr=='')
{
$error_log.=(!empty($error_log)?', ':'')."Matrikelnummer fehlt";
}
if($row->matr_nr!='' && $row->matr_nr!=null && mb_strlen(trim($row->matr_nr))!=8)
{
$error_log.=(!empty($error_log)?', ':'')."Matrikelnummer ('".trim($row->matr_nr)."') ist nicht 8 Zeichen lang";
}
//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_hinweis.=(!empty($error_log_hinweis)?', ':'')."SVNR ('".$row->svnr."') enth&auml;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&auml;lt Geburtsdatum (".$row->gebdatum.") nicht";
}
// Wenn SVNR fehlt, darf Ersatzkennzeichen nicht fehlen (und umgekehrt)
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&uuml;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($lgartcode==1)
{
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."')";
}
}
}
if($row->bpk == '' || $row->bpk == null)
{
$error_log_hinweis .= (!empty($error_log_hinweis) ? ', ' : '') . "bPK fehlt";
}
if($row->bpk != '' && $row->bpk != null)
{
if (!preg_match('/[a-zA-Z0-9\+\/]{27}=/', $row->bpk))
{
$error_log.=(!empty($error_log) ? ', ' : ''). "bPK-Zeichenfolge ist ung&uuml;ltig";
}
if (strlen($row->bpk) != 28)
{
$error_log.=(!empty($error_log) ? ', ' : ''). "bPK ist nicht 28 Zeichen lang";
}
}
if ($zustell_plz == '' || $zustell_plz == null)
{
$error_log.=(!empty($error_log)?', ':'')."Zustell-PLZ fehlt";
}
if ($zustell_gemeinde == '' || $zustell_gemeinde == null)
{
$error_log.=(!empty($error_log)?', ':'')."Zustell-Gemeinde fehlt";
}
if ($zustell_strasse == '' || $zustell_strasse == null)
{
$error_log.=(!empty($error_log)?', ':'')."Zustell-Strasse fehlt";
}
if ($zustell_nation == '' || $zustell_nation == null)
{
$error_log.=(!empty($error_log)?', ':'')."Zustell-Nation fehlt";
}
if ($email == '' || $email == null)
{
$error_log.=(!empty($error_log)?', ':'')."eMail Adresse fehlt oder eMail-Zustellung auf 'Nein' gesetzt.";
}
$aktstatus_stsem = $ssem;
//Bestimmen der aktuellen Prestudentrolle (Status) und des akt. Ausbildungssemesters des Studenten
$qrystatus="SELECT * FROM public.tbl_prestudentstatus
WHERE prestudent_id=".$db->db_add_param($row->prestudent_id)." AND studiensemester_kurzbz=".$db->db_add_param($ssem)."
AND (tbl_prestudentstatus.datum<".$db->db_add_param($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=".$db->db_add_param($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;
$meldestatus='I';
}
else if($rowstatus->status_kurzbz=="Unterbrecher" )
{
$status=2;
$meldestatus='U';
}
else if($rowstatus->status_kurzbz=="Absolvent" )
{
$status=3;
$meldestatus='I';
}
else if($rowstatus->status_kurzbz=="Abbrecher" )
{
$status=4;
$meldestatus='O';
}
else
{
$error_log='';
$error_log1='';
$error_log_hinweis='';
continue;
}
$aktstatus=$rowstatus->status_kurzbz;
$aktstatus_datum=$rowstatus->datum;
$storgform=$rowstatus->orgform_kurzbz;
$aktstatus_stsem = $rowstatus->studiensemester_kurzbz;
}
}
else
{
$qrystatus="SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id=".$db->db_add_param($row->prestudent_id)." AND studiensemester_kurzbz=".$db->db_add_param($psem)." AND (tbl_prestudentstatus.datum<".$db->db_add_param($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=".$db->db_add_param($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;
$meldestatus='I';
}
else if($rowstatus->status_kurzbz=="Abbrecher" )
{
$status=4;
$meldestatus='O';
}
else
{
$error_log='';
$error_log1='';
$error_log_hinweis='';
continue;
}
$aktstatus=$rowstatus->status_kurzbz;
$aktstatus_datum=$rowstatus->datum;
$storgform=$rowstatus->orgform_kurzbz;
$aktstatus_stsem = $rowstatus->studiensemester_kurzbz;
}
}
}
}
//Wenn im Status keine Organisationsform eingetragen ist, wird die des Studienganges uebernommen
if($storgform=='')
{
//$storgform=$orgform_kurzbz;
$storgform=$row->stg_orgform_kurzbz;
}
// **** GS Container ****/
$gsstatus='';
$gsblock='';
$qrygs="SELECT
tbl_mobilitaet.*,
tbl_gsprogramm.programm_code,
tbl_gsprogramm.studienkennung_uni,
tbl_firma.partner_code
FROM
bis.tbl_mobilitaet
LEFT JOIN bis.tbl_gsprogramm USING(gsprogramm_id)
LEFT JOIN public.tbl_firma USING(firma_id)
WHERE
prestudent_id=".$db->db_add_param($row->prestudent_id)."
AND (studiensemester_kurzbz=".$db->db_add_param($aktstatus_stsem)." OR (studiensemester_kurzbz=".$db->db_add_param($psem)." AND status_kurzbz = 'Absolvent'))
ORDER BY tbl_mobilitaet.insertamum DESC limit 1;";
$studtyp = '';
if($resultgs = $db->db_query($qrygs))
{
while($rowgs = $db->db_fetch_object($resultgs))
{
$gsstatus = 'GS '.$rowgs->status_kurzbz.' '.$row->gsstudientyp_kurzbz;
$studtyp = $kodex_studientyp_array[$row->gsstudientyp_kurzbz];
$studstatuscode = (isset($kodex_studstatuscode_array[$rowgs->status_kurzbz])?$kodex_studstatuscode_array[$rowgs->status_kurzbz]:'');
$gserror='';
if($studstatuscode=='')
$gserror.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gemeinsame Studien - Status ist nicht gesetzt\n";
if($studtyp=='')
$gserror.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gemeinsame Studien - Studientyp ist nicht gesetzt\n";
if($rowgs->partner_code=='')
$gserror.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gemeinsame Studien - Partner Code ist leer\n";
if($rowgs->programm_code=='')
$gserror.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gemeinsame Studien - Programm ist leer\n";
if($gserror!='')
{
$v.="<u>Bei Student (UID, Nachname, Vorname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($row->status_kurzbz): </u>\n";
$v.=$gserror."\n";
return '';
}
$gsblock.="
<GS>
<MobilitaetsProgrammCode>".$rowgs->mobilitaetsprogramm_code."</MobilitaetsProgrammCode>
<ProgrammNr>".$rowgs->programm_code."</ProgrammNr>
<StudTyp>".$studtyp."</StudTyp>
<PartnerCode>".$rowgs->partner_code."</PartnerCode>
<StudStatusCode>".$studstatuscode."</StudStatusCode>";
if (isset($rowgs->studienkennung_uni))
{
$gsblock.="
<StudienkennungUNI>".$rowgs->studienkennung_uni."</StudienkennungUNI>";
}
$gsblock.="
</GS>";
}
}
//bei Absolventen das Beendigungsdatum (Sponsion oder Abschlussprüfung) überprüfen
if($aktstatus=='Absolvent')
{
$qry_ap="SELECT * FROM lehre.tbl_abschlusspruefung WHERE student_uid=".$db->db_add_param($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&uuml;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&uuml;fungen";
}
}
}
$ausstellungsstaat = '';
$ausstellungsstaat_master = '';
if($row->zgvmanation!='' && $lgartcode==1) // Master Lehrgang
$ausstellungsstaat_master = $row->zgvmanation;
if($row->zgvnation!='')
$ausstellungsstaat = $row->zgvnation;
else
$ausstellungsstaat = $row->ausstellungsstaat;
if($ausstellungsstaat == '' && ausstellungsstaat_master == '')
{
$error_log.=(!empty($error_log)?', ':'')." Ausstellungsstaat fehlt";
}
if($error_log!='' OR $error_log1!='')
{
//Ausgabe der fehlenden Daten
$v.="<u>Bei Student (UID, Vorname, Nachname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($row->status_kurzbz): </u>\n";
if($error_log!='')
{
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fehler: ".$error_log."\n";
}
if($error_log1!='')
{
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$error_log1;
}
if($error_log_hinweis != '')
{
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: grey'>".$error_log_hinweis." (Nicht BIS-Relevant)</span>\n";
$error_log_hinweis = '';
}
$zaehl++;
$v.="\n";
$error_log='';
$error_log1='';
continue;
}
else
{
if($error_log_hinweis != '')
{
$v.="<u>Bei Student (UID, Vorname, Nachname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($row->status_kurzbz): </u>\n";
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: grey'>".$error_log_hinweis." (Nicht BIS-Relevant)</span>\n";
$error_log_hinweis = '';
}
$anzahl_gemeldet++;
$tabelle.='<tr><td>'.$row->student_uid.'</td><td>'.$row->nachname.'</td><td>'.$row->vorname.'</td><td>'.$row->matrikelnr.'</td></tr>';
//Erstellung der XML-Datei
$datei.="
<StudentIn>
<PersKz>".trim($row->matrikelnr)."</PersKz>
<Matrikelnummer>".$row->matr_nr."</Matrikelnummer>";
if (!$ausserordentlich)
{
$datei .= "
<OrgFormCode>" . $orgform_code_array[$storgform] . "</OrgFormCode>";
}
$datei.="
<GeburtsDatum>".date("dmY", $datumobj->mktime_fromdate($row->gebdatum))."</GeburtsDatum>
<Geschlecht>".strtoupper($row->geschlecht)."</Geschlecht>";
if ($row->titelpre != '')
{
$datei .= "
<AkadGradeVorName>" . $row->titelpre . "</AkadGradeVorName>";
}
if ($row->titelpost != '')
{
$datei .= "
<AkadGradeNachName>" . $row->titelpost . "</AkadGradeNachName>";
}
$datei .= "
<Vorname>".$row->vorname."</Vorname>
<Familienname>".$row->nachname."</Familienname>";
if($row->svnr!='')
{
$datei.="
<SVNR>".$row->svnr."</SVNR>";
}
// Ersatzkennzeichen nur inkludieren wenn svnr nicht gesetzt
if($row->ersatzkennzeichen!='' && $row->svnr == null)
{
$datei.="
<ErsKz>".$row->ersatzkennzeichen."</ErsKz>";
}
if($row->bpk != '' && $row->bpk != null)
{
$datei.="
<bPK>".$row->bpk."</bPK>";
}
$datei.="
<StaatsangehoerigkeitCode>".$row->staatsbuergerschaft."</StaatsangehoerigkeitCode>
<HeimatPLZ>".$plz."</HeimatPLZ>
<HeimatGemeinde>".$gemeinde."</HeimatGemeinde>
<HeimatStrasse><![CDATA[".$strasse."]]></HeimatStrasse>
<HeimatNation>".$nation."</HeimatNation>
<ZustellPLZ>". $zustell_plz. "</ZustellPLZ>
<ZustellGemeinde>". $zustell_gemeinde. "</ZustellGemeinde>
<ZustellStrasse>". $zustell_strasse. "</ZustellStrasse>
<ZustellNation>". $zustell_nation. "</ZustellNation>";
if ($co_name != '')
{
$datei .= "
<coName>". $co_name. "</coName>";
}
$datei.="
<eMailAdresse>". $email_privat. "</eMailAdresse>
<eMailAdresseBE>". $email. "</eMailAdresseBE>
<ZugangCode>".$row->zgv_code."</ZugangCode>
<ZugangDatum>".date("dmY", $datumobj->mktime_fromdate($row->zgvdatum))."</ZugangDatum>";
if ($ausstellungsstaat != '')
{
$datei.="
<ZugangAusstellungsstaat>".$ausstellungsstaat."</ZugangAusstellungsstaat>";
}
if($lgartcode==1)
{
$datei.="
<ZugangMasterCode>".$row->zgvmas_code."</ZugangMasterCode>
<ZugangMasterDatum>".date("dmY", $datumobj->mktime_fromdate($row->zgvmadatum))."</ZugangMasterDatum>";
if ($ausstellungsstaat_master != '')
{
$datei.="
<ZugangMaAusstellungsstaat>".$ausstellungsstaat_master."</ZugangMaAusstellungsstaat>";
}
}
$qryad="SELECT
*
FROM
public.tbl_prestudentstatus
WHERE
prestudent_id=".$db->db_add_param($row->prestudent_id, FHC_INTEGER)."
AND (status_kurzbz='Student' OR status_kurzbz='Unterbrecher')
AND (tbl_prestudentstatus.datum<".$db->db_add_param($bisdatum).") ORDER BY datum asc;";
if($resultad = $db->db_query($qryad))
{
if($rowad = $db->db_fetch_object($resultad))
{
$datei.="
<BeginnDatum>".date("dmY", $datumobj->mktime_fromdate($rowad->datum))."</BeginnDatum>";
}
}
if($aktstatus=='Absolvent')
{
$datei.="
<BeendigungsDatum>".date("dmY", $datumobj->mktime_fromdate($aktstatus_datum))."</BeendigungsDatum>";
}
if($aktstatus=='Abbrecher')
{
$datei.="
<BeendigungsDatum>".date("dmY", $datumobj->mktime_fromdate($aktstatus_datum))."</BeendigungsDatum>";
}
$datei.="
<StudStatusCode>".$status."</StudStatusCode>
<MeldeStatus>".$meldestatus."</MeldeStatus>
<StandortCode>".$standortcode."</StandortCode>";
$datei.= $gsblock;
$datei.="
</StudentIn>";
}
}
$tabelle.='</table>';
$datei.="
</Lehrgang>
</LehrgangMeldung>
</Erhalter>";
echo '
<html>
<head>
<title>BIS - Lehrgangsmeldung - '.$lehrgangsname.' ('.$lehrgangsnummer.')</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="../../skin/vilesci.css" rel="stylesheet" type="text/css">
</head>
<body>';
echo "<H1>BIS - Studentendaten werden &uuml;berpr&uuml;ft! Lehrgang: ".$lehrgangsname.' ('.$lehrgangsnummer.")</H1>\n";
if(strlen(trim($v))>0)
{
echo "<H2>Nicht plausible BIS-Daten (f&uuml;r Meldung ".$ssem."): </H2><br>";
echo nl2br($v."\n\n");
}
$ddd='bisdaten/bismeldung_'.$ssem.'_Lehrgang'.$lehrgangsnummer.'.xml';
$dateiausgabe=fopen($ddd,'w');
fwrite($dateiausgabe,$datei);
fclose($dateiausgabe);
if(file_exists($ddd))
{
echo "<a href=$ddd>XML-Datei f&uuml;r BIS-Meldung Lehrgang ".$lehrgangsname.' ('.$lehrgangsnummer.")</a><br>";
}
echo '<hr>';
echo '<br>Folgende Personen sind in der Meldung enthalten:<br><br>';
echo 'Anzahl:'.$anzahl_gemeldet;
echo $tabelle;
}
?>