diff --git a/apps/federatedfilesharing/lib/Notifier.php b/apps/federatedfilesharing/lib/Notifier.php index f66482b1383e2..f072822870e80 100644 --- a/apps/federatedfilesharing/lib/Notifier.php +++ b/apps/federatedfilesharing/lib/Notifier.php @@ -102,15 +102,15 @@ public function prepare(INotification $notification, string $languageCode): INot $params = $notification->getSubjectParameters(); if ($params[0] !== $params[1] && $params[1] !== null) { + $remoteInitiator = $this->createRemoteUser($params[0]); + $remoteOwner = $this->createRemoteUser($params[1]); + $params[3] = $remoteInitiator['name'] . '@' . $remoteInitiator['server']; + $params[4] = $remoteOwner['name'] . '@' . $remoteOwner['server']; + $notification->setParsedSubject( $l->t('You received "%3$s" as a remote share from %4$s (%1$s) (on behalf of %5$s (%2$s))', $params) ); - $initiator = $params[0]; - $initiatorDisplay = isset($params[3]) ? $params[3] : null; - $owner = $params[1]; - $ownerDisplay = isset($params[4]) ? $params[4] : null; - $notification->setRichSubject( $l->t('You received {share} as a remote share from {user} (on behalf of {behalf})'), [ @@ -119,17 +119,18 @@ public function prepare(INotification $notification, string $languageCode): INot 'id' => $notification->getObjectId(), 'name' => $params[2], ], - 'user' => $this->createRemoteUser($initiator, $initiatorDisplay), - 'behalf' => $this->createRemoteUser($owner, $ownerDisplay), + 'user' => $remoteInitiator, + 'behalf' => $remoteOwner, ] ); } else { + $remoteOwner = $this->createRemoteUser($params[0]); + $params[3] = $remoteOwner['name'] . '@' . $remoteOwner['server']; + $notification->setParsedSubject( $l->t('You received "%3$s" as a remote share from %4$s (%1$s)', $params) ); - $owner = $params[0]; - $ownerDisplay = isset($params[3]) ? $params[3] : null; $notification->setRichSubject( $l->t('You received {share} as a remote share from {user}'), @@ -139,7 +140,7 @@ public function prepare(INotification $notification, string $languageCode): INot 'id' => $notification->getObjectId(), 'name' => $params[2], ], - 'user' => $this->createRemoteUser($owner, $ownerDisplay), + 'user' => $remoteOwner, ] ); } @@ -213,17 +214,24 @@ protected function getDisplayName(ICloudId $cloudId) { } try { + // contains protocol in the ID return $this->getDisplayNameFromContact($cloudId->getId()); } catch (\OutOfBoundsException $e) { } try { - $this->getDisplayNameFromContact($user . '@http://' . $server); + // does not include protocol, as stored in addressbooks + return $this->getDisplayNameFromContact($cloudId->getDisplayId()); + } catch (\OutOfBoundsException $e) { + } + + try { + return $this->getDisplayNameFromContact($user . '@http://' . $server); } catch (\OutOfBoundsException $e) { } try { - $this->getDisplayNameFromContact($user . '@https://' . $server); + return $this->getDisplayNameFromContact($user . '@https://' . $server); } catch (\OutOfBoundsException $e) { } diff --git a/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php b/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php index e2e2f26ad3a83..5c5c9c46a0adb 100644 --- a/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php +++ b/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php @@ -256,7 +256,7 @@ public function shareReceived(ICloudFederationShare $share) { ->setAffectedUser($shareWith) ->setObject('remote_share', (int)$shareId, $name); \OC::$server->getActivityManager()->publish($event); - $this->notifyAboutNewShare($shareWith, $shareId, $ownerFederatedId, $sharedByFederatedId, $name, $sharedBy, $owner); + $this->notifyAboutNewShare($shareWith, $shareId, $ownerFederatedId, $sharedByFederatedId, $name); } else { $groupMembers = $this->groupManager->get($shareWith)->getUsers(); foreach ($groupMembers as $user) { @@ -267,7 +267,7 @@ public function shareReceived(ICloudFederationShare $share) { ->setAffectedUser($user->getUID()) ->setObject('remote_share', (int)$shareId, $name); \OC::$server->getActivityManager()->publish($event); - $this->notifyAboutNewShare($user->getUID(), $shareId, $ownerFederatedId, $sharedByFederatedId, $name, $sharedBy, $owner); + $this->notifyAboutNewShare($user->getUID(), $shareId, $ownerFederatedId, $sharedByFederatedId, $name); } } return $shareId; @@ -335,22 +335,13 @@ private function mapShareTypeToNextcloud($shareType) { return $result; } - /** - * notify user about new federated share - * - * @param $shareWith - * @param $shareId - * @param $ownerFederatedId - * @param $sharedByFederatedId - * @param $name - */ - private function notifyAboutNewShare($shareWith, $shareId, $ownerFederatedId, $sharedByFederatedId, $name, $sharedBy, $owner) { + private function notifyAboutNewShare($shareWith, $shareId, $ownerFederatedId, $sharedByFederatedId, $name): void { $notification = $this->notificationManager->createNotification(); $notification->setApp('files_sharing') ->setUser($shareWith) ->setDateTime(new \DateTime()) ->setObject('remote_share', $shareId) - ->setSubject('remote_share', [$ownerFederatedId, $sharedByFederatedId, trim($name, '/'), $sharedBy, $owner]); + ->setSubject('remote_share', [$ownerFederatedId, $sharedByFederatedId, trim($name, '/')]); $declineAction = $notification->createAction(); $declineAction->setLabel('decline')