From 38c9e0a3be03db2516ed019fdeed31c9c1a87437 Mon Sep 17 00:00:00 2001 From: Karl Burkhart Date: Wed, 21 Mar 2012 08:51:35 +0000 Subject: [PATCH] =?UTF-8?q?SOAP-Schnittstelle=20f=C3=BCr=20Lehrveranstaltu?= =?UTF-8?q?ngen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soap/lehrveranstaltung.soap.php | 215 +++++++++++++++++++++++++++++ soap/lehrveranstaltung.wsdl.php | 132 ++++++++++++++++++ soap/soap_test_lv.php | 233 ++++++++++++++++++++++++++++++++ 3 files changed, 580 insertions(+) create mode 100755 soap/lehrveranstaltung.soap.php create mode 100755 soap/lehrveranstaltung.wsdl.php create mode 100755 soap/soap_test_lv.php diff --git a/soap/lehrveranstaltung.soap.php b/soap/lehrveranstaltung.soap.php new file mode 100755 index 000000000..c52777ee9 --- /dev/null +++ b/soap/lehrveranstaltung.soap.php @@ -0,0 +1,215 @@ +. + */ + +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/lehrveranstaltung.class.php'); +require_once('../include/lehreinheit.class.php'); +require_once('../include/lehreinheitmitarbeiter.class.php'); +require_once('../include/lehreinheitgruppe.class.php'); +require_once('../include/studiengang.class.php'); + +ini_set("soap.wsdl_cache_enabled", "0"); + +$SOAPServer = new SoapServer(APP_ROOT."/soap/lehrveranstaltung.wsdl.php?".microtime()); +$SOAPServer->addFunction("getLehrveranstaltungFromId"); +$SOAPServer->addFunction("getLehrveranstaltungFromStudiengang"); +$SOAPServer->handle(); + +/* + * + * Funktion getLehrveranstaltungFromId liefert eine LV zurück + * @param lehrveranstaltung_id - Lehrveranstaltungs ID -> Pflichtfeld + * @param semester - SemesterKurzbz -> Optional + * @param authentifizierung - Array mit Username und Passwort -> Pflichtfeld + * + */ +function getLehrveranstaltungFromId($lehrveranstaltung_id, $semester, $authentifizierung) +{ + if($lehrveranstaltung_id == '') + return new SOAPFault("Server", "lehrveranstaltungs_id must be set"); + + $user = $authentifizierung->username; + $passwort = $authentifizierung->passwort; + $lv_id = $lehrveranstaltung_id; + + // 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, 'getLehrveranstaltungFromId')) + return new SoapFault("Server", "No permission"); + + // Daten für Lehrveranstaltung + $lv = new lehrveranstaltung(); + if(!$lv->load($lv_id)) + return new SoapFault("Server", "Error loading Lv"); + + class foo{}; + $mitarbeiterlehreinheit = array(); // uids aller mitarbeiter + $gruppelehreinheit = array(); // objekte aller gruppen + $moodleArray = array(); // ids aller moodle kurse + + // wenn semester nicht übergeben wurde, gib nur bezeichnung und lehreverzeichnis aus + if($semester != '') + { + // hole alle Lehreinheiten von Lehrveranstaltung + $lehreinheit = new lehreinheit(); + if(!$lehreinheit->load_lehreinheiten($lv_id, $semester)) + return new SoapFault("Server", $lehreinheit->errormsg); + + $mitarbeiter = new lehreinheitmitarbeiter(); + $gruppe = new lehreinheitgruppe(); + + foreach($lehreinheit->lehreinheiten as $l) + { + // alle mitarbeiter einer lehreinheit + $mitarbeiter->getLehreinheitmitarbeiter($l->lehreinheit_id); + foreach($mitarbeiter->lehreinheitmitarbeiter as $m) + $mitarbeiterlehreinheit[]=$m->mitarbeiter_uid; + + // alle gruppen einer lehreinheit + $gruppe->getLehreinheitgruppe($l->lehreinheit_id); + foreach($gruppe->lehreinheitgruppe as $g) + { + $grp = new foo(); + $grp->studiengang_kz = $g->studiengang_kz; + $grp->semester=$g->semester; + $grp->verband=$g->verband; + $grp->gruppe=$g->gruppe; + $grp->grupppe_kurzbz=$g->gruppe_kurzbz; + $gruppelehreinheit[] = $grp; + } + } + + // alle moodle kurse einer lv + $moodleArray = $lv->getMoodleKurse($lehrveranstaltung_id, $semester); + + } + + $LvObject = new foo(); + $LvObject->bezeichnung = $lv->bezeichnung; + $LvObject->lehreverzeichnis = $lv->lehreverzeichnis; + $LvObject->moodle_id = $moodleArray; + $LvObject->lektoren = $mitarbeiterlehreinheit; + $LvObject->gruppen= $gruppelehreinheit; + + // lösche alle Attribute für die user keine Berechtigung hat + $LvObject = $recht->clearResponse($user, 'getLehrveranstaltungFromId', $LvObject); + + return $LvObject; +} + +/* + * Funktion getLehrveranstaltungFromStudiengang liefert alle Lv Infos eines Studienganges und Semesters + * @param studiengang - OE von Studiengang -> Pflichtfeld + * @param semester - Semester_kurzbz -> Pflichtfeld + * @param ausbildungssemester - Ausbildungssemester -> Optional + * @param authentifizierung - Array mit Username und Passwort -> Pflichtfeld + * +*/ +function getLehrveranstaltungFromStudiengang($studiengang, $semester, $ausbildungssemester, $authentifizierung) +{ + + $user = $authentifizierung->username; + $passwort = $authentifizierung->passwort; + + if($studiengang == '' || $semester == '') + return new SOAPFault("Server", "studiengang | semester must be set"); + + // 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, 'getLehrveranstaltungFromStudiengang')) + return new SoapFault("Server", "No permission"); + + // Daten für Lehrveranstaltung + $lehrveranstaltung = new lehrveranstaltung(); + $stud = new studiengang(); + + if(!$stud->getStudiengangFromOe($studiengang)) + return new SoapFault ("Server", "Error loading Studiengang"); + + if(!$lehrveranstaltung->load_lva_le($stud->studiengang_kz, $semester, $ausbildungssemester)) + return new SoapFault("Server", "Error loading Lv"); + + class bar{}; + $lvFromStudiengang= array(); + + foreach($lehrveranstaltung->lehrveranstaltungen as $lv) + { + $mitarbeiterlehreinheit = array(); // uids aller mitarbeiter der lehreinheit + $gruppelehreinheit = array(); // ids aller grupper der lehreinheit + $moodleArray = array(); + + // hole alle Lehreinheiten von Lehrveranstaltung + $lehreinheit = new lehreinheit(); + if(!$lehreinheit->load_lehreinheiten($lv->lehrveranstaltung_id, $semester)) + return new SoapFault("Server", $lehreinheit->errormsg); + + $mitarbeiter = new lehreinheitmitarbeiter(); + $gruppe = new lehreinheitgruppe(); + + foreach($lehreinheit->lehreinheiten as $l) + { + // alle mitarbeiter der lehreinheit + $mitarbeiter->getLehreinheitmitarbeiter($l->lehreinheit_id); + foreach($mitarbeiter->lehreinheitmitarbeiter as $m) + $mitarbeiterlehreinheit[]=$m->mitarbeiter_uid; + + // alle gruppen der lehreinheit + $gruppe->getLehreinheitgruppe($l->lehreinheit_id); + foreach($gruppe->lehreinheitgruppe as $g) + { + $grp = new bar(); + $grp->studiengang_kz = $g->studiengang_kz; + $grp->semester=$g->semester; + $grp->verband=$g->verband; + $grp->gruppe=$g->gruppe; + $grp->grupppe_kurzbz=$g->gruppe_kurzbz; + $gruppelehreinheit[] = $grp; + } + } + // alle moodlekurse der lehrveranstaltung + $moodleArray = $lv->getMoodleKurse($lv->lehrveranstaltung_id, $semester); + + // LV Object für Rückgabe + $lehrveranstaltungen = new bar(); + $lehrveranstaltungen->bezeichnung = $lv->bezeichnung; + $lehrveranstaltungen->lehreverzeichnis = $lv->lehreverzeichnis; + $lehrveranstaltungen->moodle_id = $moodleArray; + $lehrveranstaltungen->lektoren = $mitarbeiterlehreinheit; + $lehrveranstaltungen->gruppen = $gruppelehreinheit; + + $lehrveranstaltungen = $recht->clearResponse($user, 'getLehrveranstaltungFromStudiengang', $lehrveranstaltungen); + + $lvFromStudiengang[] = $lehrveranstaltungen; + } + return ($lvFromStudiengang); +} +?> diff --git a/soap/lehrveranstaltung.wsdl.php b/soap/lehrveranstaltung.wsdl.php new file mode 100755 index 000000000..3dec3d8e9 --- /dev/null +++ b/soap/lehrveranstaltung.wsdl.php @@ -0,0 +1,132 @@ +"; +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + " /> + + + + + + + + + "/> + + + + + + + + + + + + "/> + + + \ No newline at end of file diff --git a/soap/soap_test_lv.php b/soap/soap_test_lv.php new file mode 100755 index 000000000..bb04493e3 --- /dev/null +++ b/soap/soap_test_lv.php @@ -0,0 +1,233 @@ + + + + + + + + SOAP TestClient für Lehrveranstaltungen + + + GetLehrveranstaltungFromStudiengang
+ GetLehrveranstaltungFromId

+ Show WSDL

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name:
Passwort:
Studiengang:
Semester:
Ausbildungssemester* :
+ + +
+ '; + echo ' + '; + } + else if($method=='id') + { + echo' +
+ + + + + + + + + + + + + + + + + + + + + +
Name:
Passwort:
Lehrveranstaltung_id:
Semester* :
+ + +
+
'; + echo ' + '; + } + + +class foo {}; + +if(isset($_REQUEST['submit']) && $_GET['method']=='studiengang') +{ + $client = new SoapClient(APP_ROOT."/soap/lehrveranstaltung.wsdl.php?".microtime(true)); + + try + { + + $authentifizierung = new foo(); + $authentifizierung->username=$_REQUEST['username']; + $authentifizierung->passwort=$_REQUEST['passwort']; + $response = $client->getLehrveranstaltungFromStudiengang($studiengang = $_REQUEST['studiengang'], $semester =$_REQUEST['semester'] , $ausbildungssemester=$_REQUEST['aussemester'], $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']=='id') +{ + $client = new SoapClient(APP_ROOT."/soap/lehrveranstaltung.wsdl.php?".microtime(true)); + + try + { + + $authentifizierung = new foo(); + $authentifizierung->username=$_REQUEST['username']; + $authentifizierung->passwort=$_REQUEST['passwort']; + $response = $client->getLehrveranstaltungFromId($lehrveranstaltungs_id = $_REQUEST['lv_id'], $semester =$_REQUEST['semester'] , $authentifizierung); + + var_dump($response); + } + catch(SoapFault $fault) + { + echo "SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR; + } + +} + + + +?> +