Exemplo n.º 1
0
 }
 // Do the actual processing of the request
 if (Request::IsMethodGET()) {
     throw new NoPostRequestException("This is the Z-Push location and can only be accessed by Microsoft ActiveSync-capable devices", NoPostRequestException::GET_REQUEST);
 }
 // Do the actual request
 header(ZPush::GetServerHeader());
 // announce the supported AS versions (if not already sent to device)
 if (ZPush::GetDeviceManager()->AnnounceASVersion()) {
     $versions = ZPush::GetSupportedProtocolVersions(true);
     ZLog::Write(LOGLEVEL_INFO, sprintf("Announcing latest AS version to device: %s", $versions));
     header("X-MS-RP: " . $versions);
 }
 RequestProcessor::Initialize();
 if (!RequestProcessor::HandleRequest()) {
     throw new WBXMLException(ZLog::GetWBXMLDebugInfo());
 }
 // stream the data
 $len = ob_get_length();
 $data = ob_get_contents();
 ob_end_clean();
 // log amount of data transferred
 // TODO check $len when streaming more data (e.g. Attachments), as the data will be send chunked
 ZPush::GetDeviceManager()->SentData($len);
 // Unfortunately, even though Z-Push can stream the data to the client
 // with a chunked encoding, using chunked encoding breaks the progress bar
 // on the PDA. So the data is de-chunk here, written a content-length header and
 // data send as a 'normal' packet. If the output packet exceeds 1MB (see ob_start)
 // then it will be sent as a chunked packet anyway because PHP will have to flush
 // the buffer.
 if (!headers_sent()) {