Branch 'roundcubemail-plugins-kolab-3.1' - 2 commits - plugins/libcalendaring plugins/libkolab

Thomas Brüderli bruederli at kolabsys.com
Mon Apr 28 12:02:59 CEST 2014


 plugins/libcalendaring/libvcalendar.php       |    4 ++++
 plugins/libcalendaring/tests/libvcalendar.php |    1 +
 plugins/libkolab/lib/kolab_format_event.php   |    2 ++
 plugins/libkolab/lib/kolab_format_task.php    |    7 +++++++
 plugins/libkolab/lib/kolab_format_xcal.php    |    6 +++++-
 5 files changed, 19 insertions(+), 1 deletion(-)

New commits:
commit 577c9a5aab10ce0b98a503727c3f5253d3d62ed0
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Thu Apr 17 12:08:52 2014 +0200

    Make status map property visible to derived classes

diff --git a/plugins/libkolab/lib/kolab_format_xcal.php b/plugins/libkolab/lib/kolab_format_xcal.php
index 9ab0b6b..5de82e0 100644
--- a/plugins/libkolab/lib/kolab_format_xcal.php
+++ b/plugins/libkolab/lib/kolab_format_xcal.php
@@ -76,7 +76,7 @@ abstract class kolab_format_xcal extends kolab_format
         'AUDIO' => Alarm::AudioAlarm,
     );
 
-    private $status_map = array(
+    protected $status_map = array(
         'NEEDS-ACTION' => kolabformat::StatusNeedsAction,
         'IN-PROCESS'   => kolabformat::StatusInProcess,
         'COMPLETED'    => kolabformat::StatusCompleted,


commit 47848fab3c4d5c9c4c9684a96f21cfc8d6c492a6
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Thu Apr 3 15:07:47 2014 +0200

    Save and restore iCal STATUS properties

diff --git a/plugins/libcalendaring/libvcalendar.php b/plugins/libcalendaring/libvcalendar.php
index ec8bb80..19ef12d 100644
--- a/plugins/libcalendaring/libvcalendar.php
+++ b/plugins/libcalendaring/libvcalendar.php
@@ -411,6 +411,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':
@@ -930,6 +932,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']));
diff --git a/plugins/libcalendaring/tests/libvcalendar.php b/plugins/libcalendaring/tests/libvcalendar.php
index 2bb07ba..88a244f 100644
--- a/plugins/libcalendaring/tests/libvcalendar.php
+++ b/plugins/libcalendaring/tests/libvcalendar.php
@@ -262,6 +262,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");
     }
 
diff --git a/plugins/libkolab/lib/kolab_format_event.php b/plugins/libkolab/lib/kolab_format_event.php
index 6a8c3ae..7d1d53c 100644
--- a/plugins/libkolab/lib/kolab_format_event.php
+++ b/plugins/libkolab/lib/kolab_format_event.php
@@ -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
diff --git a/plugins/libkolab/lib/kolab_format_task.php b/plugins/libkolab/lib/kolab_format_task.php
index ea12351..555e77f 100644
--- a/plugins/libkolab/lib/kolab_format_task.php
+++ b/plugins/libkolab/lib/kolab_format_task.php
@@ -45,6 +45,13 @@ class kolab_format_task extends kolab_format_xcal
         $this->obj->setStart(self::get_datetime($object['start'], null, $object['start']->_dateonly));
         $this->obj->setDue(self::get_datetime($object['due'], null, $object['due']->_dateonly));
 
+        $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);
+
         $related = new vectors;
         if (!empty($object['parent_id']))
             $related->push($object['parent_id']);
diff --git a/plugins/libkolab/lib/kolab_format_xcal.php b/plugins/libkolab/lib/kolab_format_xcal.php
index cd69fa9..9ab0b6b 100644
--- a/plugins/libkolab/lib/kolab_format_xcal.php
+++ b/plugins/libkolab/lib/kolab_format_xcal.php
@@ -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(




More information about the commits mailing list