This commit is contained in:
kindlm
2017-09-27 11:30:05 +02:00
14 changed files with 409 additions and 243 deletions
+1 -1
View File
@@ -58,7 +58,7 @@ $autoload['packages'] = array();
|
| $autoload['libraries'] = array('user_agent' => 'ua');
*/
$autoload['libraries'] = array('Session', 'FHC_Auth');
$autoload['libraries'] = array('Session', 'AuthLib');
/*
| -------------------------------------------------------------------
+1 -1
View File
@@ -143,7 +143,7 @@ $config['auth_source'] = 'library';
| password for that username, even if it is hashed
|
*/
$config['auth_library_class'] = 'FHC_Auth';
$config['auth_library_class'] = 'AuthLib';
// rest_auth is basic
$config['auth_library_function'] = 'basicAuthentication';
@@ -22,18 +22,23 @@ class CheckUserAuth extends APIv1_Controller
public function __construct()
{
parent::__construct();
$this->load->model('CheckUserAuth_model', 'CheckUserAuthModel');
// Loads the authentication library
$this->load->library('AuthLib');
}
/**
* Checks if username and password of a final user are valid
*/
public function getCheckByUsernamePassword()
{
$username = $this->get("username");
$password = $this->get("password");
$username = $this->get('username');
$password = $this->get('password');
if (isset($username) && isset($password))
{
$result = $this->CheckUserAuthModel->checkByUsernamePassword($username, $password);
$result = $this->authlib->CheckUserAuthByUsernamePassword($username, $password);
$this->response($result, REST_Controller::HTTP_OK);
}
else
@@ -41,4 +46,45 @@ class CheckUserAuth extends APIv1_Controller
$this->response();
}
}
}
/**
* Checks if username and password of a final user are valid
* Returns all the keys with which is possible to obtain all the personal data about a final user
*/
public function getCheckUserAuth()
{
$code = $this->get('code');
$email = $this->get('email');
$username = $this->get('username');
$password = $this->get('password');
$result = null;
$httpCode = null;
// If username and password are given then check authentication using them
if (isset($username) && isset($password))
{
$result = $this->authlib->CheckUserAuthByUsernamePassword($username, $password, true);
}
elseif (isset($code) || isset($email))
{
// If code and email are given then check authentication using them
if (isset($code) && isset($email))
{
$result = $this->authlib->CheckUserAuthByCodeEmail($code, $email);
}
else // otherwise check authentication using only code
{
$result = $this->authlib->CheckUserAuthByCode($code);
}
}
// If is a success and contains data
if (hasData($result))
{
$httpCode = REST_Controller::HTTP_OK;
}
$this->response($result, $httpCode);
}
}
+190
View File
@@ -0,0 +1,190 @@
<?php
/**
* FH-Complete
*
* @package FHC-Helper
* @author FHC-Team
* @copyright Copyright (c) 2016 fhcomplete.org
* @license GPLv3
* @link https://fhcomplete.org
* @since Version 1.0.0
* @filesource
*/
/**
* FHC-Auth Helpers
*
* @package FH-Complete
* @subpackage Helpers
* @category Helpers
* @author FHC-Team
* @link http://fhcomplete.org/user_guide/helpers/fhcauth_helper.html
*/
if (! defined('BASEPATH')) exit('No direct script access allowed');
require_once FHCPATH.'include/authentication.class.php';
class AuthLib extends authentication
{
/**
* Construct
*/
public function __construct()
{
parent::__construct();
// Gets CI instance
$this->ci =& get_instance();
// Loads helper message to manage returning messages
$this->ci->load->helper('Message');
}
/**
* Checks the authentication of an addon
* returns TRUE if valid, otherwise FALSE
*/
public function basicAuthentication($username, $password)
{
return $this->checkpassword($username, $password);
}
/**
* Checks if the given username and password of a final user are valid
*/
public function CheckUserAuthByUsernamePassword($username, $password, $keys = false)
{
$result = error(false);
if (isset($username) && isset($password))
{
if ($this->checkpassword($username, $password) === true)
{
if ($keys === true)
{
$result = $this->_getFinalUserBasicDataByUID($username);
}
else
{
$result = success(true);
}
}
}
return $result;
}
/**
* Checks if the given code of a final user is valid
*/
public function CheckUserAuthByCode($code)
{
$result = error(false);
// Load model PersonModel
$this->ci->load->model('person/person_model', 'PersonModel');
$person = $this->ci->PersonModel->loadWhere(array('zugangscode' => $code));
if (hasData($person))
{
$result = $this->_getFinalUserBasicDataByPersonID($person->retval[0]->person_id);
}
return $result;
}
/**
* Checks if the given code and email of a final user are valid
*/
public function CheckUserAuthByCodeEmail($code, $email)
{
$result = error(false);
// Load model PersonModel
$this->ci->load->model('person/person_model', 'PersonModel');
$person = $this->ci->PersonModel->getPersonKontaktByZugangscode($code, $email);
if (hasData($person))
{
$result = $this->_getFinalUserBasicDataByPersonID($person->retval[0]->person_id);
}
return $result;
}
/**
* Returns all the keys with which is possible to obtain personal data about a final user
* using the given username (uid)
*/
private function _getFinalUserBasicDataByUID($uid)
{
$finalUserBasicDataByUID = null;
// Load model BenutzerModel
$this->ci->load->model('person/Benutzer_model', 'BenutzerModel');
$benutzer = $this->ci->BenutzerModel->load($uid);
if (hasData($benutzer))
{
$finalUserBasicDataByUID = $this->_getFinalUserBasicDataByPersonID($benutzer->retval[0]->person_id, $uid);
}
return $finalUserBasicDataByUID;
}
/**
* Returns all the keys with which is possible to obtain personal data about a final user
* using the given person_id. The uid is optional
*/
private function _getFinalUserBasicDataByPersonID($person_id, $uid = null)
{
$finalUserBasicDataByPersonID = new stdClass(); // returned object
// Store the person_id and eventually all the uids and prestudent_ids related to this final user
$finalUserBasicDataByPersonID->person_id = $person_id;
$finalUserBasicDataByPersonID->uids = array();
$finalUserBasicDataByPersonID->prestudent_ids = array();
// If the UID has not been given as a parameter
if ($uid != null)
{
$finalUserBasicDataByPersonID->uid[0] = $uid;
}
else
{
// Load model BenutzerModel
$this->ci->load->model('person/Benutzer_model', 'BenutzerModel');
// Loads all the benutzer whith that person_id
$benutzer = $this->ci->BenutzerModel->loadWhere(array('person_id' => $person_id));
if (hasData($benutzer)) // store all the uids
{
foreach ($benutzer->retval as $rownum => $rowdata)
{
$finalUserBasicDataByPersonID->uids[$rownum] = $rowdata->uid;
}
}
}
// Load model PrestudentModel
$this->ci->load->model('crm/Prestudent_model', 'PrestudentModel');
// Loads all the prestudent whith that person_id
$prestudent = $this->ci->PrestudentModel->loadWhere(array('person_id' => $person_id));
if (hasData($prestudent)) // store all the prestudent_ids
{
foreach ($prestudent->retval as $rownum => $rowdata)
{
$finalUserBasicDataByPersonID->prestudent_ids[$rownum] = $rowdata->prestudent_id;
}
}
return success($finalUserBasicDataByPersonID);
}
}
-69
View File
@@ -1,69 +0,0 @@
<?php
/**
* FH-Complete
*
* @package FHC-Helper
* @author FHC-Team
* @copyright Copyright (c) 2016 fhcomplete.org
* @license GPLv3
* @link https://fhcomplete.org
* @since Version 1.0.0
* @filesource
*/
/**
* FHC-Auth Helpers
*
* @package FH-Complete
* @subpackage Helpers
* @category Helpers
* @author FHC-Team
* @link http://fhcomplete.org/user_guide/helpers/fhcauth_helper.html
*/
if (! defined('BASEPATH')) exit('No direct script access allowed');
require_once FHCPATH.'include/authentication.class.php';
require_once FHCPATH.'include/AddonAuthentication.php';
class FHC_Auth extends authentication
{
/**
* Construct
*/
public function __construct()
{
parent::__construct();
}
/**
* Auth Username, Password over FH-Complete
*/
public function basicAuthentication($username, $password)
{
if ($this->checkpassword($username, $password))
{
return true;
}
else
{
return false;
}
}
/**
*
* TO BE UPDATED
*
* Get the md5 hashed password by the addon username
*
* @param string $username addon username
* @return string md5 hashed string
*/
public function digestAuthentication($username)
{
$aam = new AddonAuthentication();
return md5($aam->getPasswordByUsername($username));
}
}
@@ -1,18 +0,0 @@
<?php
class CheckUserAuth_model extends FHC_Model
{
/**
* Construct
*/
public function __construct()
{
parent::__construct();
$this->load->library('fhc_auth');
}
public function checkByUsernamePassword($username, $password)
{
return success($this->fhc_auth->checkpassword($username, $password));
}
}
+11 -1
View File
@@ -139,7 +139,7 @@ echo ']>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-anmeldedatum" label="Anmeldedatum" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum"/>
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum_iso"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-ort" label="Ort" flex="2" hidden="true"
class="sortDirectionIndicator"
@@ -181,6 +181,14 @@ echo ']>
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_studiengang" />
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-datum_iso" label="DatumISO" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#datum_iso"/>
<splitter class="tree-splitter"/>
<treecol id="aufnahmetermine-tree-anmeldedatum_iso" label="AnmeldedatumISO" flex="2" hidden="true"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum_iso"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
@@ -202,6 +210,8 @@ echo ']>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_id"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_studiengang"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#datum_iso"/>
<treecell label="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum_iso"/>
</treerow>
</treeitem>
</treechildren>
+7 -3
View File
@@ -383,6 +383,9 @@ else
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/student/rdf#aktiv" onclick="StudentTreeSort()"/>
<splitter class="tree-splitter"/>
<treecol id="student-treecol-geburtsdatum_iso" label="GeburtsdatumISO" flex="1" hidden="false" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/student/rdf#geburtsdatum_iso" onclick="StudentTreeSort()"/>
</treecols>
<template>
@@ -433,6 +436,7 @@ else
<treecell label="rdf:http://www.technikum-wien.at/student/rdf#studienplan_bezeichnung" />
<treecell label="rdf:http://www.technikum-wien.at/student/rdf#mentor" />
<treecell label="rdf:http://www.technikum-wien.at/student/rdf#aktiv" />
<treecell label="rdf:http://www.technikum-wien.at/student/rdf#geburtsdatum_iso" />
</treerow>
</treeitem>
</treechildren>
@@ -484,7 +488,7 @@ else
if(!defined('FAS_MESSAGES') || FAS_MESSAGES==true)
echo '<tab id="student-tab-messages" label="Messages" onclick="StudentMessagesIFrameLoad();"/>';
?>
<?php
if (!defined('FAS_UDF') || FAS_UDF == true)
echo '<tab id="student-tab-udf" label="Zusatzfelder" onclick="StudentUDFIFrameLoad();"/>';
@@ -523,11 +527,11 @@ else
<?php
if(!defined('FAS_MESSAGES') || FAS_MESSAGES==true)
echo '<iframe id="student-messages" style="margin: 0px;" src="" />';
if (!defined('FAS_UDF') || FAS_UDF == true)
echo '<iframe id="student-udf" style="margin: 0px;" src="" />';
?>
</tabpanels>
</tabbox>
</vbox>
-46
View File
@@ -1,46 +0,0 @@
<?php
// TO BE UPDATED
/*
* This class requires only DB functionalities from CI
* CI_Hack couldn't be included here because this class is called every time an addon
* makes an API call, so it would raise a lot of "already declared" errors
*/
require_once(dirname(__FILE__).'/../vendor/codeigniter/framework/system/core/Model.php');
require_once(dirname(__FILE__).'/../application/core/FHC_Model.php');
require_once(dirname(__FILE__).'/../application/core/DB_Model.php');
/**
* This class is used to authenticate the addons on the core system
*/
class AddonAuthentication extends DB_Model
{
public function __construct()
{
parent::__construct(NULL);
}
/**
* It retrieves the password with the given username from ci_addons table
* CREATE TABLE ci_addons (
* username varchar(10),
* password varchar(40),
* enabled integer,
* CONSTRAINT ci_addons_pk UNIQUE(username));
*/
public function getPasswordByUsername($username)
{
$password = NULL;
$sql = "SELECT password FROM public.ci_addons WHERE enabled = 1 AND username = ?";
$result = $this->db->query($sql, array($username));
if(!is_null($result) && $result->num_rows() > 0)
{
$password = $result->row()->password;
}
return $password;
}
}
+2 -1
View File
@@ -406,7 +406,8 @@ class basis_db extends db
foreach ($matches as $mk => $match)
{
$values[$languages[$mk+1]] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
if(isset($languages[$mk+1]))
$values[$languages[$mk+1]] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
}
return $values;
}
+40 -10
View File
@@ -138,7 +138,7 @@ $rdf_url='http://www.technikum-wien.at/lehrstunde';
<?php
$db = new basis_db();
function getAnzahl($studiengang_kz, $semester, $verband, $gruppe, $gruppe_kurzbz, $studiensemester_kurzbz)
function getAnzahl($studiengang_kz, $semester, $verband, $gruppe, $gruppe_kurzbz, $studiensemester_kurzbz, $lehreinheit_id, $mitschwund)
{
global $db;
@@ -147,20 +147,49 @@ function getAnzahl($studiengang_kz, $semester, $verband, $gruppe, $gruppe_kurzbz
if($gruppe_kurzbz=='')
{
$qry = "SELECT count(*) as anzahl FROM public.tbl_studentlehrverband
WHERE studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'
AND studiengang_kz='".addslashes($studiengang_kz)."' AND
semester='".addslashes($semester)."'";
WHERE studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)."
AND studiengang_kz=".$db->db_add_param($studiengang_kz)." AND
semester=".$db->db_add_param($semester);
if(trim($verband)!='')
$qry.=" AND trim(verband)=trim('".addslashes($verband)."')";
$qry.=" AND trim(verband)=trim(".$db->db_add_param($verband).")";
if(trim($gruppe)!='')
$qry.=" AND trim(gruppe)=trim('".addslashes($gruppe)."')";
$qry.=" AND trim(gruppe)=trim(".$db->db_add_param($gruppe).")";
if($mitschwund)
{
// Studierende mit Anrechnungen herausnehmen
$qry.=" AND NOT EXISTS(
SELECT 1 FROM lehre.tbl_zeugnisnote
WHERE student_uid=tbl_studentlehrverband.student_uid
AND lehrveranstaltung_id=(SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit
WHERE lehreinheit_id=".$db->db_add_param($lehreinheit_id, FHC_INTEGER).")
AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)."
AND note=6)";
// Abbrecher und Unterbrecher herausnehmen
$qry.=" AND get_rolle_prestudent((SELECT prestudent_id FROM public.tbl_student
WHERE student_uid=tbl_studentlehrverband.student_uid),null) NOT IN('Abbrecher','Unterbrecher') ";
}
}
else
{
$qry = "SELECT count(*) as anzahl FROM public.tbl_benutzergruppe
WHERE studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'
AND gruppe_kurzbz='".addslashes($gruppe_kurzbz)."'";
WHERE studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)."
AND gruppe_kurzbz=".$db->db_add_param($gruppe_kurzbz);
if($mitschwund)
{
// Studierende mit Anrechnungen herausnehmen
$qry.=" AND NOT EXISTS(
SELECT 1 FROM lehre.tbl_zeugnisnote
WHERE student_uid=tbl_benutzergruppe.uid
AND lehrveranstaltung_id=(SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit
WHERE lehreinheit_id=".$db->db_add_param($lehreinheit_id, FHC_INTEGER).")
AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)."
AND note=6)";
// Abbrecher und Unterbrecher herausnehmen
$qry.=" AND get_rolle_prestudent((SELECT prestudent_id FROM public.tbl_student
WHERE student_uid=tbl_benutzergruppe.uid),null) NOT IN('Abbrecher','Unterbrecher') ";
}
}
if($res_anz = $db->db_query($qry))
@@ -180,7 +209,8 @@ if (is_array($lehrstunden->lehrstunden))
{
//Anzahl der Studenten in der Gruppe ermitteln
$stsem = getStudiensemesterFromDatum($ls->datum);
$anzahl = getAnzahl($ls->studiengang_kz, $ls->sem, $ls->ver, $ls->grp, $ls->gruppe_kurzbz, $stsem);
$anzahl = getAnzahl($ls->studiengang_kz, $ls->sem, $ls->ver, $ls->grp, $ls->gruppe_kurzbz, $stsem, $ls->lehreinheit_id, false);
$anzahl_mitschwund = getAnzahl($ls->studiengang_kz, $ls->sem, $ls->ver, $ls->grp, $ls->gruppe_kurzbz, $stsem, $ls->lehreinheit_id, true);
$gruppenbezeichnung = '';
$gruppenbeschreibung = '';
@@ -225,7 +255,7 @@ if (is_array($lehrstunden->lehrstunden))
<LEHRSTUNDE:anmerkung><![CDATA[<?php echo $ls->anmerkung; ?>]]></LEHRSTUNDE:anmerkung>
<LEHRSTUNDE:anmerkung_lehreinheit><![CDATA[<?php echo $ls->anmerkung_lehreinheit; ?>]]></LEHRSTUNDE:anmerkung_lehreinheit>
<LEHRSTUNDE:titel><![CDATA[<?php echo $ls->titel; ?>]]></LEHRSTUNDE:titel>
<LEHRSTUNDE:anzahlstudenten><![CDATA[<?php echo $anzahl; ?>]]></LEHRSTUNDE:anzahlstudenten>
<LEHRSTUNDE:anzahlstudenten><![CDATA[<?php echo $anzahl_mitschwund.' ('.$anzahl.')'; ?>]]></LEHRSTUNDE:anzahlstudenten>
<LEHRSTUNDE:gruppe_bezeichnung><![CDATA[<?php echo $gruppenbezeichnung; ?>]]></LEHRSTUNDE:gruppe_bezeichnung>
<LEHRSTUNDE:gruppe_beschreibung><![CDATA[<?php echo $gruppenbeschreibung; ?>]]></LEHRSTUNDE:gruppe_beschreibung>
</RDF:Description>
+4 -4
View File
@@ -624,7 +624,7 @@ $tabellen=array(
"public.tbl_ortraumtyp" => array("ort_kurzbz","hierarchie","raumtyp_kurzbz"),
"public.tbl_organisationseinheit" => array("oe_kurzbz", "oe_parent_kurzbz", "bezeichnung","organisationseinheittyp_kurzbz", "aktiv","mailverteiler","freigabegrenze","kurzzeichen","lehre","standort","warn_semesterstunden_frei","warn_semesterstunden_fix","standort_id"),
"public.tbl_organisationseinheittyp" => array("organisationseinheittyp_kurzbz", "bezeichnung", "beschreibung"),
"public.tbl_person" => array("person_id","staatsbuergerschaft","geburtsnation","sprache","anrede","titelpost","titelpre","nachname","vorname","vornamen","gebdatum","gebort","gebzeit","foto","anmerkung","homepage","svnr","ersatzkennzeichen","familienstand","geschlecht","anzahlkinder","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","bundesland_code","kompetenzen","kurzbeschreibung","zugangscode", "foto_sperre","matr_nr","zugangscode_timestamp"),
"public.tbl_person" => array("person_id","staatsbuergerschaft","geburtsnation","sprache","anrede","titelpost","titelpre","nachname","vorname","vornamen","gebdatum","gebort","gebzeit","foto","anmerkung","homepage","svnr","ersatzkennzeichen","familienstand","geschlecht","anzahlkinder","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","bundesland_code","kompetenzen","kurzbeschreibung","zugangscode", "foto_sperre","matr_nr","zugangscode_timestamp","udf_values"),
"public.tbl_person_fotostatus" => array("person_fotostatus_id","person_id","fotostatus_kurzbz","datum","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_personfunktionstandort" => array("personfunktionstandort_id","funktion_kurzbz","person_id","standort_id","position","anrede"),
"public.tbl_preincoming" => array("preincoming_id","person_id","mobilitaetsprogramm_code","zweck_code","firma_id","universitaet","aktiv","bachelorthesis","masterthesis","von","bis","uebernommen","insertamum","insertvon","updateamum","updatevon","anmerkung","zgv","zgv_ort","zgv_datum","zgv_name","zgvmaster","zgvmaster_datum","zgvmaster_ort","zgvmaster_name","program_name","bachelor","master","jahre","person_id_emergency","person_id_coordinator_dep","person_id_coordinator_int","code","deutschkurs1","deutschkurs2","research_area","deutschkurs3","ext_id"),
@@ -636,7 +636,7 @@ $tabellen=array(
"public.tbl_preoutgoing_lehrveranstaltung" => array("preoutgoing_lehrveranstaltung_id","preoutgoing_id","bezeichnung","ects","endversion","insertamum","insertvon","updateamum","updatevon","wochenstunden","unitcode"),
"public.tbl_preoutgoing_preoutgoing_status" => array("status_id","preoutgoing_status_kurzbz","preoutgoing_id","datum","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"),
"public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz"),
"public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values"),
"public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung","bewerbung_abgeschicktamum","rt_stufe","statusgrund_id"),
"public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung","kosten"),
"public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich","studiensemester_kurzbz","aufnahmegruppe_kurzbz","stufe","anmeldefrist"),
@@ -686,7 +686,7 @@ $tabellen=array(
"system.tbl_webservicerecht" => array("webservicerecht_id","berechtigung_kurzbz","methode","attribut","insertamum","insertvon","updateamum","updatevon","klasse"),
"system.tbl_webservicetyp" => array("webservicetyp_kurzbz","beschreibung"),
"system.tbl_server" => array("server_kurzbz","beschreibung"),
"system.tbl_udf" => array("schema", "tbl_udf.table", "jsons"),
"system.tbl_udf" => array("schema", "table", "jsons"),
"wawi.tbl_betriebsmittelperson" => array("betriebsmittelperson_id","betriebsmittel_id","person_id", "anmerkung", "kaution", "ausgegebenam", "retouram","insertamum", "insertvon","updateamum", "updatevon","ext_id","uid"),
"wawi.tbl_betriebsmittel" => array("betriebsmittel_id","betriebsmitteltyp","oe_kurzbz", "ort_kurzbz", "beschreibung", "nummer", "hersteller","seriennummer", "bestellung_id","bestelldetail_id", "afa","verwendung","anmerkung","reservieren","updateamum","updatevon","insertamum","insertvon","ext_id","inventarnummer","leasing_bis","inventuramum","inventurvon","anschaffungsdatum","anschaffungswert","hoehe","breite","tiefe","nummer2","verplanen"),
"wawi.tbl_betriebsmittel_betriebsmittelstatus" => array("betriebsmittelbetriebsmittelstatus_id","betriebsmittel_id","betriebsmittelstatus_kurzbz", "datum", "updateamum", "updatevon", "insertamum", "insertvon","anmerkung"),
@@ -720,7 +720,7 @@ foreach ($tabellen AS $attribute)
{
$sql_attr='';
foreach($attribute AS $attr)
$sql_attr.=$attr.',';
$sql_attr.='"'.$attr.'",';
$sql_attr=substr($sql_attr, 0, -1);
if (!@$db->db_query('SELECT '.$sql_attr.' FROM '.$tabs[$i].' LIMIT 1;'))
+91 -77
View File
@@ -76,55 +76,55 @@ $error_msg='';
$qry = "UPDATE public.tbl_gruppe SET generiert=true WHERE UPPER(gruppe_kurzbz)=UPPER('".addslashes($gruppe)."')";
$db->db_query($qry);
}
/**
* Einfache Verteiler, deren Erstellung ohne Schleifen-Logik moeglich ist, werden ueber dieses Array erstellt
* Benoetigt werden die 3 Attribute:
* $verteilerArray['name_des_verteilers']['bezeichnung'] = 'Bezeichnung des Verteilers (32 Zeichen)';
* $verteilerArray['name_des_verteilers']['beschreibung'] = 'Beschreibung des Verteilers (Anzeige im CIS)(128 Zeichen)';
* $verteilerArray['name_des_verteilers']['sql'] = 'UIDs, die im Verteiler enthalten sein sollen (kein Semikolon am Ende)';
*
*
* Die Verteiler werden dann alle gleich erstellt:
* - Pruefen, ob Gruppe existiert, wenn nicht, anlegen mit Default-Werten
* - Gruppe auf generiert setzen
* - UIDs loeschen, die nicht mehr in den Verteiler gehoeren
* - UIDs hinzufuegen, die im Verteiler fehlen
*/
$verteilerArray = array();
// Sql-Schema: SELECT foo AS uid FROM bar WHERE foobar
//Aktive MitarbeiterInnen mit Personalnummer > 0
$verteilerArray['tw_ma']['bezeichnung'] = 'Alle aktiven MitarbeiterInnen';
$verteilerArray['tw_ma']['beschreibung'] = 'Alle aktiven MitarbeiterInnen';
$verteilerArray['tw_ma']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
WHERE aktiv
$verteilerArray['tw_ma']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
WHERE aktiv
AND personalnummer >= 0";
//Aktive weibliche MitarbeiterInnen mit Personalnummer > 0
$verteilerArray['tw_ma_w']['bezeichnung'] = 'Weibliche Mitarbeiterinnen';
$verteilerArray['tw_ma_w']['beschreibung'] = 'Weibliche Mitarbeiterinnen';
$verteilerArray['tw_ma_w']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
JOIN public.tbl_person USING(person_id)
WHERE tbl_benutzer.aktiv
AND geschlecht='w'
$verteilerArray['tw_ma_w']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
JOIN public.tbl_person USING(person_id)
WHERE tbl_benutzer.aktiv
AND geschlecht='w'
AND personalnummer >=0";
//Alle aktiven MitarbeiterInnen mit Attribut lektor=true
$verteilerArray['tw_lkt']['bezeichnung'] = 'Alle LektorInnen';
$verteilerArray['tw_lkt']['beschreibung'] = 'Alle LektorInnen an der FH Technikum Wien';
$verteilerArray['tw_lkt']['sql'] = " SELECT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
WHERE lektor
$verteilerArray['tw_lkt']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
WHERE lektor
AND aktiv";
//MitarbeiterInnen mit gueltiger Funktion "ass" (assistenz)
$verteilerArray['tw_sek']['bezeichnung'] = 'Alle Sekretariate';
$verteilerArray['tw_sek']['beschreibung'] = 'Alle Sekretariate an der FH Technikum Wien';
$verteilerArray['tw_sek']['sql'] = " SELECT mitarbeiter_uid AS uid
$verteilerArray['tw_sek']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
FROM
public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
@@ -147,7 +147,7 @@ $error_msg='';
AND (tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg')
AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
AND mitarbeiter_uid NOT LIKE '\\\\_%'
AND mitarbeiter_uid NOT LIKE '\\\\_%'
AND tbl_studiengang.aktiv=true";
//Aktive MitarbeiterInnen mit gueltiger Funktion "Leitung", "gLtg" oder "stvLtg" in aktiven Bachelor- oder Master-Studiengaengen mit Kennzahl>0 und Kennzahl<10000
$verteilerArray['tw_stgl_bama']['bezeichnung'] = 'Studiengangsleitung BAMA';
@@ -171,36 +171,36 @@ $error_msg='';
//Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=true
$verteilerArray['tw_fix']['bezeichnung'] = 'Alle Fix-Angestellten';
$verteilerArray['tw_fix']['beschreibung'] = 'Alle Fix-Angestellten an der FH Technikum Wien';
$verteilerArray['tw_fix']['sql'] = " SELECT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
WHERE fixangestellt
AND aktiv
$verteilerArray['tw_fix']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
WHERE fixangestellt
AND aktiv
AND mitarbeiter_uid NOT LIKE '\\\\_%'";
//Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=true und lektor=true
$verteilerArray['tw_fix_lkt']['bezeichnung'] = 'Alle fixangestellten LektorInnen';
$verteilerArray['tw_fix_lkt']['beschreibung'] = 'Alle fixangestellten LektorInnen an der FH Technikum Wien';
$verteilerArray['tw_fix_lkt']['sql'] = " SELECT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
WHERE fixangestellt
AND lektor
AND aktiv
$verteilerArray['tw_fix_lkt']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
WHERE fixangestellt
AND lektor
AND aktiv
AND mitarbeiter_uid NOT LIKE '\\\\_%'";
//Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=false und lektor=true
$verteilerArray['tw_ext_lkt']['bezeichnung'] = 'Externe LektorInnen';
$verteilerArray['tw_ext_lkt']['beschreibung'] = 'Alle externen LektorInnen an der FH Technikum Wien';
$verteilerArray['tw_ext_lkt']['sql'] = " SELECT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
WHERE NOT fixangestellt
AND lektor
AND aktiv
$verteilerArray['tw_ext_lkt']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
WHERE NOT fixangestellt
AND lektor
AND aktiv
AND mitarbeiter_uid NOT LIKE '\\\\_%'";
//Hochschulvertretung. Studierende mit gueltiger Funktion 'hsv'.
$verteilerArray['tw_hsv']['bezeichnung'] = 'Hochschulvertretung FHTW';
$verteilerArray['tw_hsv']['beschreibung'] = 'Hochschulvertretung FHTW';
$verteilerArray['tw_hsv']['sql'] = " SELECT uid
$verteilerArray['tw_hsv']['sql'] = " SELECT DISTINCT uid
FROM
public.tbl_benutzerfunktion
JOIN public.tbl_benutzer USING(uid)
@@ -212,7 +212,7 @@ $error_msg='';
//Studienvertretung. Studierende mit gueltiger Funktion 'stdv'.
$verteilerArray['tw_stdv']['bezeichnung'] = 'Alle StudierendenvertreterInnen';
$verteilerArray['tw_stdv']['beschreibung'] = 'Alle StudierendenvertreterInnen';
$verteilerArray['tw_stdv']['sql'] = " SELECT uid
$verteilerArray['tw_stdv']['sql'] = " SELECT DISTINCT uid
FROM
public.tbl_benutzerfunktion
JOIN public.tbl_benutzer USING(uid)
@@ -224,7 +224,7 @@ $error_msg='';
//Jahrgangsvertretung. Studierende mit gueltiger Funktion 'jgv'.
$verteilerArray['tw_jgv']['bezeichnung'] = 'Alle JahrgangsvertreterInnen';
$verteilerArray['tw_jgv']['beschreibung'] = 'Alle JahrgangsvertreterInnen';
$verteilerArray['tw_jgv']['sql'] = " SELECT uid
$verteilerArray['tw_jgv']['sql'] = " SELECT DISTINCT uid
FROM
public.tbl_benutzerfunktion
JOIN public.tbl_benutzer USING(uid)
@@ -233,12 +233,12 @@ $error_msg='';
AND tbl_benutzer.aktiv AND
(tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
(tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())";
//Alle aktiven Studierenden
//Alle aktiven Studierenden
//Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen
//damit im CIS die Menuepunkte fuer Studierende richtig angezeigt werden
$verteilerArray['tw_std']['bezeichnung'] = 'Alle Studierenden';
$verteilerArray['tw_std']['beschreibung'] = 'Alle ordentlichen, außerordentlichen und fiktiven Studierenden';
$verteilerArray['tw_std']['sql'] = " SELECT uid
$verteilerArray['tw_std']['sql'] = " SELECT DISTINCT uid
FROM campus.vw_student
WHERE (
aktiv
@@ -251,7 +251,7 @@ $error_msg='';
//Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen
$verteilerArray['tw_std_m']['bezeichnung'] = 'Alle männlichen Studenten';
$verteilerArray['tw_std_m']['beschreibung'] = 'Alle männlichen Studenten an der FHTW';
$verteilerArray['tw_std_m']['sql'] = " SELECT uid
$verteilerArray['tw_std_m']['sql'] = " SELECT DISTINCT uid
FROM campus.vw_student
WHERE (
aktiv
@@ -265,7 +265,7 @@ $error_msg='';
//Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen
$verteilerArray['tw_std_w']['bezeichnung'] = 'Alle weiblichen Studentinnen';
$verteilerArray['tw_std_w']['beschreibung'] = 'Alle weiblichen Studentinnen an der FHTW';
$verteilerArray['tw_std_w']['sql'] = " SELECT uid
$verteilerArray['tw_std_w']['sql'] = " SELECT DISTINCT uid
FROM campus.vw_student
WHERE (
aktiv
@@ -279,7 +279,7 @@ $error_msg='';
//Absolventen bleiben noch 20 Wochen im Verteiler
$verteilerArray['tw_bama']['bezeichnung'] = 'Alle BaMa-Studierenden';
$verteilerArray['tw_bama']['beschreibung'] = 'Alle ordentlichen Bachelor- und Master-Studierenden';
$verteilerArray['tw_bama']['sql'] = " SELECT uid
$verteilerArray['tw_bama']['sql'] = " SELECT DISTINCT uid
FROM campus.vw_student
WHERE (
aktiv
@@ -287,7 +287,7 @@ $error_msg='';
(aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Absolvent' AND updateaktivam>now()-'20 weeks'::interval)
AND studiengang_kz IN (SELECT studiengang_kz FROM public.tbl_studiengang WHERE typ IN ('b','m'))
)";
//Moodle-LektorenVerteiler
//Moodle-LektorenVerteiler
$verteilerArray['moodle_lkt']['bezeichnung'] = 'Moodle Lektoren';
$verteilerArray['moodle_lkt']['beschreibung'] = 'Moodle Lektoren';
$verteilerArray['moodle_lkt']['sql'] = " SELECT distinct mitarbeiter_uid AS uid
@@ -310,7 +310,7 @@ $error_msg='';
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
JOIN public.tbl_benutzerfunktion USING(uid)
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung')
WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung')
AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
AND tbl_organisationseinheit.organisationseinheittyp_kurzbz='Abteilung'";
@@ -387,10 +387,10 @@ $error_msg='';
//Alle aktiven MitarbeiterInnen mit Funktion Leitung oder stvLeitung oder gfLtg
$verteilerArray['tw_leitung']['bezeichnung'] = 'Alle MA mit Leitungsfunktion';
$verteilerArray['tw_leitung']['beschreibung'] = 'Alle MA mit Funktion Leitung, stellvertretende Leitung oder geschäftsführende Leitung';
$verteilerArray['tw_leitung']['sql'] = " SELECT DISTINCT uid
FROM
public.tbl_person
JOIN public.tbl_benutzer USING (person_id)
$verteilerArray['tw_leitung']['sql'] = " SELECT DISTINCT uid
FROM
public.tbl_person
JOIN public.tbl_benutzer USING (person_id)
JOIN tbl_benutzerfunktion USING (uid)
WHERE funktion_kurzbz IN('Leitung','stvLtg','gLtg')
AND tbl_benutzer.aktiv
@@ -412,7 +412,21 @@ $error_msg='';
(vw_student.aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND vw_student.updateaktivam>now()-'20 weeks'::interval))
AND tbl_organisationseinheit.oe_parent_kurzbz='lehrgang'
AND organisationseinheittyp_kurzbz='Lehrgang'";
//Alle aktiven Lektoren von BIF DUA
$verteilerArray['bif_lkt_dua']['bezeichnung'] = 'Alle Lektoren von BIF DUAL';
$verteilerArray['bif_lkt_dua']['beschreibung'] = 'Alle Lektoren von BIF DUAL';
$verteilerArray['bif_lkt_dua']['sql'] = "SELECT distinct mitarbeiter_uid as uid
FROM
lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id)
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
WHERE
(studiensemester_kurzbz='$studiensemester' OR
studiensemester_kurzbz='$stsem2')
AND mitarbeiter_uid NOT LIKE '\\\\_%'
AND tbl_lehrveranstaltung.studiengang_kz=257
AND tbl_lehrveranstaltung.orgform_kurzbz='DUA'
";
$bezeichnung = '';
$beschreibung = '';
foreach ($verteilerArray AS $listname => $data)
@@ -423,14 +437,14 @@ $error_msg='';
{
if (strlen($data['bezeichnung']) > 32)
$bezeichnung = substr($data['bezeichnung'], 0, 32);
else
else
$bezeichnung = $data['bezeichnung'];
if (strlen($data['beschreibung']) > 128)
$beschreibung = substr($data['beschreibung'], 0, 128);
else
$beschreibung = $data['beschreibung'];
$grp->gruppe_kurzbz = $listname;
$grp->studiengang_kz = '0';
$grp->semester = '0';
@@ -447,7 +461,7 @@ $error_msg='';
$grp->aufnahmegruppe = false;
$grp->insertamum = date('Y-m-d H:i:s');
$grp->insertvon = 'mlists_generate';
if(!$grp->save(true, true))
{
$error_msg .= 'Fehler beim Anlegen der Gruppe '.$listname.': '.$grp->errormsg;
@@ -464,36 +478,36 @@ $error_msg='';
if (substr($data['sql'], -1) == ';')
$data['sql'] = substr($data['sql'], 0, strlen($data['sql'])-1);
$qry_delete = " DELETE FROM
public.tbl_benutzergruppe
WHERE
UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname).")
AND
$qry_delete = " DELETE FROM
public.tbl_benutzergruppe
WHERE
UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname).")
AND
uid NOT IN (".$data['sql'].");";
if(!($result = $db->db_query($qry_delete)))
$error_msg .= $db->db_last_error().$qry_delete.'<br><br>';
echo strtoupper($listname).' '.$db->db_affected_rows($result).' Einträge gelöscht<BR>';
flush();
$qry_insert = " WITH
$qry_insert = " WITH
uids AS (".$data['sql'].")
INSERT INTO
public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon)
SELECT
*, UPPER(".$db->db_add_param($listname)."), now(), 'mlists_generate'
FROM
uids
WHERE
INSERT INTO
public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon)
SELECT
*, UPPER(".$db->db_add_param($listname)."), now(), 'mlists_generate'
FROM
uids
WHERE
uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname)."));";
if(!($result = $db->db_query($qry_insert)))
$error_msg .= $db->db_last_error().$qry_insert.'<br><br>';
echo strtoupper($listname).' '.$db->db_affected_rows($result).' Einträge hinzugefügt<BR><BR>';
flush();
}
@@ -501,7 +515,7 @@ $error_msg='';
// Erstellen der Mailinglisten mit Schleifen-Logik
// **************************************************************
// **************************************************************
// Lektoren-Verteiler innerhalb der Studiengaenge abgleichen
// Lektoren holen die nicht mehr in den Verteiler gehoeren
@@ -998,7 +1012,7 @@ $error_msg='';
}
}
echo '<br>';
// **************************************************************
// Studierendenverteiler fuer die einzelnen Organisationseinheiten bei Mischformen
echo '<br>Abgleich der Mischformverteiler';
@@ -1103,7 +1117,7 @@ $error_msg='';
$error_msg.=$db->db_last_error().' '.$sql_query;
echo $error_msg;
// Send Mail to admin if error occurs
if ($error_msg != '')
{
+8 -4
View File
@@ -803,6 +803,7 @@ function GenerateXMLStudentBlock($row)
AND studiensemester_kurzbz=".$db->db_add_param($aktstatus_stsem)."
ORDER BY tbl_mobilitaet.insertamum DESC limit 1;";
$studtyp = '';
if($resultgs = $db->db_query($qrygs))
{
while($rowgs = $db->db_fetch_object($resultgs))
@@ -1021,7 +1022,7 @@ function GenerateXMLStudentBlock($row)
}
}
if($beginndatum!='' && !$ausserordentlich)
if($beginndatum!='' && !$ausserordentlich && $studtyp!='E')
{
$datei.="
<BeginnDatum>".date("dmY", $datumobj->mktime_fromdate($beginndatum))."</BeginnDatum>";
@@ -1037,14 +1038,17 @@ function GenerateXMLStudentBlock($row)
Incoming
Ausserordentlich Studierender
*/
if($aktstatus!='Incoming' && !$ausserordentlich)
if($aktstatus!='Incoming' && !$ausserordentlich && $studtyp!='E')
{
$datei.="
<Ausbildungssemester>".$sem."</Ausbildungssemester>";
}
$datei.="
<StudStatusCode>".$status."</StudStatusCode>";
if($studtyp!='E')
{
$datei.="
<StudStatusCode>".$status."</StudStatusCode>";
}
if($orgform_code_array[$storgform]!=1 && !$ausserordentlich) // Wenn nicht Vollzeit und nicht Ausserordentlich
{