diff --git a/include/ortraumtyp.class.php b/include/ortraumtyp.class.php index 8e0f27233..e6a889ebb 100644 --- a/include/ortraumtyp.class.php +++ b/include/ortraumtyp.class.php @@ -183,5 +183,51 @@ class ortraumtyp extends basis_db return false; } } + + /** + * Laedt die Raumtypen eines Ortes + * + * @param $ort_kurzbz + * @return boolean + */ + public function getRaumtypen($ort_kurzbz) + { + if($ort_kurzbz=='') + { + $this->errormsg = 'Kein gültiger Schlüssel vorhanden'; + return false; + } + + $qry = "SELECT + * + FROM + public.tbl_ortraumtyp + JOIN public.tbl_raumtyp USING(raumtyp_kurzbz) + WHERE + ort_kurzbz=".$this->db_add_param($ort_kurzbz); + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new ortraumtyp(); + + $obj->ort_kurzbz = $row->ort_kurzbz; + $obj->hierarchie = $row->hierarchie; + $obj->raumtyp_kurzbz = $row->raumtyp_kurzbz; + $obj->beschreibung = $row->beschreibung; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + + return true; + } } ?> \ No newline at end of file diff --git a/include/webservicerecht.class.php b/include/webservicerecht.class.php index 724a30b00..cce0683e7 100755 --- a/include/webservicerecht.class.php +++ b/include/webservicerecht.class.php @@ -63,7 +63,7 @@ class webservicerecht extends basis_db foreach ($berechtigung->berechtigungen as $recht) { // ist berechtigung noch gültig - if($recht->start < date('Y-m-d') && $recht->ende > date('Y-m-d')) + if(($recht->start < date('Y-m-d') || $recht->start=='') && ($recht->ende > date('Y-m-d') || $recht->ende=='')) $berechtigungArray[] = $recht->berechtigung_kurzbz; } diff --git a/soap/ort.soap.php b/soap/ort.soap.php new file mode 100755 index 000000000..89976a6c1 --- /dev/null +++ b/soap/ort.soap.php @@ -0,0 +1,226 @@ +. + */ +/** + * Webservice fuer Ort/Raum + * + */ +require_once('../config/vilesci.config.inc.php'); +require_once('../include/basis_db.class.php'); +require_once('../include/functions.inc.php'); +require_once('../include/webservicerecht.class.php'); +require_once('../include/ort.class.php'); +require_once('../include/ortraumtyp.class.php'); + +ini_set("soap.wsdl_cache_enabled", "0"); + +$SOAPServer = new SoapServer(APP_ROOT."/soap/ort.wsdl.php?".microtime(true)); +$SOAPServer->addFunction("getOrtFromKurzbz"); +$SOAPServer->addFunction("getRaeume"); +$SOAPServer->addFunction("searchRaum"); +$SOAPServer->handle(); + +/** + * + * Funktion getOrtFromKurzbz liefert einen Ort zurück + * @param ort_kurzbz - ort_kurzbz + * @param authentifizierung - Array mit Username und Passwort + * + * Berechtigung: + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getOrtFromKurzbz','bezeichnung'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getOrtFromKurzbz','stockwerk'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getOrtFromKurzbz','sitzplaetze'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getOrtFromKurzbz','raumtyp'); + + */ +function getOrtFromKurzbz($ort_kurzbz, $authentifizierung) +{ + if($ort_kurzbz == '') + return new SOAPFault("Server", "ort_kurzbz must be set"); + + $user = $authentifizierung->username; + $passwort = $authentifizierung->passwort; + + // User authentifizieren + if(!check_user($user, $passwort)) + return new SoapFault("Server", "Invalid Credentials"); + + // darf user überhaupt was von Methode sehen + $recht = new webservicerecht(); + if(!$recht->isUserAuthorized($user, 'getOrtFromKurzbz')) + return new SoapFault("Server", "No permission"); + + // Daten für Lehrveranstaltung + $ort = new ort(); + if(!$ort->load($ort_kurzbz)) + return new SoapFault("Server", "Error loading Data"); + + class foo{}; + + $raumtyp = new ortraumtyp(); + $raumtyp->getRaumtypen($ort_kurzbz); + $raumtyp_arr = array(); + + foreach($raumtyp->result as $row) + { + $rt = new foo(); + $rt->beschreibung = $row->beschreibung; + $rt->raumtyp_kurzbz = $row->raumtyp_kurzbz; + $rt->hierarchie = $row->hierarchie; + + $raumtyp_arr[] = $rt; + } + + $OrtObject = new foo(); + $OrtObject->bezeichnung = $ort->bezeichnung; + $OrtObject->stockwerk = $ort->stockwerk; + $OrtObject->sitzplaetze = $ort->max_person; + $OrtObject->raumtyp= $raumtyp_arr; + + // lösche alle Attribute für die user keine Berechtigung hat + $OrtObject = $recht->clearResponse($user, 'getOrtFromKurzbz', $OrtObject); + + return $OrtObject; +} + + +/** + * + * Funktion getRaeume liefert alle aktiven reservierbaren Orte zurück + * @param authentifizierung - Array mit Username und Passwort + * + * Berechtigung: + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getRaeume','ort_kurzbz'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getRaeume','bezeichnung'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getRaeume','planbezeichnung'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getRaeume','sitzplaetze'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getRaeume','aktiv'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getRaeume','lehre'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getRaeume','reservieren'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','getRaeume','stockwerk'); + */ +function getRaeume($authentifizierung) +{ + $user = $authentifizierung->username; + $passwort = $authentifizierung->passwort; + + // User authentifizieren + if(!check_user($user, $passwort)) + return new SoapFault("Server", "Invalid Credentials"); + + // darf user überhaupt was von Methode sehen + $recht = new webservicerecht(); + if(!$recht->isUserAuthorized($user, 'getRaeume')) + return new SoapFault("Server", "No permission"); + + // Daten für Lehrveranstaltung + $ort = new ort(); + if(!$ort->getAll()) + return new SoapFault("Server", "Error loading Data"); + + $return = array(); + class foo{}; + foreach($ort->result as $row) + { + if($row->aktiv && $row->lehre) + { + $OrtObject = new foo(); + $OrtObject->ort_kurzbz = $row->ort_kurzbz; + $OrtObject->bezeichnung = $row->bezeichnung; + $OrtObject->planbezeichnung = $row->planbezeichnung; + $OrtObject->sitzplaetze = $row->max_person; + $OrtObject->aktiv = $row->aktiv; + $OrtObject->lehre = $row->lehre; + $OrtObject->reservieren = $row->reservieren; + $OrtObject->stockwerk = $row->stockwerk; + + // lösche alle Attribute für die user keine Berechtigung hat + $return[] = $recht->clearResponse($user, 'getRaeume', $OrtObject); + } + } + + return $return; +} + +/** + * + * Funktion searchRaum Sucht einen Raum + * + * @param date $datum + * @param time $zeit_von + * @param time $zeit_bis + * @param string $raumtyp + * @param integer $anzpersonen + * @param boolean $reservierung + * @param authentifizierung - Array mit Username und Passwort + * + * Berechtigung: + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','searchRaum','ort_kurzbz'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','searchRaum','bezeichnung'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','searchRaum','planbezeichnung'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','searchRaum','sitzplaetze'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','searchRaum','aktiv'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','searchRaum','lehre'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','searchRaum','reservieren'); + INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, attribut) VALUES('soap/ort','searchRaum','stockwerk'); + */ +function searchRaum($datum, $zeit_von, $zeit_bis, $raumtyp=null, $anzpersonen=null, $reservierung=true, $authentifizierung) +{ + $user = $authentifizierung->username; + $passwort = $authentifizierung->passwort; + + // User authentifizieren + if(!check_user($user, $passwort)) + return new SoapFault("Server", "Invalid Credentials"); + + // darf user überhaupt was von Methode sehen + $recht = new webservicerecht(); + if(!$recht->isUserAuthorized($user, 'searchRaum')) + return new SoapFault("Server", "No permission"); + + // Daten für Lehrveranstaltung + $ort = new ort(); + if(!$ort->search($datum, $zeit_von, $zeit_bis, $raumtyp, $anzpersonen, $reservierung)) + return new SoapFault("Server", "Error loading Data"); + + $return = array(); + class foo{}; + foreach($ort->result as $row) + { + if($row->aktiv && $row->lehre) + { + $OrtObject = new foo(); + $OrtObject->ort_kurzbz = $row->ort_kurzbz; + $OrtObject->bezeichnung = $row->bezeichnung; + $OrtObject->planbezeichnung = $row->planbezeichnung; + $OrtObject->sitzplaetze = $row->max_person; + $OrtObject->aktiv = $row->aktiv; + $OrtObject->lehre = $row->lehre; + $OrtObject->reservieren = $row->reservieren; + $OrtObject->stockwerk = $row->stockwerk; + + // lösche alle Attribute für die user keine Berechtigung hat + $return[] = $recht->clearResponse($user, 'searchRaum', $OrtObject); + } + } + + return $return; +} + +?> diff --git a/soap/ort.wsdl.php b/soap/ort.wsdl.php new file mode 100755 index 000000000..8ce17e6f3 --- /dev/null +++ b/soap/ort.wsdl.php @@ -0,0 +1,141 @@ +"; +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + " /> + + + + + + + + + " /> + + + + + + + + + " /> + + + + + + + + + + + + "/> + + + \ No newline at end of file diff --git a/soap/soap_test_ort.php b/soap/soap_test_ort.php new file mode 100755 index 000000000..06be2795b --- /dev/null +++ b/soap/soap_test_ort.php @@ -0,0 +1,353 @@ + + + + + + + + SOAP TestClient für Orte + + + getOrtFromKurzbz
+ getRaeume
+ searchRaum
+ Show WSDL

+ + + + + + + + + + + + + + + + + + + +
Username:
Passwort:
Ort_Kurzbz:
+ + +
+ '; + echo ' + + '; + } + elseif($method=='getRaeume') + { + echo' +
+ + + + + + + + + + + + + +
Username:
Passwort:
+ + +
+
'; + echo ' + + '; + } + elseif($method=='searchRaum') + { + echo' +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Datum:
Zeit-Von:
Zeit-Bis:
Raumtyp:
Anzahl Personen
Reservierung
Username:
Passwort:
+ + +
+
'; + echo ' + + '; + } + +echo '
'; +class foo {}; + +if(isset($_REQUEST['submit']) && $_GET['method']=='getOrtFromKurzbz') +{ + $client = new SoapClient(APP_ROOT."/soap/ort.wsdl.php?".microtime(true)); + + try + { + $authentifizierung = new foo(); + $authentifizierung->username=$_REQUEST['username']; + $authentifizierung->passwort=$_REQUEST['passwort']; + $response = $client->getOrtFromKurzbz($_REQUEST['ort_kurzbz'], $authentifizierung); + + var_dump($response); + } + catch(SoapFault $fault) + { + echo "SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR; + } + + + +} +if(isset($_REQUEST['submit']) && $_GET['method']=='getRaeume') +{ + $client = new SoapClient(APP_ROOT."/soap/ort.wsdl.php?".microtime(true)); + + try + { + $authentifizierung = new foo(); + $authentifizierung->username=$_REQUEST['username']; + $authentifizierung->passwort=$_REQUEST['passwort']; + $response = $client->getRaeume($authentifizierung); + + var_dump($response); + } + catch(SoapFault $fault) + { + echo "SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR; + } + + + +} +if(isset($_REQUEST['submit']) && $_GET['method']=='searchRaum') +{ + $client = new SoapClient(APP_ROOT."/soap/ort.wsdl.php?".microtime(true)); + + try + { + $authentifizierung = new foo(); + $authentifizierung->username=$_REQUEST['username']; + $authentifizierung->passwort=$_REQUEST['passwort']; + $response = $client->searchRaum($_REQUEST['datum'],$_REQUEST['zeit_von'],$_REQUEST['zeit_bis'],$_REQUEST['raumtyp'],$_REQUEST['anzahl_personen'],isset($_REQUEST['reservierung']),$authentifizierung); + + var_dump($response); + } + catch(SoapFault $fault) + { + echo "SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR; + } + + + +} +echo '
'; +?>