mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
2032 lines
61 KiB
PHP
2032 lines
61 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 >
|
|
*/
|
|
/**
|
|
* Studentenmeldung
|
|
*
|
|
* Erstellt ein XML File fuer die Studentenmeldung an den FHR
|
|
* Das XML-File wird im Filesystem abgelegt.
|
|
* Zusaetzlich wird eine Uebersichtsliste ueber die im File enthaltenen Daten erstellt und
|
|
* nicht plausible Daten
|
|
*
|
|
* Parameter: stg_kz ... Kennzahl des Studienganges
|
|
*/
|
|
require_once('../../config/vilesci.config.inc.php');
|
|
require_once('../../include/studiensemester.class.php');
|
|
require_once('../../include/datum.class.php');
|
|
require_once('../../include/studiengang.class.php');
|
|
require_once('../../include/functions.inc.php');
|
|
require_once('../../include/benutzerberechtigung.class.php');
|
|
require_once('../../include/bisio.class.php');
|
|
require_once('../../include/prestudent.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') && !$rechte->isBerechtigt('assistenz',null,'suid') && !$rechte->isBerechtigt('admin',null,'suid'))
|
|
die('Sie haben keine Berechtigung für diese Seite');
|
|
|
|
$error_log='';
|
|
$error_log_hinweis='';
|
|
$error_log1='';
|
|
$error_log_all="";
|
|
$error_log_io = ''; // error log fuer plausichecks von incomings/outgoings
|
|
$fehler='';
|
|
$maxsemester=0;
|
|
$v='';
|
|
$studiensemester=new studiensemester();
|
|
// Wenn Studiensemester als GET übergeben wird, dieses laden, sonst getaktorNext()
|
|
if (isset($_GET['studiensemester']))
|
|
{
|
|
$ssem = $_GET['studiensemester'];
|
|
$psem = $studiensemester->getPreviousFrom($ssem);
|
|
}
|
|
else
|
|
{
|
|
$ssem = $studiensemester->getaktorNext();
|
|
$psem = $studiensemester->getPrevious();
|
|
}
|
|
|
|
$anzahl_fehler=0;
|
|
$erhalter='';
|
|
$stgart='';
|
|
$orgform_code='';
|
|
$status='';
|
|
$datei='';
|
|
$dateiNurBewerber='';
|
|
$aktstatus='';
|
|
$aktstatus_datum='';
|
|
$mob='';
|
|
$gast='';
|
|
$herkunft='';
|
|
$avon='';
|
|
$abis='';
|
|
$zweck='';
|
|
$bewerberM=array();
|
|
$bewerberW=array();
|
|
$bsem=array();
|
|
$stsem=array();
|
|
$usem=array();
|
|
$asem=array();
|
|
$absem=array();
|
|
$iosem=array();
|
|
$gssem=array();
|
|
$bewerbercount=array();
|
|
$orgform_kurzbz='';
|
|
$tabelle='';
|
|
$stlist='';
|
|
$bwlist='';
|
|
$storgfor='';
|
|
$verwendete_orgformen=array();
|
|
$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))
|
|
{
|
|
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
|
|
{
|
|
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']))
|
|
{
|
|
$stg_kz=$_GET['stg_kz'];
|
|
}
|
|
else
|
|
{
|
|
die('<H2>Es wurde kein Studiengang ausgewählt!</H2>');
|
|
}
|
|
|
|
/*
|
|
Obsolete - Standort wird nun aus DB geholt
|
|
standortcode 22=Wien
|
|
derzeit fuer alle Studierende der gleiche Standort
|
|
ToDo: Standort sollte pro Student konfigurierbar sein.
|
|
|
|
$standortcode='22';
|
|
if(in_array($stg_kz,array('265','268','761','760','266','267','764','269','400','794','795','786','859','871')))
|
|
$standortcode='14'; // Pinkafeld
|
|
elseif(in_array($stg_kz,array('639','640','263','743','364','635','402','401','725','264','271','781')))
|
|
$standortcode='3'; // Eisenstadt
|
|
*/
|
|
|
|
$datumobj=new datum();
|
|
|
|
$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;
|
|
|
|
//Ausgabe aktiver Studenten, die nicht gemeldet werden
|
|
if ($stg_kz != 'alleBaMa')
|
|
{
|
|
$qry_akt = "
|
|
SELECT
|
|
DISTINCT ON(student_uid, nachname, vorname) *,
|
|
public.tbl_person.person_id AS pers_id,
|
|
public.tbl_prestudent.foerderrelevant as pre_foerderrelevant,
|
|
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant
|
|
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=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))
|
|
{
|
|
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 = "
|
|
SELECT
|
|
DISTINCT ON(student_uid, nachname, vorname) *,
|
|
public.tbl_person.person_id AS pers_id,
|
|
public.tbl_prestudent.foerderrelevant as pre_foerderrelevant,
|
|
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant
|
|
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_student.studiengang_kz=".$db->db_add_param($stg_kz)."
|
|
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))
|
|
{
|
|
$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)
|
|
{
|
|
$qry="
|
|
SELECT
|
|
DISTINCT ON(student_uid, nachname, vorname) *,
|
|
public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat,
|
|
public.tbl_prestudent.foerderrelevant as pre_foerderrelevant,
|
|
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant
|
|
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 (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
|
|
";
|
|
}
|
|
// 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_student.studiengang_kz, matrikelnr, nachname, vorname) *,
|
|
public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat,
|
|
public.tbl_prestudent.foerderrelevant as pre_foerderrelevant,
|
|
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant
|
|
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','e')
|
|
AND tbl_studiengang.melderelevant=TRUE
|
|
AND tbl_studiengang.studiengang_kz > 0
|
|
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_student.studiengang_kz, matrikelnr, nachname, vorname
|
|
";
|
|
}
|
|
else
|
|
{
|
|
$qry="
|
|
SELECT
|
|
DISTINCT ON(student_uid, nachname, vorname) *,
|
|
public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat,
|
|
public.tbl_prestudent.foerderrelevant as pre_foerderrelevant,
|
|
public.tbl_studiengang.foerderrelevant as stg_foerderrelevant
|
|
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_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))
|
|
{
|
|
|
|
$stg_kz_index = '';
|
|
|
|
while($row = $db->db_fetch_object($result))
|
|
{
|
|
$row->pre_foerderrelevant = $db->db_parse_bool($row->pre_foerderrelevant);
|
|
$row->stg_foerderrelevant = $db->db_parse_bool($row->stg_foerderrelevant);
|
|
|
|
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))
|
|
{
|
|
$stg_obj = new studiengang();
|
|
|
|
if($orgform_code==3 || $stg_obj->isMischform($stg_kz,$ssem) || $stg_obj->isMischform($stg_kz,$psem))
|
|
{
|
|
$orgcodes = array_unique($orgform_code_array);
|
|
//Mischform
|
|
foreach($orgcodes as $code)
|
|
{
|
|
$bewerberBlock=GenerateXMLBewerberBlock($code);
|
|
$datei.=$bewerberBlock;
|
|
$dateiNurBewerber.=$bewerberBlock;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$bewerberBlock=GenerateXMLBewerberBlock();
|
|
$datei.=$bewerberBlock;
|
|
$dateiNurBewerber.=$bewerberBlock;
|
|
}
|
|
}*/
|
|
}
|
|
|
|
$footer="
|
|
</Studiengang>
|
|
</StudierendenBewerberMeldung>
|
|
</Erhalter>";
|
|
|
|
$datei.=$footer;
|
|
$dateiNurBewerber.=$footer;
|
|
|
|
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<title>BIS - Meldung Student - ('.$stg_kz.')</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link href="../../skin/vilesci.css" rel="stylesheet" type="text/css">';
|
|
|
|
include('../../include/meta/jquery.php');
|
|
include('../../include/meta/jquery-tablesorter.php');
|
|
|
|
echo ' </head>
|
|
<style>
|
|
#t1, #t2
|
|
{
|
|
width: auto;
|
|
}
|
|
</style>
|
|
<script language="JavaScript" type="text/javascript">
|
|
$(document).ready(function()
|
|
{
|
|
$("#t1").tablesorter(
|
|
{
|
|
sortList: [[6,1],[5,1],[4,1],[2,0],[3,0]],
|
|
widgets: ["zebra", "filter", "stickyHeaders"],
|
|
widgetOptions : { filter_functions:
|
|
{
|
|
// Add select menu to this column
|
|
4 : {
|
|
"Abbrecher" : function(e, n, f, i, $r, c, data) { return /Abbrecher/.test(e); },
|
|
"Absolvent" : function(e, n, f, i, $r, c, data) { return /Absolvent/.test(e); },
|
|
"Diplomand" : function(e, n, f, i, $r, c, data) { return /Diplomand/.test(e); },
|
|
"Incoming" : function(e, n, f, i, $r, c, data) { return /Incoming/.test(e); },
|
|
"Student" : function(e, n, f, i, $r, c, data) { return /Student/.test(e); },
|
|
"Unterbrecher" : function(e, n, f, i, $r, c, data) { return /Unterbrecher/.test(e); },
|
|
}
|
|
}
|
|
}
|
|
});
|
|
$("#t2").tablesorter(
|
|
{
|
|
sortList: [[0,0],[1,0]],
|
|
widgets: ["zebra", "filter", "stickyHeaders"]
|
|
});
|
|
});
|
|
</script>
|
|
<body>';
|
|
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();
|
|
$types->getAllTypes();
|
|
$typ = '';
|
|
foreach ($studiengang->result AS $row)
|
|
{
|
|
if ($row->typ != 'b' && $row->typ != 'm' && $row->typ != 'd' && $row->typ != 'e')
|
|
{
|
|
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 != '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");
|
|
|
|
//Tabelle mit Ergebnissen ausgeben
|
|
$tabelle="<H2>BIS-Meldungsübersicht: </H2><br>
|
|
<table border=1>
|
|
<colgroup>
|
|
<col width='180'>
|
|
<col width='80'>
|
|
<col width='80'>
|
|
<col width='80'>
|
|
<col width='80'>
|
|
<col width='80'>
|
|
<col width='80'>
|
|
<col width='80'>
|
|
<col width='80'>
|
|
<col width='80'>
|
|
<col width='80'>
|
|
</colgroup>
|
|
<tr align=center>
|
|
<th bgcolor='#AFFA49'>Semester</th>
|
|
<th bgcolor='#AFFA49'>1</th>
|
|
<th bgcolor='#AFFA49'>2</th>
|
|
<th bgcolor='#AFFA49'>3</th>
|
|
<th bgcolor='#AFFA49'>4</th>
|
|
<th bgcolor='#AFFA49'>5</th>
|
|
<th bgcolor='#AFFA49'>6</th>
|
|
<th bgcolor='#AFFA49'>7</th>
|
|
<th bgcolor='#AFFA49'>8</th>
|
|
<th bgcolor='#AFFA49'>50</th>
|
|
<th bgcolor='#AFFA49'>60</th>
|
|
</tr>";
|
|
|
|
$semester_arr = array(1,2,3,4,5,6,7,8,50,60);
|
|
|
|
sort($verwendete_orgformen);
|
|
|
|
$orgformen = implode('/',$verwendete_orgformen);
|
|
|
|
$aktiv="
|
|
<tr align=center>
|
|
<td bgcolor='#AFFA49'>aktive Studenten ($orgformen)</td>";
|
|
$unterbrecher="
|
|
<tr align=center>
|
|
<td bgcolor='#AFFA49'>Unterbrecher ($orgformen)</td>";
|
|
$abbrecher="
|
|
<tr align=center>
|
|
<td bgcolor='#AFFA49'>Abbrecher ($orgformen)</td>";
|
|
$absolventen="
|
|
<tr align=center>
|
|
<td bgcolor='#AFFA49'>Absolventen ($orgformen)</td>";
|
|
$outgoing="
|
|
<tr align=center>
|
|
<td bgcolor='#AFFA49'>Outgoing ($orgformen)</td>";
|
|
$gemeinsamestudien="
|
|
<tr align=center>
|
|
<td bgcolor='#AFFA49'>GemeinsameStudien</td>";
|
|
foreach ($semester_arr as $semester)
|
|
{
|
|
$aktiv.='<td> ';
|
|
$unterbrecher.='<td> ';
|
|
$abbrecher.='<td> ';
|
|
$absolventen.='<td> ';
|
|
$outgoing.='<td> ';
|
|
$gemeinsamestudien.='<td> ';
|
|
|
|
$i=0;
|
|
foreach($verwendete_orgformen as $orgform)
|
|
{
|
|
if($i!=0)
|
|
{
|
|
$aktiv.=' / ';
|
|
$unterbrecher.=' / ';
|
|
$abbrecher.=' / ';
|
|
$absolventen.=' / ';
|
|
$outgoing.=' / ';
|
|
$gemeinsamestudien .=' / ';
|
|
}
|
|
|
|
$aktiv .= (isset($stsem[$orgform][$semester])?$stsem[$orgform][$semester]:'');
|
|
$unterbrecher .= (isset($usem[$orgform][$semester])?$usem[$orgform][$semester]:'');
|
|
$abbrecher .= (isset($asem[$orgform][$semester])?$asem[$orgform][$semester]:'');
|
|
$absolventen .= (isset($absem[$orgform][$semester])?$absem[$orgform][$semester]:'');
|
|
$outgoing .= (isset($iosem[$orgform][$semester])?$iosem[$orgform][$semester]:'');
|
|
$gemeinsamestudien .= (isset($gssem[$orgform][$semester])?$gssem[$orgform][$semester]:'');
|
|
$i++;
|
|
}
|
|
$aktiv.='</td>';
|
|
$unterbrecher.='</td>';
|
|
$abbrecher.='</td>';
|
|
$absolventen.='</td>';
|
|
$outgoing.='</td>';
|
|
$gemeinsamestudien.='</td>';
|
|
}
|
|
$aktiv.='</tr>';
|
|
$unterbrecher.='</tr>';
|
|
$abbrecher.='</tr>';
|
|
$absolventen.='</tr>';
|
|
$outgoing.='</tr>';
|
|
$gemeinsamestudien.='</tr>';
|
|
|
|
|
|
$tabelle.=$aktiv.$unterbrecher.$abbrecher.$absolventen.$outgoing.$gemeinsamestudien.
|
|
"
|
|
<tr align=center style='border-top:1px solid black'>
|
|
<td bgcolor='#AFFA49'>Incoming</td>
|
|
<td>".(isset($iosem[0])?$iosem[0]:'')."</td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr align=center>";
|
|
|
|
$tabelle.= "
|
|
<td bgcolor='#AFFA49'>Bewerber(ges.)($orgformen)</td>
|
|
<td bgcolor='#DED8FE'>".(isset($bewerbercount[0])?$bewerbercount[0]:0)."</td>
|
|
<td bgcolor='#DED8FE'>";
|
|
for($i=0;$i<sizeof($verwendete_orgformen);$i++)
|
|
{
|
|
if($i!=0)
|
|
$tabelle.=' / ';
|
|
|
|
$tabelle.= isset($bewerbercount[$verwendete_orgformen[$i]])?$bewerbercount[$verwendete_orgformen[$i]]:'';
|
|
}
|
|
$tabelle.='</td>';
|
|
|
|
$tabelle.= "
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td bgcolor='#FF0000'>".$anzahl_fehler."</td>
|
|
</tr>
|
|
</table>
|
|
<br>";
|
|
echo $tabelle;
|
|
|
|
$ddd='bisdaten/bismeldung_'.$ssem.'_Stg'.$stg_kz.'.xml';
|
|
|
|
$dateiausgabe=fopen($ddd,'w');
|
|
fwrite($dateiausgabe,$datei);
|
|
fclose($dateiausgabe);
|
|
|
|
$dddNurBew='bisdaten/bismeldung_bewerber_'.$ssem.'_Stg'.$stg_kz.'.xml';
|
|
|
|
$dateiausgabe=fopen($dddNurBew,'w');
|
|
fwrite($dateiausgabe,$dateiNurBewerber);
|
|
fclose($dateiausgabe);
|
|
|
|
$eee='bisdaten/tabelle_'.$ssem.'_Stg'.$stg_kz.'.html';
|
|
|
|
$dateiausgabe=fopen($eee,'w');
|
|
fwrite($dateiausgabe,$tabelle);
|
|
fclose($dateiausgabe);
|
|
|
|
if(file_exists($ddd))
|
|
{
|
|
echo '<a href="archiv.php?meldung='.$ddd.'&html='.$eee.'&stg='.$stg_kz.'&sem='.$ssem.'&typ=studenten&action=archivieren">BIS-Meldung Stg '.$stg_kz.' archivieren</a><br>';
|
|
echo '<a href="'.$ddd.'" target="_blank" download>XML-Datei für BIS-Meldung Stg '.$stg_kz.'</a><br>';
|
|
echo '<a href="'.$dddNurBew.'" target="_blank" download>XML-Datei für BIS-Meldung Stg '.$stg_kz.' - nur Bewerberdaten</a><br>';
|
|
}
|
|
if(file_exists($eee))
|
|
{
|
|
echo '<a href="'.$eee.'">BIS-Meldeübersicht der BIS-Meldung Stg '.$stg_kz.'</a><br><br>';
|
|
}
|
|
|
|
echo '<table id="t1" class="tablesorter">
|
|
<thead>
|
|
<tr align=center>
|
|
<th>UID</th>
|
|
<th>PersKZ</th>
|
|
<th>Nachname</th>
|
|
<th>Vorname</th>
|
|
<th>Status</th>
|
|
<th>Semester</th>
|
|
<th>Orgform</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
',$stlist,'
|
|
</tbody>
|
|
</table>';
|
|
|
|
echo '<br>Bewerberübersicht';
|
|
echo '<table id="t2" class="tablesorter">
|
|
<thead>
|
|
<tr align=center>
|
|
<th>Nachname</th>
|
|
<th>Vorname</th>
|
|
<th>Orgform</th>
|
|
<th>Geschlecht</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
',$bwlist,'
|
|
</tbody>
|
|
</table>';
|
|
|
|
echo '</body></html>';
|
|
|
|
/**************************************************************************
|
|
* FUNKTIONEN
|
|
**************************************************************************/
|
|
|
|
/**
|
|
* Generiert den Studenten Block
|
|
*/
|
|
function GenerateXMLStudentBlock($row)
|
|
{
|
|
global $bisdatum, $db;
|
|
global $ssem, $psem;
|
|
global $v;
|
|
global $stgart, $maxsemester, $orgform_kurzbz, $bisprevious,$anzahl_fehler;
|
|
global $iosem, $stsem, $usem, $asem, $absem, $stlist, $gssem;
|
|
//global $verwendete_orgformen, $datum_obj,$orgform_code_array,$standortcode;
|
|
global $verwendete_orgformen, $datum_obj,$orgform_code_array;
|
|
global $kodex_studientyp_array, $kodex_studstatuscode_array;
|
|
global $stg_kz;
|
|
$error_log='';
|
|
$error_log_hinweis='';
|
|
$error_log1='';
|
|
$error_log_io = '';
|
|
$datei = '';
|
|
$datumobj = new datum();
|
|
|
|
$laststatus = new prestudent();
|
|
$laststatus->getLastStatus($row->prestudent_id);
|
|
|
|
//Pruefen ob Ausserordnetlicher Studierender (4.Stelle in Personenkennzeichen = 9)
|
|
if(mb_substr($row->matrikelnr,3,1)=='9')
|
|
$ausserordentlich=true;
|
|
else
|
|
$ausserordentlich=false;
|
|
|
|
// Pruefen, ob Incoming (3.Stelle in Personenkennzeichen = 0)
|
|
$incoming = mb_substr($row->matrikelnr,2,1) == '0' ? true : false;
|
|
|
|
$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($db->db_num_rows($results)!=1)
|
|
{
|
|
$error_log1="Es sind ".$db->db_num_rows($results)." 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";
|
|
}
|
|
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";
|
|
}
|
|
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";
|
|
}
|
|
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 (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht";
|
|
}
|
|
if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat)
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."Ersatzkennzeichen ('".$row->ersatzkennzeichen."') enthält Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") 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->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 (!$ausserordentlich && !$incoming)
|
|
{
|
|
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)?', ':'')."Studenten-eMail Adresse fehlt (keine Student-UID eingetragen).";
|
|
}
|
|
|
|
}
|
|
|
|
if(!$ausserordentlich)
|
|
{
|
|
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($stgart==2) // Master-Studiengang
|
|
{
|
|
if($row->zgvmas_code=='' || $row->zgvmas_code==null)
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."ZugangMaCode ('".$row->zgvmas_code."')";
|
|
}
|
|
if($row->zgvmadatum=='' || $row->zgvmadatum==null)
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."ZugangMaDatum ('".$row->zgvmadatum."')";
|
|
}
|
|
else
|
|
{
|
|
if($row->zgvmadatum>date("Y-m-d"))
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."ZugangMaDatum liegt in der Zukunft ('".$row->zgvmadatum."')";
|
|
}
|
|
if($row->zgvmadatum<$row->zgvdatum)
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."ZugangMaDatum ('".$row->zgvmadatum."') kleiner als Zugangdatum ('".$row->zgvdatum."')";
|
|
}
|
|
if($row->zgvmadatum<$row->gebdatum)
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."ZugangMaDatum ('".$row->zgvmadatum."') kleiner als Geburtsdatum ('".$row->gebdatum."')";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$aktstatus_stsem = $ssem;
|
|
//StudStatusCode und Semester ermitteln
|
|
$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 (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).") 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=="Outgoing"
|
|
|| $rowstatus->status_kurzbz=="Incoming" || $rowstatus->status_kurzbz=='Praktikant'
|
|
|| $rowstatus->status_kurzbz=="Diplomand")
|
|
{
|
|
$status=1;
|
|
$meldestatus='I';
|
|
|
|
// Wiedereintrittsdatum
|
|
// letzten Status des letzten Semesters holen
|
|
$prestudent_last_status = new prestudent();
|
|
if ($prestudent_last_status->getLastStatus($row->prestudent_id, $psem))
|
|
{
|
|
// Datum setzen wenn aktiver Status nach Unterbrecher
|
|
if ($prestudent_last_status->status_kurzbz == 'Unterbrecher')
|
|
$wiedereintrittsdatum = $rowstatus->datum;
|
|
}
|
|
|
|
}
|
|
else if($rowstatus->status_kurzbz=="Unterbrecher" )
|
|
{
|
|
$status=2;
|
|
$meldestatus='U';
|
|
|
|
$qryVorherigerErsterStatus = "
|
|
SELECT status.datum, status.status_kurzbz
|
|
FROM public.tbl_prestudentstatus status
|
|
JOIN public.tbl_studiensemester sem USING (studiensemester_kurzbz)
|
|
WHERE prestudent_id = ".$db->db_add_param($row->prestudent_id)."
|
|
AND sem.start::date <= (SELECT start from public.tbl_studiensemester WHERE studiensemester_kurzbz = ".$db->db_add_param($ssem).")::date
|
|
ORDER BY sem.start DESC, status.datum DESC";
|
|
|
|
$unterbrechungsdatum = null;
|
|
if($result_unt = $db->db_query($qryVorherigerErsterStatus))
|
|
{
|
|
while($row_unt = $db->db_fetch_object($result_unt))
|
|
{
|
|
if($row_unt->status_kurzbz === 'Unterbrecher')
|
|
$unterbrechungsdatum = $row_unt->datum;
|
|
else
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else if($rowstatus->status_kurzbz=="Absolvent" )
|
|
{
|
|
$status=3;
|
|
$meldestatus='I';
|
|
}
|
|
else if($rowstatus->status_kurzbz=="Abbrecher" )
|
|
{
|
|
$status=4;
|
|
$meldestatus='O';
|
|
// Checken, ob der Student Abbrecher vor der Meldung war und noch nie gemeldet wurde
|
|
$qryAbbrecher = "SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id = ".$db->db_add_param($row->prestudent_id)." AND status_kurzbz='Student' AND datum <=".$db->db_add_param($bisprevious);
|
|
if($resultAbbrecher = $db->db_query($qryAbbrecher))
|
|
{
|
|
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";
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$error_log.= (!empty($error_log)?', ':''). "$row->vorname $row->nachname wird nicht gemeldet da kein gueltiger Status vorhanden ist!";
|
|
return '';
|
|
}
|
|
$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' AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).")";
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
// statuscode und meldestatus von studstatus ableiten
|
|
if($ausserordentlich)
|
|
{
|
|
$status=1;
|
|
$meldestatus='I';
|
|
}
|
|
else if($rowstatus->status_kurzbz=="Incoming")
|
|
{
|
|
$status=1;
|
|
$meldestatus='A';
|
|
}
|
|
else if($rowstatus->status_kurzbz=="Absolvent" )
|
|
{
|
|
$status=3;
|
|
$meldestatus='I';
|
|
}
|
|
else if($rowstatus->status_kurzbz=="Abbrecher" )
|
|
{
|
|
$status=4;
|
|
$meldestatus='O';
|
|
}
|
|
else
|
|
{
|
|
$error_log.= (!empty($error_log)?', ':''). "$row->vorname $row->nachname wird nicht gemeldet da kein gueltiger Status vorhanden ist!";
|
|
return '';
|
|
}
|
|
$aktstatus=$rowstatus->status_kurzbz;
|
|
$aktstatus_datum=$rowstatus->datum;
|
|
$storgform=$rowstatus->orgform_kurzbz;
|
|
$aktstatus_stsem = $rowstatus->studiensemester_kurzbz;
|
|
}
|
|
else
|
|
{
|
|
$aktstatus='';
|
|
$storgform='';
|
|
$aktstatus_datum='';
|
|
$aktstatus_stsem='';
|
|
$sem='';
|
|
$error_log.= (!empty($error_log)?', ':''). "kein gueltiger Status vorhanden";
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$aktstatus='';
|
|
$storgform='';
|
|
$aktstatus_datum='';
|
|
$aktstatus_stsem='';
|
|
$sem='';
|
|
$error_log.= (!empty($error_log)?', ':''). "kein gueltiger Status vorhanden";
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
//Wenn im Status keine Organisationsform eingetragen ist, wird die des Studienganges uebernommen
|
|
if($storgform=='')
|
|
{
|
|
// Wenn FHTW und studiengang_kz 10006 (Campus International) wird die OrgForm des Studiengangs vom Incoming ermittelt
|
|
if (CAMPUS_NAME == 'FH Technikum Wien' && $stg_kz == 10006)
|
|
{
|
|
$studiengang = new studiengang($row->studiengang_kz);
|
|
$storgform = $studiengang->orgform_kurzbz;
|
|
}
|
|
else
|
|
{
|
|
$storgform=$orgform_kurzbz;
|
|
}
|
|
}
|
|
|
|
// **** GS Container ****/
|
|
$gsstatus='';
|
|
$gsblock='';
|
|
$gemeinsamestudien=false;
|
|
$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;
|
|
$gemeinsamestudien=true;
|
|
$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."' ($laststatus->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>
|
|
<Ausbildungssemester>".$rowgs->ausbildungssemester."</Ausbildungssemester>
|
|
<StudStatusCode>".$studstatuscode."</StudStatusCode>
|
|
".(isset($rowgs->studienkennung_uni) ? "<StudienkennungUNI>".$rowgs->studienkennung_uni."</StudienkennungUNI>" : "")."
|
|
</GS>";
|
|
if(!isset($gssem[$storgform][$rowgs->ausbildungssemester]))
|
|
{
|
|
$gssem[$storgform][$rowgs->ausbildungssemester]=0;
|
|
}
|
|
$gssem[$storgform][$rowgs->ausbildungssemester]++;
|
|
}
|
|
}
|
|
|
|
//bei Absolventen das Beendigungsdatum (Sponsion oder Abschlussprüfung) überprüfen
|
|
if($aktstatus=='Absolvent' && !$gemeinsamestudien)
|
|
{
|
|
$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_hinweis.=(!empty($error_log_hinweis)?', ':'')."Datum der Sponsion ('".$row_ap->sponsion."')";
|
|
}
|
|
$ap++;
|
|
}
|
|
if($ap!=1)
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'').$ap." bestandene Abschlußprüfungen";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
die("\nQry Failed:".$qry_ap);
|
|
}
|
|
}
|
|
if($orgform_code_array[$storgform]!=1) // Wenn nicht Vollzeit
|
|
{
|
|
if($row->berufstaetigkeit_code=='' || $row->berufstaetigkeit_code==null)
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."Berufstätigkeitscode ('".$row->berufstaetigkeit_code."')";
|
|
}
|
|
}
|
|
if($aktstatus!='Incoming')
|
|
{
|
|
if(!$row->reihungstestangetreten)
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."Zum Reihungstest angetreten";
|
|
}
|
|
if($sem==0)
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."Aktuelles Semester (Rolle) ('".$sem."')";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if($nation=='A' || $nation=='a')
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."Heimat-Nation bei Incoming('".$nation."')";
|
|
}
|
|
}
|
|
|
|
$qryad="SELECT * FROM public.tbl_prestudentstatus
|
|
WHERE prestudent_id=".$db->db_add_param($row->prestudent_id)."
|
|
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))
|
|
{
|
|
$beginndatum = $rowad->datum;
|
|
}
|
|
else
|
|
$beginndatum='';
|
|
}
|
|
$ausstellungsstaat='';
|
|
$ausstellungsstaat_master='';
|
|
if($row->zgvmanation!='' && $stgart==2) // Master
|
|
$ausstellungsstaat_master = $row->zgvmanation;
|
|
if($row->zgvnation!='')
|
|
$ausstellungsstaat = $row->zgvnation;
|
|
else
|
|
$ausstellungsstaat = $row->ausstellungsstaat;
|
|
|
|
if($ausstellungsstaat=='' && ($datumobj->mktime_fromdate($beginndatum) > $datumobj->mktime_fromdate('2011-04-15')) && !$ausserordentlich)
|
|
{
|
|
$error_log.=(!empty($error_log)?', ':'')."Ausstellungsstaat ist nicht eingetragen";
|
|
}
|
|
|
|
if($error_log!='' OR $error_log1!='')
|
|
{
|
|
$v.="<u>Bei Student (UID, Nachname, Vorname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($laststatus->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 = '';
|
|
}
|
|
$anzahl_fehler++;
|
|
$v.="\n";
|
|
$error_log='';
|
|
$error_log1='';
|
|
return '';
|
|
}
|
|
else
|
|
{
|
|
if($error_log_hinweis != '')
|
|
{
|
|
$v.="<u>Bei Student (UID, Nachname, Vorname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($laststatus->status_kurzbz): </u>\n";
|
|
$v.=" <span style='color: grey'>".$error_log_hinweis." (Nicht BIS-Relevant)</span>\n\n";
|
|
$error_log_hinweis = '';
|
|
}
|
|
|
|
$datei .= "
|
|
<StudentIn>
|
|
<PersKz>" . trim($row->matrikelnr) . "</PersKz>";
|
|
|
|
$datei .= "
|
|
<Matrikelnummer>" . $row->matr_nr . "</Matrikelnummer>";
|
|
|
|
if (!$ausserordentlich)
|
|
{
|
|
$datei .= "
|
|
<OrgFormCode>" . $orgform_code_array[$storgform] . "</OrgFormCode>";
|
|
}
|
|
|
|
// duales studium
|
|
if ($row->dual === 't')
|
|
{
|
|
$dualesstudium='J';
|
|
}
|
|
else
|
|
{
|
|
$dualesstudium='N';
|
|
}
|
|
|
|
$datei.="
|
|
<DualesStudium>".$dualesstudium."</DualesStudium>";
|
|
|
|
$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>";
|
|
|
|
$datei .= "
|
|
<ZustellPLZ>" . $zustell_plz . "</ZustellPLZ>
|
|
<ZustellGemeinde>" . $zustell_gemeinde . "</ZustellGemeinde>
|
|
<ZustellStrasse>" . $zustell_strasse . "</ZustellStrasse>
|
|
<ZustellNation>" . $zustell_nation . "</ZustellNation>";
|
|
|
|
if ($co_name != '')
|
|
{
|
|
$datei .= "
|
|
<coName>" . $co_name . "</coName>
|
|
";
|
|
}
|
|
|
|
if ($email_privat != '')
|
|
{
|
|
$datei .= "
|
|
<eMailAdresse>" . $email_privat . "</eMailAdresse>";
|
|
}
|
|
|
|
if ($email != '')
|
|
{
|
|
$datei .= "
|
|
<eMailAdresseBE>" . $email . "</eMailAdresseBE>";
|
|
}
|
|
|
|
if(!$ausserordentlich)
|
|
{
|
|
$datei.="
|
|
<ZugangCode>".$row->zgv_code."</ZugangCode>";
|
|
$datei.="
|
|
<ZugangDatum>".date("dmY", $datumobj->mktime_fromdate($row->zgvdatum))."</ZugangDatum>";
|
|
|
|
if($aktstatus!='Incoming')
|
|
{
|
|
if($row->zgvnation!='')
|
|
$ausstellungsstaat = $row->zgvnation;
|
|
else
|
|
$ausstellungsstaat = $row->ausstellungsstaat;
|
|
|
|
if($ausstellungsstaat!='' && ($datumobj->mktime_fromdate($beginndatum) > $datumobj->mktime_fromdate('2011-04-15')))
|
|
{
|
|
$datei.='
|
|
<ZugangAusstellungsstaat>'.$ausstellungsstaat.'</ZugangAusstellungsstaat>';
|
|
}
|
|
}
|
|
}
|
|
|
|
if($stgart==2) // Master-Studiengang
|
|
{
|
|
$datei.="
|
|
<ZugangMaCode>".$row->zgvmas_code."</ZugangMaCode>";
|
|
$datei.="
|
|
<ZugangMaDatum>".date("dmY", $datumobj->mktime_fromdate($row->zgvmadatum))."</ZugangMaDatum>";
|
|
|
|
if($aktstatus!='Incoming' && !$ausserordentlich)
|
|
{
|
|
if($row->zgvmanation!='')
|
|
$ausstellungsstaat_master = $row->zgvmanation;
|
|
|
|
if($ausstellungsstaat_master!='' && ($datumobj->mktime_fromdate($beginndatum) > $datumobj->mktime_fromdate('2011-04-15')))
|
|
{
|
|
$datei.='
|
|
<ZugangMaAusstellungsstaat>'.$ausstellungsstaat_master.'</ZugangMaAusstellungsstaat>';
|
|
}
|
|
}
|
|
}
|
|
|
|
if($beginndatum!='' && !$ausserordentlich && $studtyp!='E')
|
|
{
|
|
$datei.="
|
|
<BeginnDatum>".date("dmY", $datumobj->mktime_fromdate($beginndatum))."</BeginnDatum>";
|
|
}
|
|
|
|
if(($aktstatus=='Absolvent' || $aktstatus=='Abbrecher') && $studtyp!='E')
|
|
{
|
|
$datei.="
|
|
<BeendigungsDatum>".date("dmY", $datumobj->mktime_fromdate($aktstatus_datum))."</BeendigungsDatum>";
|
|
}
|
|
|
|
if(isset($unterbrechungsdatum))
|
|
{
|
|
$datei.="
|
|
<UnterbrechungsDatum>".date("dmY", $datumobj->mktime_fromdate($unterbrechungsdatum))."</UnterbrechungsDatum>";
|
|
}
|
|
|
|
if(isset($wiedereintrittsdatum))
|
|
{
|
|
$datei.="
|
|
<WiedereintrittsDatum>".date("dmY", $datumobj->mktime_fromdate($wiedereintrittsdatum))."</WiedereintrittsDatum>";
|
|
}
|
|
|
|
/* Ausbildungssemester nicht anzeigen wenn
|
|
Incoming
|
|
Ausserordentlich Studierender
|
|
*/
|
|
if($aktstatus!='Incoming' && !$ausserordentlich && $studtyp!='E')
|
|
{
|
|
$datei.="
|
|
<Ausbildungssemester>".$sem."</Ausbildungssemester>";
|
|
}
|
|
|
|
if($studtyp!='E')
|
|
{
|
|
$datei.="
|
|
<StudStatusCode>".$status."</StudStatusCode>";
|
|
}
|
|
|
|
// IO container query
|
|
$qryio="SELECT * FROM bis.tbl_bisio WHERE student_uid=".$db->db_add_param($row->student_uid)."
|
|
AND (von>".$db->db_add_param($bisprevious)." OR bis IS NULL OR bis>".$db->db_add_param($bisprevious).")
|
|
AND von<=".$db->db_add_param($bisdatum).";";
|
|
|
|
$ioresults=$db->db_query($qryio);
|
|
|
|
// wenn Mobilität vorhanden, meldestatus auf Auslandsaufenthalt setzen
|
|
if($db->db_num_rows($ioresults)>0)
|
|
$meldestatus='A';
|
|
|
|
$datei.="
|
|
<MeldeStatus>".$meldestatus."</MeldeStatus>";
|
|
|
|
if($orgform_code_array[$storgform]!=1 && !$ausserordentlich) // Wenn nicht Vollzeit und nicht Ausserordentlich
|
|
{
|
|
$datei.="
|
|
<BerufstaetigkeitCode>".$row->berufstaetigkeit_code."</BerufstaetigkeitCode>";
|
|
}
|
|
|
|
if(!$ausserordentlich)
|
|
{
|
|
$datei.="
|
|
<StandortCode>".$row->standort_code."</StandortCode>";
|
|
}
|
|
/*
|
|
* BMWFFoerderrung derzeit fuer alle Studierende auf Ja gesetzt
|
|
* Ausnahme:
|
|
* ausserordnetliche Studierende
|
|
* Incoming
|
|
* Externe Teilnehmer an Gemeinsamen Studien
|
|
*
|
|
* ToDo: sollte pro Studierenden konfigurierbar sein
|
|
*/
|
|
//if($aktstatus=='Incoming' || $ausserordentlich
|
|
// || ($gemeinsamestudien && $kodex_studientyp_array[$row->gsstudientyp_kurzbz]=='E'))
|
|
// $bmwf='N';
|
|
//else
|
|
// $bmwf='J';
|
|
|
|
if ($row->pre_foerderrelevant === true) {
|
|
$bmwf='J';
|
|
} else if ($row->pre_foerderrelevant === false) {
|
|
$bmwf='N';
|
|
} else if ($row->stg_foerderrelevant === true) {
|
|
$bmwf='J';
|
|
} else {
|
|
$bmwf='N';
|
|
}
|
|
|
|
$datei.="
|
|
<BMWFWfoerderrelevant>".$bmwf."</BMWFWfoerderrelevant>";
|
|
|
|
// **** IO Container ****/
|
|
$outgoing_count=0;
|
|
if($resultio = $db->db_query($qryio))
|
|
{
|
|
while($rowio = $db->db_fetch_object($resultio))
|
|
{
|
|
$mob=$rowio->mobilitaetsprogramm_code;
|
|
$gast=$rowio->nation_code;
|
|
$herkunft=$rowio->herkunftsland_code;
|
|
$avon=date("dmY", $datumobj->mktime_fromdate($rowio->von));
|
|
$abis=date("dmY", $datumobj->mktime_fromdate($rowio->bis));
|
|
$adauer = (is_null($rowio->von) || is_null($rowio->bis))
|
|
? null
|
|
: $datumobj->DateDiff($rowio->von, $rowio->bis);
|
|
|
|
// Aufenthaltszweckcode --------------------------------------------------------------------------------
|
|
$bisio_zweck = new bisio();
|
|
$bisio_zweck->getZweck($rowio->bisio_id);
|
|
$zweck_code_arr = array();
|
|
|
|
// Es muss immer mindestens 1 Aufenthaltszweck geben
|
|
if (count($bisio_zweck->result) == 0)
|
|
{
|
|
$error_log_io .= (!empty($error_log_io) ? ', ' : ''). "Es muss mindestens ein Aufenthaltszweck eingetragen sein";
|
|
}
|
|
// Bei Incomings...
|
|
if ($aktstatus == 'Incoming')
|
|
{
|
|
// ...max 1 Aufenthaltszweck
|
|
if (count($bisio_zweck->result) > 1)
|
|
{
|
|
$error_log_io .= (!empty($error_log_io) ? ', ' : ''). "Es sind". count($bisio_zweck->result).
|
|
" Aufenthaltszwecke eingetragen (max. 1 Zweck für Incomings)";
|
|
}
|
|
|
|
//...nur Zweck 1, 2 oder 3 erlaubt
|
|
if (count($bisio_zweck->result) == 1 &&
|
|
empty(array_intersect(array(1, 2, 3), array_column($bisio_zweck->result, 'zweck_code'))))
|
|
{
|
|
$error_log_io .= (!empty($error_log_io) ? ', ' : ''). "Aufenthaltszweckcode ist ".
|
|
$bisio_zweck->result[0]->zweck_code. " (für Incomings ist nur Zweck 1, 2, 3 erlaubt)";
|
|
}
|
|
}
|
|
|
|
foreach ($bisio_zweck->result as $row_zweck)
|
|
{
|
|
// Nur eindeutige Werte (bei Mehrfachangaben; trifft auf Outgoings zu)
|
|
if (!in_array($row_zweck->zweck_code, $zweck_code_arr))
|
|
{
|
|
// Aufenthaltszweck 1, 2, 3 nicht gemeinsam melden
|
|
if (in_array(1,$zweck_code_arr) && in_array(2,$zweck_code_arr) && in_array(3,$zweck_code_arr))
|
|
{
|
|
$error_log_io .= (!empty($error_log_io) ? ', ' : '').
|
|
"Aufenthaltzweckcode 1, 2, 3 dürfen nicht gemeinsam gemeldet werden";
|
|
}
|
|
|
|
$zweck_code_arr []= $row_zweck->zweck_code;
|
|
}
|
|
}
|
|
|
|
// Aufenthaltfoerderungscode ---------------------------------------------------------------------------
|
|
$aufenthaltfoerderung_code_arr = array();
|
|
|
|
// Nur bei Outgoings Aufenthaltsfoerderungscode melden
|
|
if ($aktstatus != 'Incoming') {
|
|
$bisio_foerderung = new bisio();
|
|
$bisio_foerderung->getFoerderungen($rowio->bisio_id);
|
|
|
|
// ... mindestens 1 Aufenthaltfoerderung melden, wenn Auslandsaufenthalt >= 29 Tage
|
|
if ((!$bisio_foerderung->result || count($bisio_foerderung->result) == 0) && $adauer >= 29)
|
|
{
|
|
$error_log_io .= (!empty($error_log_io) ? ', ' : '') .
|
|
"Keine Aufenthaltsfoerderung angegeben (bei Outgoings >= 29 Tage Monat im Ausland muss mind. 1 gemeldet werden)";
|
|
}
|
|
|
|
foreach ($bisio_foerderung->result as $row_foerderung)
|
|
{
|
|
// ...wenn code = 5, nur ein Wert erlaubt (keine Mehrfachangaben)
|
|
if ($row_foerderung->aufenthaltfoerderung_code == 5) {
|
|
unset($aufenthaltfoerderung_code_arr);
|
|
$aufenthaltfoerderung_code_arr [] = $row_foerderung->aufenthaltfoerderung_code;
|
|
break;
|
|
}
|
|
|
|
// nur eindeutige Werte
|
|
if (!in_array($row_foerderung->aufenthaltfoerderung_code, $aufenthaltfoerderung_code_arr)) {
|
|
$aufenthaltfoerderung_code_arr [] = $row_foerderung->aufenthaltfoerderung_code;
|
|
}
|
|
}
|
|
|
|
if($datumobj->mktime_fromdate($rowio->bis) < $datumobj->mktime_fromdate($bisdatum))
|
|
$aufenthalt_finished = true;
|
|
else
|
|
$aufenthalt_finished = false;
|
|
|
|
if ($rowio->ects_erworben == '' && $adauer >= 29 && $aufenthalt_finished)
|
|
{
|
|
$error_log_io .= (!empty($error_log_io) ? ', ' : '') .
|
|
"Erworbene ECTS fehlen (Meldepflicht bei Outgoings >= 29 Tage Monat im Ausland)";
|
|
}
|
|
|
|
if ($rowio->ects_angerechnet == '' && $adauer >= 29 && $aufenthalt_finished)
|
|
{
|
|
$error_log_io .= (!empty($error_log_io) ? ', ' : '') .
|
|
"Angerechnete ECTS fehlen (Meldepflicht bei Outgoings >= 29 Tage Monat im Ausland)";
|
|
}
|
|
}
|
|
|
|
// Bei validen Daten errorlog ausgeben
|
|
if($error_log_io != '')
|
|
{
|
|
$v.="<u>Bei Student (UID, Nachname, Vorname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($laststatus->status_kurzbz): </u>\n";
|
|
if($error_log_io != '')
|
|
{
|
|
$v.=" Fehler: ".$error_log_io. "\n";
|
|
}
|
|
$v.="\n";
|
|
$error_log_io = '';
|
|
return '';
|
|
}
|
|
// Bei validen Daten XML-Datensatz bauen
|
|
else
|
|
{
|
|
$datei.="
|
|
<IO>
|
|
<MobilitaetsProgrammCode>".$mob."</MobilitaetsProgrammCode>
|
|
<GastlandCode>".$gast."</GastlandCode>
|
|
<HerkunftslandCode>".$herkunft."</HerkunftslandCode>
|
|
<AufenthaltVon>".$avon."</AufenthaltVon>";
|
|
if($datumobj->mktime_fromdate($rowio->bis)<$datumobj->mktime_fromdate($bisdatum) && $datumobj->mktime_fromdate($rowio->bis)>$datumobj->mktime_fromdate($bisprevious))
|
|
{
|
|
$datei.="
|
|
<AufenthaltBis>".$abis."</AufenthaltBis>";
|
|
}
|
|
|
|
foreach ($zweck_code_arr as $zweck)
|
|
{
|
|
$datei.="
|
|
<AufenthaltZweckCode>". $zweck. "</AufenthaltZweckCode>";
|
|
}
|
|
if ($aktstatus != 'Incoming' && $rowio->ects_erworben != '')
|
|
{
|
|
$datei.="
|
|
<ECTSerworben>".round($rowio->ects_erworben)."</ECTSerworben>";
|
|
}
|
|
if ($aktstatus != 'Incoming' && $rowio->ects_angerechnet != '')
|
|
{
|
|
$datei.="
|
|
<ECTSangerechnet>".round($rowio->ects_angerechnet)."</ECTSangerechnet>";
|
|
}
|
|
foreach ($aufenthaltfoerderung_code_arr as $aufenthaltfoerderung_code)
|
|
{
|
|
$datei.="
|
|
<AufenthaltFoerderungCode>". $aufenthaltfoerderung_code. "</AufenthaltFoerderungCode>";
|
|
}
|
|
|
|
$datei.="
|
|
</IO>";
|
|
}
|
|
|
|
|
|
|
|
if($aktstatus!='Incoming')
|
|
{
|
|
if(!isset($iosem[$storgform][$sem]))
|
|
{
|
|
$iosem[$storgform][$sem]=0;
|
|
}
|
|
$iosem[$storgform][$sem]++;
|
|
$outgoing_count++;
|
|
}
|
|
else
|
|
{
|
|
if(!isset($iosem[0]))
|
|
{
|
|
$iosem[0]=0;
|
|
}
|
|
$iosem[0]++;
|
|
}
|
|
}
|
|
}
|
|
$datei.= $gsblock;
|
|
$datei.="
|
|
</StudentIn>";
|
|
|
|
// Aktive Studierende - keine Incoming, keine Externen GS
|
|
if(($aktstatus=='Student' || $aktstatus=='Diplomand' || $aktstatus=='Praktikant' || $aktstatus=='Outgoing')
|
|
&& !($gemeinsamestudien && $kodex_studientyp_array[$row->gsstudientyp_kurzbz]=='E'))
|
|
{
|
|
if(!isset($stsem[$storgform][$sem]))
|
|
{
|
|
$stsem[$storgform][$sem]=0;
|
|
}
|
|
$stsem[$storgform][$sem]++;
|
|
}
|
|
if($aktstatus=='Unterbrecher')
|
|
{
|
|
if(!isset($usem[$storgform][$sem]))
|
|
{
|
|
$usem[$storgform][$sem]=0;
|
|
}
|
|
$usem[$storgform][$sem]++;
|
|
}
|
|
if($aktstatus=='Abbrecher')
|
|
{
|
|
if(!isset($asem[$storgform][$sem]))
|
|
{
|
|
$asem[$storgform][$sem]=0;
|
|
}
|
|
$asem[$storgform][$sem]++;
|
|
}
|
|
if($aktstatus=='Absolvent')
|
|
{
|
|
if(!isset($absem[$storgform][$sem]))
|
|
{
|
|
$absem[$storgform][$sem]=0;
|
|
}
|
|
$absem[$storgform][$sem]++;
|
|
}
|
|
}
|
|
if(!in_array($storgform, $verwendete_orgformen))
|
|
$verwendete_orgformen[]=$storgform;
|
|
|
|
$status = '';
|
|
if($gsstatus!='')
|
|
$status = $gsstatus;
|
|
else
|
|
$status = $aktstatus;
|
|
if($outgoing_count>0)
|
|
{
|
|
$status .= ' ( Outgoing ';
|
|
if($outgoing_count>1)
|
|
$status.= $outgoing_count.'x';
|
|
$status .= ')';
|
|
}
|
|
|
|
//Studentenliste
|
|
$stlist.="
|
|
<tr>
|
|
<td align=center>".trim($row->student_uid)."</td>
|
|
<td align=center>".trim($row->matrikelnr)."</td>
|
|
<td>".trim($row->nachname)."</td>
|
|
<td>".trim($row->vorname)."</td>
|
|
<td>".$status."</td>
|
|
<td align=center>".trim($sem)."</td>
|
|
<td align=center>".trim($storgform)."</td>
|
|
</tr>";
|
|
return $datei;
|
|
}
|
|
|
|
/**
|
|
* Erstellt die Bewerbermeldung
|
|
*
|
|
* Wenn der Parameter orgformcode uebergeben wird, werden nur die Bewerberzahlen dieser Orgform geliefert
|
|
* sonst alle
|
|
*/
|
|
function GenerateXMLBewerberBlock($orgformcode=null)
|
|
{
|
|
global $db;
|
|
global $ssem, $stgart, $psem;
|
|
global $stg_kz, $bisdatum;
|
|
global $bwlist, $orgform_kurzbz;
|
|
global $bewerbercount,$orgform_code_array;
|
|
$datei = '';
|
|
$bewerberM=array();
|
|
$bewerberW=array();
|
|
|
|
if(mb_strstr($ssem,"WS"))
|
|
{
|
|
//Bewerber
|
|
$qrybw="
|
|
SELECT
|
|
*, transform_geschlecht(tbl_person.geschlecht, tbl_person.gebdatum) as geschlecht_imputiert
|
|
FROM
|
|
public.tbl_prestudent
|
|
JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
|
|
JOIN public.tbl_person USING(person_id)
|
|
LEFT JOIN bis.tbl_orgform USING(orgform_kurzbz)
|
|
WHERE (studiensemester_kurzbz=".$db->db_add_param($ssem)." OR studiensemester_kurzbz=".$db->db_add_param($psem).")
|
|
AND tbl_prestudent.studiengang_kz=".$db->db_add_param($stg_kz)."
|
|
AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).")
|
|
AND status_kurzbz='Bewerber'
|
|
AND reihungstestangetreten
|
|
";
|
|
if(!is_null($orgformcode))
|
|
$qrybw.=" AND tbl_orgform.code=".$db->db_add_param($orgformcode);
|
|
|
|
if($resultbw = $db->db_query($qrybw))
|
|
{
|
|
while($rowbw = $db->db_fetch_object($resultbw))
|
|
{
|
|
// Bachelor / Diplom
|
|
if(($stgart==1 || $stgart==3) && $rowbw->zgv_code!=NULL)
|
|
{
|
|
if(strtoupper($rowbw->geschlecht_imputiert)=='M')
|
|
{
|
|
if(!isset($bewerberM[$rowbw->zgv_code]))
|
|
{
|
|
$bewerberM[$rowbw->zgv_code]=0;
|
|
}
|
|
$bewerberM[$rowbw->zgv_code]++;
|
|
}
|
|
else
|
|
{
|
|
if(!isset($bewerberW[$rowbw->zgv_code]))
|
|
{
|
|
$bewerberW[$rowbw->zgv_code]=0;
|
|
}
|
|
$bewerberW[$rowbw->zgv_code]++;
|
|
}
|
|
}
|
|
// Master
|
|
if($stgart==2 && $rowbw->zgvmas_code!=NULL)
|
|
{
|
|
if(strtoupper($rowbw->geschlecht_imputiert)=='M')
|
|
{
|
|
if(!isset($bewerberM[$rowbw->zgvmas_code]))
|
|
{
|
|
$bewerberM[$rowbw->zgvmas_code]=0;
|
|
}
|
|
$bewerberM[$rowbw->zgvmas_code]++;
|
|
}
|
|
else
|
|
{
|
|
if(!isset($bewerberW[$rowbw->zgvmas_code]))
|
|
{
|
|
$bewerberW[$rowbw->zgvmas_code]=0;
|
|
}
|
|
$bewerberW[$rowbw->zgvmas_code]++;
|
|
}
|
|
}
|
|
$bworgform = ($rowbw->orgform_kurzbz!=''?$rowbw->orgform_kurzbz:$orgform_kurzbz);
|
|
|
|
if(isset($bewerbercount[0]))
|
|
$bewerbercount[0]++;
|
|
else
|
|
$bewerbercount[0]=1;
|
|
if(isset($bewerbercount[$bworgform]))
|
|
$bewerbercount[$bworgform]++;
|
|
else
|
|
$bewerbercount[$bworgform]=1;
|
|
|
|
if($rowbw->geschlecht_imputiert!=$rowbw->geschlecht)
|
|
$geschlecht_imputiert = ' -> '.$rowbw->geschlecht_imputiert;
|
|
else
|
|
$geschlecht_imputiert = '';
|
|
|
|
$bwlist.='
|
|
<tr>
|
|
<td>'.trim($rowbw->nachname).'</td>
|
|
<td>'.trim($rowbw->vorname).'</td>
|
|
<td>'.$bworgform.'</td>
|
|
<td>'.$rowbw->geschlecht.$geschlecht_imputiert.'</td>
|
|
</tr>';
|
|
}
|
|
}
|
|
|
|
foreach(array_keys($bewerberM) as $key)
|
|
if(!isset($bewerberW[$key]))
|
|
$bewerberW[$key]=0;
|
|
|
|
foreach(array_keys($bewerberW) as $key)
|
|
{
|
|
if(!isset($bewerberM[$key]))
|
|
$bewerberM[$key]=0;
|
|
$datei.="
|
|
<BewerberInnen>
|
|
<OrgFormCode>".$orgform_code_array[$bworgform]."</OrgFormCode>";
|
|
if($stgart==2)
|
|
$datei.='
|
|
<ZugangMaCode>'.$key.'</ZugangMaCode>';
|
|
else
|
|
$datei.='
|
|
<ZugangCode>'.$key.'</ZugangCode>';
|
|
|
|
$datei.='
|
|
<AnzBewerberM>'.$bewerberM[$key].'</AnzBewerberM>
|
|
<AnzBewerberW>'.$bewerberW[$key].'</AnzBewerberW>
|
|
</BewerberInnen>';
|
|
}
|
|
}
|
|
return $datei;
|
|
}
|
|
?>
|