Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorszaimen <szaimen@e.mail.de>2021-07-29 09:57:31 +0300
committerSimon L. (Rebase PR Action) <szaimen@e.mail.de>2022-03-07 22:50:15 +0300
commitccd08877e803be1281b6c9325219e862c1995f9c (patch)
treeb46b68f6b8b87cb8bcc1201a33f5cde67b7872fd /apps/files_sharing/lib
parenta9117d4ef8245c44a9e1ef9a919ea70ea0667cd1 (diff)
Fix too many file download notifications when watching a video
Signed-off-by: szaimen <szaimen@e.mail.de>
Diffstat (limited to 'apps/files_sharing/lib')
-rw-r--r--apps/files_sharing/lib/Activity/Providers/Base.php13
-rw-r--r--apps/files_sharing/lib/Activity/Providers/Downloads.php25
-rw-r--r--apps/files_sharing/lib/Activity/Providers/Groups.php7
-rw-r--r--apps/files_sharing/lib/Activity/Providers/PublicLinks.php3
-rw-r--r--apps/files_sharing/lib/Activity/Providers/RemoteShares.php10
-rw-r--r--apps/files_sharing/lib/Activity/Providers/Users.php3
-rw-r--r--apps/files_sharing/lib/Controller/ShareController.php6
7 files changed, 53 insertions, 14 deletions
diff --git a/apps/files_sharing/lib/Activity/Providers/Base.php b/apps/files_sharing/lib/Activity/Providers/Base.php
index e61bdffadcd..cbd16c134cc 100644
--- a/apps/files_sharing/lib/Activity/Providers/Base.php
+++ b/apps/files_sharing/lib/Activity/Providers/Base.php
@@ -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
diff --git a/apps/files_sharing/lib/Activity/Providers/Downloads.php b/apps/files_sharing/lib/Activity/Providers/Downloads.php
index a6bbe9a4118..8152e0b0885 100644
--- a/apps/files_sharing/lib/Activity/Providers/Downloads.php
+++ b/apps/files_sharing/lib/Activity/Providers/Downloads.php
@@ -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),
];
diff --git a/apps/files_sharing/lib/Activity/Providers/Groups.php b/apps/files_sharing/lib/Activity/Providers/Groups.php
index 71b1dc65f56..b9cc2e6b579 100644
--- a/apps/files_sharing/lib/Activity/Providers/Groups.php
+++ b/apps/files_sharing/lib/Activity/Providers/Groups.php
@@ -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) {
diff --git a/apps/files_sharing/lib/Activity/Providers/PublicLinks.php b/apps/files_sharing/lib/Activity/Providers/PublicLinks.php
index 5782166704f..c09b9baa951 100644
--- a/apps/files_sharing/lib/Activity/Providers/PublicLinks.php
+++ b/apps/files_sharing/lib/Activity/Providers/PublicLinks.php
@@ -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) {
diff --git a/apps/files_sharing/lib/Activity/Providers/RemoteShares.php b/apps/files_sharing/lib/Activity/Providers/RemoteShares.php
index 29f7c0a298e..f1cc90f5e65 100644
--- a/apps/files_sharing/lib/Activity/Providers/RemoteShares.php
+++ b/apps/files_sharing/lib/Activity/Providers/RemoteShares.php
@@ -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) {
diff --git a/apps/files_sharing/lib/Activity/Providers/Users.php b/apps/files_sharing/lib/Activity/Providers/Users.php
index 8b90ac8ee9d..ce873eb5f77 100644
--- a/apps/files_sharing/lib/Activity/Providers/Users.php
+++ b/apps/files_sharing/lib/Activity/Providers/Users.php
@@ -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) {
diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php
index 614dae7ffba..411873c9c86 100644
--- a/apps/files_sharing/lib/Controller/ShareController.php
+++ b/apps/files_sharing/lib/Controller/ShareController.php
@@ -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;
}
}