Skip to content

Commit bdbd494

Browse files
committed
feat: Store user which has downloaded file in activity feed
Signed-off-by: Konstantin Myakshin <molodchick@gmail.com>
1 parent 8b3055c commit bdbd494

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

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

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,15 @@ public function parseLongVersion(IEvent $event, ?IEvent $previousEvent = null) {
5555

5656
if ($event->getSubject() === self::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED ||
5757
$event->getSubject() === self::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED) {
58-
if (!isset($parsedParameters['remote-address-hash']['type'])) {
58+
if (isset($parsedParameters['actor'])) {
59+
$subject = $this->l->t('{file} downloaded via public link by {actor}');
60+
} else {
5961
$subject = $this->l->t('{file} downloaded via public link');
62+
}
63+
64+
if (!isset($parsedParameters['remote-address-hash']['type'])) {
6065
$this->setSubjects($event, $subject, $parsedParameters);
6166
} else {
62-
$subject = $this->l->t('{file} downloaded via public link');
6367
$this->setSubjects($event, $subject, $parsedParameters);
6468
$event = $this->eventMerger->mergeEvents('file', $event, $previousEvent);
6569
}
@@ -92,20 +96,25 @@ protected function getParsedParameters(IEvent $event) {
9296
switch ($subject) {
9397
case self::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED:
9498
case self::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED:
99+
$parsedParameters = [
100+
'file' => $this->getFile($parameters[0], $event),
101+
];
102+
95103
if (isset($parameters[1])) {
96-
return [
97-
'file' => $this->getFile($parameters[0], $event),
98-
'remote-address-hash' => [
99-
'type' => 'highlight',
100-
'id' => $parameters[1],
101-
'name' => $parameters[1],
102-
'link' => '',
103-
],
104+
$parsedParameters['remote-address-hash'] = [
105+
'type' => 'highlight',
106+
'id' => $parameters[1],
107+
'name' => $parameters[1],
108+
'link' => '',
104109
];
105110
}
106-
return [
107-
'file' => $this->getFile($parameters[0], $event),
108-
];
111+
112+
if (isset($parameters[2])) {
113+
$parsedParameters['actor'] = $this->getUser($parameters[2]);
114+
}
115+
116+
return $parsedParameters;
117+
109118
case self::SUBJECT_SHARED_FILE_BY_EMAIL_DOWNLOADED:
110119
case self::SUBJECT_SHARED_FOLDER_BY_EMAIL_DOWNLOADED:
111120
return [

apps/files_sharing/lib/Controller/ShareController.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
use OCP\IRequest;
3131
use OCP\ISession;
3232
use OCP\IURLGenerator;
33+
use OCP\IUser;
3334
use OCP\IUserManager;
35+
use OCP\IUserSession;
3436
use OCP\Security\ISecureRandom;
3537
use OCP\Share;
3638
use OCP\Share\Exceptions\ShareNotFound;
@@ -45,6 +47,7 @@
4547
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
4648
class ShareController extends AuthPublicShareController {
4749
protected ?Share\IShare $share = null;
50+
private ?IUser $currentUser = null;
4851

4952
public const SHARE_ACCESS = 'access';
5053
public const SHARE_AUTH = 'auth';
@@ -68,8 +71,11 @@ public function __construct(
6871
protected ISecureRandom $secureRandom,
6972
protected Defaults $defaults,
7073
private IPublicShareTemplateFactory $publicShareTemplateFactory,
74+
IUserSession $userSession,
7175
) {
7276
parent::__construct($appName, $request, $session, $urlGenerator);
77+
78+
$this->currentUser = $userSession->getUser();
7379
}
7480

7581
/**
@@ -511,11 +517,11 @@ protected function singleFileDownloaded(Share\IShare $share, \OCP\Files\Node $no
511517
} else {
512518
if ($node instanceof \OCP\Files\File) {
513519
$subject = Downloads::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED;
514-
$parameters[] = $remoteAddressHash;
515520
} else {
516521
$subject = Downloads::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED;
517-
$parameters[] = $remoteAddressHash;
518522
}
523+
$parameters[] = $remoteAddressHash;
524+
$parameters[] = $this->currentUser?->getUID();
519525
}
520526

521527
$this->publishActivity($subject, $parameters, $share->getSharedBy(), $fileId, $userPath);

0 commit comments

Comments
 (0)