Save and restore iCal STATUS properties

This commit is contained in:
Thomas Bruederli 2014-04-03 15:07:47 +02:00
parent b1e797adf1
commit 1ce6d461a6
5 changed files with 18 additions and 0 deletions

View file

@ -412,6 +412,8 @@ class libvcalendar implements Iterator
$event['cancelled'] = true;
else if ($prop->value == 'COMPLETED')
$event['complete'] = 100;
else
$event['status'] = strval($prop->value);
break;
case 'PRIORITY':
@ -939,6 +941,8 @@ class libvcalendar implements Iterator
$ve->add('STATUS', 'TENTATIVE');
else if ($event['complete'] == 100)
$ve->add('STATUS', 'COMPLETED');
else if (!empty($event['status']))
$ve->add('STATUS', $event['status']);
if (!empty($event['sensitivity']))
$ve->add('CLASS', strtoupper($event['sensitivity']));

View file

@ -287,6 +287,7 @@ class libvcalendar_test extends PHPUnit_Framework_TestCase
$this->assertInstanceOf('DateTime', $task['start'], "'start' property is DateTime object");
$this->assertInstanceOf('DateTime', $task['due'], "'due' property is DateTime object");
$this->assertEquals('-1D:DISPLAY', $task['alarms'], "Taks alarm value");
$this->assertEquals('IN-PROCESS', $task['status'], "Task status property");
$this->assertEquals(1, count($task['x-custom']), "Custom properties");
}

View file

@ -87,6 +87,8 @@ class kolab_format_event extends kolab_format_xcal
$status = kolabformat::StatusTentative;
if ($object['cancelled'])
$status = kolabformat::StatusCancelled;
else if ($object['status'] && array_key_exists($object['status'], $this->status_map))
$status = $this->status_map[$object['status']];
$this->obj->setStatus($status);
// save recurrence exceptions

View file

@ -43,6 +43,13 @@ class kolab_format_task extends kolab_format_xcal
$this->obj->setPercentComplete(intval($object['complete']));
$status = kolabformat::StatusUndefined;
if ($object['complete'] == 100)
$status = kolabformat::StatusCompleted;
else if ($object['status'] && array_key_exists($object['status'], $this->status_map))
$status = $this->status_map[$object['status']];
$this->obj->setStatus($status);
if (isset($object['start']))
$this->obj->setStart(self::get_datetime($object['start'], null, $object['start']->_dateonly));

View file

@ -81,6 +81,10 @@ abstract class kolab_format_xcal extends kolab_format
'IN-PROCESS' => kolabformat::StatusInProcess,
'COMPLETED' => kolabformat::StatusCompleted,
'CANCELLED' => kolabformat::StatusCancelled,
'TENTATIVE' => kolabformat::StatusTentative,
'CONFIRMED' => kolabformat::StatusConfirmed,
'DRAFT' => kolabformat::StatusDraft,
'FINAL' => kolabformat::StatusFinal,
);
protected $part_status_map = array(