. * * Consult LICENSE file for details ************************************************/ class MeetingResponse extends RequestProcessor { /** * Handles the MeetingResponse command * * @param int $commandCode * * @access public * @return boolean */ public function Handle($commandCode) { $requests = Array(); if(!self::$decoder->getElementStartTag(SYNC_MEETINGRESPONSE_MEETINGRESPONSE)) return false; while(self::$decoder->getElementStartTag(SYNC_MEETINGRESPONSE_REQUEST)) { $req = Array(); while(1) { if(self::$decoder->getElementStartTag(SYNC_MEETINGRESPONSE_USERRESPONSE)) { $req["response"] = self::$decoder->getElementContent(); if(!self::$decoder->getElementEndTag()) return false; } if(self::$decoder->getElementStartTag(SYNC_MEETINGRESPONSE_FOLDERID)) { $req["folderid"] = self::$decoder->getElementContent(); if(!self::$decoder->getElementEndTag()) return false; } if(self::$decoder->getElementStartTag(SYNC_MEETINGRESPONSE_REQUESTID)) { $req["requestid"] = self::$decoder->getElementContent(); if(!self::$decoder->getElementEndTag()) return false; } $e = self::$decoder->peek(); if($e[EN_TYPE] == EN_TYPE_ENDTAG) { self::$decoder->getElementEndTag(); break; } } array_push($requests, $req); } if(!self::$decoder->getElementEndTag()) return false; // output the error code, plus the ID of the calendar item that was generated by the // accept of the meeting response self::$encoder->StartWBXML(); self::$encoder->startTag(SYNC_MEETINGRESPONSE_MEETINGRESPONSE); foreach($requests as $req) { $status = SYNC_MEETRESPSTATUS_SUCCESS; try { $calendarid = self::$backend->MeetingResponse($req["requestid"], $req["folderid"], $req["response"]); if ($calendarid === false) throw new StatusException("HandleMeetingResponse() not possible", SYNC_MEETRESPSTATUS_SERVERERROR); } catch (StatusException $stex) { $status = $stex->getCode(); } self::$encoder->startTag(SYNC_MEETINGRESPONSE_RESULT); self::$encoder->startTag(SYNC_MEETINGRESPONSE_REQUESTID); self::$encoder->content($req["requestid"]); self::$encoder->endTag(); self::$encoder->startTag(SYNC_MEETINGRESPONSE_STATUS); self::$encoder->content($status); self::$encoder->endTag(); if($status == SYNC_MEETRESPSTATUS_SUCCESS && !empty($calendarid)) { self::$encoder->startTag(SYNC_MEETINGRESPONSE_CALENDARID); self::$encoder->content($calendarid); self::$encoder->endTag(); } self::$encoder->endTag(); self::$topCollector->AnnounceInformation(sprintf("Operation status %d", $status), true); } self::$encoder->endTag(); return true; } } ?>