mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
954 lines
29 KiB
PHP
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ü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ählt!</H2>";
|
|
$stg_kz = '';
|
|
}
|
|
}
|
|
else
|
|
{
|
|
echo "<H2>Es wurde kein Lehrgang ausgewä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ür Lehrgä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ä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";
|
|
}
|
|
// 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ü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ü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.=" Gemeinsame Studien - Status ist nicht gesetzt\n";
|
|
if($studtyp=='')
|
|
$gserror.=" Gemeinsame Studien - Studientyp ist nicht gesetzt\n";
|
|
if($rowgs->partner_code=='')
|
|
$gserror.=" Gemeinsame Studien - Partner Code ist leer\n";
|
|
if($rowgs->programm_code=='')
|
|
$gserror.=" 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ü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";
|
|
}
|
|
}
|
|
}
|
|
|
|
$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.=" Fehler: ".$error_log."\n";
|
|
}
|
|
if($error_log1!='')
|
|
{
|
|
$v.=" ".$error_log1;
|
|
}
|
|
if($error_log_hinweis != '')
|
|
{
|
|
$v.=" <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.=" <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 überprüft! Lehrgang: ".$lehrgangsname.' ('.$lehrgangsnummer.")</H1>\n";
|
|
|
|
if(strlen(trim($v))>0)
|
|
{
|
|
echo "<H2>Nicht plausible BIS-Daten (fü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ü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;
|
|
}
|
|
?>
|