summaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/CalDAV/Activity/Provider/Todo.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav/lib/CalDAV/Activity/Provider/Todo.php')
-rw-r--r--apps/dav/lib/CalDAV/Activity/Provider/Todo.php34
1 files changed, 32 insertions, 2 deletions
diff --git a/apps/dav/lib/CalDAV/Activity/Provider/Todo.php b/apps/dav/lib/CalDAV/Activity/Provider/Todo.php
index a665caa0e6a..20d7afef028 100644
--- a/apps/dav/lib/CalDAV/Activity/Provider/Todo.php
+++ b/apps/dav/lib/CalDAV/Activity/Provider/Todo.php
@@ -87,6 +87,36 @@ class Todo extends Event {
$subject = $event->getSubject();
$parameters = $event->getSubjectParameters();
+ // Nextcloud 13+
+ if (isset($parameters['calendar'])) {
+ switch ($subject) {
+ case self::SUBJECT_OBJECT_ADD . '_todo':
+ case self::SUBJECT_OBJECT_DELETE . '_todo':
+ case self::SUBJECT_OBJECT_UPDATE . '_todo':
+ case self::SUBJECT_OBJECT_UPDATE . '_todo_completed':
+ case self::SUBJECT_OBJECT_UPDATE . '_todo_needs_action':
+ return [
+ 'actor' => $this->generateUserParameter($parameters['actor']),
+ 'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
+ 'todo' => $this->generateObjectParameter($parameters['object']),
+ ];
+ case self::SUBJECT_OBJECT_ADD . '_todo_self':
+ case self::SUBJECT_OBJECT_DELETE . '_todo_self':
+ case self::SUBJECT_OBJECT_UPDATE . '_todo_self':
+ case self::SUBJECT_OBJECT_UPDATE . '_todo_completed_self':
+ case self::SUBJECT_OBJECT_UPDATE . '_todo_needs_action_self':
+ return [
+ 'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
+ 'todo' => $this->generateObjectParameter($parameters['object']),
+ ];
+ }
+ }
+
+ // Legacy - Do NOT Remove unless necessary
+ // Removing this will break parsing of activities that were created on
+ // Nextcloud 12, so we should keep this as long as it's acceptable.
+ // Otherwise if people upgrade over multiple releases in a short period,
+ // they will get the dead entries in their stream.
switch ($subject) {
case self::SUBJECT_OBJECT_ADD . '_todo':
case self::SUBJECT_OBJECT_DELETE . '_todo':
@@ -95,7 +125,7 @@ class Todo extends Event {
case self::SUBJECT_OBJECT_UPDATE . '_todo_needs_action':
return [
'actor' => $this->generateUserParameter($parameters[0]),
- 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'todo' => $this->generateObjectParameter($parameters[2]),
];
case self::SUBJECT_OBJECT_ADD . '_todo_self':
@@ -104,7 +134,7 @@ class Todo extends Event {
case self::SUBJECT_OBJECT_UPDATE . '_todo_completed_self':
case self::SUBJECT_OBJECT_UPDATE . '_todo_needs_action_self':
return [
- 'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
+ 'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'todo' => $this->generateObjectParameter($parameters[2]),
];
}