From bdf2faafae42282e52694af90c3d21ceed69949c Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Tue, 8 Jul 2014 12:32:05 +0200 Subject: [PATCH] Store tags to enable partstat queries (#1796) --- plugins/libkolab/lib/kolab_format_event.php | 6 +----- plugins/libkolab/lib/kolab_format_task.php | 5 +---- plugins/libkolab/lib/kolab_format_xcal.php | 23 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/plugins/libkolab/lib/kolab_format_event.php b/plugins/libkolab/lib/kolab_format_event.php index c0bcef47..c9a1c9f9 100644 --- a/plugins/libkolab/lib/kolab_format_event.php +++ b/plugins/libkolab/lib/kolab_format_event.php @@ -193,16 +193,12 @@ class kolab_format_event extends kolab_format_xcal */ public function get_tags() { - $tags = array(); + $tags = parent::get_tags(); foreach ((array)$this->data['categories'] as $cat) { $tags[] = rcube_utils::normalize_string($cat); } - if (!empty($this->data['valarms'])) { - $tags[] = 'x-has-alarms'; - } - return $tags; } diff --git a/plugins/libkolab/lib/kolab_format_task.php b/plugins/libkolab/lib/kolab_format_task.php index b3c6a42e..87c3df9d 100644 --- a/plugins/libkolab/lib/kolab_format_task.php +++ b/plugins/libkolab/lib/kolab_format_task.php @@ -111,7 +111,7 @@ class kolab_format_task extends kolab_format_xcal */ public function get_tags() { - $tags = array(); + $tags = parent::get_tags(); if ($this->data['status'] == 'COMPLETED' || ($this->data['complete'] == 100 && empty($this->data['status']))) $tags[] = 'x-complete'; @@ -119,9 +119,6 @@ class kolab_format_task extends kolab_format_xcal if ($this->data['priority'] == 1) $tags[] = 'x-flagged'; - if (!empty($this->data['valarms'])) - $tags[] = 'x-has-alarms'; - if ($this->data['parent_id']) $tags[] = 'x-parent:' . $this->data['parent_id']; diff --git a/plugins/libkolab/lib/kolab_format_xcal.php b/plugins/libkolab/lib/kolab_format_xcal.php index 0742f2a9..c9e06acd 100644 --- a/plugins/libkolab/lib/kolab_format_xcal.php +++ b/plugins/libkolab/lib/kolab_format_xcal.php @@ -560,4 +560,27 @@ abstract class kolab_format_xcal extends kolab_format return array_unique(rcube_utils::normalize_string($data, true)); } + /** + * Callback for kolab_storage_cache to get object specific tags to cache + * + * @return array List of tags to save in cache + */ + public function get_tags() + { + $tags = array(); + + if (!empty($this->data['valarms'])) { + $tags[] = 'x-has-alarms'; + } + + // create tags reflecting participant status + if (is_array($this->data['attendees'])) { + foreach ($this->data['attendees'] as $attendee) { + if (!empty($attendee['email']) && !empty($attendee['status'])) + $tags[] = 'x-partstat:' . $attendee['email'] . ':' . strtolower($attendee['status']); + } + } + + return $tags; + } } \ No newline at end of file