From 6b99764af5385b77cba473290653360ea1121029 Mon Sep 17 00:00:00 2001 From: Karl Burkhart Date: Mon, 7 Nov 2011 14:47:40 +0000 Subject: [PATCH] Webservice zum Onlinekauf des Semestertickets --- soap/semesterticket.soap.php | 169 +++++++++++++++++++++++++++++++++ soap/semesterticket.wsdl.php | 72 ++++++++++++++ soap/semesterticket_client.php | 82 ++++++++++++++++ 3 files changed, 323 insertions(+) create mode 100644 soap/semesterticket.soap.php create mode 100644 soap/semesterticket.wsdl.php create mode 100644 soap/semesterticket_client.php diff --git a/soap/semesterticket.soap.php b/soap/semesterticket.soap.php new file mode 100644 index 000000000..946b52e3c --- /dev/null +++ b/soap/semesterticket.soap.php @@ -0,0 +1,169 @@ +, + * Andreas Oesterreicher and + * Karl Burkhart . + */ + +require_once('../config/vilesci.config.inc.php'); +require_once('../include/student.class.php'); + +ini_set("soap.wsdl_cache_enabled", "0"); + +$SOAPServer = new SoapServer(APP_ROOT."/soap/semesterticket.wsdl.php?".microtime()); +$SOAPServer->addFunction("verifyData"); +$SOAPServer->handle(); + +$fehler = ''; + +/** + * + * Nimmt Anfrage entgegen und überprüft ob Student auch wirklich Student ist (anhand Matrikelnummer) + * @param unknown_type $parameters + */ +function verifyData($parameters) +{ + global $fehler; + class foo{}; + + if (!$db = new basis_db()) + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); + + $obj = new foo(); + + if(!validateRequest($parameters)) + { + $obj->result = 'false'; + $obj->fehler = $fehler; + } + else + { + $student = new student(); + $student_uid = $student->getUidFromMatrikelnummer($parameters->matrikelnummer); + // hole prestudentID + $student->load($student_uid); + if($student->prestudent_id == '') + { + // es wurde kein student gefunden + $obj->result = 'false'; + $obj->fehler = '3'; + return $obj; + } + + // Übergabe von studiensemester -> z.b 11W, 12S auf WS2011, SS2012 + $year = mb_substr($parameters->semesterkuerzel, 0,2); + $semester = mb_substr($parameters->semesterkuerzel,2,1); + if($semester == 'S') + { + $semester = 'SS'; + } + else if($semester == 'W') + { + $semester= 'WS'; + } + else + { + // ungültiges Semester + $obj->result = 'false'; + $obj->fehler = '8'; + return $obj; + } + $studiensemester = $semester.'20'.$year; + + // letzten Status holen + $qry = "Select public.get_rolle_prestudent ('".$student->prestudent_id."', '".$studiensemester."')"; + + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $status=$row->get_rolle_prestudent; + } + } + if($status == 'Student' || $status == 'Diplomand') + { + $obj->result = 'true'; + $obj->fehler = ''; + } + else + { + $obj->result = 'false'; + $obj->fehler ='1'; + } + } + + return $obj; +} + +/** + * + * Prüft die übergebenen Parameter auf Richtigkeit + * @param $parameter + */ +function validateRequest($parameter) +{ + /** + * Fehlercodes + * 1: Kein aufrechtes Studium + * 2: Fehlerhafter Request + * 3: Student wurde nicht gefunden + * 4: Fehler Geburtsdatum + * 5: Fehler Postleitzahl + * 6: Fehler Vorname + * 7: Fehler Nachname + * 8: Fehler Semester + * 9: Fehler Matrikelnummer + */ + + global $fehler; + + if(mb_strlen($parameter->postleitzahl) > 10) + { + $fehler = '5'; + return false; + } + if(mb_strlen($parameter->vorname) > 255) + { + $fehler = '6'; + return false; + } + if(mb_strlen($parameter->name) > 255) + { + $fehler = '7'; + return false; + } + if($parameter->semesterkuerzel != '') + { + if(mb_strlen($parameter->semesterkuerzel) != 3 || ((mb_strpos($parameter->semesterkuerzel, 'W') != '2') && (mb_strpos($parameter->semesterkuerzel, 'S') != '2'))) + { + $fehler = '8'; + return false; + } + } + if(mb_strlen($parameter->matrikelnummer) > 15 || $parameter->matrikelnummer == '' || !is_numeric($parameter->matrikelnummer)) + { + $fehler = '9'; + return false; + } + + return true; +} + +?> + + diff --git a/soap/semesterticket.wsdl.php b/soap/semesterticket.wsdl.php new file mode 100644 index 000000000..737e20021 --- /dev/null +++ b/soap/semesterticket.wsdl.php @@ -0,0 +1,72 @@ +"; +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + " /> + + + \ No newline at end of file diff --git a/soap/semesterticket_client.php b/soap/semesterticket_client.php new file mode 100644 index 000000000..4104be5cf --- /dev/null +++ b/soap/semesterticket_client.php @@ -0,0 +1,82 @@ + + + + + + + STIP-Client + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
token:">
Matrikelnummer:">
Familienname:">
Vorname:">
Geburtsdatum:">
Postleitzahl:">
Semesterkuerzel:">
+ + +
+
+ + +token = $_REQUEST['token']; + $obj->matrikelnummer = $_REQUEST['matrikelnummer']; + $obj->name = $_REQUEST['name']; + $obj->vorname = $_REQUEST['vorname']; + $obj->geburtsdatum = $_REQUEST['geburtsdatum']; + $obj->postleitzahl = $_REQUEST['postleitzahl']; + $obj->semesterkuerzel = $_REQUEST['semesterkuerzel']; + $response = $client->verifyData($obj); + var_dump($response); + } + catch(SoapFault $fault) + { + echo "SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR; + } + +} + +?> \ No newline at end of file