lib/kolab_sync_data_tasks.php lib/plugins

Aleksander Machniak machniak at kolabsys.com
Thu May 1 08:58:06 CEST 2014


 lib/kolab_sync_data_tasks.php                  |    6 +++++-
 lib/plugins/libkolab/lib/kolab_format_task.php |   13 +++++++++----
 lib/plugins/libkolab/lib/kolab_format_xcal.php |    2 +-
 3 files changed, 15 insertions(+), 6 deletions(-)

New commits:
commit 0b73c27b9cd817430e0c1ff5709119baa7c292a5
Author: Aleksander Machniak <machniak at kolabsys.com>
Date:   Thu May 1 08:56:00 2014 +0200

    Fix task completeness status sync (Bug #3023)

diff --git a/lib/kolab_sync_data_tasks.php b/lib/kolab_sync_data_tasks.php
index b27c98e..d43df66 100644
--- a/lib/kolab_sync_data_tasks.php
+++ b/lib/kolab_sync_data_tasks.php
@@ -113,7 +113,7 @@ class kolab_sync_data_tasks extends kolab_sync_data
         $result = array();
 
         // Completion status (required)
-        $result['complete'] = intval(!empty($task['status']) && $task['status'] == 'COMPLETED');
+        $result['complete'] = intval($task['status'] == 'COMPLETED' || $task['complete'] == 100);
 
         // Calendar namespace fields
         foreach ($this->mapping as $key => $name) {
@@ -204,6 +204,10 @@ class kolab_sync_data_tasks extends kolab_sync_data
             $task['status']   = 'COMPLETED';
             $task['complete'] = 100;
         }
+        else if (isset($data->complete) && ($task['status'] == 'COMPLETED' || $task['complete'] == 100)) {
+            $task['status']   = '';
+            $task['complete'] = 0;
+        }
 
         // recurrence
         $task['recurrence'] = $this->recurrence_to_kolab($data, $folderid, null);
diff --git a/lib/plugins/libkolab/lib/kolab_format_task.php b/lib/plugins/libkolab/lib/kolab_format_task.php
index a15cb0b..465ba90 100644
--- a/lib/plugins/libkolab/lib/kolab_format_task.php
+++ b/lib/plugins/libkolab/lib/kolab_format_task.php
@@ -43,9 +43,14 @@ class kolab_format_task extends kolab_format_xcal
 
         $this->obj->setPercentComplete(intval($object['complete']));
 
-        if (isset($object['start']))
-            $this->obj->setStart(self::get_datetime($object['start'], null, $object['start']->_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);
+
+        $this->obj->setStart(self::get_datetime($object['start'], null, $object['start']->_dateonly));
         $this->obj->setDue(self::get_datetime($object['due'], null, $object['due']->_dateonly));
 
         $related = new vectors;
@@ -114,7 +119,7 @@ class kolab_format_task extends kolab_format_xcal
         if ($this->data['priority'] == 1)
             $tags[] = 'x-flagged';
 
-        if (!empty($this->data['alarms']))
+        if (!empty($this->data['valarms']))
             $tags[] = 'x-has-alarms';
 
         if ($this->data['parent_id'])
diff --git a/lib/plugins/libkolab/lib/kolab_format_xcal.php b/lib/plugins/libkolab/lib/kolab_format_xcal.php
index a2544f4..a4ec8ea 100644
--- a/lib/plugins/libkolab/lib/kolab_format_xcal.php
+++ b/lib/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,




More information about the commits mailing list