mirror of
https://github.com/nextcloud/server.git
synced 2026-06-12 10:10:49 -04:00
Fix display of remote users in incoming share notifications
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
parent
d9c96536c8
commit
5d2537e59e
2 changed files with 24 additions and 25 deletions
|
|
@ -102,15 +102,15 @@ class Notifier implements INotifier {
|
|||
|
||||
$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 @@ class Notifier implements INotifier {
|
|||
'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 @@ class Notifier implements INotifier {
|
|||
'id' => $notification->getObjectId(),
|
||||
'name' => $params[2],
|
||||
],
|
||||
'user' => $this->createRemoteUser($owner, $ownerDisplay),
|
||||
'user' => $remoteOwner,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
@ -213,17 +214,24 @@ class Notifier implements INotifier {
|
|||
}
|
||||
|
||||
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 {
|
||||
$this->getDisplayNameFromContact($user . '@https://' . $server);
|
||||
return $this->getDisplayNameFromContact($user . '@http://' . $server);
|
||||
} catch (\OutOfBoundsException $e) {
|
||||
}
|
||||
|
||||
try {
|
||||
return $this->getDisplayNameFromContact($user . '@https://' . $server);
|
||||
} catch (\OutOfBoundsException $e) {
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -256,7 +256,7 @@ class CloudFederationProviderFiles implements ICloudFederationProvider {
|
|||
->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 @@ class CloudFederationProviderFiles implements ICloudFederationProvider {
|
|||
->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 @@ class CloudFederationProviderFiles implements ICloudFederationProvider {
|
|||
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')
|
||||
|
|
|
|||
Loading…
Reference in a new issue