From adb27735c9eca1bc8bd43d27fede7da7dba1a550 Mon Sep 17 00:00:00 2001 From: oesi Date: Wed, 22 Apr 2015 14:36:59 +0200 Subject: [PATCH] =?UTF-8?q?Stip=20Schnittstelle=20=C3=BCberarbeitet=20-=20?= =?UTF-8?q?korrektur=20der=20Passwortpruefung=20-=20Gesendete=20Daten=20we?= =?UTF-8?q?rden=20zus=C3=A4tzlich=20geloggt=20-=20Empfaenger=20bei=20Error?= =?UTF-8?q?=20korrigiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/global.config-default.inc.php | 5 + soap/stip.class.php | 142 ++++++++++++++------------- soap/stip.soap.php | 52 ++++++++-- soap/stip.wsdl.php | 2 +- soap/stip_client.php | 125 +++++------------------ 5 files changed, 147 insertions(+), 179 deletions(-) diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 0d887e51a..8d7efb194 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -141,4 +141,9 @@ define('CIS_SAALPLAN_ALLERAEUME_OPTION', false); //Legt fest ob Bestätigungsmails über eine Anmelung zu einer Prüfung an eine einzelne Person erfolgt oder an den jeweiligen Lektor. (Leerstring für jeweiligen Lektro); define('CIS_PRUEFUNG_MAIL_EMPFAENGER_ANMEDLUNG',"p.vondrak"); +// Username fuer STIP Schnittstelle +define('STIP_USER_NAME','stipendienstelle'); +// Passwort fuer STIP Schnittstelle +define('STIP_USER_PASSWORD','password'); + ?> diff --git a/soap/stip.class.php b/soap/stip.class.php index ff6e4349a..d5ec5fa51 100644 --- a/soap/stip.class.php +++ b/soap/stip.class.php @@ -57,19 +57,19 @@ class stip extends basis_db */ function validateStipDaten($ErhKz, $Anfragedaten, $Bezieher) { - if(strlen($ErhKz)!=3 || !is_numeric($ErhKz)) + if(mb_strlen($ErhKz)!=3 || !is_numeric($ErhKz)) { $this->errormsg = "Kein gültiger Wert für ErhKz"; return false; } - if(strlen($Bezieher->Semester)!=2 || ($Bezieher->Semester != "ws" && $Bezieher->Semester != "ss" && $Bezieher->Semester != "WS" && $Bezieher->Semester != "SS")) + if(mb_strlen($Bezieher->Semester)!=2 || ($Bezieher->Semester != "ws" && $Bezieher->Semester != "ss" && $Bezieher->Semester != "WS" && $Bezieher->Semester != "SS")) { $this->errormsg = "Kein gültiger Wert für Semester"; return false; } - if(strlen($Bezieher->Studienjahr) != 7) + if(mb_strlen($Bezieher->Studienjahr) != 7) { $this->errormsg = "Kein gültiger Wert für Studienjahr"; return false; @@ -79,13 +79,13 @@ class stip extends basis_db if($Bezieher->PersKz != null && strlen($Bezieher->PersKz) != 10) { $this->errormsg = "Kein gültiger Wert für PersKz"; - // return false; + //return false; } if(mb_strlen($Bezieher->SVNR) != 10 || !is_numeric($Bezieher->SVNR)) { $this->errormsg = "Kein gültiger Wert für SVNR"; - // return false; + // return false; } // preg_match funktioniert noch nicht || preg_match_all('[^0-9]*',$Bezieher->Familienname)>0 @@ -98,7 +98,7 @@ class stip extends basis_db if(mb_strlen($Bezieher->Vorname) > 255 || $Bezieher->Vorname == null || mb_strlen($Bezieher->Vorname) <2) { $this->errormsg = "Kein gültiger Wert für Vorname"; - // return false; + // return false; } if(mb_strlen($Bezieher->Typ) != 2 || ($Bezieher->Typ != "ag" && $Bezieher->Typ != "as" && $Bezieher->Typ != "AG" && $Bezieher->Typ != "AS")) @@ -107,7 +107,7 @@ class stip extends basis_db return false; } - return true; + return true; } @@ -118,10 +118,13 @@ class stip extends basis_db */ function searchPersonKz($PersonKz) { - $qry = "Select prestudent_id, vorname, nachname, svnr, matrikelnr from public.tbl_student student - join public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid) - join public.tbl_person person using(person_id) - where student.matrikelnr = '".addslashes($PersonKz)."';"; + $qry = "SELECT + prestudent_id, vorname, nachname, svnr, matrikelnr + FROM + public.tbl_student student + JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid) + JOIN public.tbl_person person using(person_id) + WHERE student.matrikelnr = ".$this->db_add_param($PersonKz).";"; if($this->db_query($qry)) { @@ -153,10 +156,13 @@ class stip extends basis_db */ function searchSvnr($Svnr) { - $qry = "Select prestudent_id, vorname, nachname, svnr, matrikelnr from public.tbl_student student - join public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid) - join public.tbl_person person using(person_id) - where person.svnr = '".addslashes($Svnr)."';"; + $qry = "SELECT + prestudent_id, vorname, nachname, svnr, matrikelnr + FROM + public.tbl_student student + JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid) + JOIN public.tbl_person person using(person_id) + WHERE person.svnr = ".$this->db_add_param($Svnr).";"; if($this->db_query($qry)) { @@ -199,11 +205,15 @@ class stip extends basis_db */ function searchVorNachname($Vorname, $Nachname) { - $qry = "Select prestudent_id, vorname, nachname, svnr, matrikelnr from public.tbl_student student - join public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid) - join public.tbl_person person using(person_id) - where person.vorname = '".addslashes($Vorname)."' - and person.nachname = '".addslashes($Nachname)."';"; + $qry = "SELECT + prestudent_id, vorname, nachname, svnr, matrikelnr + FROM + public.tbl_student student + JOIN public.tbl_benutzer benutzer on(benutzer.uid=student.student_uid) + JOIN public.tbl_person person using(person_id) + WHERE + person.vorname = ".$this->db_add_param($Vorname)." + AND person.nachname = ".$this->db_add_param($Nachname).";"; if($this->db_query($qry)) { @@ -240,27 +250,6 @@ class stip extends basis_db } - /** - * - * Gibt Erhalter_Kz für Technikum Wien zurück - */ - function getErhalterKz() - { - $qry = "Select erhalter_kz from public.tbl_erhalter where kurzbz = 'TW';"; - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - return $row->erhalter_kz; - } - else - return false; - } - else - return false; - } - /** * * Gibt den orgform_code zurück für übergebene StudentUID und Semester @@ -273,17 +262,20 @@ class stip extends basis_db { // hole mischform von studenten - $qry_mischform = "select studiengang.mischform - from public.tbl_studiengang studiengang - join public.tbl_student student using(studiengang_kz) - join public.tbl_prestudent prestudent using(prestudent_id) - where student_uid='$studentUID'"; + $qry_mischform = " + SELECT + studiengang.mischform + FROM + public.tbl_studiengang studiengang + JOIN public.tbl_student student using(studiengang_kz) + JOIN public.tbl_prestudent prestudent using(prestudent_id) + WHERE student_uid=".$this->db_add_param($studentUID); if($this->db_query($qry_mischform)) { if($row= $this->db_fetch_object()) { - $mischform = ($row->mischform=='t'?true:false); + $mischform = $this->db_parse_bool($row->mischform); } } @@ -292,13 +284,18 @@ class stip extends basis_db if($mischform == false) { - $qry = "select orgform.code, studiengang.orgform_kurzbz as studorgkz, student.student_uid, student.studiengang_kz studiengang - from public.tbl_studiengang studiengang - join public.tbl_student student using(studiengang_kz) - join public.tbl_prestudent prestudent using(prestudent_id) - join public.tbl_prestudentstatus status using(prestudent_id) - join bis.tbl_orgform orgform on(orgform.orgform_kurzbz = studiengang.orgform_kurzbz) where student_uid='$studentUID' - and status.studiensemester_kurzbz ='$studSemester';"; + $qry = " + SELECT + orgform.code, studiengang.orgform_kurzbz as studorgkz, student.student_uid, student.studiengang_kz studiengang + FROM + public.tbl_studiengang studiengang + JOIN public.tbl_student student using(studiengang_kz) + JOIN public.tbl_prestudent prestudent using(prestudent_id) + JOIN public.tbl_prestudentstatus status using(prestudent_id) + JOIN bis.tbl_orgform orgform on(orgform.orgform_kurzbz = studiengang.orgform_kurzbz) + WHERE + student_uid=".$this->db_add_param($studentUID)." + AND status.studiensemester_kurzbz =".$this->db_add_param($studSemester); // Wenn kein Status gefunden wurde -> null if($this->db_query($qry)) @@ -341,7 +338,7 @@ class stip extends basis_db */ function getOrgFormCodeFromKurzbz($orgform_kurzbz) { - $qry = "SELECT code FROM bis.tbl_orgform WHERE orgform_kurzbz = '".addslashes($orgform_kurzbz)."';"; + $qry = "SELECT code FROM bis.tbl_orgform WHERE orgform_kurzbz = ".$this->db_add_param($orgform_kurzbz).";"; if($this->db_query($qry)) { @@ -369,10 +366,10 @@ class stip extends basis_db FROM public.tbl_prestudentstatus WHERE - prestudent_id='$prestudent_id' - AND studiensemester_kurzbz='$studiensemester_kurzbz'"; + prestudent_id=".$this->db_add_param($prestudent_id)." + AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); if(!is_null($bisdatum)) - $qrystatus.=" AND (tbl_prestudentstatus.datum<'$bisdatum')"; + $qrystatus.=" AND (tbl_prestudentstatus.datum<".$this->db_add_param($bisdatum).")"; $qrystatus.=" ORDER BY datum desc, insertamum desc, ext_id desc;"; @@ -388,10 +385,10 @@ class stip extends basis_db FROM public.tbl_prestudentstatus WHERE - prestudent_id='$prestudent_id' - AND studiensemester_kurzbz='$psem'"; + prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER)." + AND studiensemester_kurzbz=".$this->db_add_param($psem)."'"; if(!is_null($bisdatum)) - $qrystatus.=" AND (tbl_prestudentstatus.datum<'$bisdatum') "; + $qrystatus.=" AND (tbl_prestudentstatus.datum<".$this->db_add_param($bisdatum).") "; $qrystatus.=" ORDER BY datum desc, insertamum desc, ext_id desc;"; if(!$resultstatus = $this->db_query($qrystatus)) @@ -441,10 +438,10 @@ class stip extends basis_db FROM public.tbl_prestudentstatus WHERE - prestudent_id='$prestudent_id' - AND studiensemester_kurzbz='$studiensemester_kurzbz'"; + prestudent_id=".$this->db_add_param($prestudent_id)." + AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); if(!is_null($bisdatum)) - $qrystatus.=" AND (tbl_prestudentstatus.datum<'$bisdatum')"; + $qrystatus.=" AND (tbl_prestudentstatus.datum<".$this->db_add_param($bisdatum).")"; $qrystatus.=" ORDER BY datum desc, insertamum desc, ext_id desc;"; @@ -456,10 +453,10 @@ class stip extends basis_db $qry1=" SELECT count(*) AS dipl FROM public.tbl_prestudentstatus WHERE - prestudent_id='$prestudent_id' + prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER)." AND status_kurzbz='Diplomand'"; if(!is_null($bisdatum)) - $qry1.=" AND (tbl_prestudentstatus.datum<'$bisdatum') "; + $qry1.=" AND (tbl_prestudentstatus.datum<".$this->db_add_param($bisdatum).") "; if($result1 = $this->db_query($qry1)) { @@ -493,14 +490,21 @@ class stip extends basis_db $student = new student(); $uid = $student->getUid($prestudent_id); + $noten = new note(); + $noten->getAll(); + + $noten_arr = array(); + foreach($noten->result as $row_noten) + $noten_arr[$row_noten->note]['positiv']=$row_noten->positiv; + $obj = new zeugnisnote(); $ects=0; if(!$obj->getZeugnisnoten($lehrveranstaltung_id=null, $uid, $studiensemester_kurzbz=null)) die('Fehler beim Laden der Noten:'.$obj->errormsg); foreach($obj->result as $row) { - //Note darf nicht teilnote(0), negativ(5), noch nicht eingetragen(7), nicht beurteilt (9), nicht erfolgreich absolviert (13), angerechnet(6) sein - if($row->zeugnis && $row->note!=0 && $row->note!=5 && $row->note!=7 && $row->note!=9 && $row->note!=13 && $row->note!=6) + //Note darf nicht negativ oder angerechnet(6) sein + if($row->zeugnis && $row->note!=6 && isset($noten_arr[$row->note]) && $noten_arr[$row->note]['positiv']) { $ects += $row->ects; } @@ -519,4 +523,4 @@ class error public $ErrorText; } -?> \ No newline at end of file +?> diff --git a/soap/stip.soap.php b/soap/stip.soap.php index 603a7aecd..84f351bd0 100644 --- a/soap/stip.soap.php +++ b/soap/stip.soap.php @@ -18,7 +18,8 @@ * Authors: Karl Burkhart . */ -require_once('../config/vilesci.config.inc.php'); +require_once('../config/vilesci.config.inc.php'); +require_once('../config/global.config.inc.php'); require_once('../include/basis_db.class.php'); require_once('../include/prestudent.class.php'); require_once('../include/student.class.php'); @@ -28,6 +29,7 @@ require_once('../include/benutzer.class.php'); require_once('../include/webservicelog.class.php'); require_once('../include/mail.class.php'); require_once('../include/abschlusspruefung.class.php'); +require_once('../include/note.class.php'); require_once('stip.class.php'); ini_set("soap.wsdl_cache_enabled", "0"); @@ -58,6 +60,22 @@ function GetStipendienbezieherStip($parameters) $log->beschreibung = "Anfrage von Stip"; $log->save(true); + $username = $parameters->userName; + $passwort = $parameters->passWord; + + if(!($username==STIP_USER_NAME && $passwort==STIP_USER_PASSWORD)) + { + // Eintrag in der LogTabelle anlegen + $log = new webservicelog(); + $log->request_data = 'SOAP FAULT - Invalid Credentials'; + $log->webservicetyp_kurzbz = 'stip'; + $log->request_id = $AnfrageDatenID; + $log->beschreibung = "Antwort an Stip"; + $log->save(true); + + return new SoapFault("Server", 'Invalid Credentials'); + } + $StipBezieherAntwort = array(); $i=0; @@ -170,7 +188,8 @@ function GetStipendienbezieherStip($parameters) $StipBezieherAntwort[$i] = $StipBezieher; $i++; - }else if($StipBezieher->AntwortStatusCode == 2) + } + else if($StipBezieher->AntwortStatusCode == 2) { // Student wurde nicht gefunden $StipBezieher->PersKz_Antwort = null; @@ -189,10 +208,31 @@ function GetStipendienbezieherStip($parameters) $i++; } - }else - return new SoapFault("Server", $StipBezieher->errormsg); + } + else + { + // Eintrag in der LogTabelle anlegen + $log = new webservicelog(); + $log->request_data = 'SOAP FAULT - ValidationError: '.$StipBezieher->errormsg; + $log->webservicetyp_kurzbz = 'stip'; + $log->request_id = $AnfrageDatenID; + $log->beschreibung = "Antwort an Stip"; + $log->save(true); + + return new SoapFault("Server", $StipBezieher->errormsg); + } } + $ret = array("GetStipendienbezieherStipResult" =>array("ErhKz"=>$ErhalterKz,"AnfragedatenID"=>$AnfrageDatenID, "Stipendiumsbezieher"=>$StipBezieherAntwort)); + + // Eintrag in der LogTabelle anlegen + $log = new webservicelog(); + $log->request_data = print_r($ret,true); + $log->webservicetyp_kurzbz = 'stip'; + $log->request_id = $AnfrageDatenID; + $log->beschreibung = "Antwort an Stip"; + $log->save(true); + return $ret; } @@ -212,10 +252,8 @@ function SendStipendienbezieherStipError($parameters) $log->beschreibung = "Stip Error"; $log->save(true); - $mail = new mail('burkhart@technikum-wien.at', 'vilesci.technikum-wien.at', 'STIP - Error', $xmlData); + $mail = new mail(MAIL_ADMIN, 'vilesci@'.DOMAIN, 'STIP - Error', $xmlData); $mail->send(); } ?> - - diff --git a/soap/stip.wsdl.php b/soap/stip.wsdl.php index f16fab6cf..c24caed69 100644 --- a/soap/stip.wsdl.php +++ b/soap/stip.wsdl.php @@ -168,7 +168,7 @@ echo ""; - "/> + "/> diff --git a/soap/stip_client.php b/soap/stip_client.php index 08d023310..bc09b3e77 100644 --- a/soap/stip_client.php +++ b/soap/stip_client.php @@ -28,8 +28,7 @@ $db = new basis_db(); ?> - - + STIP-Client @@ -39,6 +38,14 @@ $db = new basis_db();

+ + + + + + + + @@ -49,7 +56,7 @@ $db = new basis_db(); - + @@ -73,13 +80,12 @@ $db = new basis_db(); - +
Username:">
Passwort:
ErhKz: ">
Semester:">"> WS | SS
Studienjahr:
Typ:">"> AS | AG
-
@@ -92,8 +98,8 @@ if(isset($_REQUEST['submit'])) { $client = new SoapClient(APP_ROOT."/soap/stip.wsdl.php?".microtime()); - $username = "test"; - $passwort = "foo"; + $username = $_REQUEST['username']; + $passwort = $_REQUEST['password']; $ErhKz = $_REQUEST['ErhKz']; $AnfragedatenID = $_REQUEST['AnfragedatenID']; @@ -114,31 +120,15 @@ if(isset($_REQUEST['submit'])) $bezieher1->Familienname= $_REQUEST['Familienname']; $bezieher1->Vorname= $_REQUEST['Vorname']; $bezieher1->Typ = $_REQUEST['Typ']; - - $arrayBezieher = array($bezieher, $bezieher1); - - $stipbezieher = array($ErhKz, $AnfragedatenID, $arrayBezieher); - - - class foo {}; - $obj = new foo(); - $obj->ErrorNumber = "errornumber"; - $obj->KeyAttribute = "keyattribute"; - $obj->KeyValues = "keyvalues"; - $obj->CheckAttribute ="checkattribute"; - $obj->CheckValue ="checkvalue"; - $obj->ErrorText = "errortext"; - + try - { - //$response = $client->GetStipendienbezieherStip(array("userName"=>$username,"passWord"=>$passwort,"anfrageDaten"=>array("ErhKz"=>$ErhKz, "AnfragedatenID"=>$AnfragedatenID,"Stipendiumsbezieher"=>array($bezieher, $bezieher1)))); + { $response_stip = $client->GetStipendienbezieherStip(array("userName"=>$username,"passWord"=>$passwort,"anfrageDaten"=>array("ErhKz"=>$ErhKz, "AnfragedatenID"=>$AnfragedatenID,"Stipendiumsbezieher"=>array($bezieher)))); - var_dump($response_stip->GetStipendienbezieherStipResult); - echo '
'; - //var_dump($response_stip->Stipendiumsbezieher->StipendiumsbezieherAntwort); - - // $response_error = $client->SendStipendienbezieherStipError(array("userName"=>"abc", "passWord"=>"test", "errorReport"=>array("ErhKz"=>"erhkz", "StateCode"=>"statecode", "StateMessage"=>"statemessage", "ErrorStatusCode"=>"errorstatuscode", "JobID"=>"jobid", "ErrorContent"=>array($obj)))); - // var_dump($response_error); + echo '

Single Request Result

'; + echo '
'.print_r($response_stip->GetStipendienbezieherStipResult,true).'
'; + echo '

Multiple Request Result

'; + $response_stip = $client->GetStipendienbezieherStip(array("userName"=>$username,"passWord"=>$passwort,"anfrageDaten"=>array("ErhKz"=>$ErhKz, "AnfragedatenID"=>$AnfragedatenID,"Stipendiumsbezieher"=>array($bezieher, $bezieher1)))); + echo '
'.print_r($response_stip->GetStipendienbezieherStipResult, true).'
'; } catch(SoapFault $fault) { @@ -148,77 +138,8 @@ if(isset($_REQUEST['submit'])) } ?> - +Legende:
+Antwortstatuscode: 1=gefunden; 2=nicht gefunden
+StudStatusCode: 1=aktiver Student; 2=Unterbrecher; 3=Absolvent; 4=Abbrecher