/**
* Create a nag Task object from an activesync message
*
* @param Horde_ActiveSync_Message_Task $message The task object
*/
public function fromASTask(Horde_ActiveSync_Message_Task $message)
{
/* Owner is always current user. */
$this->owner = $GLOBALS['registry']->getAuth();
/* Notes and Title */
if ($message->getProtocolVersion() >= Horde_ActiveSync::VERSION_TWELVE) {
if ($message->airsyncbasebody->type == Horde_ActiveSync::BODYPREF_TYPE_HTML) {
$this->desc = Horde_Text_Filter::filter($message->airsyncbasebody->data, 'Html2text');
} else {
$this->desc = $message->airsyncbasebody->data;
}
} else {
$this->desc = $message->body;
}
$this->name = $message->subject;
$tz = date_default_timezone_get();
/* Completion */
if ($this->completed = $message->complete) {
if ($message->datecompleted) {
$message->datecompleted->setTimezone($tz);
$this->completed_date = $message->datecompleted->timestamp();
} else {
$this->completed_date = null;
}
}
/* Due Date */
if (($due = $message->utcduedate) || ($due = $message->duedate)) {
$due->setTimezone($tz);
$this->due = $due->timestamp();
}
/* Start Date */
if (($start = $message->utcstartdate) || ($start = $message->startdate)) {
$start->setTimezone($tz);
$this->start = $start->timestamp();
}
/* Priority */
switch ($message->getImportance()) {
case Horde_ActiveSync_Message_Task::IMPORTANCE_LOW:
$this->priority = 5;
break;
case Horde_ActiveSync_Message_Task::IMPORTANCE_NORMAL:
$this->priority = 3;
break;
case Horde_ActiveSync_Message_Task::IMPORTANCE_HIGH:
$this->priority = 1;
break;
default:
$this->priority = 3;
}
if (($alarm = $message->getReminder()) && $this->due) {
$alarm->setTimezone($tz);
$this->alarm = ($this->due - $alarm->timestamp()) / 60;
}
if ($rrule = $message->getRecurrence()) {
$this->recurrence = $rrule;
}
$this->tasklist = $GLOBALS['prefs']->getValue('default_tasklist');
/* Categories */
if (is_array($message->categories) && count($message->categories)) {
$this->tags = $message->categories;
}
}