diff --git a/lib/Notification/Notifier.php b/lib/Notification/Notifier.php index 969fd28cf..2e37fde5e 100644 --- a/lib/Notification/Notifier.php +++ b/lib/Notification/Notifier.php @@ -43,6 +43,7 @@ use OCA\Circles\Exceptions\RequestBuilderException; use OCA\Circles\Exceptions\SingleCircleNotFoundException; use OCA\Circles\Model\Probes\MemberProbe; +use OCA\Circles\Service\ConfigService; use OCA\Circles\Service\FederatedUserService; use OCA\Circles\Service\MemberService; use OCP\Contacts\IManager; @@ -81,11 +82,14 @@ class Notifier implements INotifier { /** @var ICloudIdManager */ protected $cloudIdManager; + /** @var MemberService */ + private $memberService; + /** @var FederatedUserService */ private $federatedUserService; - /** @var MemberService */ - private $memberService; + /** @var ConfigService */ + private $configService; public function __construct( @@ -95,7 +99,8 @@ public function __construct( IURLGenerator $urlGenerator, ICloudIdManager $cloudIdManager, MemberService $memberService, - FederatedUserService $federatedUserService + FederatedUserService $federatedUserService, + ConfigService $configService ) { $this->l10n = $l10n; $this->factory = $factory; @@ -105,6 +110,7 @@ public function __construct( $this->federatedUserService = $federatedUserService; $this->memberService = $memberService; + $this->configService = $configService; $this->setup('app', Application::APP_ID); } @@ -203,7 +209,7 @@ private function prepareMemberNotification(INotification $notification) { $subject = $this->l10n->t( '%1$s sent a request to be a member of the Circle "%2$s"', [ - $member->getDisplayName(), + $this->configService->displayFederatedUser($member, true), $member->getCircle()->getDisplayName() ] ); diff --git a/lib/Service/NotificationService.php b/lib/Service/NotificationService.php index 5f14f76cf..5d5c4cbcf 100644 --- a/lib/Service/NotificationService.php +++ b/lib/Service/NotificationService.php @@ -106,13 +106,13 @@ public function notificationInvited(Member $member): void { $declineAction = $notification->createAction(); $declineUrl = $this->linkToOCS('circles.Local.circleLeave', ['circleId' => $member->getCircleId()]); $declineAction->setLabel('refuse') - ->setLink($this->urlGenerator->getAbsoluteURL($declineUrl), 'PUT'); + ->setLink($declineUrl, 'PUT'); $notification->addAction($declineAction); $acceptAction = $notification->createAction(); $acceptUrl = $this->linkToOCS('circles.Local.circleJoin', ['circleId' => $member->getCircleId()]); $acceptAction->setLabel('accept') - ->setLink($this->urlGenerator->getAbsoluteURL($acceptUrl), 'PUT'); + ->setLink($acceptUrl, 'PUT'); $notification->addAction($acceptAction); $this->notificationManager->notify($notification); @@ -157,7 +157,7 @@ public function notificationRequested(Member $member): void { ] ); $declineAction->setLabel('refuse') - ->setLink($this->urlGenerator->getAbsoluteURL($declineUrl), 'DELETE'); + ->setLink($declineUrl, 'DELETE'); $notification->addAction($declineAction); $acceptAction = $notification->createAction(); @@ -169,7 +169,7 @@ public function notificationRequested(Member $member): void { ] ); $acceptAction->setLabel('accept') - ->setLink($this->urlGenerator->getAbsoluteURL($acceptUrl), 'PUT'); + ->setLink($acceptUrl, 'PUT'); $notification->addAction($acceptAction); $this->notificationManager->notify($notification); diff --git a/lib/Service/SendMailService.php b/lib/Service/SendMailService.php index ea3bd32a1..498763332 100644 --- a/lib/Service/SendMailService.php +++ b/lib/Service/SendMailService.php @@ -110,7 +110,12 @@ public function generateMail(Circle $circle, Member $member, array $shares, arra ]; } - $template = $this->generateMailExitingShares($invitedBy, $circle->getDisplayName()); + $template = $this->generateMailExitingShares( + $invitedBy, + $circle->getDisplayName(), + sizeof($links) > 1 + ); + $this->fillMailExistingShares($template, $links); foreach ($mails as $mail) { try { @@ -124,13 +129,24 @@ public function generateMail(Circle $circle, Member $member, array $shares, arra /** * @param string $author * @param string $circleName + * @param bool $multiple * * @return IEMailTemplate */ - private function generateMailExitingShares(string $author, string $circleName): IEMailTemplate { + private function generateMailExitingShares( + string $author, + string $circleName, + bool $multiple = false + ): IEMailTemplate { $emailTemplate = $this->mailer->createEMailTemplate('circles.ExistingShareNotification', []); $emailTemplate->addHeader(); + if ($multiple) { + $text = $this->l10n->t('%s shared multiple files with "%s".', [$author, $circleName]); + } else { + $text = $this->l10n->t('%s shared a file with "%s".', [$author, $circleName]); + } + $text = $this->l10n->t('%s shared multiple files with "%s".', [$author, $circleName]); $emailTemplate->addBodyText(htmlspecialchars($text), $text);