/**
* Send a message change over the wbxml stream
*
* @param string $id The uid of the message
* @param Horde_ActiveSync_Message_Base $message The message object
*/
public function messageChange($id, Horde_ActiveSync_Message_Base $message)
{
// Just ignore any messages that are not from this collection and
// prevent sending the same object twice in one request.
if ($message->getClass() != $this->_currentCollection['class'] || in_array($id, $this->_seenObjects)) {
$this->_logger->notice(sprintf('[%s] IGNORING message %s since it looks like it was already sent or does not belong to this collection. Class: %s, CurrentClass: %s', $this->_procid, $id, $message->getClass(), $this->_currentCollection['class']));
return;
}
// Ignore any empty objects.
if ($message->isEmpty()) {
$this->_logger->notice(sprintf('[%s] IGNORING message %s since it looks like it does not contain any data. Class: %s, CurrentClass: %s', $this->_procid, $id, $message->getClass(), $this->_currentCollection['class']));
return;
}
// Remember this message
$this->_seenObjects[] = $id;
// Specify if this is an ADD or a MODIFY change?
if ($message->flags === Horde_ActiveSync::FLAG_NEWMESSAGE) {
$this->_encoder->startTag(Horde_ActiveSync::SYNC_ADD);
} else {
$this->_encoder->startTag(Horde_ActiveSync::SYNC_MODIFY);
}
// Send the message
$this->_encoder->startTag(Horde_ActiveSync::SYNC_SERVERENTRYID);
$this->_encoder->content($id);
$this->_encoder->endTag();
$this->_encoder->startTag(Horde_ActiveSync::SYNC_DATA);
try {
$message->encodeStream($this->_encoder);
} catch (Horde_ActiveSync_Exception $e) {
$this->_logger->err($e);
}
$this->_encoder->endTag();
$this->_encoder->endTag();
}