This commit is contained in:
Paolo
2018-06-15 10:01:39 +02:00
6 changed files with 1175 additions and 239 deletions
@@ -64,6 +64,7 @@
FROM public.tbl_studiensemester
WHERE ende >= NOW()
)
AND not exists (select 1 from tbl_prestudentstatus psss where psss.prestudent_id = pss.prestudent_id and psss.status_kurzbz = \'Abgewiesener\' and psss.studiensemester_kurzbz = \'WS2018\')
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
LIMIT 1
) AS "SendDate",
+4
View File
@@ -3005,6 +3005,10 @@ function StudentZeugnisDokumentArchivieren()
case 'PrProtMAEng':
case 'Bescheid':
case 'BescheidEng':
case 'Bakkurkunde':
case 'BakkurkundeEng':
case 'Diplomurkunde':
case 'DiplomurkundeEng':
xml = 'abschlusspruefung.rdf.php';
break;
+654
View File
@@ -0,0 +1,654 @@
<?php
/* Copyright (C) 2018 fhcomplete.org
*
* 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
*/
/**
* Datenverbund Services
* Anbindung für Datenverbund des Bundesrechenzetrums zur
* Abfrage und Vergabe von Matrikelnummern
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class dvb
{
const DVB_URL_WEBSERVICE_OAUTH = 'https://stubei-q.portal.at/dvb/oauth/token';
const DVB_URL_WEBSERVICE_SVNR = 'https://stubei-q.portal.at/rws/0.1/simpleStudentBySozialVersicherungsnummer.xml';
const DVB_URL_WEBSERVICE_ERSATZKZ = 'https://stubei-q.portal.at/rws/0.1/simpleStudentByErsatzKennzeichen.xml';
const DVB_URL_WEBSERVICE_RESERVIERUNG = 'https://stubei-q.portal.at/dvb/matrikelnummern/1.0/reservierung.xml';
const DVB_URL_WEBSERVICE_MELDUNG = 'https://stubei-q.portal.at/dvb/matrikelnummern/1.0/meldung.xml';
public $authentication;
private $username;
private $password;
private $debug;
public $debug_output = '';
/**
* Constructor
* @param string $username Username fuer OAuth2 Login.
* @param string $password Passwort fuer OAuth2 Login.
* @param bool $debug Enables/Disables Debugging.
*/
public function __construct($username, $password, $debug = false)
{
$this->username = $username;
$this->password = $password;
$this->debug = $debug;
}
/**
* Performs a OAuth2 Authentication and returns the OAuth Bearer Token
* @return boolean true wenn erfolgreich, false im Fehlerfall
*/
public function authenticate()
{
$this->debug('Request new OAuth Token');
$curl = curl_init();
$url = self::DVB_URL_WEBSERVICE_OAUTH;
$url .= '?grant_type=client_credentials';
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$headers = array(
'Accept: application/json',
'Content-Type: application/x-www-form-urlencoded',
'Authorization: Basic '.base64_encode($this->username.":".$this->password),
'User-Agent: FHComplete',
'Connection: Keep-Alive',
'Expect:',
'Content-Length: 0'
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$this->debug('Sending Request to '.$url);
$json_response = curl_exec($curl);
$curl_info = curl_getinfo($curl);
curl_close($curl);
$this->debug('Response: '.$curl_info['http_code']);
if ($curl_info['http_code'] == '200')
{
/* Example Response:
{
"access_token": "d9c60404-1530-4b05-bb8e-0a0b0f321726",
"token_type": "bearer",
"expires_in": 41087,
"scope": "read write ROLE_bildungseinrichtung
ROLE_bildungseinrichtung_A"
}
*/
$this->authentication = json_decode($json_response);
// Calculate Expire Date
$ttl = new DateTime();
$ttl->add(new DateInterval('PT'.$this->authentication->expires_in.'S'));
$this->authentication->DateTimeExpires = $ttl;
$this->debug('Access_token:'.$this->authentication->access_token);
$this->debug('Scope:'.$this->authentication->scope);
return true;
}
else
{
$this->errormsg = 'Request Failed with HTTP Code:'.$curl_info['http_code'].' and Response:'.$json_response;
return false;
}
}
/**
* Checks if the Token is Expired
* @return boolean true if expired, false if valid.
*/
private function tokenIsExpired()
{
if (!isset($this->authentication))
return true;
$dtnow = new DateTime();
if ($this->authentication->DateTimeExpires < $dtnow)
{
return true;
}
else
return false;
}
/**
* Get Matrikelnummer by Social Security Number
* @param string $svnr Social Security Number.
* @return Matrikelnummer or false on error.
*/
public function getMatrikelnrBySVNR($svnr)
{
if ($this->tokenIsExpired())
{
$this->authenticate();
}
$this->debug('getMatirkelnrBySVNR');
$curl = curl_init();
$url = self::DVB_URL_WEBSERVICE_SVNR;
$url .= '?sozialVersicherungsNummer='.curl_escape($curl, $svnr);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$headers = array(
'Accept: application/json',
'Authorization: Bearer '.$this->authentication->access_token,
'User-Agent: FHComplete',
'Connection: Keep-Alive',
'Expect:',
'Content-Length: 0'
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$this->debug('Sending Request to '.$url);
$response = curl_exec($curl);
$curl_info = curl_getinfo($curl);
curl_close($curl);
$this->debug('Response '.$curl_info['http_code']);
if ($curl_info['http_code'] == '200')
{
/* Example Response:
<uni:simpleStudentResponse xmlns:uni="http://www.brz.gv.at/datenverbund-unis">
<uni:student inStudienBeitragsPool="false" inGesamtPool="true" gesperrt="false">
<uni:matrikelNummer>12345678</uni:matrikelNummer>
<uni:vorName>Max</uni:vorName>
<uni:nachName>Mustermann</uni:nachName>
<uni:geschlecht>M</uni:geschlecht>
<uni:geburtsDatum>1999-02-19</uni:geburtsDatum>
<uni:staatsAngehoerigkeit>A</uni:staatsAngehoerigkeit>
</uni:student>
</uni:simpleStudentResponse>
*/
$dom = new DOMDocument();
$dom->loadXML($response);
$namespace = 'http://www.brz.gv.at/datenverbund-unis';
$domnodes_matrikelnummer = $dom->getElementsByTagNameNS($namespace, 'matrikelNummer');
foreach ($domnodes_matrikelnummer as $row)
{
// Found
return $row->textContent;
}
$this->errormsg = '';
return false;
}
else
{
$this->errormsg = 'Request Failed with HTTP Code:'.$curl_info['http_code'].' and Response:'.$response;
return false;
}
}
/**
* Get Matrikelnummer by Ersatzkennzeichen
* @param string $ersatzkennzeichen Ersatzkennzeichen to search for.
* @return Matrikelnummer or false
*/
public function getMatrikelnrByErsatzkennzeichen($ersatzkennzeichen)
{
if ($this->tokenIsExpired())
{
$this->authenticate();
}
$this->debug('getMatrikelnrByErsatzkennzeichen');
$curl = curl_init();
$url = self::DVB_URL_WEBSERVICE_ERSATZKZ;
$url .= '?ersatzKennzeichen='.curl_escape($curl, $ersatzkennzeichen);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$headers = array(
'Accept: application/json',
'Authorization: Bearer '.$this->authentication->access_token,
'User-Agent: FHComplete',
'Connection: Keep-Alive',
'Expect:',
'Content-Length: 0'
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$this->debug('Sending Request to '.$url);
$xml_response = curl_exec($curl);
$curl_info = curl_getinfo($curl);
curl_close($curl);
$this->debug('Response: '.$curl_info['http_code']);
if ($curl_info['http_code'] == '200')
{
/* Example Response Success
<uni:simpleStudentResponse xmlns:uni="http://www.brz.gv.at/datenverbund-unis">
<uni:student inStudienBeitragsPool="true" inGesamtPool="false">
<uni:uniKennzeichen>A</uni:uniKennzeichen>
<uni:matrikelNummer>12345678</uni:matrikelNummer>
<uni:semesterKennzeichen>2017S</uni:semesterKennzeichen>
<uni:ersatzKennzeichen>ABCD201093</uni:ersatzKennzeichen>
<uni:akadGradPre>Bc.</uni:akadGradPre>
<uni:vorName>Max</uni:vorName>
<uni:nachName>Mustermann</uni:nachName>
<uni:geschlecht>W</uni:geschlecht>
<uni:geburtsDatum>1993-06-26</uni:geburtsDatum>
<uni:staatsAngehoerigkeit>TCH</uni:staatsAngehoerigkeit>
<uni:wohnAdresse>
<uni:staat>A</uni:staat>
<uni:plz>1030</uni:plz>
<uni:ort>Wien</uni:ort>
<uni:strasse>Obere Bahngasse 20/12</uni:strasse>
</uni:wohnAdresse>
<uni:zustellAdresse>
<uni:staat>A</uni:staat>
<uni:plz>1030</uni:plz>
<uni:ort>Wien</uni:ort>
<uni:strasse>Obere Bahngasse 20/12</uni:strasse>
</uni:zustellAdresse>
</uni:student>
<uni:student inStudienBeitragsPool="false" inGesamtPool="true" gesperrt="false">
<uni:matrikelNummer>12345678</uni:matrikelNummer>
<uni:vorName>Max</uni:vorName>
<uni:nachName>Mustermann</uni:nachName>
<uni:geschlecht>W</uni:geschlecht>
<uni:geburtsDatum>1993-06-26</uni:geburtsDatum>
<uni:staatsAngehoerigkeit>TCH</uni:staatsAngehoerigkeit>
</uni:student>
</uni:simpleStudentResponse>
*/
/* 200 - No Entry found
<uni:simpleStudentResponse xmlns:uni="http://www.brz.gv.at/datenverbund-unis"/>
*/
/* 401 Error Code Token Expired
{
"error": "invalid_token",
"error_description": "Access token expired: 64a58ef3-1a70-46e9-b44f-35cc5051ae8e"
}
*/
/* 400 Bad Request
<FehlerAntwort xmlns="http://www.brz.gv.at/datenverbund-unis">
<uuid>318e1bc5-279d-43c4-af47-5e6df2ff5279</uuid>
<fehlerliste fehleranzahl="1">
<fehler>
<fehlernummer>ZD00001</fehlernummer>
<kategorie>Z</kategorie>
<datenfeld/>
<fehlertext>Der Server konnte die Anfrage nicht vearbeiten.</fehlertext>
<massnahme>Required String parameter 'ersatzKennzeichen' is not present</massnahme>
</fehler>
</fehlerliste>
</FehlerAntwort>
*/
$dom = new DOMDocument();
$dom->loadXML($xml_response);
$namespace = 'http://www.brz.gv.at/datenverbund-unis';
$domnodes_matrikelnummer = $dom->getElementsByTagNameNS($namespace, 'matrikelNummer');
foreach ($domnodes_matrikelnummer as $row)
{
// Found
return $row->textContent;
}
}
else
{
$this->errormsg = 'Request Failed with HTTP Code:'.$curl_info['http_code'].' and Response:'.$xml_response;
return false;
}
}
/**
* List of already Reserved Matrikelnummern
* @param string $bildungseinrichtung Shortname of Institution.
* @param string $studienjahr Year of Reservation.
* @return array with reserved Matrikelnr. or false on failure.
*/
public function getReservations($bildungseinrichtung, $studienjahr)
{
$this->debug('getReservations');
$uuid = $this->getUUID();
if ($this->tokenIsExpired())
{
$this->authenticate();
}
$curl = curl_init();
$url = self::DVB_URL_WEBSERVICE_RESERVIERUNG;
$url .= '?uuid='.curl_escape($curl, $uuid);
$url .= '&be='.curl_escape($curl, $bildungseinrichtung);
$url .= '&sj='.curl_escape($curl, $studienjahr);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$headers = array(
'Accept: application/xml',
'Authorization: Bearer '.$this->authentication->access_token,
'User-Agent: FHComplete',
'Connection: Keep-Alive',
'Expect:',
'Content-Length: 0'
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$this->debug('Request URL:'.$url);
$response = curl_exec($curl);
$curl_info = curl_getinfo($curl);
curl_close($curl);
$this->debug('Response: '.$curl_info['http_code']);
/* 200 ok
<?xml version="1.0" encoding="UTF-8"?>
<matrikelnummernantwort>
<uuid>793d44fa-5646-42b1-b0cb-f2f121b2f14f</uuid>
<fehlerliste fehleranzahl="0"/>
<matrikelnummernliste>
<matrikelnummer>12345678</matrikelnummer>
<matrikelnummer>23456789</matrikelnummer>
</matrikelnummernliste>
</matrikelnummernantwort>
*/
if ($curl_info['http_code'] == '200')
{
$dom = new DOMDocument();
$dom->loadXML($response);
$domnodes_matrikelnummer = $dom->getElementsByTagName('matrikelnummer');
$reservations = array();
foreach ($domnodes_matrikelnummer as $row)
{
$reservations[] = $row->textContent;
}
return $reservations;
}
else
{
$this->errormsg = 'Request Failed with HTTP Code:'.$curl_info['http_code'].' and Response:'.$response;
return false;
}
}
/**
* Request a new Matrikelnummer
* @param string $bildungseinrichtung Shortname of Institution.
* @param string $studienjahr Year of issuing.
* @param int $anzahl Number of Requested Numbers.
* @return array list of matrikelnr or false on failure.
*/
public function getKontingent($bildungseinrichtung, $studienjahr, $anzahl = 1)
{
$this->debug('getKontingent');
$uuid = $this->getUUID();
if ($this->tokenIsExpired())
{
$this->authenticate();
}
$data = '<?xml version="1.0" encoding="UTF-8"?>
<matrikelnummernanfrage>
<uuid>'.$uuid.'</uuid>
<kontingentblock>
<anzahl>'.$anzahl.'</anzahl>
<be>'.$bildungseinrichtung.'</be>
<sj>'.$studienjahr.'</sj>
</kontingentblock>
</matrikelnummernanfrage>
';
$curl = curl_init();
$url = self::DVB_URL_WEBSERVICE_RESERVIERUNG;
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$headers = array(
'Accept: application/xml',
'Content-Type: application/xml',
'Authorization: Bearer '.$this->authentication->access_token,
'User-Agent: FHComplete',
'Connection: Keep-Alive',
'Expect:'
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$this->debug('Request URL:'.$url);
$this->debug('Request Data:'.$data);
$response = curl_exec($curl);
$curl_info = curl_getinfo($curl);
curl_close($curl);
$this->debug('Response: '.$curl_info['http_code']);
if ($curl_info['http_code'] == '200')
{
$dom = new DOMDocument();
$dom->loadXML($response);
$domnodes_matrikelnummer = $dom->getElementsByTagName('matrikelnummer');
$kontingent = array();
foreach ($domnodes_matrikelnummer as $row)
{
$kontingent[] = $row->textContent;
}
return $kontingent;
}
else
{
$this->errormsg = 'Request Failed with HTTP Code:'.$curl_info['http_code'].' and Response:'.$response;
return false;
}
}
/**
* Meldet die Vergabe der Matrikelnummer
* @param string $bildungseinrichtung Kennzeichen der Bildungseinrichtung.
* @param object $person Objekt mit den Personendaten.
* @return booelan true wenn erfolgreich
*/
public function setMatrikelnummer($bildungseinrichtung, $person)
{
$this->debug('setMatrikelnummer');
$uuid = $this->getUUID();
if ($this->tokenIsExpired())
{
$this->authenticate();
}
$data = '<?xml version="1.0" encoding="UTF-8"?>
<matrikelnummernmeldung>
<uuid>'.$uuid.'</uuid>
<personmeldung>
<be>'.$bildungseinrichtung.'</be>
<gebdat>'.$person->geburtsdatum.'</gebdat>
<geschlecht>'.$person->geschlecht.'</geschlecht>
<matrikel>'.$person->matrikelnummer.'</matrikel>';
if (isset($person->matura) && $person->matura != '')
$data .= '<matura>'.$person->matura.'</matura>';
else
$data .= '<matura>00000000</matura>';
$data .= '<nachname>'.$person->nachname.'</nachname>';
if (isset($person->plz) && $person->plz != '')
$data .= '<plz>'.$person->plz.'</plz>';
$data .= '<staat>'.$person->staat.'</staat>';
if (isset($person->svnr) && $person->svnr != '')
$data .= '<svnr>'.$person->svnr.'</svnr>';
$data .= '<vorname>'.$person->vorname.'</vorname>';
if (isset($person->writeonerror) && $person->writeonerror === true)
$data .= '<writeOnError>J</writeOnError>';
$data .= '
</personmeldung>
</matrikelnummernmeldung>
';
$curl = curl_init();
$url = self::DVB_URL_WEBSERVICE_MELDUNG;
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$headers = array(
'Accept: application/xml',
'Content-Type: application/xml',
'Authorization: Bearer '.$this->authentication->access_token,
'User-Agent: FHComplete',
'Connection: Keep-Alive',
'Expect:'
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$this->debug('Request URL:'.$url);
$this->debug('Request Data:'.$data);
$response = curl_exec($curl);
$curl_info = curl_getinfo($curl);
curl_close($curl);
$this->debug('Response: '.$curl_info['http_code']);
$this->debug('Response: '.print_r($response, true));
/* 200 Fehlermeldung
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<matrikelnummernmeldungantwort>
<uuid>b76e84a9-c0bd-494c-97cb-c4ab9cd452c5</uuid>
<fehlerliste fehleranzahl="3">
<fehler>
<fehlernummer>ZD01471</fehlernummer>
<kategorie>90</kategorie>
<datenfeld>UNI-Kennzeichen</datenfeld>
<fehlertext>UNI-Kennzeichen fehlt oder ungültig (FHTEST)</fehlertext>
<massnahme>BRZ</massnahme>
<feldinhalt>FHTEST</feldinhalt>
</fehler>
<fehler>
<fehlernummer>AG21333</fehlernummer>
<kategorie>65</kategorie>
<datenfeld>Datum allg.Univ.reife</datenfeld>
<fehlertext>kein gültiges Datum oder Format</fehlertext>
<massnahme>Korrektur Datum allg. Univ.reife oder 000000 angeben, falls nicht anwendbar</massnahme>
<feldinhalt>leer</feldinhalt>
</fehler>
<fehler>
<fehlernummer>ZD10073</fehlernummer>
<kategorie>90</kategorie>
<datenfeld>Matrikelnummer</datenfeld>
<fehlertext>aus ungültigem Kontingent</fehlertext>
<massnahme>Korrektur der Matrikelnummer</massnahme>
<feldinhalt>12345678</feldinhalt>
</fehler>
</fehlerliste>
</matrikelnummernmeldungantwort>
*/
/* 200 ok
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<matrikelnummernmeldungantwort>
<uuid>8b239582-6bc5-4193-ac79-2dcf9ec96439</uuid>
<fehlerliste fehleranzahl="0"/>
</matrikelnummernmeldungantwort>
*/
if ($curl_info['http_code'] == '200')
{
$dom = new DOMDocument();
$dom->loadXML($response);
$domnodes_fehlerliste = $dom->getElementsByTagName('fehlerliste');
$fehleranzahl = $domnodes_fehlerliste[0]->getAttribute('fehleranzahl');
if ($fehleranzahl === '0')
{
// Keine Fehler -> Meldung erfolgreich
return true;
}
else
{
$this->errormsg = 'Es gab '.$fehleranzahl.' Fehler:';
$domnodes_fehler = $dom->getElementsByTagName('fehler');
foreach ($domnodes_fehler as $row)
{
$datenfeld = $row->getElementsByTagName('datenfeld');
$fehlertext = $row->getElementsByTagName('fehlertext');
$this->errormsg .= ' Datenfeld:'.$datenfeld[0]->textContent;
$this->errormsg .= ' Fehlertext:'.$fehlertext[0]->textContent;
}
return false;
}
}
else
{
$this->errormsg = 'Request Failed with HTTP Code:'.$curl_info['http_code'].' and Response:'.$response;
return false;
}
}
/**
* Generiert eine eindeutige UUID
* @return uuid
*/
private function getUUID()
{
$data = openssl_random_pseudo_bytes(16);
$data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
$data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
/**
* Erstellt eine Debug Message
* @param string $msg Message to log.
* @return void
*/
private function debug($msg)
{
if ($this->debug)
$this->debug_output .= "\n<br>".date('Y-m-d H:i:s').': '.htmlentities($msg);
}
}
+268 -237
View File
@@ -19,16 +19,14 @@
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
// header für no cache
header("Cache-Control: no-cache");
header("Cache-Control: post-check=0, pre-check=0",false);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Pragma: no-cache");
// content type setzen
header("Content-type: application/xhtml+xml");
// DAO
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/abschlusspruefung.class.php');
require_once('../include/person.class.php');
require_once('../include/benutzer.class.php');
@@ -43,11 +41,22 @@ require_once('../include/projektarbeit.class.php');
require_once('../include/lehreinheit.class.php');
require_once('../include/lehrveranstaltung.class.php');
require_once('../include/note.class.php');
require_once('../include/benutzerberechtigung.class.php');
$xmlformat='rdf';
if(isset($_GET['xmlformat']))
$xmlformat=$_GET['xmlformat'];
if(isset($_SERVER['REMOTE_USER']))
{
// Wenn das Script direkt aufgerufen wird muss es ein Admin sein
$user=get_uid();
$berechtigung = new benutzerberechtigung();
$berechtigung->getBerechtigungen($user);
if(!$berechtigung->isBerechtigt('admin'))
die('Sie haben keine Berechtigung fuer diese Seite');
}
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
$datum_obj = new datum();
@@ -57,235 +66,257 @@ $abschlussbeurteilung_arr = array();
$abschlussbeurteilung_arrEnglish = array();
$qry = "SELECT * FROM lehre.tbl_abschlussbeurteilung";
if($db->db_query($qry))
{
while($row = $db->db_fetch_object())
{
$abschlussbeurteilung_arr[$row->abschlussbeurteilung_kurzbz]=$row->bezeichnung;
$abschlussbeurteilung_arrEng[$row->abschlussbeurteilung_kurzbz]=$row->bezeichnung_english;
}
}
$note_arr = array();
$qry = "SELECT * FROM lehre.tbl_note";
if($db->db_query($qry))
{
while($row = $db->db_fetch_object())
$note_arr[$row->note]=$row->anmerkung;
function draw_content_xml($row)
{
global $rdf_url, $datum_obj, $abschlussbeurteilung_arr, $abschlussbeurteilung_arrEng, $note_arr;
$vorsitz = '';
$pruefer1= '';
$pruefer2= '';
$pruefer3= '';
$note_arr[$row->note]=$row->anmerkung;
}
}
//Nachnamen der Pruefer holden
$person = new person();
$mitarbeiter = new mitarbeiter();
$student= new student($row->student_uid);
function draw_content_xml($row)
{
global $rdf_url, $datum_obj, $abschlussbeurteilung_arr, $abschlussbeurteilung_arrEng, $note_arr;
$vorsitz = '';
$pruefer1= '';
$pruefer2= '';
$pruefer3= '';
$nation=new nation($student->geburtsnation);
$geburtsnation=$nation->kurztext;
$geburtsnation_engl=$nation->engltext;
$nation->load($student->staatsbuergerschaft);
$staatsbuergerschaft=$nation->kurztext;
$staatsbuergerschaft_engl=$nation->engltext;
//Nachnamen der Pruefer holden
$person = new person();
$mitarbeiter = new mitarbeiter();
$student= new student($row->student_uid);
$studiengang = new studiengang($student->studiengang_kz);
$akadgrad = new akadgrad($row->akadgrad_id);
$nation=new nation($student->geburtsnation);
$geburtsnation=$nation->kurztext;
$geburtsnation_engl=$nation->engltext;
$nation->load($student->staatsbuergerschaft);
$staatsbuergerschaft=$nation->kurztext;
$staatsbuergerschaft_engl=$nation->engltext;
if($mitarbeiter->load($row->vorsitz))
$studiengang = new studiengang($student->studiengang_kz);
$akadgrad = new akadgrad($row->akadgrad_id);
$vorsitz_geschlecht = '';
if($mitarbeiter->load($row->vorsitz))
{
$vorsitz = $mitarbeiter->titelpre.' '.$mitarbeiter->vorname;
$vorsitz .= ' '.$mitarbeiter->nachname.' '.$mitarbeiter->titelpost;
$vorsitz = trim($vorsitz);
$vorsitz_geschlecht = $mitarbeiter->geschlecht;
}
if($person->load($row->pruefer1))
$pruefer1 = trim($person->titelpre.' '.$person->vorname.' '.$person->nachname.' '.$person->titelpost);
if($person->load($row->pruefer2))
$pruefer2 = trim($person->titelpre.' '.$person->vorname.' '.$person->nachname.' '.$person->titelpost);
if($person->load($row->pruefer3))
$pruefer3 = trim($person->titelpre.' '.$person->vorname.' '.$person->nachname.' '.$person->titelpost);
$qry = "SELECT * FROM public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid) WHERE funktion_kurzbz='rek'";
$rektor = '';
$db = new basis_db();
$db2 = new basis_db();
if($db->db_query($qry))
if($row_rek = $db->db_fetch_object())
$rektor = $row_rek->titelpre.' '.$row_rek->vorname.' '.$row_rek->nachname.' '.$row_rek->titelpost;
$qry = "SELECT
*
FROM
(
SELECT
titel as themenbereich, ende, projektarbeit_id, note, beginn
FROM
lehre.tbl_projektarbeit a
WHERE
student_uid=".$db->db_add_param($student->uid)."
AND projekttyp_kurzbz in('Bachelor','Diplom','Master','Dissertation','Lizenziat','Magister')
AND a.final=true
ORDER BY beginn DESC, projektarbeit_id ASC LIMIT 2
) as a
ORDER BY beginn asc";
$themenbereich='';
$datum_projekt='';
$betreuer = '';
$betreuer_2 = '';
$themenbereich_2 = '';
$note = '';
$note2='';
$datum_projekt2='';
if($result_proj = $db->db_query($qry))
{
if($row_proj = $db->db_fetch_object($result_proj))
{
$vorsitz = trim($mitarbeiter->titelpre.' '.$mitarbeiter->vorname.' '.$mitarbeiter->nachname.' '.$mitarbeiter->titelpost);
$vorsitz_geschlecht = $mitarbeiter->geschlecht;
}
if($person->load($row->pruefer1))
$pruefer1 = trim($person->titelpre.' '.$person->vorname.' '.$person->nachname.' '.$person->titelpost);
if($person->load($row->pruefer2))
$pruefer2 = trim($person->titelpre.' '.$person->vorname.' '.$person->nachname.' '.$person->titelpost);
if($person->load($row->pruefer3))
$pruefer3 = trim($person->titelpre.' '.$person->vorname.' '.$person->nachname.' '.$person->titelpost);
$qry = "SELECT * FROM public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid) WHERE funktion_kurzbz='rek'";
$rektor = '';
$db = new basis_db();
$db2 = new basis_db();
if($db->db_query($qry))
if($row_rek = $db->db_fetch_object())
$rektor = $row_rek->titelpre.' '.$row_rek->vorname.' '.$row_rek->nachname.' '.$row_rek->titelpost;
$qry = "SELECT
*
$qry_bet = "SELECT titelpre, vorname, nachname, titelpost
FROM
(
SELECT
titel as themenbereich, ende, projektarbeit_id, note, beginn
lehre.tbl_projektbetreuer
JOIN public.tbl_person USING(person_id)
WHERE
projektarbeit_id=".$db->db_add_param($row_proj->projektarbeit_id)."
AND (betreuerart_kurzbz in('Erstbegutachter', 'Erstbetreuer', 'Betreuer', 'Begutacher'))
LIMIT 1";
if($db2->db_query($qry_bet))
if($row_bet = $db2->db_fetch_object())
$betreuer = $row_bet->titelpre.' '.$row_bet->vorname.' '.$row_bet->nachname.' '.$row_bet->titelpost;
$themenbereich = $row_proj->themenbereich;
$note = (isset($note_arr[$row_proj->note])?$note_arr[$row_proj->note]:$row_proj->note);
$datum_projekt = $datum_obj->convertISODate($row_proj->ende);
$projektarbeit = new projektarbeit($row_proj->projektarbeit_id);
$lehreinheit = new lehreinheit($projektarbeit->lehreinheit_id);
$lehrveranstaltung = new lehrveranstaltung($lehreinheit->lehrveranstaltung_id);
$projektnote = new note($note);
}
if($row_proj = $db->db_fetch_object($result_proj))
{
$qry_bet = "SELECT titelpre, vorname, nachname, titelpost
FROM
lehre.tbl_projektarbeit a
lehre.tbl_projektbetreuer
JOIN public.tbl_person USING(person_id)
WHERE
student_uid=".$db->db_add_param($student->uid)."
AND projekttyp_kurzbz in('Bachelor','Diplom','Master','Dissertation','Lizenziat','Magister')
AND a.final=true
ORDER BY beginn DESC, projektarbeit_id ASC LIMIT 2
) as a
ORDER BY beginn asc";
$themenbereich='';
$datum_projekt='';
$betreuer = '';
$betreuer_2 = '';
$themenbereich_2 = '';
$note = '';
$note2='';
$datum_projekt2='';
projektarbeit_id=".$db->db_add_param($row_proj->projektarbeit_id, FHC_INTEGER)."
AND (betreuerart_kurzbz in('Erstbegutachter', 'Erstbetreuer', 'Betreuer', 'Begutacher'))
LIMIT 1";
if($db2->db_query($qry_bet))
if($row_bet = $db2->db_fetch_object())
$betreuer_2 = $row_bet->titelpre.' '.$row_bet->vorname.' '.$row_bet->nachname.' '.$row_bet->titelpost;
if($result_proj = $db->db_query($qry))
{
if($row_proj = $db->db_fetch_object($result_proj))
{
$qry_bet = "SELECT titelpre, vorname, nachname, titelpost FROM lehre.tbl_projektbetreuer JOIN public.tbl_person USING(person_id) WHERE projektarbeit_id='$row_proj->projektarbeit_id' AND (betreuerart_kurzbz in('Erstbegutachter', 'Erstbetreuer', 'Betreuer', 'Begutacher')) LIMIT 1";
if($db2->db_query($qry_bet))
if($row_bet = $db2->db_fetch_object())
$betreuer = $row_bet->titelpre.' '.$row_bet->vorname.' '.$row_bet->nachname.' '.$row_bet->titelpost;
$themenbereich = $row_proj->themenbereich;
$note = (isset($note_arr[$row_proj->note])?$note_arr[$row_proj->note]:$row_proj->note);
$datum_projekt = $datum_obj->convertISODate($row_proj->ende);
$projektarbeit = new projektarbeit($row_proj->projektarbeit_id);
$lehreinheit = new lehreinheit($projektarbeit->lehreinheit_id);
$lehrveranstaltung = new lehrveranstaltung($lehreinheit->lehrveranstaltung_id);
$projektnote = new note($note);
}
if($row_proj = $db->db_fetch_object($result_proj))
{
$qry_bet = "SELECT titelpre, vorname, nachname, titelpost FROM lehre.tbl_projektbetreuer JOIN public.tbl_person USING(person_id) WHERE projektarbeit_id='$row_proj->projektarbeit_id' AND (betreuerart_kurzbz in('Erstbegutachter', 'Erstbetreuer', 'Betreuer', 'Begutacher')) LIMIT 1";
if($db2->db_query($qry_bet))
if($row_bet = $db2->db_fetch_object())
$betreuer_2 = $row_bet->titelpre.' '.$row_bet->vorname.' '.$row_bet->nachname.' '.$row_bet->titelpost;
$themenbereich_2 = $row_proj->themenbereich;
$note2 = (isset($note_arr[$row_proj->note])?$note_arr[$row_proj->note]:$row_proj->note);
$datum_projekt2 = $datum_obj->convertISODate($row_proj->ende);
}
$themenbereich_2 = $row_proj->themenbereich;
$note2 = (isset($note_arr[$row_proj->note])?$note_arr[$row_proj->note]:$row_proj->note);
$datum_projekt2 = $datum_obj->convertISODate($row_proj->ende);
}
switch($student->anrede)
{
case 'Herr': $anrede_engl = 'Mr'; break;
case 'Frau': $anrede_engl = 'Ms'; break;
default: $anrede_engl = ''; break;
}
if($student->anrede == 'Herr')
$anrede = 'Herrn';
else
$anrede = $student->anrede;
if($row->sponsion=='')
$row->sponsion=$row->datum;
$oe = new organisationseinheit();
$parents = $oe->getParents($studiengang->oe_kurzbz);
$oe_parent = "";
foreach ($parents as $parent)
{
$oe_temp = new organisationseinheit();
$oe_temp->load($parent);
if($oe_temp->organisationseinheittyp_kurzbz == 'Fakultät')
{
$oe_parent = $oe_temp->bezeichnung;
break;
}
}
$studiengang_bezeichnung2 = explode(" ", $studiengang->bezeichnung, 2);
$name = trim($student->titelpre.' '.trim($student->vorname.' '.$student->vornamen).' '.$student->nachname.($student->titelpost!=''?', '.$student->titelpost:''));
//Wenn Lehrgang, dann Erhalter-KZ vor die Studiengangs-Kz hängen
if ($student->studiengang_kz<0)
{
$stg = new studiengang();
$stg->load($student->studiengang_kz);
$studiengang_kz = sprintf("%03s", $stg->erhalter_kz).sprintf("%04s", abs($student->studiengang_kz));
}
else
$studiengang_kz = sprintf("%04s", abs($student->studiengang_kz));
echo "\t<pruefung>".'
<abschlusspruefung_id><![CDATA['.$row->abschlusspruefung_id.']]></abschlusspruefung_id>
<student_uid><![CDATA['.$row->student_uid.']]></student_uid>
<vorsitz><![CDATA['.$row->vorsitz.']]></vorsitz>
<vorsitz_nachname><![CDATA['.$vorsitz.']]></vorsitz_nachname>
<vorsitz_geschlecht><![CDATA['.$vorsitz_geschlecht.']]></vorsitz_geschlecht>
<pruefer1><![CDATA['.$row->pruefer1.']]></pruefer1>
<pruefer1_nachname><![CDATA['.$pruefer1.']]></pruefer1_nachname>
<pruefer2><![CDATA['.$row->pruefer2.']]></pruefer2>
<pruefer2_nachname><![CDATA['.$pruefer2.']]></pruefer2_nachname>
<pruefer3><![CDATA['.$row->pruefer3.']]></pruefer3>
<pruefer3_nachname><![CDATA['.$pruefer3.']]></pruefer3_nachname>
<abschlussbeurteilung_kurzbz><![CDATA['.($row->abschlussbeurteilung_kurzbz!=''?$abschlussbeurteilung_arr[$row->abschlussbeurteilung_kurzbz]:'').']]></abschlussbeurteilung_kurzbz>
<abschlussbeurteilung_kurzbzEng><![CDATA['.($row->abschlussbeurteilung_kurzbz!=''?$abschlussbeurteilung_arrEng[$row->abschlussbeurteilung_kurzbz]:'').']]></abschlussbeurteilung_kurzbzEng>
<akadgrad_id><![CDATA['.$row->akadgrad_id.']]></akadgrad_id>
<datum><![CDATA['.$datum_obj->convertISODate($row->datum).']]></datum>
<datum_iso><![CDATA['.$row->datum.']]></datum_iso>
<uhrzeit><![CDATA['.$row->uhrzeit.']]></uhrzeit>
<sponsion><![CDATA['.$datum_obj->convertISODate($row->sponsion).']]></sponsion>
<sponsion_iso><![CDATA['.$row->sponsion.']]></sponsion_iso>
<pruefungstyp_kurzbz><![CDATA['.$row->pruefungstyp_kurzbz.']]></pruefungstyp_kurzbz>
<pruefungstyp_beschreibung><![CDATA['.$row->beschreibung.']]></pruefungstyp_beschreibung>
<anrede><![CDATA['.$anrede.']]></anrede>
<anrede_engl><![CDATA['.$anrede_engl.']]></anrede_engl>
<name><![CDATA['.$name.']]></name>
<titelpre><![CDATA['.$student->titelpre.']]></titelpre>
<vorname><![CDATA['.$student->vorname.']]></vorname>
<vornamen><![CDATA['.$student->vornamen.']]></vornamen>
<nachname><![CDATA['.$student->nachname.']]></nachname>
<titelpost><![CDATA['.$student->titelpost.']]></titelpost>
<matrikelnr><![CDATA['.trim($student->matrikelnr).']]></matrikelnr>
<gebdatum_iso><![CDATA['.$student->gebdatum.']]></gebdatum_iso>
<geschlecht><![CDATA['.$student->geschlecht.']]></geschlecht>
<gebdatum><![CDATA['.$datum_obj->convertISODate($student->gebdatum).']]></gebdatum>
<gebort><![CDATA['.$student->gebort.']]></gebort>
<staatsbuergerschaft><![CDATA['.$staatsbuergerschaft.']]></staatsbuergerschaft>
<staatsbuergerschaft_engl><![CDATA['.$staatsbuergerschaft_engl.']]></staatsbuergerschaft_engl>
<geburtsnation><![CDATA['.$geburtsnation.']]></geburtsnation>
<geburtsnation_engl><![CDATA['.$geburtsnation_engl.']]></geburtsnation_engl>
<studiengang_kz><![CDATA['.$studiengang_kz.']]></studiengang_kz>
<stg_bezeichnung><![CDATA['.$studiengang->bezeichnung.']]></stg_bezeichnung>
<stg_bezeichnung2><![CDATA['.$studiengang_bezeichnung2[1].']]></stg_bezeichnung2>
<stg_bezeichnung_engl><![CDATA['.$studiengang->english.']]></stg_bezeichnung_engl>
<stg_oe_parent><![CDATA['.$oe_parent.']]></stg_oe_parent>
<stg_art><![CDATA['.$studiengang->typ.']]></stg_art>
<akadgrad_kurzbz><![CDATA['.$akadgrad->akadgrad_kurzbz.']]></akadgrad_kurzbz>
<titel><![CDATA['.$akadgrad->titel.']]></titel>
<datum_aktuell><![CDATA['.date('d.m.Y').']]></datum_aktuell>
<anmerkung><![CDATA['.$row->anmerkung.']]></anmerkung>
<bescheidbgbl1><![CDATA['.$studiengang->bescheidbgbl1.']]></bescheidbgbl1>
<bescheidbgbl2><![CDATA['.$studiengang->bescheidbgbl2.']]></bescheidbgbl2>
<bescheidgz><![CDATA['.$studiengang->bescheidgz.']]></bescheidgz>
<bescheidvom><![CDATA['.$datum_obj->convertISODate($studiengang->bescheidvom).']]></bescheidvom>
<titelbescheidvom><![CDATA['.$datum_obj->convertISODate($studiengang->titelbescheidvom).']]></titelbescheidvom>
<rektor><![CDATA['.$rektor.']]></rektor>
<themenbereich><![CDATA['.$themenbereich.']]></themenbereich>
<projekt_typ><![CDATA['.$projektarbeit->projekttyp_bezeichnung.']]></projekt_typ>
<projekt_fach><![CDATA['.$lehrveranstaltung->bezeichnung.']]></projekt_fach>
<projekt_titel><![CDATA['.$projektarbeit->titel.']]></projekt_titel>
<themenbereich_2><![CDATA['.$themenbereich_2.']]></themenbereich_2>
<betreuer><![CDATA['.$betreuer.']]></betreuer>
<betreuer_2><![CDATA['.$betreuer_2.']]></betreuer_2>
<note><![CDATA['.$note.']]></note>
<note_bezeichnung><![CDATA['.$projektnote->bezeichnung.']]></note_bezeichnung>
<note2><![CDATA['.$note2.']]></note2>
<notekommpruef><![CDATA['.$row->note.']]></notekommpruef>
<datum_projekt><![CDATA['.$datum_projekt.']]></datum_projekt>
<datum_projekt2><![CDATA['.$datum_projekt.']]></datum_projekt2>
<ort_datum><![CDATA['.date('d.m.Y').']]></ort_datum>';
echo "\n\t</pruefung>";
}
switch($student->anrede)
{
case 'Herr': $anrede_engl = 'Mr'; break;
case 'Frau': $anrede_engl = 'Ms'; break;
default: $anrede_engl = ''; break;
}
if($student->anrede == 'Herr')
$anrede = 'Herrn';
else
$anrede = $student->anrede;
if($row->sponsion=='')
$row->sponsion=$row->datum;
$oe = new organisationseinheit();
$parents = $oe->getParents($studiengang->oe_kurzbz);
$oe_parent = "";
foreach ($parents as $parent)
{
$oe_temp = new organisationseinheit();
$oe_temp->load($parent);
if($oe_temp->organisationseinheittyp_kurzbz == 'Fakultät')
{
$oe_parent = $oe_temp->bezeichnung;
break;
}
}
$studiengang_bezeichnung2 = explode(" ", $studiengang->bezeichnung, 2);
$name = $student->titelpre.' '.trim($student->vorname.' '.$student->vornamen).' '.$student->nachname;
$name .= ($student->titelpost!=''?', '.$student->titelpost:'');
$name = trim($name);
//Wenn Lehrgang, dann Erhalter-KZ vor die Studiengangs-Kz hängen
if ($student->studiengang_kz<0)
{
$stg = new studiengang();
$stg->load($student->studiengang_kz);
$studiengang_kz = sprintf("%03s", $stg->erhalter_kz).sprintf("%04s", abs($student->studiengang_kz));
}
else
$studiengang_kz = sprintf("%04s", abs($student->studiengang_kz));
echo "\t<pruefung>".'
<abschlusspruefung_id><![CDATA['.$row->abschlusspruefung_id.']]></abschlusspruefung_id>
<student_uid><![CDATA['.$row->student_uid.']]></student_uid>
<vorsitz><![CDATA['.$row->vorsitz.']]></vorsitz>
<vorsitz_nachname><![CDATA['.$vorsitz.']]></vorsitz_nachname>
<vorsitz_geschlecht><![CDATA['.$vorsitz_geschlecht.']]></vorsitz_geschlecht>
<pruefer1><![CDATA['.$row->pruefer1.']]></pruefer1>
<pruefer1_nachname><![CDATA['.$pruefer1.']]></pruefer1_nachname>
<pruefer2><![CDATA['.$row->pruefer2.']]></pruefer2>
<pruefer2_nachname><![CDATA['.$pruefer2.']]></pruefer2_nachname>
<pruefer3><![CDATA['.$row->pruefer3.']]></pruefer3>
<pruefer3_nachname><![CDATA['.$pruefer3.']]></pruefer3_nachname>
<abschlussbeurteilung_kurzbz><![CDATA['.($row->abschlussbeurteilung_kurzbz!=''?$abschlussbeurteilung_arr[$row->abschlussbeurteilung_kurzbz]:'').']]></abschlussbeurteilung_kurzbz>
<abschlussbeurteilung_kurzbzEng><![CDATA['.($row->abschlussbeurteilung_kurzbz!=''?$abschlussbeurteilung_arrEng[$row->abschlussbeurteilung_kurzbz]:'').']]></abschlussbeurteilung_kurzbzEng>
<akadgrad_id><![CDATA['.$row->akadgrad_id.']]></akadgrad_id>
<datum><![CDATA['.$datum_obj->convertISODate($row->datum).']]></datum>
<datum_iso><![CDATA['.$row->datum.']]></datum_iso>
<uhrzeit><![CDATA['.$row->uhrzeit.']]></uhrzeit>
<sponsion><![CDATA['.$datum_obj->convertISODate($row->sponsion).']]></sponsion>
<sponsion_iso><![CDATA['.$row->sponsion.']]></sponsion_iso>
<pruefungstyp_kurzbz><![CDATA['.$row->pruefungstyp_kurzbz.']]></pruefungstyp_kurzbz>
<pruefungstyp_beschreibung><![CDATA['.$row->beschreibung.']]></pruefungstyp_beschreibung>
<anrede><![CDATA['.$anrede.']]></anrede>
<anrede_engl><![CDATA['.$anrede_engl.']]></anrede_engl>
<name><![CDATA['.$name.']]></name>
<titelpre><![CDATA['.$student->titelpre.']]></titelpre>
<vorname><![CDATA['.$student->vorname.']]></vorname>
<vornamen><![CDATA['.$student->vornamen.']]></vornamen>
<nachname><![CDATA['.$student->nachname.']]></nachname>
<titelpost><![CDATA['.$student->titelpost.']]></titelpost>
<matrikelnr><![CDATA['.trim($student->matrikelnr).']]></matrikelnr>
<gebdatum_iso><![CDATA['.$student->gebdatum.']]></gebdatum_iso>
<geschlecht><![CDATA['.$student->geschlecht.']]></geschlecht>
<gebdatum><![CDATA['.$datum_obj->convertISODate($student->gebdatum).']]></gebdatum>
<gebort><![CDATA['.$student->gebort.']]></gebort>
<staatsbuergerschaft><![CDATA['.$staatsbuergerschaft.']]></staatsbuergerschaft>
<staatsbuergerschaft_engl><![CDATA['.$staatsbuergerschaft_engl.']]></staatsbuergerschaft_engl>
<geburtsnation><![CDATA['.$geburtsnation.']]></geburtsnation>
<geburtsnation_engl><![CDATA['.$geburtsnation_engl.']]></geburtsnation_engl>
<studiengang_kz><![CDATA['.$studiengang_kz.']]></studiengang_kz>
<stg_bezeichnung><![CDATA['.$studiengang->bezeichnung.']]></stg_bezeichnung>
<stg_bezeichnung2><![CDATA['.(isset($studiengang_bezeichnung2[1])?$studiengang_bezeichnung2[1]:'').']]></stg_bezeichnung2>
<stg_bezeichnung_engl><![CDATA['.$studiengang->english.']]></stg_bezeichnung_engl>
<stg_oe_parent><![CDATA['.$oe_parent.']]></stg_oe_parent>
<stg_art><![CDATA['.$studiengang->typ.']]></stg_art>
<akadgrad_kurzbz><![CDATA['.$akadgrad->akadgrad_kurzbz.']]></akadgrad_kurzbz>
<titel><![CDATA['.$akadgrad->titel.']]></titel>
<datum_aktuell><![CDATA['.date('d.m.Y').']]></datum_aktuell>
<anmerkung><![CDATA['.$row->anmerkung.']]></anmerkung>
<bescheidbgbl1><![CDATA['.$studiengang->bescheidbgbl1.']]></bescheidbgbl1>
<bescheidbgbl2><![CDATA['.$studiengang->bescheidbgbl2.']]></bescheidbgbl2>
<bescheidgz><![CDATA['.$studiengang->bescheidgz.']]></bescheidgz>
<bescheidvom><![CDATA['.$datum_obj->convertISODate($studiengang->bescheidvom).']]></bescheidvom>
<titelbescheidvom><![CDATA['.$datum_obj->convertISODate($studiengang->titelbescheidvom).']]></titelbescheidvom>
<rektor><![CDATA['.$rektor.']]></rektor>
<themenbereich><![CDATA['.$themenbereich.']]></themenbereich>
<projekt_typ><![CDATA['.$projektarbeit->projekttyp_bezeichnung.']]></projekt_typ>
<projekt_fach><![CDATA['.$lehrveranstaltung->bezeichnung.']]></projekt_fach>
<projekt_titel><![CDATA['.$projektarbeit->titel.']]></projekt_titel>
<themenbereich_2><![CDATA['.$themenbereich_2.']]></themenbereich_2>
<betreuer><![CDATA['.$betreuer.']]></betreuer>
<betreuer_2><![CDATA['.$betreuer_2.']]></betreuer_2>
<note><![CDATA['.$note.']]></note>
<note_bezeichnung><![CDATA['.$projektnote->bezeichnung.']]></note_bezeichnung>
<note2><![CDATA['.$note2.']]></note2>
<notekommpruef><![CDATA['.$row->note.']]></notekommpruef>
<datum_projekt><![CDATA['.$datum_projekt.']]></datum_projekt>
<datum_projekt2><![CDATA['.$datum_projekt.']]></datum_projekt2>
<ort_datum><![CDATA['.date('d.m.Y').']]></ort_datum>';
echo "\n\t</pruefung>";
}
// ----------------------------------- RDF --------------------------------------
if ($xmlformat=='rdf')
@@ -314,32 +345,32 @@ if ($xmlformat=='rdf')
$pruefer3 = $person->nachname;
echo '
<RDF:li>
<RDF:Description id="'.$row->abschlusspruefung_id.'" about="'.$rdf_url.'/'.$row->abschlusspruefung_id.'" >
<ABSCHLUSSPRUEFUNG:abschlusspruefung_id><![CDATA['.$row->abschlusspruefung_id.']]></ABSCHLUSSPRUEFUNG:abschlusspruefung_id>
<ABSCHLUSSPRUEFUNG:student_uid><![CDATA['.$row->student_uid.']]></ABSCHLUSSPRUEFUNG:student_uid>
<ABSCHLUSSPRUEFUNG:vorsitz><![CDATA['.$row->vorsitz.']]></ABSCHLUSSPRUEFUNG:vorsitz>
<ABSCHLUSSPRUEFUNG:vorsitz_nachname><![CDATA['.$vorsitz.']]></ABSCHLUSSPRUEFUNG:vorsitz_nachname>
<ABSCHLUSSPRUEFUNG:pruefer1><![CDATA['.$row->pruefer1.']]></ABSCHLUSSPRUEFUNG:pruefer1>
<ABSCHLUSSPRUEFUNG:pruefer1_nachname><![CDATA['.$pruefer1.']]></ABSCHLUSSPRUEFUNG:pruefer1_nachname>
<ABSCHLUSSPRUEFUNG:pruefer2><![CDATA['.$row->pruefer2.']]></ABSCHLUSSPRUEFUNG:pruefer2>
<ABSCHLUSSPRUEFUNG:pruefer2_nachname><![CDATA['.$pruefer2.']]></ABSCHLUSSPRUEFUNG:pruefer2_nachname>
<ABSCHLUSSPRUEFUNG:pruefer3><![CDATA['.$row->pruefer3.']]></ABSCHLUSSPRUEFUNG:pruefer3>
<ABSCHLUSSPRUEFUNG:pruefer3_nachname><![CDATA['.$pruefer3.']]></ABSCHLUSSPRUEFUNG:pruefer3_nachname>
<ABSCHLUSSPRUEFUNG:abschlussbeurteilung_kurzbz><![CDATA['.$row->abschlussbeurteilung_kurzbz.']]></ABSCHLUSSPRUEFUNG:abschlussbeurteilung_kurzbz>
<ABSCHLUSSPRUEFUNG:notekommpruef><![CDATA['.$row->note.']]></ABSCHLUSSPRUEFUNG:notekommpruef>
<ABSCHLUSSPRUEFUNG:akadgrad_id><![CDATA['.$row->akadgrad_id.']]></ABSCHLUSSPRUEFUNG:akadgrad_id>
<ABSCHLUSSPRUEFUNG:datum><![CDATA['.$datum_obj->convertISODate($row->datum).']]></ABSCHLUSSPRUEFUNG:datum>
<ABSCHLUSSPRUEFUNG:datum_iso><![CDATA['.$row->datum.']]></ABSCHLUSSPRUEFUNG:datum_iso>
<ABSCHLUSSPRUEFUNG:uhrzeit><![CDATA['.$row->uhrzeit.']]></ABSCHLUSSPRUEFUNG:uhrzeit>
<ABSCHLUSSPRUEFUNG:sponsion><![CDATA['.$datum_obj->convertISODate($row->sponsion).']]></ABSCHLUSSPRUEFUNG:sponsion>
<ABSCHLUSSPRUEFUNG:sponsion_iso><![CDATA['.$row->sponsion.']]></ABSCHLUSSPRUEFUNG:sponsion_iso>
<ABSCHLUSSPRUEFUNG:pruefungstyp_kurzbz><![CDATA['.$row->pruefungstyp_kurzbz.']]></ABSCHLUSSPRUEFUNG:pruefungstyp_kurzbz>
<ABSCHLUSSPRUEFUNG:beschreibung><![CDATA['.$row->beschreibung.']]></ABSCHLUSSPRUEFUNG:beschreibung>
<ABSCHLUSSPRUEFUNG:anmerkung><![CDATA['.$row->anmerkung.']]></ABSCHLUSSPRUEFUNG:anmerkung>
</RDF:Description>
</RDF:li>
';
<RDF:li>
<RDF:Description id="'.$row->abschlusspruefung_id.'" about="'.$rdf_url.'/'.$row->abschlusspruefung_id.'" >
<ABSCHLUSSPRUEFUNG:abschlusspruefung_id><![CDATA['.$row->abschlusspruefung_id.']]></ABSCHLUSSPRUEFUNG:abschlusspruefung_id>
<ABSCHLUSSPRUEFUNG:student_uid><![CDATA['.$row->student_uid.']]></ABSCHLUSSPRUEFUNG:student_uid>
<ABSCHLUSSPRUEFUNG:vorsitz><![CDATA['.$row->vorsitz.']]></ABSCHLUSSPRUEFUNG:vorsitz>
<ABSCHLUSSPRUEFUNG:vorsitz_nachname><![CDATA['.$vorsitz.']]></ABSCHLUSSPRUEFUNG:vorsitz_nachname>
<ABSCHLUSSPRUEFUNG:pruefer1><![CDATA['.$row->pruefer1.']]></ABSCHLUSSPRUEFUNG:pruefer1>
<ABSCHLUSSPRUEFUNG:pruefer1_nachname><![CDATA['.$pruefer1.']]></ABSCHLUSSPRUEFUNG:pruefer1_nachname>
<ABSCHLUSSPRUEFUNG:pruefer2><![CDATA['.$row->pruefer2.']]></ABSCHLUSSPRUEFUNG:pruefer2>
<ABSCHLUSSPRUEFUNG:pruefer2_nachname><![CDATA['.$pruefer2.']]></ABSCHLUSSPRUEFUNG:pruefer2_nachname>
<ABSCHLUSSPRUEFUNG:pruefer3><![CDATA['.$row->pruefer3.']]></ABSCHLUSSPRUEFUNG:pruefer3>
<ABSCHLUSSPRUEFUNG:pruefer3_nachname><![CDATA['.$pruefer3.']]></ABSCHLUSSPRUEFUNG:pruefer3_nachname>
<ABSCHLUSSPRUEFUNG:abschlussbeurteilung_kurzbz><![CDATA['.$row->abschlussbeurteilung_kurzbz.']]></ABSCHLUSSPRUEFUNG:abschlussbeurteilung_kurzbz>
<ABSCHLUSSPRUEFUNG:notekommpruef><![CDATA['.$row->note.']]></ABSCHLUSSPRUEFUNG:notekommpruef>
<ABSCHLUSSPRUEFUNG:akadgrad_id><![CDATA['.$row->akadgrad_id.']]></ABSCHLUSSPRUEFUNG:akadgrad_id>
<ABSCHLUSSPRUEFUNG:datum><![CDATA['.$datum_obj->convertISODate($row->datum).']]></ABSCHLUSSPRUEFUNG:datum>
<ABSCHLUSSPRUEFUNG:datum_iso><![CDATA['.$row->datum.']]></ABSCHLUSSPRUEFUNG:datum_iso>
<ABSCHLUSSPRUEFUNG:uhrzeit><![CDATA['.$row->uhrzeit.']]></ABSCHLUSSPRUEFUNG:uhrzeit>
<ABSCHLUSSPRUEFUNG:sponsion><![CDATA['.$datum_obj->convertISODate($row->sponsion).']]></ABSCHLUSSPRUEFUNG:sponsion>
<ABSCHLUSSPRUEFUNG:sponsion_iso><![CDATA['.$row->sponsion.']]></ABSCHLUSSPRUEFUNG:sponsion_iso>
<ABSCHLUSSPRUEFUNG:pruefungstyp_kurzbz><![CDATA['.$row->pruefungstyp_kurzbz.']]></ABSCHLUSSPRUEFUNG:pruefungstyp_kurzbz>
<ABSCHLUSSPRUEFUNG:beschreibung><![CDATA['.$row->beschreibung.']]></ABSCHLUSSPRUEFUNG:beschreibung>
<ABSCHLUSSPRUEFUNG:anmerkung><![CDATA['.$row->anmerkung.']]></ABSCHLUSSPRUEFUNG:anmerkung>
</RDF:Description>
</RDF:li>
';
}
echo '
<RDF:RDF
@@ -347,7 +378,7 @@ if ($xmlformat=='rdf')
xmlns:ABSCHLUSSPRUEFUNG="'.$rdf_url.'/rdf#"
>
<RDF:Seq about="'.$rdf_url.'/liste">
<RDF:Seq about="'.$rdf_url.'/liste">
';
if(isset($_GET['student_uid']))
@@ -370,7 +401,7 @@ if ($xmlformat=='rdf')
echo ' </RDF:Seq>';
echo '</RDF:RDF>';
} //endof xmlformat==rdf
}
// ----------------------------------- XML --------------------------------------
elseif ($xmlformat=='xml')
{
@@ -412,5 +443,5 @@ elseif ($xmlformat=='xml')
die('Student_uid oder Abschlusspruefung_id muss uebergeben werden');
echo "\n</abschlusspruefung>";
} //endof xmlformat==xml
}
?>
+245
View File
@@ -0,0 +1,245 @@
<?php
/* Copyright (C) 2018 fhcomplete.org
*
* 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
*/
/**
* Testclient fuer Abfrage der REST Webservice Schnittstelle des Datenverbundes
*/
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/basis_db.class.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/dvb.class.php');
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if (!$rechte->isBerechtigt('admin'))
die($rechte->errormsg);
$db = new basis_db();
if (isset($_GET['action']))
$action = $_GET['action'];
else
$action = 'getBySvnr';
$username = filter_input(INPUT_POST, 'username');
$password = filter_input(INPUT_POST, 'password');
$bildungseinrichtung = filter_input(INPUT_POST, 'bildungseinrichtung');
$studienjahr = filter_input(INPUT_POST, 'studienjahr');
$matrikelnr = filter_input(INPUT_POST, 'matrikelnummer');
$nachname = filter_input(INPUT_POST, 'nachname');
$vorname = filter_input(INPUT_POST, 'vorname');
$geburtsdatum = filter_input(INPUT_POST, 'geburtsdatum');
$geschlecht = filter_input(INPUT_POST, 'geschlecht');
$postleitzahl = filter_input(INPUT_POST, 'postleitzahl');
$staat = filter_input(INPUT_POST, 'staat');
$matura = filter_input(INPUT_POST, 'matura');
$svnr = filter_input(INPUT_POST, 'svnr');
$ersatzkennzeichen = filter_input(INPUT_POST, 'ersatzkennzeichen');
?><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Datenverbund-Client</title>
</head>
<body>
<h1>Testclient für Datenverbund-Webservice</h1>
<ul>
<li><a href="datenverbund_client.php?action=getOAuth">OAuth Token anfordern</a></li>
<li><a href="datenverbund_client.php?action=getBySvnr">Matrikelnummer nach SVNR suchen</a></li>
<li>
<a href="datenverbund_client.php?action=getByErsatzkennzeichen">
Matrikelnummer nach Ersatzkennzeichen suchen
</a>
</li>
<li><a href="datenverbund_client.php?action=getReservations">Matrikelnummer Reservierungen anzeigen</a></li>
<li><a href="datenverbund_client.php?action=getKontingent">Matrikelnummer Kontingent anfordern</a></li>
<li><a href="datenverbund_client.php?action=setMatrikelnummer">Matrikelnummer Vergabe melden</a></li>
</ul>
<br><br>
<form action="<?php echo $_SERVER['PHP_SELF'].'?action='.$action; ?>" method="post">
<table border="0" cellpadding="5" cellspacing="0" bgcolor="#E0E0E0">
<?php
/**
* Erstellt eine Tabllezeile mit Input-Feld
* @param string $name Name des Inputs.
* @param string $title Titel der Zeile.
* @param string $value Value des Inputs.
* @param string $hint Hinweistext zu Inputfeld.
* @param int $maxlength Maximallaenge des Eingabefeldes.
* @return void
*/
function printrow($name, $title, $value, $hint = '', $maxlength = 15)
{
global $db;
echo '
<tr>
<td align="right">'.$title.':</td>
<td>
<input name="'.$name.'" type="text" size="30" maxlength="'.$maxlength.'"
value="'.$db->convert_html_chars($value).'"> '.$hint.'
</td>
</tr>';
}
printrow('username', 'Username', $username, '', 100);
printrow('password', 'Passwort', $password, '', 100);
switch($action)
{
case 'getOAuth':
break;
case 'getBySvnr':
printrow('svnr', 'SVNR', $svnr);
break;
case 'getByErsatzkennzeichen':
printrow('ersatzkennzeichen', 'Ersatzkennzeichen', $ersatzkennzeichen);
break;
case 'getReservations':
case 'getKontingent':
printrow(
'bildungseinrichtung',
'Bildungseinrichtung',
$bildungseinrichtung,
'Kurzzeichen der Bildungseinrichtung'
);
printrow('studienjahr', 'Studienjahr', $studienjahr, 'zB 2016 (für WS2016 und SS2017)', 4);
break;
case 'setMatrikelnummer':
printrow(
'bildungseinrichtung',
'Bildungseinrichtung',
$bildungseinrichtung,
'Kurzzeichen der Bildungseinrichtung'
);
printrow('matrikelnummer', 'Matrikelnummer', $matrikelnr);
printrow('nachname', 'Nachname', $nachname, '', 255);
printrow('vorname', 'Vorname', $vorname, '', 30);
printrow('geburtsdatum', 'Geburtsdatum', $geburtsdatum, 'Format: YYYYMMDD', 10);
printrow('geschlecht', 'Geschlecht', $geschlecht, 'Format: M | W', 1);
printrow('postleitzahl', 'Postleitzahl', $postleitzahl, '', 10);
printrow('staat', 'Staat', $staat, '1-3 Stellen Codex (zb A für Österreich)', 3);
printrow('svnr', 'SVNR', $staat);
printrow('matura', 'Maturadatum', $matura, 'Format: YYYYMMDD (optional)', 10);
break;
default:
echo "Unknown action";
break;
}
echo '
<tr>
<td align="right">Debug</td>
<td><input name="debug" type="checkbox" '.(isset($_POST['debug'])?'checked="checked"':'').' /></td>
</tr>';
?>
<tr>
<td align="right"></td>
<td>
<input type="submit" value=" Absenden " name="submit">
</td>
</tr>
</table>
</form>
<?php
if (isset($_REQUEST['submit']))
{
$dvb = new dvb($username, $password, isset($_POST['debug']));
switch ($action)
{
case 'getOAuth':
if ($dvb->authenticate())
echo '<br><b>OAuth Bearer Token:</b> '.$dvb->authentication->access_token;
else
echo '<br><b>Failed:</b> '.$dvb->errormsg;
break;
case 'getBySvnr':
$matrikelnr = $dvb->getMatrikelnrBySVNR($_POST['svnr']);
if ($matrikelnr !== false)
echo '<br><b>Matrikelnummer vorhanden:</b>'.$matrikelnr;
else
echo '<br><b>Matrikelnummer nicht vorhanden:</b>'.$dvb->errormsg;
break;
case 'getByErsatzkennzeichen':
$matrikelnr = $dvb->getMatrikelnrByErsatzkennzeichen($_POST['ersatzkennzeichen']);
if ($matrikelnr !== false)
echo '<br><b>Matrikelnummer vorhanden:</b>'.$matrikelnr;
else
echo '<br><b>Matrikelnummer nicht vorhanden:</b>'.$dvb->errormsg;
break;
case 'getReservations':
$reservierteNummern = $dvb->getReservations($_POST['bildungseinrichtung'], $_POST['studienjahr']);
if ($reservierteNummern !== false)
echo '<br><b>Reservierte Nummern:</b>'.print_r($reservierteNummern, true);
else
echo '<br><b>Fehlgeschlagen:</b>'.$dvb->errormsg;
break;
case 'getKontingent':
$kontingent = $dvb->getKontingent($_POST['bildungseinrichtung'], $_POST['studienjahr']);
if ($kontingent !== false)
echo '<br><b>Kontingent:</b>'.print_r($kontingent, true);
else
echo '<br><b>Fehlgeschlagen:</b>'.$dvb->errormsg;
break;
case 'setMatrikelnummer':
$person = new stdClass();
$person->matrikelnummer = $matrikelnummer;
$person->vorname = $vorname;
$person->nachname = $nachname;
$person->geburtsdatum = $geburtsdatum;
$person->geschlecht = $geschlecht;
$person->staat = $staat;
$person->plz = $postleitzahl;
$person->matura = $matura; // Optional
$person->svnr = $svnr; // Optional
if ($dvb->setMatrikelnummer($_POST['bildungseinrichtung'], $person))
echo '<br><b>Erfolgreich gemeldet</b>';
else
echo '<br><b>Fehlgeschlagen:</b>'.$dvb->errormsg;
break;
default:
echo "Unknown action";
break;
}
if (isset($_POST['debug']))
echo '<div style="color: gray">'.$dvb->debug_output.'</div>';
}
?>
</body>
</html>
+3 -2
View File
@@ -8,13 +8,14 @@
<li><a href="soap_test_ort.php">Ort / Raum</a></li>
<li><a href="soap_test_student.php">Studierendendaten</a></li>
<li><a href="soap_test_lvplan.php">LV-Plan</a></li>
<li><a href="soap_test_person.php">Personen</a></li>
<li><a href="soap_test_person.php">Personen</a></li>
</ul>
<h2>Sonstiges</h2>
<ul>
<li><a href="test_client.php">Soap Test Client</a></li>
<li><a href="stip_client.php">STIP Schnittstelle</a></li>
<li><a href="semesterticket_client.php">Semesterticket Wiener Linien</a></li>
<li><a href="datenverbund_client.php">Datenverbund - Matrikelnummer</a></li>
</ul>
<ul>
<li>Projekte</li>
@@ -23,4 +24,4 @@
<li>Ressource</li>
</ul>
</body>
</html>
</html>