From 61dcf61e9e295ca2fb866f88b6423068075c07ab Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Tue, 12 Jun 2018 11:47:48 +0200 Subject: [PATCH 1/4] =?UTF-8?q?exclude=20Abgewiesene=20ohne=20Status=20bes?= =?UTF-8?q?t=C3=A4tigt=20beim=20INteressenten,=20damit=20noch=20nicht=20ab?= =?UTF-8?q?geschickte=20Bewerbungen=20wieder=20in=20Liste=20sind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/views/system/infocenter/infocenterData.php | 1 + 1 file changed, 1 insertion(+) diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index 3f1dc5182..b012a0a1a 100755 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -63,6 +63,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", From e0bf5a084f862d46f79ee2505d731f7ed604f455 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Tue, 12 Jun 2018 18:04:37 +0200 Subject: [PATCH 2/4] Bakkurkunde und Diplomurkunde archivierbar --- content/student/studentoverlay.js.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index 4981da00c..c21069514 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -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; From fbcefcbd511c45d67e326c27fc002fd1af02a247 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 13 Jun 2018 18:40:07 +0200 Subject: [PATCH 3/4] =?UTF-8?q?Schnittstelle=20zum=20Datenverbund=20f?= =?UTF-8?q?=C3=BCr=20Abfrage=20und=20Vergabe=20von=20Matrikelnummern=20ink?= =?UTF-8?q?l.=20Testclient=20f=C3=BCr=20manuelle=20Abfrage=20der=20Daten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/dvb.class.php | 654 +++++++++++++++++++++++++++++++++++ soap/datenverbund_client.php | 245 +++++++++++++ soap/index.html | 5 +- 3 files changed, 902 insertions(+), 2 deletions(-) create mode 100644 include/dvb.class.php create mode 100644 soap/datenverbund_client.php diff --git a/include/dvb.class.php b/include/dvb.class.php new file mode 100644 index 000000000..fc9b26c1d --- /dev/null +++ b/include/dvb.class.php @@ -0,0 +1,654 @@ +, + */ +/** + * 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: + + + 12345678 + Max + Mustermann + M + 1999-02-19 + A + + + */ + $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 + + + A + 12345678 + 2017S + ABCD201093 + Bc. + Max + Mustermann + W + 1993-06-26 + TCH + + A + 1030 + Wien + Obere Bahngasse 20/12 + + + A + 1030 + Wien + Obere Bahngasse 20/12 + + + + 12345678 + Max + Mustermann + W + 1993-06-26 + TCH + + + */ + /* 200 - No Entry found + + */ + /* 401 Error Code Token Expired + { + "error": "invalid_token", + "error_description": "Access token expired: 64a58ef3-1a70-46e9-b44f-35cc5051ae8e" + } + */ + /* 400 Bad Request + + 318e1bc5-279d-43c4-af47-5e6df2ff5279 + + + ZD00001 + Z + + Der Server konnte die Anfrage nicht vearbeiten. + Required String parameter 'ersatzKennzeichen' is not present + + + + */ + + $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 + + + 793d44fa-5646-42b1-b0cb-f2f121b2f14f + + + 12345678 + 23456789 + + + */ + 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 = ' + + '.$uuid.' + + '.$anzahl.' + '.$bildungseinrichtung.' + '.$studienjahr.' + + + '; + + $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 = ' + + '.$uuid.' + + '.$bildungseinrichtung.' + '.$person->geburtsdatum.' + '.$person->geschlecht.' + '.$person->matrikelnummer.''; + if (isset($person->matura) && $person->matura != '') + $data .= ''.$person->matura.''; + else + $data .= '00000000'; + + $data .= ''.$person->nachname.''; + + if (isset($person->plz) && $person->plz != '') + $data .= ''.$person->plz.''; + + $data .= ''.$person->staat.''; + + if (isset($person->svnr) && $person->svnr != '') + $data .= ''.$person->svnr.''; + + $data .= ''.$person->vorname.''; + + if (isset($person->writeonerror) && $person->writeonerror === true) + $data .= 'J'; + + $data .= ' + + + '; + + $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 + + + b76e84a9-c0bd-494c-97cb-c4ab9cd452c5 + + + ZD01471 + 90 + UNI-Kennzeichen + UNI-Kennzeichen fehlt oder ungültig (FHTEST) + BRZ + FHTEST + + + AG21333 + 65 + Datum allg.Univ.reife + kein gültiges Datum oder Format + Korrektur Datum allg. Univ.reife oder 000000 angeben, falls nicht anwendbar + leer + + + ZD10073 + 90 + Matrikelnummer + aus ungültigem Kontingent + Korrektur der Matrikelnummer + 12345678 + + + + */ + /* 200 ok + + + 8b239582-6bc5-4193-ac79-2dcf9ec96439 + + + */ + 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
".date('Y-m-d H:i:s').': '.htmlentities($msg); + } +} diff --git a/soap/datenverbund_client.php b/soap/datenverbund_client.php new file mode 100644 index 000000000..0dc47c109 --- /dev/null +++ b/soap/datenverbund_client.php @@ -0,0 +1,245 @@ +, + */ +/** + * 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'); + +?> + + + + Datenverbund-Client + + +

Testclient für Datenverbund-Webservice

+ +

+
+ + + + + '; + } + + 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 ' + + + + '; + ?> + + + + + +
'.$title.': + '.$hint.' +
Debug
+ +
+
+authenticate()) + echo '
OAuth Bearer Token: '.$dvb->authentication->access_token; + else + echo '
Failed: '.$dvb->errormsg; + break; + + case 'getBySvnr': + $matrikelnr = $dvb->getMatrikelnrBySVNR($_POST['svnr']); + if ($matrikelnr !== false) + echo '
Matrikelnummer vorhanden:'.$matrikelnr; + else + echo '
Matrikelnummer nicht vorhanden:'.$dvb->errormsg; + break; + + case 'getByErsatzkennzeichen': + $matrikelnr = $dvb->getMatrikelnrByErsatzkennzeichen($_POST['ersatzkennzeichen']); + if ($matrikelnr !== false) + echo '
Matrikelnummer vorhanden:'.$matrikelnr; + else + echo '
Matrikelnummer nicht vorhanden:'.$dvb->errormsg; + break; + + case 'getReservations': + $reservierteNummern = $dvb->getReservations($_POST['bildungseinrichtung'], $_POST['studienjahr']); + + if ($reservierteNummern !== false) + echo '
Reservierte Nummern:'.print_r($reservierteNummern, true); + else + echo '
Fehlgeschlagen:'.$dvb->errormsg; + break; + + case 'getKontingent': + $kontingent = $dvb->getKontingent($_POST['bildungseinrichtung'], $_POST['studienjahr']); + + if ($kontingent !== false) + echo '
Kontingent:'.print_r($kontingent, true); + else + echo '
Fehlgeschlagen:'.$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 '
Erfolgreich gemeldet'; + else + echo '
Fehlgeschlagen:'.$dvb->errormsg; + break; + + default: + echo "Unknown action"; + break; + } + if (isset($_POST['debug'])) + echo '
'.$dvb->debug_output.'
'; +} + +?> + + diff --git a/soap/index.html b/soap/index.html index bad3ad150..3f086ac16 100644 --- a/soap/index.html +++ b/soap/index.html @@ -8,13 +8,14 @@
  • Ort / Raum
  • Studierendendaten
  • LV-Plan
  • -
  • Personen
  • +
  • Personen
  • Sonstiges

    • Projekte
    • @@ -23,4 +24,4 @@
    • Ressource
    - \ No newline at end of file + From 5b4d882bdb3f4c891004d8b6ead126d38a3e2540 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 14 Jun 2018 18:22:34 +0200 Subject: [PATCH 4/4] =?UTF-8?q?-=20PHP=20Notice=20behoben=20bei=20Studieng?= =?UTF-8?q?=C3=A4ngen=20ohne=20Leerzeichen=20-=20PHP=20Notice=20behoben=20?= =?UTF-8?q?bei=20Pr=C3=BCfern=20ohne=20geschlecht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rdf/abschlusspruefung.rdf.php | 505 ++++++++++++++++++---------------- 1 file changed, 268 insertions(+), 237 deletions(-) diff --git a/rdf/abschlusspruefung.rdf.php b/rdf/abschlusspruefung.rdf.php index 2571ed782..d06f1842d 100644 --- a/rdf/abschlusspruefung.rdf.php +++ b/rdf/abschlusspruefung.rdf.php @@ -19,16 +19,14 @@ * Andreas Oesterreicher and * Rudolf Hangl . */ -// 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 ''; $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".' - abschlusspruefung_id.']]> - student_uid.']]> - vorsitz.']]> - - - pruefer1.']]> - - pruefer2.']]> - - pruefer3.']]> - - abschlussbeurteilung_kurzbz!=''?$abschlussbeurteilung_arr[$row->abschlussbeurteilung_kurzbz]:'').']]> - abschlussbeurteilung_kurzbz!=''?$abschlussbeurteilung_arrEng[$row->abschlussbeurteilung_kurzbz]:'').']]> - akadgrad_id.']]> - convertISODate($row->datum).']]> - datum.']]> - uhrzeit.']]> - convertISODate($row->sponsion).']]> - sponsion.']]> - pruefungstyp_kurzbz.']]> - beschreibung.']]> - - - - titelpre.']]> - vorname.']]> - vornamen.']]> - nachname.']]> - titelpost.']]> - matrikelnr).']]> - gebdatum.']]> - geschlecht.']]> - convertISODate($student->gebdatum).']]> - gebort.']]> - - - - - - bezeichnung.']]> - - english.']]> - - typ.']]> - akadgrad_kurzbz.']]> - titel.']]> - - anmerkung.']]> - bescheidbgbl1.']]> - bescheidbgbl2.']]> - bescheidgz.']]> - convertISODate($studiengang->bescheidvom).']]> - convertISODate($studiengang->titelbescheidvom).']]> - - - projekttyp_bezeichnung.']]> - bezeichnung.']]> - titel.']]> - - - - - bezeichnung.']]> - - note.']]> - - - '; - - echo "\n\t"; } + 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".' + abschlusspruefung_id.']]> + student_uid.']]> + vorsitz.']]> + + + pruefer1.']]> + + pruefer2.']]> + + pruefer3.']]> + + abschlussbeurteilung_kurzbz!=''?$abschlussbeurteilung_arr[$row->abschlussbeurteilung_kurzbz]:'').']]> + abschlussbeurteilung_kurzbz!=''?$abschlussbeurteilung_arrEng[$row->abschlussbeurteilung_kurzbz]:'').']]> + akadgrad_id.']]> + convertISODate($row->datum).']]> + datum.']]> + uhrzeit.']]> + convertISODate($row->sponsion).']]> + sponsion.']]> + pruefungstyp_kurzbz.']]> + beschreibung.']]> + + + + titelpre.']]> + vorname.']]> + vornamen.']]> + nachname.']]> + titelpost.']]> + matrikelnr).']]> + gebdatum.']]> + geschlecht.']]> + convertISODate($student->gebdatum).']]> + gebort.']]> + + + + + + bezeichnung.']]> + + english.']]> + + typ.']]> + akadgrad_kurzbz.']]> + titel.']]> + + anmerkung.']]> + bescheidbgbl1.']]> + bescheidbgbl2.']]> + bescheidgz.']]> + convertISODate($studiengang->bescheidvom).']]> + convertISODate($studiengang->titelbescheidvom).']]> + + + projekttyp_bezeichnung.']]> + bezeichnung.']]> + titel.']]> + + + + + bezeichnung.']]> + + note.']]> + + + '; + + echo "\n\t"; +} // ----------------------------------- RDF -------------------------------------- if ($xmlformat=='rdf') @@ -314,32 +345,32 @@ if ($xmlformat=='rdf') $pruefer3 = $person->nachname; echo ' - - - abschlusspruefung_id.']]> - student_uid.']]> - vorsitz.']]> - - pruefer1.']]> - - pruefer2.']]> - - pruefer3.']]> - - abschlussbeurteilung_kurzbz.']]> - note.']]> - akadgrad_id.']]> - convertISODate($row->datum).']]> - datum.']]> - uhrzeit.']]> - convertISODate($row->sponsion).']]> - sponsion.']]> - pruefungstyp_kurzbz.']]> - beschreibung.']]> - anmerkung.']]> - - - '; + + + abschlusspruefung_id.']]> + student_uid.']]> + vorsitz.']]> + + pruefer1.']]> + + pruefer2.']]> + + pruefer3.']]> + + abschlussbeurteilung_kurzbz.']]> + note.']]> + akadgrad_id.']]> + convertISODate($row->datum).']]> + datum.']]> + uhrzeit.']]> + convertISODate($row->sponsion).']]> + sponsion.']]> + pruefungstyp_kurzbz.']]> + beschreibung.']]> + anmerkung.']]> + + + '; } echo ' - + '; if(isset($_GET['student_uid'])) @@ -370,7 +401,7 @@ if ($xmlformat=='rdf') echo ' '; echo ''; -} //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"; -} //endof xmlformat==xml +} ?>