Skip to content

Commit 56518c7

Browse files
szaimenbackportbot[bot]
authored andcommitted
Fix too many file download notifications when watching a video
Signed-off-by: szaimen <szaimen@e.mail.de>
1 parent 097374e commit 56518c7

File tree

7 files changed

+53
-14
lines changed

7 files changed

+53
-14
lines changed

apps/files_sharing/lib/Activity/Providers/Base.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
namespace OCA\Files_Sharing\Activity\Providers;
2525

2626
use OCP\Activity\IEvent;
27+
use OCP\Activity\IEventMerger;
2728
use OCP\Activity\IManager;
2829
use OCP\Activity\IProvider;
2930
use OCP\Contacts\IManager as IContactsManager;
@@ -51,6 +52,9 @@ abstract class Base implements IProvider {
5152
/** @var IUserManager */
5253
protected $userManager;
5354

55+
/** @var IEventMerger */
56+
protected $eventMerger;
57+
5458
/** @var IContactsManager */
5559
protected $contactsManager;
5660

@@ -65,13 +69,15 @@ public function __construct(IFactory $languageFactory,
6569
IManager $activityManager,
6670
IUserManager $userManager,
6771
ICloudIdManager $cloudIdManager,
68-
IContactsManager $contactsManager) {
72+
IContactsManager $contactsManager,
73+
IEventMerger $eventMerger) {
6974
$this->languageFactory = $languageFactory;
7075
$this->url = $url;
7176
$this->activityManager = $activityManager;
7277
$this->userManager = $userManager;
7378
$this->cloudIdManager = $cloudIdManager;
7479
$this->contactsManager = $contactsManager;
80+
$this->eventMerger = $eventMerger;
7581
}
7682

7783
/**
@@ -97,7 +103,7 @@ public function parse($language, IEvent $event, IEvent $previousEvent = null) {
97103
}
98104
}
99105

100-
return $this->parseLongVersion($event);
106+
return $this->parseLongVersion($event, $previousEvent);
101107
}
102108

103109
/**
@@ -110,11 +116,12 @@ abstract protected function parseShortVersion(IEvent $event);
110116

111117
/**
112118
* @param IEvent $event
119+
* @param IEvent|null $previousEvent
113120
* @return IEvent
114121
* @throws \InvalidArgumentException
115122
* @since 11.0.0
116123
*/
117-
abstract protected function parseLongVersion(IEvent $event);
124+
abstract protected function parseLongVersion(IEvent $event, IEvent $previousEvent = null);
118125

119126
/**
120127
* @param IEvent $event

apps/files_sharing/lib/Activity/Providers/Downloads.php

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,28 @@ public function parseShortVersion(IEvent $event) {
6363

6464
/**
6565
* @param IEvent $event
66+
* @param IEvent|null $previousEvent
6667
* @return IEvent
6768
* @throws \InvalidArgumentException
6869
* @since 11.0.0
6970
*/
70-
public function parseLongVersion(IEvent $event) {
71+
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
7172
$parsedParameters = $this->getParsedParameters($event);
7273

7374
if ($event->getSubject() === self::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED ||
7475
$event->getSubject() === self::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED) {
75-
$subject = $this->l->t('{file} downloaded via public link');
76+
if (!isset($parsedParameters['remote-address-hash']['type'])) {
77+
$subject = $this->l->t('{file} downloaded via public link');
78+
$this->setSubjects($event, $subject, $parsedParameters);
79+
} else {
80+
$subject = $this->l->t('{file} downloaded via public link');
81+
$this->setSubjects($event, $subject, $parsedParameters);
82+
$event = $this->eventMerger->mergeEvents('file', $event, $previousEvent);
83+
}
7684
} elseif ($event->getSubject() === self::SUBJECT_SHARED_FILE_BY_EMAIL_DOWNLOADED ||
7785
$event->getSubject() === self::SUBJECT_SHARED_FOLDER_BY_EMAIL_DOWNLOADED) {
7886
$subject = $this->l->t('{email} downloaded {file}');
87+
$this->setSubjects($event, $subject, $parsedParameters);
7988
} else {
8089
throw new \InvalidArgumentException();
8190
}
@@ -85,7 +94,6 @@ public function parseLongVersion(IEvent $event) {
8594
} else {
8695
$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/download.svg')));
8796
}
88-
$this->setSubjects($event, $subject, $parsedParameters);
8997

9098
return $event;
9199
}
@@ -102,6 +110,17 @@ protected function getParsedParameters(IEvent $event) {
102110
switch ($subject) {
103111
case self::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED:
104112
case self::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED:
113+
if (isset($parameters[1])) {
114+
return [
115+
'file' => $this->getFile($parameters[0], $event),
116+
'remote-address-hash' => [
117+
'type' => 'highlight',
118+
'id' => $parameters[1],
119+
'name' => $parameters[1],
120+
'link' => '',
121+
],
122+
];
123+
}
105124
return [
106125
'file' => $this->getFile($parameters[0], $event),
107126
];

apps/files_sharing/lib/Activity/Providers/Groups.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
namespace OCA\Files_Sharing\Activity\Providers;
2626

2727
use OCP\Activity\IEvent;
28+
use OCP\Activity\IEventMerger;
2829
use OCP\Activity\IManager;
2930
use OCP\Contacts\IManager as IContactsManager;
3031
use OCP\Federation\ICloudIdManager;
@@ -55,8 +56,9 @@ public function __construct(IFactory $languageFactory,
5556
IUserManager $userManager,
5657
ICloudIdManager $cloudIdManager,
5758
IContactsManager $contactsManager,
59+
IEventMerger $eventMerger,
5860
IGroupManager $groupManager) {
59-
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager);
61+
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager, $eventMerger);
6062
$this->groupManager = $groupManager;
6163
}
6264

@@ -95,11 +97,12 @@ public function parseShortVersion(IEvent $event) {
9597

9698
/**
9799
* @param IEvent $event
100+
* @param IEvent|null $previousEvent
98101
* @return IEvent
99102
* @throws \InvalidArgumentException
100103
* @since 11.0.0
101104
*/
102-
public function parseLongVersion(IEvent $event) {
105+
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
103106
$parsedParameters = $this->getParsedParameters($event);
104107

105108
if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {

apps/files_sharing/lib/Activity/Providers/PublicLinks.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,12 @@ public function parseShortVersion(IEvent $event) {
7070

7171
/**
7272
* @param IEvent $event
73+
* @param IEvent|null $previousEvent
7374
* @return IEvent
7475
* @throws \InvalidArgumentException
7576
* @since 11.0.0
7677
*/
77-
public function parseLongVersion(IEvent $event) {
78+
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
7879
$parsedParameters = $this->getParsedParameters($event);
7980

8081
if ($event->getSubject() === self::SUBJECT_SHARED_LINK_SELF) {

apps/files_sharing/lib/Activity/Providers/RemoteShares.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
namespace OCA\Files_Sharing\Activity\Providers;
2626

2727
use OCP\Activity\IEvent;
28+
use OCP\Activity\IEventMerger;
2829
use OCP\Activity\IManager;
2930
use OCP\Contacts\IManager as IContactsManager;
3031
use OCP\Federation\ICloudIdManager;
@@ -42,10 +43,10 @@ public function __construct(IFactory $languageFactory,
4243
IURLGenerator $url,
4344
IManager $activityManager,
4445
IUserManager $userManager,
46+
ICloudIdManager $cloudIdManager,
4547
IContactsManager $contactsManager,
46-
ICloudIdManager $cloudIdManager
47-
) {
48-
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager);
48+
IEventMerger $eventMerger) {
49+
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager, $eventMerger);
4950
}
5051

5152
/**
@@ -77,11 +78,12 @@ public function parseShortVersion(IEvent $event) {
7778

7879
/**
7980
* @param IEvent $event
81+
* @param IEvent|null $previousEvent
8082
* @return IEvent
8183
* @throws \InvalidArgumentException
8284
* @since 11.0.0
8385
*/
84-
public function parseLongVersion(IEvent $event) {
86+
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
8587
$parsedParameters = $this->getParsedParameters($event);
8688

8789
if ($event->getSubject() === self::SUBJECT_REMOTE_SHARE_RECEIVED) {

apps/files_sharing/lib/Activity/Providers/Users.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,12 @@ public function parseShortVersion(IEvent $event) {
8686

8787
/**
8888
* @param IEvent $event
89+
* @param IEvent|null $previousEvent
8990
* @return IEvent
9091
* @throws \InvalidArgumentException
9192
* @since 11.0.0
9293
*/
93-
public function parseLongVersion(IEvent $event) {
94+
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
9495
$parsedParameters = $this->getParsedParameters($event);
9596

9697
if ($event->getSubject() === self::SUBJECT_SHARED_USER_SELF) {

apps/files_sharing/lib/Controller/ShareController.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -729,6 +729,10 @@ protected function singleFileDownloaded(Share\IShare $share, \OCP\Files\Node $no
729729
$ownerFolder = $this->rootFolder->getUserFolder($share->getShareOwner());
730730
$userPath = $userFolder->getRelativePath($userNode->getPath());
731731
$ownerPath = $ownerFolder->getRelativePath($node->getPath());
732+
$remoteAddress = $this->request->getRemoteAddress();
733+
$dateTime = new \DateTime();
734+
$dateTime = $dateTime->format('Y-m-d H');
735+
$remoteAddressHash = md5($dateTime . '-' . $remoteAddress);
732736

733737
$parameters = [$userPath];
734738

@@ -742,8 +746,10 @@ protected function singleFileDownloaded(Share\IShare $share, \OCP\Files\Node $no
742746
} else {
743747
if ($node instanceof \OCP\Files\File) {
744748
$subject = Downloads::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED;
749+
$parameters[] = $remoteAddressHash;
745750
} else {
746751
$subject = Downloads::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED;
752+
$parameters[] = $remoteAddressHash;
747753
}
748754
}
749755

0 commit comments

Comments
 (0)