mirror of
https://github.com/nextcloud/server.git
synced 2026-05-22 01:55:56 -04:00
Merge pull request #31486 from nextcloud/backport/28227/stable22
[stable22] Fix too many file download notifications when watching a video
This commit is contained in:
commit
6c34d14ea2
7 changed files with 53 additions and 14 deletions
|
|
@ -24,6 +24,7 @@
|
|||
namespace OCA\Files_Sharing\Activity\Providers;
|
||||
|
||||
use OCP\Activity\IEvent;
|
||||
use OCP\Activity\IEventMerger;
|
||||
use OCP\Activity\IManager;
|
||||
use OCP\Activity\IProvider;
|
||||
use OCP\Contacts\IManager as IContactsManager;
|
||||
|
|
@ -51,6 +52,9 @@ abstract class Base implements IProvider {
|
|||
/** @var IUserManager */
|
||||
protected $userManager;
|
||||
|
||||
/** @var IEventMerger */
|
||||
protected $eventMerger;
|
||||
|
||||
/** @var IContactsManager */
|
||||
protected $contactsManager;
|
||||
|
||||
|
|
@ -65,13 +69,15 @@ abstract class Base implements IProvider {
|
|||
IManager $activityManager,
|
||||
IUserManager $userManager,
|
||||
ICloudIdManager $cloudIdManager,
|
||||
IContactsManager $contactsManager) {
|
||||
IContactsManager $contactsManager,
|
||||
IEventMerger $eventMerger) {
|
||||
$this->languageFactory = $languageFactory;
|
||||
$this->url = $url;
|
||||
$this->activityManager = $activityManager;
|
||||
$this->userManager = $userManager;
|
||||
$this->cloudIdManager = $cloudIdManager;
|
||||
$this->contactsManager = $contactsManager;
|
||||
$this->eventMerger = $eventMerger;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -97,7 +103,7 @@ abstract class Base implements IProvider {
|
|||
}
|
||||
}
|
||||
|
||||
return $this->parseLongVersion($event);
|
||||
return $this->parseLongVersion($event, $previousEvent);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -110,11 +116,12 @@ abstract class Base implements IProvider {
|
|||
|
||||
/**
|
||||
* @param IEvent $event
|
||||
* @param IEvent|null $previousEvent
|
||||
* @return IEvent
|
||||
* @throws \InvalidArgumentException
|
||||
* @since 11.0.0
|
||||
*/
|
||||
abstract protected function parseLongVersion(IEvent $event);
|
||||
abstract protected function parseLongVersion(IEvent $event, IEvent $previousEvent = null);
|
||||
|
||||
/**
|
||||
* @param IEvent $event
|
||||
|
|
|
|||
|
|
@ -63,19 +63,28 @@ class Downloads extends Base {
|
|||
|
||||
/**
|
||||
* @param IEvent $event
|
||||
* @param IEvent|null $previousEvent
|
||||
* @return IEvent
|
||||
* @throws \InvalidArgumentException
|
||||
* @since 11.0.0
|
||||
*/
|
||||
public function parseLongVersion(IEvent $event) {
|
||||
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
|
||||
$parsedParameters = $this->getParsedParameters($event);
|
||||
|
||||
if ($event->getSubject() === self::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED ||
|
||||
$event->getSubject() === self::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED) {
|
||||
$subject = $this->l->t('{file} downloaded via public link');
|
||||
if (!isset($parsedParameters['remote-address-hash']['type'])) {
|
||||
$subject = $this->l->t('{file} downloaded via public link');
|
||||
$this->setSubjects($event, $subject, $parsedParameters);
|
||||
} else {
|
||||
$subject = $this->l->t('{file} downloaded via public link');
|
||||
$this->setSubjects($event, $subject, $parsedParameters);
|
||||
$event = $this->eventMerger->mergeEvents('file', $event, $previousEvent);
|
||||
}
|
||||
} elseif ($event->getSubject() === self::SUBJECT_SHARED_FILE_BY_EMAIL_DOWNLOADED ||
|
||||
$event->getSubject() === self::SUBJECT_SHARED_FOLDER_BY_EMAIL_DOWNLOADED) {
|
||||
$subject = $this->l->t('{email} downloaded {file}');
|
||||
$this->setSubjects($event, $subject, $parsedParameters);
|
||||
} else {
|
||||
throw new \InvalidArgumentException();
|
||||
}
|
||||
|
|
@ -85,7 +94,6 @@ class Downloads extends Base {
|
|||
} else {
|
||||
$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/download.svg')));
|
||||
}
|
||||
$this->setSubjects($event, $subject, $parsedParameters);
|
||||
|
||||
return $event;
|
||||
}
|
||||
|
|
@ -102,6 +110,17 @@ class Downloads extends Base {
|
|||
switch ($subject) {
|
||||
case self::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED:
|
||||
case self::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED:
|
||||
if (isset($parameters[1])) {
|
||||
return [
|
||||
'file' => $this->getFile($parameters[0], $event),
|
||||
'remote-address-hash' => [
|
||||
'type' => 'highlight',
|
||||
'id' => $parameters[1],
|
||||
'name' => $parameters[1],
|
||||
'link' => '',
|
||||
],
|
||||
];
|
||||
}
|
||||
return [
|
||||
'file' => $this->getFile($parameters[0], $event),
|
||||
];
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
namespace OCA\Files_Sharing\Activity\Providers;
|
||||
|
||||
use OCP\Activity\IEvent;
|
||||
use OCP\Activity\IEventMerger;
|
||||
use OCP\Activity\IManager;
|
||||
use OCP\Contacts\IManager as IContactsManager;
|
||||
use OCP\Federation\ICloudIdManager;
|
||||
|
|
@ -55,8 +56,9 @@ class Groups extends Base {
|
|||
IUserManager $userManager,
|
||||
ICloudIdManager $cloudIdManager,
|
||||
IContactsManager $contactsManager,
|
||||
IEventMerger $eventMerger,
|
||||
IGroupManager $groupManager) {
|
||||
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager);
|
||||
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager, $eventMerger);
|
||||
$this->groupManager = $groupManager;
|
||||
}
|
||||
|
||||
|
|
@ -95,11 +97,12 @@ class Groups extends Base {
|
|||
|
||||
/**
|
||||
* @param IEvent $event
|
||||
* @param IEvent|null $previousEvent
|
||||
* @return IEvent
|
||||
* @throws \InvalidArgumentException
|
||||
* @since 11.0.0
|
||||
*/
|
||||
public function parseLongVersion(IEvent $event) {
|
||||
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
|
||||
$parsedParameters = $this->getParsedParameters($event);
|
||||
|
||||
if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {
|
||||
|
|
|
|||
|
|
@ -70,11 +70,12 @@ class PublicLinks extends Base {
|
|||
|
||||
/**
|
||||
* @param IEvent $event
|
||||
* @param IEvent|null $previousEvent
|
||||
* @return IEvent
|
||||
* @throws \InvalidArgumentException
|
||||
* @since 11.0.0
|
||||
*/
|
||||
public function parseLongVersion(IEvent $event) {
|
||||
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
|
||||
$parsedParameters = $this->getParsedParameters($event);
|
||||
|
||||
if ($event->getSubject() === self::SUBJECT_SHARED_LINK_SELF) {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
namespace OCA\Files_Sharing\Activity\Providers;
|
||||
|
||||
use OCP\Activity\IEvent;
|
||||
use OCP\Activity\IEventMerger;
|
||||
use OCP\Activity\IManager;
|
||||
use OCP\Contacts\IManager as IContactsManager;
|
||||
use OCP\Federation\ICloudIdManager;
|
||||
|
|
@ -42,10 +43,10 @@ class RemoteShares extends Base {
|
|||
IURLGenerator $url,
|
||||
IManager $activityManager,
|
||||
IUserManager $userManager,
|
||||
ICloudIdManager $cloudIdManager,
|
||||
IContactsManager $contactsManager,
|
||||
ICloudIdManager $cloudIdManager
|
||||
) {
|
||||
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager);
|
||||
IEventMerger $eventMerger) {
|
||||
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager, $eventMerger);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -77,11 +78,12 @@ class RemoteShares extends Base {
|
|||
|
||||
/**
|
||||
* @param IEvent $event
|
||||
* @param IEvent|null $previousEvent
|
||||
* @return IEvent
|
||||
* @throws \InvalidArgumentException
|
||||
* @since 11.0.0
|
||||
*/
|
||||
public function parseLongVersion(IEvent $event) {
|
||||
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
|
||||
$parsedParameters = $this->getParsedParameters($event);
|
||||
|
||||
if ($event->getSubject() === self::SUBJECT_REMOTE_SHARE_RECEIVED) {
|
||||
|
|
|
|||
|
|
@ -86,11 +86,12 @@ class Users extends Base {
|
|||
|
||||
/**
|
||||
* @param IEvent $event
|
||||
* @param IEvent|null $previousEvent
|
||||
* @return IEvent
|
||||
* @throws \InvalidArgumentException
|
||||
* @since 11.0.0
|
||||
*/
|
||||
public function parseLongVersion(IEvent $event) {
|
||||
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
|
||||
$parsedParameters = $this->getParsedParameters($event);
|
||||
|
||||
if ($event->getSubject() === self::SUBJECT_SHARED_USER_SELF) {
|
||||
|
|
|
|||
|
|
@ -729,6 +729,10 @@ class ShareController extends AuthPublicShareController {
|
|||
$ownerFolder = $this->rootFolder->getUserFolder($share->getShareOwner());
|
||||
$userPath = $userFolder->getRelativePath($userNode->getPath());
|
||||
$ownerPath = $ownerFolder->getRelativePath($node->getPath());
|
||||
$remoteAddress = $this->request->getRemoteAddress();
|
||||
$dateTime = new \DateTime();
|
||||
$dateTime = $dateTime->format('Y-m-d H');
|
||||
$remoteAddressHash = md5($dateTime . '-' . $remoteAddress);
|
||||
|
||||
$parameters = [$userPath];
|
||||
|
||||
|
|
@ -742,8 +746,10 @@ class ShareController extends AuthPublicShareController {
|
|||
} else {
|
||||
if ($node instanceof \OCP\Files\File) {
|
||||
$subject = Downloads::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED;
|
||||
$parameters[] = $remoteAddressHash;
|
||||
} else {
|
||||
$subject = Downloads::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED;
|
||||
$parameters[] = $remoteAddressHash;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue