Skip to content

Commit

Permalink
Update Email and SendMail messages with new EAS 16.0 properties.
Browse files Browse the repository at this point in the history
  • Loading branch information
mrubinsk committed Jan 15, 2016
1 parent ea48d7f commit abdad70
Show file tree
Hide file tree
Showing 3 changed files with 185 additions and 103 deletions.
2 changes: 2 additions & 0 deletions framework/ActiveSync/lib/Horde/ActiveSync.php
Expand Up @@ -139,6 +139,8 @@ class Horde_ActiveSync
const AIRSYNCBASE_ISINLINE = 'AirSyncBase:IsInline';
const AIRSYNCBASE_NATIVEBODYTYPE = 'AirSyncBase:NativeBodyType';
const AIRSYNCBASE_CONTENTTYPE = 'AirSyncBase:ContentType';
const AIRSYNCBASE_LOCATION = 'AirSyncBase:Location';

// 14.0
const AIRSYNCBASE_PREVIEW = 'AirSyncBase:Preview';
// 14.1
Expand Down
233 changes: 138 additions & 95 deletions framework/ActiveSync/lib/Horde/ActiveSync/Message/Mail.php
Expand Up @@ -34,118 +34,131 @@
* @author Michael J Rubinsky <mrubinsk@horde.org>
* @package ActiveSync
*
* @property string $to
* @property string $cc
* @property string $from
* @property string $subject
* @property string $threadtopic
* @property Horde_Date $datereceived
* @property string $displayto
* @property integer $importance
* @property integer $mimetruncated
* @property string $mimedata
* @property integer $mimesize
* @property integer $messageclass
* @property Horde_ActiveSync_Message_MeetingRequest $meetingrequest
* @property string $reply_to
* @property integer $read
* @property cpid $integer The codepage id.
* @property Horde_ActiveSync_Message_Attachments $attachments (EAS 2.5 only).
* @property integer $bodytruncated (EAS 2.5 only)
* @property integer $bodysize (EAS 2.5 only)
* @property mixed $stream|string body (EAS 2.5 only)
* @property integer $airsyncbasenativebodytype (EAS > 2.5 only).
* @property Horde_ActiveSync_Message_AirSyncBaseBody $airsyncbasebody (EAS > 2.5 only).
* @property Horde_ActiveSync_Message_AirSyncBaseAttachments $airsyncbaseattachments (EAS > 2.5 only).
* @property integer $contentclass (EAS > 2.5 only).
* @property Horde_ActiveSync_Message_Flag $flag (EAS > 2.5 only).
* @property string $to
* @property string $cc
* @property string $from
* @property string $subject
* @property string $threadtopic
* @property Horde_Date $datereceived
* @property string $displayto
* @property integer $importance
* @property integer $mimetruncated
* @property string $mimedata
* @property integer $mimesize
* @property integer $messageclass
* @property Horde_ActiveSync_Message_MeetingRequest
* $meetingrequest
* @property string $reply_to
* @property integer $read
* @property cpid $integer The codepage id.
* @property Horde_ActiveSync_Message_Attachments
* $attachments (EAS 2.5 only).
* @property integer $bodytruncated (EAS 2.5 only)
* @property integer $bodysize (EAS 2.5 only)
* @property stream|string $body (EAS 2.5 only)
* @property integer $airsyncbasenativebodytype (EAS > 2.5 only).
* @property Horde_ActiveSync_Message_AirSyncBaseBody
* $airsyncbasebody (EAS > 2.5 only).
* @property Horde_ActiveSync_Message_AirSyncBaseAttachments
* $airsyncbaseattachments (EAS > 2.5 only).
* @property integer $contentclass (EAS > 2.5 only).
* @property Horde_ActiveSync_Message_Flag
* $flag (EAS > 2.5 only).
* @property boolean $isdraft (EAS 16.0 only).
* @property string $bcc The bcc recipients (EAS 16.0 only).
* @property boolean $send (EAS 16.0 only).
*
* // Internal properties. Not streamed to device.
* @property string $messageid @since 2.4.0
* @property boolean $answered @since 2.4.0
* @property boolean $forwarded @since 2.4.0
* @property string $messageid @since 2.4.0
* @property boolean $answered @since 2.4.0
* @property boolean $forwarded @since 2.4.0
*/
class Horde_ActiveSync_Message_Mail extends Horde_ActiveSync_Message_Base
{
const POOMMAIL_ATTACHMENT = 'POOMMAIL:Attachment';
const POOMMAIL_ATTACHMENTS = 'POOMMAIL:Attachments';
const POOMMAIL_BODY = 'POOMMAIL:Body';
const POOMMAIL_BODYSIZE = 'POOMMAIL:BodySize';
const POOMMAIL_BODYTRUNCATED = 'POOMMAIL:BodyTruncated';
const POOMMAIL_DATERECEIVED = 'POOMMAIL:DateReceived';
const POOMMAIL_DISPLAYTO = 'POOMMAIL:DisplayTo';
const POOMMAIL_IMPORTANCE = 'POOMMAIL:Importance';
const POOMMAIL_MESSAGECLASS = 'POOMMAIL:MessageClass';
const POOMMAIL_SUBJECT = 'POOMMAIL:Subject';
const POOMMAIL_READ = 'POOMMAIL:Read';
const POOMMAIL_TO = 'POOMMAIL:To';
const POOMMAIL_CC = 'POOMMAIL:Cc';
const POOMMAIL_FROM = 'POOMMAIL:From';
const POOMMAIL_REPLY_TO = 'POOMMAIL:Reply-To';
const POOMMAIL_ALLDAYEVENT = 'POOMMAIL:AllDayEvent';
const POOMMAIL_CATEGORIES = 'POOMMAIL:Categories';
const POOMMAIL_CATEGORY = 'POOMMAIL:Category';
const POOMMAIL_DTSTAMP = 'POOMMAIL:DtStamp';
const POOMMAIL_ENDTIME = 'POOMMAIL:EndTime';
const POOMMAIL_INSTANCETYPE = 'POOMMAIL:InstanceType';
const POOMMAIL_BUSYSTATUS = 'POOMMAIL:BusyStatus';
const POOMMAIL_LOCATION = 'POOMMAIL:Location';
const POOMMAIL_MEETINGREQUEST = 'POOMMAIL:MeetingRequest';
const POOMMAIL_ORGANIZER = 'POOMMAIL:Organizer';
const POOMMAIL_RECURRENCEID = 'POOMMAIL:RecurrenceId';
const POOMMAIL_REMINDER = 'POOMMAIL:Reminder';
const POOMMAIL_RESPONSEREQUESTED = 'POOMMAIL:ResponseRequested';
const POOMMAIL_RECURRENCES = 'POOMMAIL:Recurrences';
const POOMMAIL_RECURRENCE = 'POOMMAIL:Recurrence';
const POOMMAIL_TYPE = 'POOMMAIL:Type';
const POOMMAIL_UNTIL = 'POOMMAIL:Until';
const POOMMAIL_OCCURRENCES = 'POOMMAIL:Occurrences';
const POOMMAIL_INTERVAL = 'POOMMAIL:Interval';
const POOMMAIL_DAYOFWEEK = 'POOMMAIL:DayOfWeek';
const POOMMAIL_DAYOFMONTH = 'POOMMAIL:DayOfMonth';
const POOMMAIL_WEEKOFMONTH = 'POOMMAIL:WeekOfMonth';
const POOMMAIL_MONTHOFYEAR = 'POOMMAIL:MonthOfYear';
const POOMMAIL_STARTTIME = 'POOMMAIL:StartTime';
const POOMMAIL_SENSITIVITY = 'POOMMAIL:Sensitivity';
const POOMMAIL_TIMEZONE = 'POOMMAIL:TimeZone';
const POOMMAIL_GLOBALOBJID = 'POOMMAIL:GlobalObjId';
const POOMMAIL_THREADTOPIC = 'POOMMAIL:ThreadTopic';
const POOMMAIL_MIMEDATA = 'POOMMAIL:MIMEData';
const POOMMAIL_MIMETRUNCATED = 'POOMMAIL:MIMETruncated';
const POOMMAIL_MIMESIZE = 'POOMMAIL:MIMESize';
const POOMMAIL_INTERNETCPID = 'POOMMAIL:InternetCPID';
const POOMMAIL_ATTACHMENT = 'POOMMAIL:Attachment';
const POOMMAIL_ATTACHMENTS = 'POOMMAIL:Attachments';
const POOMMAIL_BODY = 'POOMMAIL:Body';
const POOMMAIL_BODYSIZE = 'POOMMAIL:BodySize';
const POOMMAIL_BODYTRUNCATED = 'POOMMAIL:BodyTruncated';
const POOMMAIL_DATERECEIVED = 'POOMMAIL:DateReceived';
const POOMMAIL_DISPLAYTO = 'POOMMAIL:DisplayTo';
const POOMMAIL_IMPORTANCE = 'POOMMAIL:Importance';
const POOMMAIL_MESSAGECLASS = 'POOMMAIL:MessageClass';
const POOMMAIL_SUBJECT = 'POOMMAIL:Subject';
const POOMMAIL_READ = 'POOMMAIL:Read';
const POOMMAIL_TO = 'POOMMAIL:To';
const POOMMAIL_CC = 'POOMMAIL:Cc';
const POOMMAIL_FROM = 'POOMMAIL:From';
const POOMMAIL_REPLY_TO = 'POOMMAIL:Reply-To';
const POOMMAIL_ALLDAYEVENT = 'POOMMAIL:AllDayEvent';
const POOMMAIL_CATEGORIES = 'POOMMAIL:Categories';
const POOMMAIL_CATEGORY = 'POOMMAIL:Category';
const POOMMAIL_DTSTAMP = 'POOMMAIL:DtStamp';
const POOMMAIL_ENDTIME = 'POOMMAIL:EndTime';
const POOMMAIL_INSTANCETYPE = 'POOMMAIL:InstanceType';
const POOMMAIL_BUSYSTATUS = 'POOMMAIL:BusyStatus';
const POOMMAIL_LOCATION = 'POOMMAIL:Location';
const POOMMAIL_MEETINGREQUEST = 'POOMMAIL:MeetingRequest';
const POOMMAIL_ORGANIZER = 'POOMMAIL:Organizer';
const POOMMAIL_RECURRENCEID = 'POOMMAIL:RecurrenceId';
const POOMMAIL_REMINDER = 'POOMMAIL:Reminder';
const POOMMAIL_RESPONSEREQUESTED = 'POOMMAIL:ResponseRequested';
const POOMMAIL_RECURRENCES = 'POOMMAIL:Recurrences';
const POOMMAIL_RECURRENCE = 'POOMMAIL:Recurrence';
const POOMMAIL_TYPE = 'POOMMAIL:Type';
const POOMMAIL_UNTIL = 'POOMMAIL:Until';
const POOMMAIL_OCCURRENCES = 'POOMMAIL:Occurrences';
const POOMMAIL_INTERVAL = 'POOMMAIL:Interval';
const POOMMAIL_DAYOFWEEK = 'POOMMAIL:DayOfWeek';
const POOMMAIL_DAYOFMONTH = 'POOMMAIL:DayOfMonth';
const POOMMAIL_WEEKOFMONTH = 'POOMMAIL:WeekOfMonth';
const POOMMAIL_MONTHOFYEAR = 'POOMMAIL:MonthOfYear';
const POOMMAIL_STARTTIME = 'POOMMAIL:StartTime';
const POOMMAIL_SENSITIVITY = 'POOMMAIL:Sensitivity';
const POOMMAIL_TIMEZONE = 'POOMMAIL:TimeZone';
const POOMMAIL_GLOBALOBJID = 'POOMMAIL:GlobalObjId';
const POOMMAIL_THREADTOPIC = 'POOMMAIL:ThreadTopic';
const POOMMAIL_MIMEDATA = 'POOMMAIL:MIMEData';
const POOMMAIL_MIMETRUNCATED = 'POOMMAIL:MIMETruncated';
const POOMMAIL_MIMESIZE = 'POOMMAIL:MIMESize';
const POOMMAIL_INTERNETCPID = 'POOMMAIL:InternetCPID';

// EAS 12.0
const POOMMAIL_CONTENTCLASS = 'POOMMAIL:ContentClass';
const POOMMAIL_FLAG = 'POOMMAIL:Flag';
const POOMMAIL_CONTENTCLASS = 'POOMMAIL:ContentClass';
const POOMMAIL_FLAG = 'POOMMAIL:Flag';

// EAS 14.0
const POOMMAIL_COMPLETETIME = 'POOMMAIL:CompleteTime';
const POOMMAIL_DISALLOWNEWTIMEPROPOSAL = 'POOMMAIL:DisallowNewTimeProposal';

// EAS 14 POOMMAIL2
const POOMMAIL2_UMCALLERID = 'POOMMAIL2:UmCallerId';
const POOMMAIL2_UMUSERNOTES = 'POOMMAIL2:UmUserNotes';
const POOMMAIL2_UMATTDURATION = 'POOMMAIL2:UmAttDuration';
const POOMMAIL2_UMATTORDER = 'POOMMAIL2:UmAttOrder';
const POOMMAIL2_CONVERSATIONID = 'POOMMAIL2:ConversationId';
const POOMMAIL2_CONVERSATIONINDEX = 'POOMMAIL2:ConversationIndex';
const POOMMAIL2_LASTVERBEXECUTED = 'POOMMAIL2:LastVerbExecuted';
const POOMMAIL2_LASTVERBEXECUTIONTIME = 'POOMMAIL2:LastVerbExecutionTime';
const POOMMAIL2_RECEIVEDASBCC = 'POOMMAIL2:ReceivedAsBcc';
const POOMMAIL2_SENDER = 'POOMMAIL2:Sender';
const POOMMAIL2_CALENDARTYPE = 'POOMMAIL2:CalendarType';
const POOMMAIL2_ISLEAPMONTH = 'POOMMAIL2:IsLeapMonth';
const POOMMAIL2_ACCOUNTID = 'POOMMAIL2:AccountId';
const POOMMAIL2_FIRSTDAYOFWEEK = 'POOMMAIL2:FirstDayOfWeek';
const POOMMAIL2_UMCALLERID = 'POOMMAIL2:UmCallerId';
const POOMMAIL2_UMUSERNOTES = 'POOMMAIL2:UmUserNotes';
const POOMMAIL2_UMATTDURATION = 'POOMMAIL2:UmAttDuration';
const POOMMAIL2_UMATTORDER = 'POOMMAIL2:UmAttOrder';
const POOMMAIL2_CONVERSATIONID = 'POOMMAIL2:ConversationId';
const POOMMAIL2_CONVERSATIONINDEX = 'POOMMAIL2:ConversationIndex';
const POOMMAIL2_LASTVERBEXECUTED = 'POOMMAIL2:LastVerbExecuted';
const POOMMAIL2_LASTVERBEXECUTIONTIME = 'POOMMAIL2:LastVerbExecutionTime';
const POOMMAIL2_RECEIVEDASBCC = 'POOMMAIL2:ReceivedAsBcc';
const POOMMAIL2_SENDER = 'POOMMAIL2:Sender';
const POOMMAIL2_CALENDARTYPE = 'POOMMAIL2:CalendarType';
const POOMMAIL2_ISLEAPMONTH = 'POOMMAIL2:IsLeapMonth';
const POOMMAIL2_ACCOUNTID = 'POOMMAIL2:AccountId';
const POOMMAIL2_FIRSTDAYOFWEEK = 'POOMMAIL2:FirstDayOfWeek';

// EAS 14.1
const POOMMAIL2_MEETINGMESSAGETYPE = 'POOMMAIL2:MeetingMessageType';
const POOMMAIL2_MEETINGMESSAGETYPE = 'POOMMAIL2:MeetingMessageType';

// EAS 16.0
const POOMMAIL2_ISDRAFT = 'POOMMAIL2:IsDraft';
const POOMMAIL2_BCC = 'POOMMAIL2:Bcc';
const POOMMAIL2_SEND = 'POOMMAIL2:Send';

/* Mail message types */
const CLASS_NOTE = 'IPM.Note';
const CLASS_MEETING_REQUEST = 'IPM.Schedule.Meeting.Request';
const CLASS_MEETING_NOTICE = 'IPM.Notification.Meeting';
const CLASS_NOTE = 'IPM.Note';
const CLASS_MEETING_REQUEST = 'IPM.Schedule.Meeting.Request';
const CLASS_MEETING_NOTICE = 'IPM.Notification.Meeting';

/* Flags */
const FLAG_READ_UNSEEN = 0;
Expand Down Expand Up @@ -255,6 +268,18 @@ public function __construct(array $options = array())
'flag' => false,
);

// Removed in 16.0
if ($this->_version <= Horde_ActiveSync::VERSION_FOURTEENONE) {
$this->_mapping += array(
self::POOMMAIL_LOCATION => array(self::KEY_ATTRIBUTE => 'location'),
self::POOMMAIL_GLOBALOBJID => array(self::KEY_ATTRIBUTE => 'globalobjid')
);
$this->_properties += array(
'location' => false,
'globalobjid' => false,
);
}

if ($this->_version >= Horde_ActiveSync::VERSION_FOURTEEN) {
$this->_mapping += array(
self::POOMMAIL_CATEGORIES => array(self::KEY_ATTRIBUTE => 'categories', self::KEY_VALUES => self::POOMMAIL_CATEGORY),
Expand Down Expand Up @@ -307,6 +332,24 @@ public function __construct(array $options = array())
'airsyncbasebodypart' => false
);
}

if ($this->_version >= Horde_ActiveSync::VERSION_SIXTEEN) {
$this->_mapping += array(
self::POOMMAIL2_ISDRAFT => array(self::KEY_ATTRIBUTE => 'isdraft'),
self::POOMMAIL2_BCC => array(self::KEY_ATTRIBUTE => 'bcc'),
self::POOMMAIL2_SEND => array(self::KEY_ATTRIBUTE => 'send'),
Horde_ActiveSync::AIRSYNCBASE_LOCATION => array(self::KEY_ATTRIBUTE => 'location',
Horde_ActiveSync_Message_Appointment::POOMCAL_UID => array(self::KEY_ATTRIBUTE => 'uid')),
);

$this->_properties += array(
'isdraft' => false,
'bcc' => false,
'send' => false,
'location' => false,
'uid' => false,
);
}
}
}

Expand Down
53 changes: 45 additions & 8 deletions framework/ActiveSync/lib/Horde/ActiveSync/Message/SendMail.php
Expand Up @@ -39,15 +39,21 @@
* @author Michael J Rubinsky <mrubinsk@horde.org>
* @package ActiveSync
*
* @property string $clientid The client's temporary clientid for this item.
* @property boolean $saveinsent Flag to indicate whether to save in sent mail.
* @property boolean $replacemime Flag to indicate we are replacing the full
* MIME data (i.e., not a SMART item).
* @property string $accountid The accountid.
* @property string $clientid The client's temporary clientid for this
* item.
* @property boolean $saveinsent Flag to indicate whether to save in sent
* mail.
* @property boolean $replacemime Flag to indicate we are replacing the
* Full MIME data (i.e., not a SMART item).
* @property string $accountid The accountid.
* @property Horde_ActiveSync_Message_SendMailSource $source
* The email source.
* @property string|stream mime The MIME contents of the message.
* @property string $templateid The templateid.
* The email source.
* @property string|stream mime The MIME contents of the message.
* @property string $templateid The templateid.
* @property string $forwardees EAS 16.0 Only
* @property string $forwardee EAS 16.0 Only.
* @property string $forwardeename EAS 16.0 Only.
* @property string $forwardeeemail EAS 16.0 Only.
*/
class Horde_ActiveSync_Message_SendMail extends Horde_ActiveSync_Message_Base
{
Expand All @@ -63,6 +69,13 @@ class Horde_ActiveSync_Message_SendMail extends Horde_ActiveSync_Message_Base
const COMPOSEMAIL_STATUS = 'ComposeMail:Status';
const COMPOSEMAIL_ACCOUNTID = 'ComposeMail:AccountId';

// 16.0
const COMPOSEMAIL_FORWARDEES = 'ComposeMail:Forwardees';
const COMPOSEMAIL_FORWARDEE = 'ComposeMail:Forwardee';
const COMPOSEMAIL_FORWARDEENAME = 'ComposeMail:ForwardeeName';
const COMPOSEMAIL_FORWARDEEEMAIL = 'ComposeMail:ForwardeeEmail';


/**
* Property mapping
*
Expand Down Expand Up @@ -93,6 +106,30 @@ class Horde_ActiveSync_Message_SendMail extends Horde_ActiveSync_Message_Base
'templateid' => false,
);

/**
* Const'r
*
* @see Horde_ActiveSync_Message_Base::__construct()
*/
public function __construct(array $options = array())
{
parent::__construct($options);
if ($this->_version >= Horde_ActiveSync::VERSION_SIXTEEN) {
$this->_mapping += array(
self::COMPOSEMAIL_FORWARDEES => array(self::KEY_ATTRIBUTE => 'forwardees'),
self::COMPOSEMAIL_FORWARDEE => array(self::KEY_ATTRIBUTE => 'forwardee'),
self::COMPOSEMAIL_FORWARDEENAME => array(self::KEY_ATTRIBUTE => 'forwardeename'),
self::COMPOSEMAIL_FORWARDEEEMAIL => array(self::KEY_ATTRIBUTE => 'forwardeeemail'),

$this->_properties += array(
'forwardees' => false,
'forwardee' => false,
'forwardeename' => false,
'forwardeeemail' => false,
);
}
}

public function &__get($property)
{
// The saveinsent is an empty tag, and is considered true if it is
Expand Down

0 comments on commit abdad70

Please sign in to comment.