Skip to content

Commit

Permalink
Fix missing translation of "Personal" calendar in activities
Browse files Browse the repository at this point in the history
Signed-off-by: Joas Schilling <coding@schilljs.com>
  • Loading branch information
nickvergessen committed Oct 16, 2017
1 parent c25be8d commit bdb0265
Show file tree
Hide file tree
Showing 7 changed files with 217 additions and 33 deletions.
66 changes: 47 additions & 19 deletions apps/dav/lib/CalDAV/Activity/Backend.php
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,12 @@ protected function triggerCalendarActivity($action, array $calendarData, array $
->setSubject(
$user === $currentUser ? $action . '_self' : $action,
[
$currentUser,
$calendarData['{DAV:}displayname'],
'actor' => $currentUser,
'calendar' => [
'id' => (int) $calendarData['id'],
'uri' => $calendarData['uri'],
'name' => $calendarData['{DAV:}displayname'],
],
]
);
$this->activityManager->publish($event);
Expand Down Expand Up @@ -187,8 +191,13 @@ public function onCalendarUpdateShares(array $calendarData, array $shares, array

if ($owner !== $principal[2]) {
$parameters = [
$principal[2],
$calendarData['{DAV:}displayname'],
'actor' => $event->getAuthor(),
'calendar' => [
'id' => (int) $calendarData['id'],
'uri' => $calendarData['uri'],
'name' => $calendarData['{DAV:}displayname'],
],
'user' => $principal[2],
];

if ($owner === $event->getAuthor()) {
Expand All @@ -201,7 +210,6 @@ public function onCalendarUpdateShares(array $calendarData, array $shares, array
$this->activityManager->publish($event);

$subject = Calendar::SUBJECT_UNSHARE_USER . '_by';
$parameters[] = $event->getAuthor();
}

$event->setAffectedUser($owner)
Expand All @@ -212,8 +220,13 @@ public function onCalendarUpdateShares(array $calendarData, array $shares, array
$this->triggerActivityGroup($principal[2], $event, $calendarData, Calendar::SUBJECT_UNSHARE_USER);

$parameters = [
$principal[2],
$calendarData['{DAV:}displayname'],
'actor' => $event->getAuthor(),
'calendar' => [
'id' => (int) $calendarData['id'],
'uri' => $calendarData['uri'],
'name' => $calendarData['{DAV:}displayname'],
],
'group' => $principal[2],
];

if ($owner === $event->getAuthor()) {
Expand All @@ -224,7 +237,6 @@ public function onCalendarUpdateShares(array $calendarData, array $shares, array
$this->activityManager->publish($event);

$subject = Calendar::SUBJECT_UNSHARE_GROUP . '_by';
$parameters[] = $event->getAuthor();
}

$event->setAffectedUser($owner)
Expand All @@ -250,8 +262,13 @@ public function onCalendarUpdateShares(array $calendarData, array $shares, array

if ($owner !== $principal[2]) {
$parameters = [
$principal[2],
$calendarData['{DAV:}displayname'],
'actor' => $event->getAuthor(),
'calendar' => [
'id' => (int) $calendarData['id'],
'uri' => $calendarData['uri'],
'name' => $calendarData['{DAV:}displayname'],
],
'user' => $principal[2],
];

if ($owner === $event->getAuthor()) {
Expand All @@ -262,7 +279,6 @@ public function onCalendarUpdateShares(array $calendarData, array $shares, array
$this->activityManager->publish($event);

$subject = Calendar::SUBJECT_SHARE_USER . '_by';
$parameters[] = $event->getAuthor();
}

$event->setAffectedUser($owner)
Expand All @@ -273,8 +289,13 @@ public function onCalendarUpdateShares(array $calendarData, array $shares, array
$this->triggerActivityGroup($principal[2], $event, $calendarData, Calendar::SUBJECT_SHARE_USER);

$parameters = [
$principal[2],
$calendarData['{DAV:}displayname'],
'actor' => $event->getAuthor(),
'calendar' => [
'id' => (int) $calendarData['id'],
'uri' => $calendarData['uri'],
'name' => $calendarData['{DAV:}displayname'],
],
'group' => $principal[2],
];

if ($owner === $event->getAuthor()) {
Expand All @@ -285,7 +306,6 @@ public function onCalendarUpdateShares(array $calendarData, array $shares, array
$this->activityManager->publish($event);

$subject = Calendar::SUBJECT_SHARE_GROUP . '_by';
$parameters[] = $event->getAuthor();
}

$event->setAffectedUser($owner)
Expand Down Expand Up @@ -347,8 +367,12 @@ protected function triggerActivityUser($user, IEvent $event, array $properties,
->setSubject(
$user === $event->getAuthor() && $subjectSelf ? $subjectSelf : $subject,
[
$event->getAuthor(),
$properties['{DAV:}displayname'],
'actor' => $event->getAuthor(),
'calendar' => [
'id' => (int) $properties['id'],
'uri' => $properties['uri'],
'name' => $properties['{DAV:}displayname'],
],
]
);

Expand Down Expand Up @@ -401,9 +425,13 @@ public function onTouchCalendarObject($action, array $calendarData, array $share
->setSubject(
$user === $currentUser ? $action . '_self' : $action,
[
$currentUser,
$calendarData['{DAV:}displayname'],
[
'actor' => $event->getAuthor(),
'calendar' => [
'id' => (int) $calendarData['id'],
'uri' => $calendarData['uri'],
'name' => $calendarData['{DAV:}displayname'],
],
'object' => [
'id' => $object['id'],
'name' => $object['name'],
],
Expand Down
28 changes: 26 additions & 2 deletions apps/dav/lib/CalDAV/Activity/Provider/Base.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@

namespace OCA\DAV\CalDAV\Activity\Provider;

use OCA\DAV\CalDAV\CalDavBackend;
use OCP\Activity\IEvent;
use OCP\Activity\IProvider;
use OCP\IL10N;
use OCP\IUser;
use OCP\IUserManager;

Expand Down Expand Up @@ -64,7 +66,7 @@ protected function setSubjects(IEvent $event, $subject, array $parameters) {
protected function generateObjectParameter($eventData) {
if (!is_array($eventData) || !isset($eventData['id']) || !isset($eventData['name'])) {
throw new \InvalidArgumentException();
};
}

return [
'type' => 'calendar-event',
Expand All @@ -73,12 +75,34 @@ protected function generateObjectParameter($eventData) {
];
}

/**
* @param array $data
* @param IL10N $l
* @return array
*/
protected function generateCalendarParameter($data, IL10N $l) {
if ($data['uri'] === CalDavBackend::PERSONAL_CALENDAR_URI &&
$data['name'] === CalDavBackend::PERSONAL_CALENDAR_NAME) {
return [
'type' => 'calendar',
'id' => $data['id'],
'name' => $l->t('Personal'),
];
}

return [
'type' => 'calendar',
'id' => $data['id'],
'name' => $data['name'],
];
}

/**
* @param int $id
* @param string $name
* @return array
*/
protected function generateCalendarParameter($id, $name) {
protected function generateLegacyCalendarParameter($id, $name) {
return [
'type' => 'calendar',
'id' => $id,
Expand Down
56 changes: 51 additions & 5 deletions apps/dav/lib/CalDAV/Activity/Provider/Calendar.php
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,52 @@ protected function getParameters(IEvent $event) {
$subject = $event->getSubject();
$parameters = $event->getSubjectParameters();

// Nextcloud 13+
if (isset($parameters['calendar'])) {
switch ($subject) {
case self::SUBJECT_ADD:
case self::SUBJECT_ADD . '_self':
case self::SUBJECT_DELETE:
case self::SUBJECT_DELETE . '_self':
case self::SUBJECT_UPDATE:
case self::SUBJECT_UPDATE . '_self':
case self::SUBJECT_SHARE_USER:
case self::SUBJECT_UNSHARE_USER:
case self::SUBJECT_UNSHARE_USER . '_self':
return [
'actor' => $this->generateUserParameter($parameters['actor']),
'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
];
case self::SUBJECT_SHARE_USER . '_you':
case self::SUBJECT_UNSHARE_USER . '_you':
return [
'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
'user' => $this->generateUserParameter($parameters['user']),
];
case self::SUBJECT_SHARE_USER . '_by':
case self::SUBJECT_UNSHARE_USER . '_by':
return [
'actor' => $this->generateUserParameter($parameters['actor']),
'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
'user' => $this->generateUserParameter($parameters['user']),
];
case self::SUBJECT_SHARE_GROUP . '_you':
case self::SUBJECT_UNSHARE_GROUP . '_you':
return [
'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
'group' => $this->generateGroupParameter($parameters['group']),
];
case self::SUBJECT_SHARE_GROUP . '_by':
case self::SUBJECT_UNSHARE_GROUP . '_by':
return [
'actor' => $this->generateUserParameter($parameters['actor']),
'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
'group' => $this->generateGroupParameter($parameters['group']),
];
}
}

// Legacy
switch ($subject) {
case self::SUBJECT_ADD:
case self::SUBJECT_ADD . '_self':
Expand All @@ -168,32 +214,32 @@ protected function getParameters(IEvent $event) {
case self::SUBJECT_UNSHARE_USER . '_self':
return [
'actor' => $this->generateUserParameter($parameters[0]),
'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
];
case self::SUBJECT_SHARE_USER . '_you':
case self::SUBJECT_UNSHARE_USER . '_you':
return [
'user' => $this->generateUserParameter($parameters[0]),
'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
];
case self::SUBJECT_SHARE_USER . '_by':
case self::SUBJECT_UNSHARE_USER . '_by':
return [
'user' => $this->generateUserParameter($parameters[0]),
'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'actor' => $this->generateUserParameter($parameters[2]),
];
case self::SUBJECT_SHARE_GROUP . '_you':
case self::SUBJECT_UNSHARE_GROUP . '_you':
return [
'group' => $this->generateGroupParameter($parameters[0]),
'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
];
case self::SUBJECT_SHARE_GROUP . '_by':
case self::SUBJECT_UNSHARE_GROUP . '_by':
return [
'group' => $this->generateGroupParameter($parameters[0]),
'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'actor' => $this->generateUserParameter($parameters[2]),
];
}
Expand Down
26 changes: 24 additions & 2 deletions apps/dav/lib/CalDAV/Activity/Provider/Event.php
Original file line number Diff line number Diff line change
Expand Up @@ -118,20 +118,42 @@ protected function getParameters(IEvent $event) {
$subject = $event->getSubject();
$parameters = $event->getSubjectParameters();

// Nextcloud 13+
if (isset($parameters['calendar'])) {
switch ($subject) {
case self::SUBJECT_OBJECT_ADD . '_event':
case self::SUBJECT_OBJECT_DELETE . '_event':
case self::SUBJECT_OBJECT_UPDATE . '_event':
return [
'actor' => $this->generateUserParameter($parameters['actor']),
'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
'event' => $this->generateObjectParameter($parameters['object']),
];
case self::SUBJECT_OBJECT_ADD . '_event_self':
case self::SUBJECT_OBJECT_DELETE . '_event_self':
case self::SUBJECT_OBJECT_UPDATE . '_event_self':
return [
'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
'event' => $this->generateObjectParameter($parameters['object']),
];
}
}

// Legacy
switch ($subject) {
case self::SUBJECT_OBJECT_ADD . '_event':
case self::SUBJECT_OBJECT_DELETE . '_event':
case self::SUBJECT_OBJECT_UPDATE . '_event':
return [
'actor' => $this->generateUserParameter($parameters[0]),
'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'event' => $this->generateObjectParameter($parameters[2]),
];
case self::SUBJECT_OBJECT_ADD . '_event_self':
case self::SUBJECT_OBJECT_DELETE . '_event_self':
case self::SUBJECT_OBJECT_UPDATE . '_event_self':
return [
'calendar' => $this->generateCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'calendar' => $this->generateLegacyCalendarParameter((int)$event->getObjectId(), $parameters[1]),
'event' => $this->generateObjectParameter($parameters[2]),
];
}
Expand Down
30 changes: 28 additions & 2 deletions apps/dav/lib/CalDAV/Activity/Provider/Todo.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,32 @@ protected function getParameters(IEvent $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
switch ($subject) {
case self::SUBJECT_OBJECT_ADD . '_todo':
case self::SUBJECT_OBJECT_DELETE . '_todo':
Expand All @@ -95,7 +121,7 @@ protected function getParameters(IEvent $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':
Expand All @@ -104,7 +130,7 @@ protected function getParameters(IEvent $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]),
];
}
Expand Down
Loading

0 comments on commit bdb0265

Please sign in to comment.