From b69ddfba8be6938d85f4932cf9691f955105c4c5 Mon Sep 17 00:00:00 2001
From: Joas Schilling <coding@schilljs.com>
Date: Mon, 10 Jul 2017 12:10:36 +0200
Subject: [PATCH] Fix activity emails for accept/decline of remote shares

Signed-off-by: Joas Schilling <coding@schilljs.com>
---
 .../lib/Controller/RequestHandlerController.php    | 14 ++++++++------
 .../lib/Activity/Providers/RemoteShares.php        |  6 +++++-
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php
index 8a7a1188c28..09704047c7b 100644
--- a/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php
+++ b/apps/federatedfilesharing/lib/Controller/RequestHandlerController.php
@@ -318,14 +318,15 @@ class RequestHandlerController extends OCSController {
 	}
 
 	protected function executeAcceptShare(Share\IShare $share) {
-		list($file, $link) = $this->getFile($this->getCorrectUid($share), $share->getNode()->getId());
+		$fileId = (int) $share->getNode()->getId();
+		list($file, $link) = $this->getFile($this->getCorrectUid($share), $fileId);
 
 		$event = \OC::$server->getActivityManager()->generateEvent();
 		$event->setApp('files_sharing')
 			->setType('remote_share')
 			->setAffectedUser($this->getCorrectUid($share))
-			->setSubject(RemoteShares::SUBJECT_REMOTE_SHARE_ACCEPTED, [$share->getSharedWith(), $file])
-			->setObject('files', (int)$share->getNode()->getId(), $file)
+			->setSubject(RemoteShares::SUBJECT_REMOTE_SHARE_ACCEPTED, [$share->getSharedWith(), [$fileId => $file]])
+			->setObject('files', $fileId, $file)
 			->setLink($link);
 		\OC::$server->getActivityManager()->publish($event);
 	}
@@ -373,14 +374,15 @@ class RequestHandlerController extends OCSController {
 	 */
 	protected function executeDeclineShare(Share\IShare $share) {
 		$this->federatedShareProvider->removeShareFromTable($share);
-		list($file, $link) = $this->getFile($this->getCorrectUid($share), $share->getNode()->getId());
+		$fileId = (int) $share->getNode()->getId();
+		list($file, $link) = $this->getFile($this->getCorrectUid($share), $fileId);
 
 		$event = \OC::$server->getActivityManager()->generateEvent();
 		$event->setApp('files_sharing')
 			->setType('remote_share')
 			->setAffectedUser($this->getCorrectUid($share))
-			->setSubject(RemoteShares::SUBJECT_REMOTE_SHARE_DECLINED, [$share->getSharedWith(), $file])
-			->setObject('files', (int)$share->getNode()->getId(), $file)
+			->setSubject(RemoteShares::SUBJECT_REMOTE_SHARE_DECLINED, [$share->getSharedWith(), [$fileId => $file]])
+			->setObject('files', $fileId, $file)
 			->setLink($link);
 		\OC::$server->getActivityManager()->publish($event);
 
diff --git a/apps/files_sharing/lib/Activity/Providers/RemoteShares.php b/apps/files_sharing/lib/Activity/Providers/RemoteShares.php
index 6ac0be76ff4..cf4954800e8 100644
--- a/apps/files_sharing/lib/Activity/Providers/RemoteShares.php
+++ b/apps/files_sharing/lib/Activity/Providers/RemoteShares.php
@@ -131,8 +131,12 @@ class RemoteShares extends Base {
 				];
 			case self::SUBJECT_REMOTE_SHARE_ACCEPTED:
 			case self::SUBJECT_REMOTE_SHARE_DECLINED:
+				$fileParameter = $parameters[1];
+				if (!is_array($fileParameter)) {
+					$fileParameter = [$event->getObjectId() => $event->getObjectName()];
+				}
 				return [
-					'file' => $this->getFile([$event->getObjectId() => $event->getObjectName()]),
+					'file' => $this->getFile($fileParameter),
 					'user' => $this->getFederatedUser($parameters[0]),
 				];
 		}
-- 
GitLab