aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/lib/Activity/Providers/Users.php
blob: 6c136d1f383570c6bbe15e8d4cd761de9a1a1678 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
/**
 * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */
namespace OCA\Files_Sharing\Activity\Providers;

use OCP\Activity\IEvent;

class Users extends Base {
	public const SUBJECT_SHARED_USER_SELF = 'shared_user_self';
	public const SUBJECT_RESHARED_USER_BY = 'reshared_user_by';
	public const SUBJECT_UNSHARED_USER_SELF = 'unshared_user_self';
	public const SUBJECT_UNSHARED_USER_BY = 'unshared_user_by';

	public const SUBJECT_SHARED_WITH_BY = 'shared_with_by';
	public const SUBJECT_UNSHARED_BY = 'unshared_by';
	public const SUBJECT_SELF_UNSHARED = 'self_unshared';
	public const SUBJECT_SELF_UNSHARED_BY = 'self_unshared_by';

	public const SUBJECT_EXPIRED_USER = 'expired_user';
	public const SUBJECT_EXPIRED = 'expired';

	/**
	 * @param IEvent $event
	 * @return IEvent
	 * @throws \InvalidArgumentException
	 * @since 11.0.0
	 */
	public function parseShortVersion(IEvent $event) {
		$parsedParameters = $this->getParsedParameters($event);

		if ($event->getSubject() === self::SUBJECT_SHARED_USER_SELF) {
			$subject = $this->l->t('Shared with {user}');
		} elseif ($event->getSubject() === self::SUBJECT_UNSHARED_USER_SELF) {
			$subject = $this->l->t('Removed share for {user}');
		} elseif ($event->getSubject() === self::SUBJECT_SELF_UNSHARED) {
			$subject = $this->l->t('You removed yourself');
		} elseif ($event->getSubject() === self::SUBJECT_SELF_UNSHARED_BY) {
			$subject = $this->l->t('{actor} removed themselves');
		} elseif ($event->getSubject() === self::SUBJECT_RESHARED_USER_BY) {
			$subject = $this->l->t('{actor} shared with {user}');
		} elseif ($event->getSubject() === self::SUBJECT_UNSHARED_USER_BY) {
			$subject = $this->l->t('{actor} removed share for {user}');
		} elseif ($event->getSubject() === self::SUBJECT_SHARED_WITH_BY) {
			$subject = $this->l->t('Shared by {actor}');
		} elseif ($event->getSubject() === self::SUBJECT_UNSHARED_BY) {
			$subject = $this->l->t('{actor} removed share');
		} elseif ($event->getSubject() === self::SUBJECT_EXPIRED_USER) {
			$subject = $this->l->t('Share for {user} expired');
		} elseif ($event->getSubject() === self::SUBJECT_EXPIRED) {
			$subject = $this->l->t('Share expired');
		} else {
			throw new \InvalidArgumentException();
		}

		if ($this->activityManager->getRequirePNG()) {
			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.png')));
		} else {
			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
		}
		$this->setSubjects($event, $subject, $parsedParameters);

		return $event;
	}

	/**
	 * @param IEvent $event
	 * @param IEvent|null $previousEvent
	 * @return IEvent
	 * @throws \InvalidArgumentException
	 * @since 11.0.0
	 */
	public function parseLongVersion(IEvent $event, ?IEvent $previousEvent = null) {
		$parsedParameters = $this->getParsedParameters($event);

		if ($event->getSubject() === self::SUBJECT_SHARED_USER_SELF) {
			$subject = $this->l->t('You shared {file} with {user}');
		} elseif ($event->getSubject() === self::SUBJECT_UNSHARED_USER_SELF) {
			$subject = $this->l->t('You removed {user} from {file}');
		} elseif ($event->getSubject() === self::SUBJECT_SELF_UNSHARED) {
			$subject = $this->l->t('You removed yourself from {file}');
		} elseif ($event->getSubject() === self::SUBJECT_SELF_UNSHARED_BY) {
			$subject = $this->l->t('{actor} removed themselves from {file}');
		} elseif ($event->getSubject() === self::SUBJECT_RESHARED_USER_BY) {
			$subject = $this->l->t('{actor} shared {file} with {user}');
		} elseif ($event->getSubject() === self::SUBJECT_UNSHARED_USER_BY) {
			$subject = $this->l->t('{actor} removed {user} from {file}');
		} elseif ($event->getSubject() === self::SUBJECT_SHARED_WITH_BY) {
			$subject = $this->l->t('{actor} shared {file} with you');
		} elseif ($event->getSubject() === self::SUBJECT_UNSHARED_BY) {
			$subject = $this->l->t('{actor} removed you from the share named {file}');
		} elseif ($event->getSubject() === self::SUBJECT_EXPIRED_USER) {
			$subject = $this->l->t('Share for file {file} with {user} expired');
		} elseif ($event->getSubject() === self::SUBJECT_EXPIRED) {
			$subject = $this->l->t('Share for file {file} expired');
		} else {
			throw new \InvalidArgumentException();
		}

		if ($this->activityManager->getRequirePNG()) {
			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.png')));
		} else {
			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg')));
		}
		$this->setSubjects($event, $subject, $parsedParameters);

		return $event;
	}

	protected function getParsedParameters(IEvent $event) {
		$subject = $event->getSubject();
		$parameters = $event->getSubjectParameters();

		switch ($subject) {
			case self::SUBJECT_SHARED_USER_SELF:
			case self::SUBJECT_UNSHARED_USER_SELF:
			case self::SUBJECT_EXPIRED_USER:
			case self::SUBJECT_EXPIRED:
				return [
					'file' => $this->getFile($parameters[0], $event),
					'user' => $this->getUser($parameters[1]),
				];
			case self::SUBJECT_SHARED_WITH_BY:
			case self::SUBJECT_UNSHARED_BY:
			case self::SUBJECT_SELF_UNSHARED:
			case self::SUBJECT_SELF_UNSHARED_BY:
				return [
					'file' => $this->getFile($parameters[0], $event),
					'actor' => $this->getUser($parameters[1]),
				];
			case self::SUBJECT_RESHARED_USER_BY:
			case self::SUBJECT_UNSHARED_USER_BY:
				return [
					'file' => $this->getFile($parameters[0], $event),
					'user' => $this->getUser($parameters[2]),
					'actor' => $this->getUser($parameters[1]),
				];
		}
		return [];
	}
}