From 885aba04832c840aed3a45c3bb09bf088ce01a0c Mon Sep 17 00:00:00 2001 From: Dirk Riestere Date: Thu, 2 Mar 2017 18:32:54 +0100 Subject: Bugfixes und Davincii ist jetzt implementiert --- .../coursebackend/coursebackend_davinci.inc.php | 75 +++++++++++++++++++--- 1 file changed, 66 insertions(+), 9 deletions(-) (limited to 'modules-available/locationinfo/inc/coursebackend/coursebackend_davinci.inc.php') diff --git a/modules-available/locationinfo/inc/coursebackend/coursebackend_davinci.inc.php b/modules-available/locationinfo/inc/coursebackend/coursebackend_davinci.inc.php index 6e07e1f4..c62ad4f4 100644 --- a/modules-available/locationinfo/inc/coursebackend/coursebackend_davinci.inc.php +++ b/modules-available/locationinfo/inc/coursebackend/coursebackend_davinci.inc.php @@ -1,22 +1,18 @@ error = true; - $this->errormsg = "This class is just a place holder"; - $this->location = $location."/daVinciIS.dll?"; + $this->location = $location."/DAVINCIIS.dll?"; $this->serverID = $serverID; //Davinci doesn't have credentials } public function checkConection(){ - $this->fetchSchedulesInternal(42); + $this->fetchSchedulesInternal('B206'); return $this->error; } public function getCredentials(){ @@ -32,9 +28,70 @@ class Coursebackend_Davinci extends CourseBackend { public function getRefreshTime(){ return 0; } - public function fetchSchedulesInternal($roomId){ + private function toArray($response){ + + $cleanresponse = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $response); + $xml = new SimpleXMLElement($cleanresponse); + $array = json_decode(json_encode((array)$xml), TRUE); + return $array; + } + private function fetchArray($roomId){ + $startdate= new DateTime('monday this week'); + $enddate = new DateTime('sunday'); + $url= $this->location."content=xml&type=room&name=".$roomId."&startdate=".$startdate->format('d.m.Y')."&enddate=".$enddate->format('d.m.Y'); + $ch=curl_init(); + $options = array( + CURLOPT_RETURNTRANSFER => true, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_SSL_VERIFYHOST => false, + CURLOPT_SSL_VERIFYPEER => false, + CURLOPT_URL => $url , + ); + + curl_setopt_array($ch, $options); + $output=curl_exec($ch); + if( $output === false) + { + $this->error = true; + $this->errormsg = 'Curl error: ' . curl_error($soap_do); + return 'Curl error: ' . curl_error($soap_do); + } + else + { + $this->error = false; + $this->errormsg =""; + ///Operation completed successfully + } + curl_close($ch); + return $this->toArray($output); } + public function fetchSchedulesInternal($roomIds){ + $shedules = []; + foreach ($roomIds as $locationId => $sroomId) { + $return = $this->fetchArray($sroomId); + $lessons = $return['Lessons']['Lesson']; + $timetable =[]; + foreach ($lessons as $lesson) { + $date = $lesson['Date']; + $date = substr($date,0,4).'-'.substr($date,4,2).'-'.substr($date,6,2); + $start = $lesson['Start']; + $start = substr($start,0,2).':'.substr($start,2,2); + $end = $lesson['Finish']; + $end = substr($end,0,2).':'.substr($end,2,2); + $subject = $lesson['Subject']; + $json = array( + 'title' => $subject, + 'start' => $date." ".$start.':00', + 'end' => $date." ".$end.':00' + ); + array_push($timetable,$json); + } + $timetable= json_encode($timetable); + $shedules[$locationId] = $timetable; + } + return $shedules; + } } ?> -- cgit v1.2.3-55-g7522