Completed
Push — master ( 14f739...899b20 )
by
unknown
30:23 queued 14s
created
apps/dav/lib/CalDAV/Activity/Provider/Event.php 1 patch
Indentation   +224 added lines, -224 removed lines patch added patch discarded remove patch
@@ -17,228 +17,228 @@
 block discarded – undo
17 17
 use OCP\L10N\IFactory;
18 18
 
19 19
 class Event extends Base {
20
-	public const SUBJECT_OBJECT_ADD = 'object_add';
21
-	public const SUBJECT_OBJECT_UPDATE = 'object_update';
22
-	public const SUBJECT_OBJECT_MOVE = 'object_move';
23
-	public const SUBJECT_OBJECT_MOVE_TO_TRASH = 'object_move_to_trash';
24
-	public const SUBJECT_OBJECT_RESTORE = 'object_restore';
25
-	public const SUBJECT_OBJECT_DELETE = 'object_delete';
26
-
27
-	/** @var IL10N */
28
-	protected $l;
29
-
30
-	/**
31
-	 * @param IFactory $languageFactory
32
-	 * @param IURLGenerator $url
33
-	 * @param IManager $activityManager
34
-	 * @param IUserManager $userManager
35
-	 * @param IGroupManager $groupManager
36
-	 * @param IEventMerger $eventMerger
37
-	 * @param IAppManager $appManager
38
-	 */
39
-	public function __construct(
40
-		protected IFactory $languageFactory,
41
-		IURLGenerator $url,
42
-		protected IManager $activityManager,
43
-		IUserManager $userManager,
44
-		IGroupManager $groupManager,
45
-		protected IEventMerger $eventMerger,
46
-		protected IAppManager $appManager,
47
-	) {
48
-		parent::__construct($userManager, $groupManager, $url);
49
-	}
50
-
51
-	/**
52
-	 * @param array $eventData
53
-	 * @return array
54
-	 */
55
-	protected function generateObjectParameter(array $eventData, string $affectedUser): array {
56
-		if (!isset($eventData['id']) || !isset($eventData['name'])) {
57
-			throw new \InvalidArgumentException();
58
-		}
59
-
60
-		$params = [
61
-			'type' => 'calendar-event',
62
-			'id' => $eventData['id'],
63
-			'name' => trim($eventData['name']) !== '' ? $eventData['name'] : $this->l->t('Untitled event'),
64
-		];
65
-
66
-		if (isset($eventData['link']) && is_array($eventData['link']) && $this->appManager->isEnabledForUser('calendar')) {
67
-			try {
68
-				// The calendar app needs to be manually loaded for the routes to be loaded
69
-				$this->appManager->loadApp('calendar');
70
-				$linkData = $eventData['link'];
71
-				$calendarUri = $this->urlencodeLowerHex($linkData['calendar_uri']);
72
-				if ($affectedUser === $linkData['owner']) {
73
-					$objectId = base64_encode($this->url->getWebroot() . '/remote.php/dav/calendars/' . $linkData['owner'] . '/' . $calendarUri . '/' . $linkData['object_uri']);
74
-				} else {
75
-					// Can't use the "real" owner and calendar names here because we create a custom
76
-					// calendar for incoming shares with the name "<calendar>_shared_by_<sharer>".
77
-					// Hack: Fix the link by generating it for the incoming shared calendar instead,
78
-					//       as seen from the affected user.
79
-					$objectId = base64_encode($this->url->getWebroot() . '/remote.php/dav/calendars/' . $affectedUser . '/' . $calendarUri . '_shared_by_' . $linkData['owner'] . '/' . $linkData['object_uri']);
80
-				}
81
-				$params['link'] = $this->url->linkToRouteAbsolute('calendar.view.indexdirect.edit', [
82
-					'objectId' => $objectId,
83
-				]);
84
-			} catch (\Exception $error) {
85
-				// Do nothing
86
-			}
87
-		}
88
-		return $params;
89
-	}
90
-
91
-	/**
92
-	 * @param string $language
93
-	 * @param IEvent $event
94
-	 * @param IEvent|null $previousEvent
95
-	 * @return IEvent
96
-	 * @throws UnknownActivityException
97
-	 * @since 11.0.0
98
-	 */
99
-	public function parse($language, IEvent $event, ?IEvent $previousEvent = null) {
100
-		if ($event->getApp() !== 'dav' || $event->getType() !== 'calendar_event') {
101
-			throw new UnknownActivityException();
102
-		}
103
-
104
-		$this->l = $this->languageFactory->get('dav', $language);
105
-
106
-		if ($this->activityManager->getRequirePNG()) {
107
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.png')));
108
-		} else {
109
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar.svg')));
110
-		}
111
-
112
-		if ($event->getSubject() === self::SUBJECT_OBJECT_ADD . '_event') {
113
-			$subject = $this->l->t('{actor} created event {event} in calendar {calendar}');
114
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_ADD . '_event_self') {
115
-			$subject = $this->l->t('You created event {event} in calendar {calendar}');
116
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_DELETE . '_event') {
117
-			$subject = $this->l->t('{actor} deleted event {event} from calendar {calendar}');
118
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_DELETE . '_event_self') {
119
-			$subject = $this->l->t('You deleted event {event} from calendar {calendar}');
120
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_UPDATE . '_event') {
121
-			$subject = $this->l->t('{actor} updated event {event} in calendar {calendar}');
122
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_UPDATE . '_event_self') {
123
-			$subject = $this->l->t('You updated event {event} in calendar {calendar}');
124
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_MOVE . '_event') {
125
-			$subject = $this->l->t('{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}');
126
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_MOVE . '_event_self') {
127
-			$subject = $this->l->t('You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}');
128
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_MOVE_TO_TRASH . '_event') {
129
-			$subject = $this->l->t('{actor} deleted event {event} from calendar {calendar}');
130
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_MOVE_TO_TRASH . '_event_self') {
131
-			$subject = $this->l->t('You deleted event {event} from calendar {calendar}');
132
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_RESTORE . '_event') {
133
-			$subject = $this->l->t('{actor} restored event {event} of calendar {calendar}');
134
-		} elseif ($event->getSubject() === self::SUBJECT_OBJECT_RESTORE . '_event_self') {
135
-			$subject = $this->l->t('You restored event {event} of calendar {calendar}');
136
-		} else {
137
-			throw new UnknownActivityException();
138
-		}
139
-
140
-		$parsedParameters = $this->getParameters($event);
141
-		$this->setSubjects($event, $subject, $parsedParameters);
142
-
143
-		$event = $this->eventMerger->mergeEvents('event', $event, $previousEvent);
144
-
145
-		return $event;
146
-	}
147
-
148
-	/**
149
-	 * @param IEvent $event
150
-	 * @return array
151
-	 */
152
-	protected function getParameters(IEvent $event) {
153
-		$subject = $event->getSubject();
154
-		$parameters = $event->getSubjectParameters();
155
-
156
-		// Nextcloud 13+
157
-		if (isset($parameters['calendar'])) {
158
-			switch ($subject) {
159
-				case self::SUBJECT_OBJECT_ADD . '_event':
160
-				case self::SUBJECT_OBJECT_DELETE . '_event':
161
-				case self::SUBJECT_OBJECT_UPDATE . '_event':
162
-				case self::SUBJECT_OBJECT_MOVE_TO_TRASH . '_event':
163
-				case self::SUBJECT_OBJECT_RESTORE . '_event':
164
-					return [
165
-						'actor' => $this->generateUserParameter($parameters['actor']),
166
-						'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
167
-						'event' => $this->generateClassifiedObjectParameter($parameters['object'], $event->getAffectedUser()),
168
-					];
169
-				case self::SUBJECT_OBJECT_ADD . '_event_self':
170
-				case self::SUBJECT_OBJECT_DELETE . '_event_self':
171
-				case self::SUBJECT_OBJECT_UPDATE . '_event_self':
172
-				case self::SUBJECT_OBJECT_MOVE_TO_TRASH . '_event_self':
173
-				case self::SUBJECT_OBJECT_RESTORE . '_event_self':
174
-					return [
175
-						'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
176
-						'event' => $this->generateClassifiedObjectParameter($parameters['object'], $event->getAffectedUser()),
177
-					];
178
-			}
179
-		}
180
-
181
-		if (isset($parameters['sourceCalendar']) && isset($parameters['targetCalendar'])) {
182
-			switch ($subject) {
183
-				case self::SUBJECT_OBJECT_MOVE . '_event':
184
-					return [
185
-						'actor' => $this->generateUserParameter($parameters['actor']),
186
-						'sourceCalendar' => $this->generateCalendarParameter($parameters['sourceCalendar'], $this->l),
187
-						'targetCalendar' => $this->generateCalendarParameter($parameters['targetCalendar'], $this->l),
188
-						'event' => $this->generateClassifiedObjectParameter($parameters['object'], $event->getAffectedUser()),
189
-					];
190
-				case self::SUBJECT_OBJECT_MOVE . '_event_self':
191
-					return [
192
-						'sourceCalendar' => $this->generateCalendarParameter($parameters['sourceCalendar'], $this->l),
193
-						'targetCalendar' => $this->generateCalendarParameter($parameters['targetCalendar'], $this->l),
194
-						'event' => $this->generateClassifiedObjectParameter($parameters['object'], $event->getAffectedUser()),
195
-					];
196
-			}
197
-		}
198
-
199
-		// Legacy - Do NOT Remove unless necessary
200
-		// Removing this will break parsing of activities that were created on
201
-		// Nextcloud 12, so we should keep this as long as it's acceptable.
202
-		// Otherwise if people upgrade over multiple releases in a short period,
203
-		// they will get the dead entries in their stream.
204
-		switch ($subject) {
205
-			case self::SUBJECT_OBJECT_ADD . '_event':
206
-			case self::SUBJECT_OBJECT_DELETE . '_event':
207
-			case self::SUBJECT_OBJECT_UPDATE . '_event':
208
-				return [
209
-					'actor' => $this->generateUserParameter($parameters[0]),
210
-					'calendar' => $this->generateLegacyCalendarParameter($event->getObjectId(), $parameters[1]),
211
-					'event' => $this->generateObjectParameter($parameters[2], $event->getAffectedUser()),
212
-				];
213
-			case self::SUBJECT_OBJECT_ADD . '_event_self':
214
-			case self::SUBJECT_OBJECT_DELETE . '_event_self':
215
-			case self::SUBJECT_OBJECT_UPDATE . '_event_self':
216
-				return [
217
-					'calendar' => $this->generateLegacyCalendarParameter($event->getObjectId(), $parameters[1]),
218
-					'event' => $this->generateObjectParameter($parameters[2], $event->getAffectedUser()),
219
-				];
220
-		}
221
-
222
-		throw new \InvalidArgumentException();
223
-	}
224
-
225
-	private function generateClassifiedObjectParameter(array $eventData, string $affectedUser): array {
226
-		$parameter = $this->generateObjectParameter($eventData, $affectedUser);
227
-		if (!empty($eventData['classified'])) {
228
-			$parameter['name'] = $this->l->t('Busy');
229
-		}
230
-		return $parameter;
231
-	}
232
-
233
-	/**
234
-	 * Return urlencoded string but with lower cased hex sequences.
235
-	 * The remaining casing will be untouched.
236
-	 */
237
-	private function urlencodeLowerHex(string $raw): string {
238
-		return preg_replace_callback(
239
-			'/%[0-9A-F]{2}/',
240
-			static fn (array $matches) => strtolower($matches[0]),
241
-			urlencode($raw),
242
-		);
243
-	}
20
+    public const SUBJECT_OBJECT_ADD = 'object_add';
21
+    public const SUBJECT_OBJECT_UPDATE = 'object_update';
22
+    public const SUBJECT_OBJECT_MOVE = 'object_move';
23
+    public const SUBJECT_OBJECT_MOVE_TO_TRASH = 'object_move_to_trash';
24
+    public const SUBJECT_OBJECT_RESTORE = 'object_restore';
25
+    public const SUBJECT_OBJECT_DELETE = 'object_delete';
26
+
27
+    /** @var IL10N */
28
+    protected $l;
29
+
30
+    /**
31
+     * @param IFactory $languageFactory
32
+     * @param IURLGenerator $url
33
+     * @param IManager $activityManager
34
+     * @param IUserManager $userManager
35
+     * @param IGroupManager $groupManager
36
+     * @param IEventMerger $eventMerger
37
+     * @param IAppManager $appManager
38
+     */
39
+    public function __construct(
40
+        protected IFactory $languageFactory,
41
+        IURLGenerator $url,
42
+        protected IManager $activityManager,
43
+        IUserManager $userManager,
44
+        IGroupManager $groupManager,
45
+        protected IEventMerger $eventMerger,
46
+        protected IAppManager $appManager,
47
+    ) {
48
+        parent::__construct($userManager, $groupManager, $url);
49
+    }
50
+
51
+    /**
52
+     * @param array $eventData
53
+     * @return array
54
+     */
55
+    protected function generateObjectParameter(array $eventData, string $affectedUser): array {
56
+        if (!isset($eventData['id']) || !isset($eventData['name'])) {
57
+            throw new \InvalidArgumentException();
58
+        }
59
+
60
+        $params = [
61
+            'type' => 'calendar-event',
62
+            'id' => $eventData['id'],
63
+            'name' => trim($eventData['name']) !== '' ? $eventData['name'] : $this->l->t('Untitled event'),
64
+        ];
65
+
66
+        if (isset($eventData['link']) && is_array($eventData['link']) && $this->appManager->isEnabledForUser('calendar')) {
67
+            try {
68
+                // The calendar app needs to be manually loaded for the routes to be loaded
69
+                $this->appManager->loadApp('calendar');
70
+                $linkData = $eventData['link'];
71
+                $calendarUri = $this->urlencodeLowerHex($linkData['calendar_uri']);
72
+                if ($affectedUser === $linkData['owner']) {
73
+                    $objectId = base64_encode($this->url->getWebroot() . '/remote.php/dav/calendars/' . $linkData['owner'] . '/' . $calendarUri . '/' . $linkData['object_uri']);
74
+                } else {
75
+                    // Can't use the "real" owner and calendar names here because we create a custom
76
+                    // calendar for incoming shares with the name "<calendar>_shared_by_<sharer>".
77
+                    // Hack: Fix the link by generating it for the incoming shared calendar instead,
78
+                    //       as seen from the affected user.
79
+                    $objectId = base64_encode($this->url->getWebroot() . '/remote.php/dav/calendars/' . $affectedUser . '/' . $calendarUri . '_shared_by_' . $linkData['owner'] . '/' . $linkData['object_uri']);
80
+                }
81
+                $params['link'] = $this->url->linkToRouteAbsolute('calendar.view.indexdirect.edit', [
82
+                    'objectId' => $objectId,
83
+                ]);
84
+            } catch (\Exception $error) {
85
+                // Do nothing
86
+            }
87
+        }
88
+        return $params;
89
+    }
90
+
91
+    /**
92
+     * @param string $language
93
+     * @param IEvent $event
94
+     * @param IEvent|null $previousEvent
95
+     * @return IEvent
96
+     * @throws UnknownActivityException
97
+     * @since 11.0.0
98
+     */
99
+    public function parse($language, IEvent $event, ?IEvent $previousEvent = null) {
100
+        if ($event->getApp() !== 'dav' || $event->getType() !== 'calendar_event') {
101
+            throw new UnknownActivityException();
102
+        }
103
+
104
+        $this->l = $this->languageFactory->get('dav', $language);
105
+
106
+        if ($this->activityManager->getRequirePNG()) {
107
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar-dark.png')));
108
+        } else {
109
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/calendar.svg')));
110
+        }
111
+
112
+        if ($event->getSubject() === self::SUBJECT_OBJECT_ADD . '_event') {
113
+            $subject = $this->l->t('{actor} created event {event} in calendar {calendar}');
114
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_ADD . '_event_self') {
115
+            $subject = $this->l->t('You created event {event} in calendar {calendar}');
116
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_DELETE . '_event') {
117
+            $subject = $this->l->t('{actor} deleted event {event} from calendar {calendar}');
118
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_DELETE . '_event_self') {
119
+            $subject = $this->l->t('You deleted event {event} from calendar {calendar}');
120
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_UPDATE . '_event') {
121
+            $subject = $this->l->t('{actor} updated event {event} in calendar {calendar}');
122
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_UPDATE . '_event_self') {
123
+            $subject = $this->l->t('You updated event {event} in calendar {calendar}');
124
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_MOVE . '_event') {
125
+            $subject = $this->l->t('{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}');
126
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_MOVE . '_event_self') {
127
+            $subject = $this->l->t('You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}');
128
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_MOVE_TO_TRASH . '_event') {
129
+            $subject = $this->l->t('{actor} deleted event {event} from calendar {calendar}');
130
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_MOVE_TO_TRASH . '_event_self') {
131
+            $subject = $this->l->t('You deleted event {event} from calendar {calendar}');
132
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_RESTORE . '_event') {
133
+            $subject = $this->l->t('{actor} restored event {event} of calendar {calendar}');
134
+        } elseif ($event->getSubject() === self::SUBJECT_OBJECT_RESTORE . '_event_self') {
135
+            $subject = $this->l->t('You restored event {event} of calendar {calendar}');
136
+        } else {
137
+            throw new UnknownActivityException();
138
+        }
139
+
140
+        $parsedParameters = $this->getParameters($event);
141
+        $this->setSubjects($event, $subject, $parsedParameters);
142
+
143
+        $event = $this->eventMerger->mergeEvents('event', $event, $previousEvent);
144
+
145
+        return $event;
146
+    }
147
+
148
+    /**
149
+     * @param IEvent $event
150
+     * @return array
151
+     */
152
+    protected function getParameters(IEvent $event) {
153
+        $subject = $event->getSubject();
154
+        $parameters = $event->getSubjectParameters();
155
+
156
+        // Nextcloud 13+
157
+        if (isset($parameters['calendar'])) {
158
+            switch ($subject) {
159
+                case self::SUBJECT_OBJECT_ADD . '_event':
160
+                case self::SUBJECT_OBJECT_DELETE . '_event':
161
+                case self::SUBJECT_OBJECT_UPDATE . '_event':
162
+                case self::SUBJECT_OBJECT_MOVE_TO_TRASH . '_event':
163
+                case self::SUBJECT_OBJECT_RESTORE . '_event':
164
+                    return [
165
+                        'actor' => $this->generateUserParameter($parameters['actor']),
166
+                        'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
167
+                        'event' => $this->generateClassifiedObjectParameter($parameters['object'], $event->getAffectedUser()),
168
+                    ];
169
+                case self::SUBJECT_OBJECT_ADD . '_event_self':
170
+                case self::SUBJECT_OBJECT_DELETE . '_event_self':
171
+                case self::SUBJECT_OBJECT_UPDATE . '_event_self':
172
+                case self::SUBJECT_OBJECT_MOVE_TO_TRASH . '_event_self':
173
+                case self::SUBJECT_OBJECT_RESTORE . '_event_self':
174
+                    return [
175
+                        'calendar' => $this->generateCalendarParameter($parameters['calendar'], $this->l),
176
+                        'event' => $this->generateClassifiedObjectParameter($parameters['object'], $event->getAffectedUser()),
177
+                    ];
178
+            }
179
+        }
180
+
181
+        if (isset($parameters['sourceCalendar']) && isset($parameters['targetCalendar'])) {
182
+            switch ($subject) {
183
+                case self::SUBJECT_OBJECT_MOVE . '_event':
184
+                    return [
185
+                        'actor' => $this->generateUserParameter($parameters['actor']),
186
+                        'sourceCalendar' => $this->generateCalendarParameter($parameters['sourceCalendar'], $this->l),
187
+                        'targetCalendar' => $this->generateCalendarParameter($parameters['targetCalendar'], $this->l),
188
+                        'event' => $this->generateClassifiedObjectParameter($parameters['object'], $event->getAffectedUser()),
189
+                    ];
190
+                case self::SUBJECT_OBJECT_MOVE . '_event_self':
191
+                    return [
192
+                        'sourceCalendar' => $this->generateCalendarParameter($parameters['sourceCalendar'], $this->l),
193
+                        'targetCalendar' => $this->generateCalendarParameter($parameters['targetCalendar'], $this->l),
194
+                        'event' => $this->generateClassifiedObjectParameter($parameters['object'], $event->getAffectedUser()),
195
+                    ];
196
+            }
197
+        }
198
+
199
+        // Legacy - Do NOT Remove unless necessary
200
+        // Removing this will break parsing of activities that were created on
201
+        // Nextcloud 12, so we should keep this as long as it's acceptable.
202
+        // Otherwise if people upgrade over multiple releases in a short period,
203
+        // they will get the dead entries in their stream.
204
+        switch ($subject) {
205
+            case self::SUBJECT_OBJECT_ADD . '_event':
206
+            case self::SUBJECT_OBJECT_DELETE . '_event':
207
+            case self::SUBJECT_OBJECT_UPDATE . '_event':
208
+                return [
209
+                    'actor' => $this->generateUserParameter($parameters[0]),
210
+                    'calendar' => $this->generateLegacyCalendarParameter($event->getObjectId(), $parameters[1]),
211
+                    'event' => $this->generateObjectParameter($parameters[2], $event->getAffectedUser()),
212
+                ];
213
+            case self::SUBJECT_OBJECT_ADD . '_event_self':
214
+            case self::SUBJECT_OBJECT_DELETE . '_event_self':
215
+            case self::SUBJECT_OBJECT_UPDATE . '_event_self':
216
+                return [
217
+                    'calendar' => $this->generateLegacyCalendarParameter($event->getObjectId(), $parameters[1]),
218
+                    'event' => $this->generateObjectParameter($parameters[2], $event->getAffectedUser()),
219
+                ];
220
+        }
221
+
222
+        throw new \InvalidArgumentException();
223
+    }
224
+
225
+    private function generateClassifiedObjectParameter(array $eventData, string $affectedUser): array {
226
+        $parameter = $this->generateObjectParameter($eventData, $affectedUser);
227
+        if (!empty($eventData['classified'])) {
228
+            $parameter['name'] = $this->l->t('Busy');
229
+        }
230
+        return $parameter;
231
+    }
232
+
233
+    /**
234
+     * Return urlencoded string but with lower cased hex sequences.
235
+     * The remaining casing will be untouched.
236
+     */
237
+    private function urlencodeLowerHex(string $raw): string {
238
+        return preg_replace_callback(
239
+            '/%[0-9A-F]{2}/',
240
+            static fn (array $matches) => strtolower($matches[0]),
241
+            urlencode($raw),
242
+        );
243
+    }
244 244
 }
Please login to merge, or discard this patch.
apps/dav/tests/unit/CalDAV/Activity/Provider/EventTest.php 1 patch
Indentation   +163 added lines, -163 removed lines patch added patch discarded remove patch
@@ -21,176 +21,176 @@
 block discarded – undo
21 21
 use TypeError;
22 22
 
23 23
 class EventTest extends TestCase {
24
-	protected IUserManager&MockObject $userManager;
25
-	protected IGroupManager&MockObject $groupManager;
26
-	protected IURLGenerator&MockObject $url;
27
-	protected IAppManager&MockObject $appManager;
28
-	protected IFactory&MockObject $i10nFactory;
29
-	protected IManager&MockObject $activityManager;
30
-	protected IEventMerger&MockObject $eventMerger;
31
-	protected Event&MockObject $provider;
24
+    protected IUserManager&MockObject $userManager;
25
+    protected IGroupManager&MockObject $groupManager;
26
+    protected IURLGenerator&MockObject $url;
27
+    protected IAppManager&MockObject $appManager;
28
+    protected IFactory&MockObject $i10nFactory;
29
+    protected IManager&MockObject $activityManager;
30
+    protected IEventMerger&MockObject $eventMerger;
31
+    protected Event&MockObject $provider;
32 32
 
33
-	protected function setUp(): void {
34
-		parent::setUp();
35
-		$this->i10nFactory = $this->createMock(IFactory::class);
36
-		$this->userManager = $this->createMock(IUserManager::class);
37
-		$this->groupManager = $this->createMock(IGroupManager::class);
38
-		$this->activityManager = $this->createMock(IManager::class);
39
-		$this->url = $this->createMock(IURLGenerator::class);
40
-		$this->appManager = $this->createMock(IAppManager::class);
41
-		$this->eventMerger = $this->createMock(IEventMerger::class);
42
-		$this->provider = $this->getMockBuilder(Event::class)
43
-			->setConstructorArgs([
44
-				$this->i10nFactory,
45
-				$this->url,
46
-				$this->activityManager,
47
-				$this->userManager,
48
-				$this->groupManager,
49
-				$this->eventMerger,
50
-				$this->appManager
51
-			])
52
-			->onlyMethods(['parse'])
53
-			->getMock();
54
-	}
33
+    protected function setUp(): void {
34
+        parent::setUp();
35
+        $this->i10nFactory = $this->createMock(IFactory::class);
36
+        $this->userManager = $this->createMock(IUserManager::class);
37
+        $this->groupManager = $this->createMock(IGroupManager::class);
38
+        $this->activityManager = $this->createMock(IManager::class);
39
+        $this->url = $this->createMock(IURLGenerator::class);
40
+        $this->appManager = $this->createMock(IAppManager::class);
41
+        $this->eventMerger = $this->createMock(IEventMerger::class);
42
+        $this->provider = $this->getMockBuilder(Event::class)
43
+            ->setConstructorArgs([
44
+                $this->i10nFactory,
45
+                $this->url,
46
+                $this->activityManager,
47
+                $this->userManager,
48
+                $this->groupManager,
49
+                $this->eventMerger,
50
+                $this->appManager
51
+            ])
52
+            ->onlyMethods(['parse'])
53
+            ->getMock();
54
+    }
55 55
 
56
-	public static function dataGenerateObjectParameter(): array {
57
-		$link = [
58
-			'object_uri' => 'someuuid.ics',
59
-			'calendar_uri' => 'personal',
60
-			'owner' => 'someuser'
61
-		];
56
+    public static function dataGenerateObjectParameter(): array {
57
+        $link = [
58
+            'object_uri' => 'someuuid.ics',
59
+            'calendar_uri' => 'personal',
60
+            'owner' => 'someuser'
61
+        ];
62 62
 
63
-		return [
64
-			[23, 'c1', $link, true],
65
-			[23, 'c1', $link, false],
66
-			[42, 'c2', null],
67
-		];
68
-	}
63
+        return [
64
+            [23, 'c1', $link, true],
65
+            [23, 'c1', $link, false],
66
+            [42, 'c2', null],
67
+        ];
68
+    }
69 69
 
70
-	/**
71
-	 * @dataProvider dataGenerateObjectParameter
72
-	 */
73
-	public function testGenerateObjectParameter(int $id, string $name, ?array $link, bool $calendarAppEnabled = true): void {
74
-		$affectedUser = 'otheruser';
75
-		if ($link) {
76
-			$affectedUser = $link['owner'];
77
-			$generatedLink = [
78
-				'objectId' => base64_encode('/remote.php/dav/calendars/' . $link['owner'] . '/' . $link['calendar_uri'] . '/' . $link['object_uri']),
79
-			];
80
-			$this->appManager->expects($this->once())
81
-				->method('isEnabledForUser')
82
-				->with('calendar')
83
-				->willReturn($calendarAppEnabled);
84
-			if ($calendarAppEnabled) {
85
-				$this->url->expects($this->once())
86
-					->method('getWebroot');
87
-				$this->url->expects($this->once())
88
-					->method('linkToRouteAbsolute')
89
-					->with('calendar.view.indexdirect.edit', $generatedLink)
90
-					->willReturn('fullLink');
91
-			}
92
-		}
93
-		$objectParameter = ['id' => $id, 'name' => $name];
94
-		if ($link) {
95
-			$objectParameter['link'] = $link;
96
-		}
97
-		$result = [
98
-			'type' => 'calendar-event',
99
-			'id' => $id,
100
-			'name' => $name,
101
-		];
102
-		if ($link && $calendarAppEnabled) {
103
-			$result['link'] = 'fullLink';
104
-		}
105
-		$this->assertEquals($result, $this->invokePrivate($this->provider, 'generateObjectParameter', [$objectParameter, $affectedUser]));
106
-	}
70
+    /**
71
+     * @dataProvider dataGenerateObjectParameter
72
+     */
73
+    public function testGenerateObjectParameter(int $id, string $name, ?array $link, bool $calendarAppEnabled = true): void {
74
+        $affectedUser = 'otheruser';
75
+        if ($link) {
76
+            $affectedUser = $link['owner'];
77
+            $generatedLink = [
78
+                'objectId' => base64_encode('/remote.php/dav/calendars/' . $link['owner'] . '/' . $link['calendar_uri'] . '/' . $link['object_uri']),
79
+            ];
80
+            $this->appManager->expects($this->once())
81
+                ->method('isEnabledForUser')
82
+                ->with('calendar')
83
+                ->willReturn($calendarAppEnabled);
84
+            if ($calendarAppEnabled) {
85
+                $this->url->expects($this->once())
86
+                    ->method('getWebroot');
87
+                $this->url->expects($this->once())
88
+                    ->method('linkToRouteAbsolute')
89
+                    ->with('calendar.view.indexdirect.edit', $generatedLink)
90
+                    ->willReturn('fullLink');
91
+            }
92
+        }
93
+        $objectParameter = ['id' => $id, 'name' => $name];
94
+        if ($link) {
95
+            $objectParameter['link'] = $link;
96
+        }
97
+        $result = [
98
+            'type' => 'calendar-event',
99
+            'id' => $id,
100
+            'name' => $name,
101
+        ];
102
+        if ($link && $calendarAppEnabled) {
103
+            $result['link'] = 'fullLink';
104
+        }
105
+        $this->assertEquals($result, $this->invokePrivate($this->provider, 'generateObjectParameter', [$objectParameter, $affectedUser]));
106
+    }
107 107
 
108
-	public static function generateObjectParameterLinkEncodingDataProvider(): array {
109
-		return [
110
-			[ // Shared calendar
111
-				[
112
-					'object_uri' => 'someuuid.ics',
113
-					'calendar_uri' => 'personal',
114
-					'owner' => 'sharer'
115
-				],
116
-				base64_encode('/remote.php/dav/calendars/sharee/personal_shared_by_sharer/someuuid.ics'),
117
-			],
118
-			[ // Shared calendar with umlauts
119
-				[
120
-					'object_uri' => 'someuuid.ics',
121
-					'calendar_uri' => 'umlaut_äüöß',
122
-					'owner' => 'sharer'
123
-				],
124
-				base64_encode('/remote.php/dav/calendars/sharee/umlaut_%c3%a4%c3%bc%c3%b6%c3%9f_shared_by_sharer/someuuid.ics'),
125
-			],
126
-			[ // Shared calendar with umlauts and mixed casing
127
-				[
128
-					'object_uri' => 'someuuid.ics',
129
-					'calendar_uri' => 'Umlaut_äüöß',
130
-					'owner' => 'sharer'
131
-				],
132
-				base64_encode('/remote.php/dav/calendars/sharee/Umlaut_%c3%a4%c3%bc%c3%b6%c3%9f_shared_by_sharer/someuuid.ics'),
133
-			],
134
-			[ // Owned calendar with umlauts
135
-				[
136
-					'object_uri' => 'someuuid.ics',
137
-					'calendar_uri' => 'umlaut_äüöß',
138
-					'owner' => 'sharee'
139
-				],
140
-				base64_encode('/remote.php/dav/calendars/sharee/umlaut_%c3%a4%c3%bc%c3%b6%c3%9f/someuuid.ics'),
141
-			],
142
-			[ // Owned calendar with umlauts and mixed casing
143
-				[
144
-					'object_uri' => 'someuuid.ics',
145
-					'calendar_uri' => 'Umlaut_äüöß',
146
-					'owner' => 'sharee'
147
-				],
148
-				base64_encode('/remote.php/dav/calendars/sharee/Umlaut_%c3%a4%c3%bc%c3%b6%c3%9f/someuuid.ics'),
149
-			],
150
-		];
151
-	}
108
+    public static function generateObjectParameterLinkEncodingDataProvider(): array {
109
+        return [
110
+            [ // Shared calendar
111
+                [
112
+                    'object_uri' => 'someuuid.ics',
113
+                    'calendar_uri' => 'personal',
114
+                    'owner' => 'sharer'
115
+                ],
116
+                base64_encode('/remote.php/dav/calendars/sharee/personal_shared_by_sharer/someuuid.ics'),
117
+            ],
118
+            [ // Shared calendar with umlauts
119
+                [
120
+                    'object_uri' => 'someuuid.ics',
121
+                    'calendar_uri' => 'umlaut_äüöß',
122
+                    'owner' => 'sharer'
123
+                ],
124
+                base64_encode('/remote.php/dav/calendars/sharee/umlaut_%c3%a4%c3%bc%c3%b6%c3%9f_shared_by_sharer/someuuid.ics'),
125
+            ],
126
+            [ // Shared calendar with umlauts and mixed casing
127
+                [
128
+                    'object_uri' => 'someuuid.ics',
129
+                    'calendar_uri' => 'Umlaut_äüöß',
130
+                    'owner' => 'sharer'
131
+                ],
132
+                base64_encode('/remote.php/dav/calendars/sharee/Umlaut_%c3%a4%c3%bc%c3%b6%c3%9f_shared_by_sharer/someuuid.ics'),
133
+            ],
134
+            [ // Owned calendar with umlauts
135
+                [
136
+                    'object_uri' => 'someuuid.ics',
137
+                    'calendar_uri' => 'umlaut_äüöß',
138
+                    'owner' => 'sharee'
139
+                ],
140
+                base64_encode('/remote.php/dav/calendars/sharee/umlaut_%c3%a4%c3%bc%c3%b6%c3%9f/someuuid.ics'),
141
+            ],
142
+            [ // Owned calendar with umlauts and mixed casing
143
+                [
144
+                    'object_uri' => 'someuuid.ics',
145
+                    'calendar_uri' => 'Umlaut_äüöß',
146
+                    'owner' => 'sharee'
147
+                ],
148
+                base64_encode('/remote.php/dav/calendars/sharee/Umlaut_%c3%a4%c3%bc%c3%b6%c3%9f/someuuid.ics'),
149
+            ],
150
+        ];
151
+    }
152 152
 
153
-	/**
154
-	 * @dataProvider generateObjectParameterLinkEncodingDataProvider
155
-	 */
156
-	public function testGenerateObjectParameterLinkEncoding(array $link, string $objectId): void {
157
-		$generatedLink = [
158
-			'objectId' => $objectId,
159
-		];
160
-		$this->appManager->expects($this->once())
161
-			->method('isEnabledForUser')
162
-			->with('calendar')
163
-			->willReturn(true);
164
-		$this->url->expects($this->once())
165
-			->method('getWebroot');
166
-		$this->url->expects($this->once())
167
-			->method('linkToRouteAbsolute')
168
-			->with('calendar.view.indexdirect.edit', $generatedLink)
169
-			->willReturn('fullLink');
170
-		$objectParameter = ['id' => 42, 'name' => 'calendar', 'link' => $link];
171
-		$result = [
172
-			'type' => 'calendar-event',
173
-			'id' => 42,
174
-			'name' => 'calendar',
175
-			'link' => 'fullLink',
176
-		];
177
-		$this->assertEquals($result, $this->invokePrivate($this->provider, 'generateObjectParameter', [$objectParameter, 'sharee']));
178
-	}
153
+    /**
154
+     * @dataProvider generateObjectParameterLinkEncodingDataProvider
155
+     */
156
+    public function testGenerateObjectParameterLinkEncoding(array $link, string $objectId): void {
157
+        $generatedLink = [
158
+            'objectId' => $objectId,
159
+        ];
160
+        $this->appManager->expects($this->once())
161
+            ->method('isEnabledForUser')
162
+            ->with('calendar')
163
+            ->willReturn(true);
164
+        $this->url->expects($this->once())
165
+            ->method('getWebroot');
166
+        $this->url->expects($this->once())
167
+            ->method('linkToRouteAbsolute')
168
+            ->with('calendar.view.indexdirect.edit', $generatedLink)
169
+            ->willReturn('fullLink');
170
+        $objectParameter = ['id' => 42, 'name' => 'calendar', 'link' => $link];
171
+        $result = [
172
+            'type' => 'calendar-event',
173
+            'id' => 42,
174
+            'name' => 'calendar',
175
+            'link' => 'fullLink',
176
+        ];
177
+        $this->assertEquals($result, $this->invokePrivate($this->provider, 'generateObjectParameter', [$objectParameter, 'sharee']));
178
+    }
179 179
 
180
-	public static function dataGenerateObjectParameterThrows(): array {
181
-		return [
182
-			['event', TypeError::class],
183
-			[['name' => 'event']],
184
-			[['id' => 42]],
185
-		];
186
-	}
180
+    public static function dataGenerateObjectParameterThrows(): array {
181
+        return [
182
+            ['event', TypeError::class],
183
+            [['name' => 'event']],
184
+            [['id' => 42]],
185
+        ];
186
+    }
187 187
 
188
-	/**
189
-	 * @dataProvider dataGenerateObjectParameterThrows
190
-	 */
191
-	public function testGenerateObjectParameterThrows(string|array $eventData, string $exception = InvalidArgumentException::class): void {
192
-		$this->expectException($exception);
188
+    /**
189
+     * @dataProvider dataGenerateObjectParameterThrows
190
+     */
191
+    public function testGenerateObjectParameterThrows(string|array $eventData, string $exception = InvalidArgumentException::class): void {
192
+        $this->expectException($exception);
193 193
 
194
-		$this->invokePrivate($this->provider, 'generateObjectParameter', [$eventData, 'no_user']);
195
-	}
194
+        $this->invokePrivate($this->provider, 'generateObjectParameter', [$eventData, 'no_user']);
195
+    }
196 196
 }
Please login to merge, or discard this patch.