Passed
Push — master ( bce941...17d0da )
by John
67:35 queued 55:34
created
apps/dav/lib/CardDAV/Activity/Filter.php 1 patch
Indentation   +47 added lines, -47 removed lines patch added patch discarded remove patch
@@ -29,59 +29,59 @@
 block discarded – undo
29 29
 
30 30
 class Filter implements IFilter {
31 31
 
32
-	/** @var IL10N */
33
-	protected $l;
32
+    /** @var IL10N */
33
+    protected $l;
34 34
 
35
-	/** @var IURLGenerator */
36
-	protected $url;
35
+    /** @var IURLGenerator */
36
+    protected $url;
37 37
 
38
-	public function __construct(IL10N $l, IURLGenerator $url) {
39
-		$this->l = $l;
40
-		$this->url = $url;
41
-	}
38
+    public function __construct(IL10N $l, IURLGenerator $url) {
39
+        $this->l = $l;
40
+        $this->url = $url;
41
+    }
42 42
 
43
-	/**
44
-	 * @return string Lowercase a-z and underscore only identifier
45
-	 */
46
-	public function getIdentifier(): string {
47
-		return 'contacts';
48
-	}
43
+    /**
44
+     * @return string Lowercase a-z and underscore only identifier
45
+     */
46
+    public function getIdentifier(): string {
47
+        return 'contacts';
48
+    }
49 49
 
50
-	/**
51
-	 * @return string A translated string
52
-	 */
53
-	public function getName(): string {
54
-		return $this->l->t('Contacts');
55
-	}
50
+    /**
51
+     * @return string A translated string
52
+     */
53
+    public function getName(): string {
54
+        return $this->l->t('Contacts');
55
+    }
56 56
 
57
-	/**
58
-	 * @return int whether the filter should be rather on the top or bottom of
59
-	 * the admin section. The filters are arranged in ascending order of the
60
-	 * priority values. It is required to return a value between 0 and 100.
61
-	 */
62
-	public function getPriority(): int {
63
-		return 40;
64
-	}
57
+    /**
58
+     * @return int whether the filter should be rather on the top or bottom of
59
+     * the admin section. The filters are arranged in ascending order of the
60
+     * priority values. It is required to return a value between 0 and 100.
61
+     */
62
+    public function getPriority(): int {
63
+        return 40;
64
+    }
65 65
 
66
-	/**
67
-	 * @return string Full URL to an icon, empty string when none is given
68
-	 */
69
-	public function getIcon(): string {
70
-		return $this->url->getAbsoluteURL($this->url->imagePath('core', 'places/contacts.svg'));
71
-	}
66
+    /**
67
+     * @return string Full URL to an icon, empty string when none is given
68
+     */
69
+    public function getIcon(): string {
70
+        return $this->url->getAbsoluteURL($this->url->imagePath('core', 'places/contacts.svg'));
71
+    }
72 72
 
73
-	/**
74
-	 * @param string[] $types
75
-	 * @return string[] An array of allowed apps from which activities should be displayed
76
-	 */
77
-	public function filterTypes(array $types): array {
78
-		return array_intersect(['contacts'], $types);
79
-	}
73
+    /**
74
+     * @param string[] $types
75
+     * @return string[] An array of allowed apps from which activities should be displayed
76
+     */
77
+    public function filterTypes(array $types): array {
78
+        return array_intersect(['contacts'], $types);
79
+    }
80 80
 
81
-	/**
82
-	 * @return string[] An array of allowed apps from which activities should be displayed
83
-	 */
84
-	public function allowedApps(): array {
85
-		return [];
86
-	}
81
+    /**
82
+     * @return string[] An array of allowed apps from which activities should be displayed
83
+     */
84
+    public function allowedApps(): array {
85
+        return [];
86
+    }
87 87
 }
Please login to merge, or discard this patch.
apps/dav/lib/CardDAV/Activity/Provider/Addressbook.php 2 patches
Indentation   +153 added lines, -153 removed lines patch added patch discarded remove patch
@@ -35,157 +35,157 @@
 block discarded – undo
35 35
 use OCP\L10N\IFactory;
36 36
 
37 37
 class Addressbook extends Base {
38
-	public const SUBJECT_ADD = 'addressbook_add';
39
-	public const SUBJECT_UPDATE = 'addressbook_update';
40
-	public const SUBJECT_DELETE = 'addressbook_delete';
41
-	public const SUBJECT_SHARE_USER = 'addressbook_user_share';
42
-	public const SUBJECT_SHARE_GROUP = 'addressbook_group_share';
43
-	public const SUBJECT_UNSHARE_USER = 'addressbook_user_unshare';
44
-	public const SUBJECT_UNSHARE_GROUP = 'addressbook_group_unshare';
45
-
46
-	/** @var IFactory */
47
-	protected $languageFactory;
48
-
49
-	/** @var IManager */
50
-	protected $activityManager;
51
-
52
-	/** @var IEventMerger */
53
-	protected $eventMerger;
54
-
55
-	public function __construct(IFactory $languageFactory,
56
-								IURLGenerator $url,
57
-								IManager $activityManager,
58
-								IUserManager $userManager,
59
-								IGroupManager $groupManager,
60
-								IEventMerger $eventMerger) {
61
-		parent::__construct($userManager, $groupManager, $url);
62
-		$this->languageFactory = $languageFactory;
63
-		$this->activityManager = $activityManager;
64
-		$this->eventMerger = $eventMerger;
65
-	}
66
-
67
-	/**
68
-	 * @param string $language
69
-	 * @param IEvent $event
70
-	 * @param IEvent|null $previousEvent
71
-	 * @return IEvent
72
-	 * @throws \InvalidArgumentException
73
-	 */
74
-	public function parse($language, IEvent $event, IEvent $previousEvent = null): IEvent {
75
-		if ($event->getApp() !== 'dav' || $event->getType() !== 'addressbook') {
76
-			throw new \InvalidArgumentException();
77
-		}
78
-
79
-		$l = $this->languageFactory->get('dav', $language);
80
-
81
-		if ($this->activityManager->getRequirePNG()) {
82
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/contacts-dark.png')));
83
-		} else {
84
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/contacts.svg')));
85
-		}
86
-
87
-		if ($event->getSubject() === self::SUBJECT_ADD) {
88
-			$subject = $l->t('{actor} created addressbook {addressbook}');
89
-		} elseif ($event->getSubject() === self::SUBJECT_ADD . '_self') {
90
-			$subject = $l->t('You created addressbook {addressbook}');
91
-		} elseif ($event->getSubject() === self::SUBJECT_DELETE) {
92
-			$subject = $l->t('{actor} deleted addressbook {addressbook}');
93
-		} elseif ($event->getSubject() === self::SUBJECT_DELETE . '_self') {
94
-			$subject = $l->t('You deleted addressbook {addressbook}');
95
-		} elseif ($event->getSubject() === self::SUBJECT_UPDATE) {
96
-			$subject = $l->t('{actor} updated addressbook {addressbook}');
97
-		} elseif ($event->getSubject() === self::SUBJECT_UPDATE . '_self') {
98
-			$subject = $l->t('You updated addressbook {addressbook}');
99
-		} elseif ($event->getSubject() === self::SUBJECT_SHARE_USER) {
100
-			$subject = $l->t('{actor} shared addressbook {addressbook} with you');
101
-		} elseif ($event->getSubject() === self::SUBJECT_SHARE_USER . '_you') {
102
-			$subject = $l->t('You shared addressbook {addressbook} with {user}');
103
-		} elseif ($event->getSubject() === self::SUBJECT_SHARE_USER . '_by') {
104
-			$subject = $l->t('{actor} shared addressbook {addressbook} with {user}');
105
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER) {
106
-			$subject = $l->t('{actor} unshared addressbook {addressbook} from you');
107
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_you') {
108
-			$subject = $l->t('You unshared addressbook {addressbook} from {user}');
109
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_by') {
110
-			$subject = $l->t('{actor} unshared addressbook {addressbook} from {user}');
111
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_self') {
112
-			$subject = $l->t('{actor} unshared addressbook {addressbook} from themselves');
113
-		} elseif ($event->getSubject() === self::SUBJECT_SHARE_GROUP . '_you') {
114
-			$subject = $l->t('You shared addressbook {addressbook} with group {group}');
115
-		} elseif ($event->getSubject() === self::SUBJECT_SHARE_GROUP . '_by') {
116
-			$subject = $l->t('{actor} shared addressbook {addressbook} with group {group}');
117
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP . '_you') {
118
-			$subject = $l->t('You unshared addressbook {addressbook} from group {group}');
119
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP . '_by') {
120
-			$subject = $l->t('{actor} unshared addressbook {addressbook} from group {group}');
121
-		} else {
122
-			throw new \InvalidArgumentException();
123
-		}
124
-
125
-		$parsedParameters = $this->getParameters($event, $l);
126
-		$this->setSubjects($event, $subject, $parsedParameters);
127
-
128
-		$event = $this->eventMerger->mergeEvents('addressbook', $event, $previousEvent);
129
-
130
-		if ($event->getChildEvent() === null) {
131
-			if (isset($parsedParameters['user'])) {
132
-				// Couldn't group by calendar, maybe we can group by users
133
-				$event = $this->eventMerger->mergeEvents('user', $event, $previousEvent);
134
-			} elseif (isset($parsedParameters['group'])) {
135
-				// Couldn't group by calendar, maybe we can group by groups
136
-				$event = $this->eventMerger->mergeEvents('group', $event, $previousEvent);
137
-			}
138
-		}
139
-
140
-		return $event;
141
-	}
142
-
143
-	protected function getParameters(IEvent $event, IL10N $l): array {
144
-		$subject = $event->getSubject();
145
-		$parameters = $event->getSubjectParameters();
146
-
147
-		switch ($subject) {
148
-			case self::SUBJECT_ADD:
149
-			case self::SUBJECT_ADD . '_self':
150
-			case self::SUBJECT_DELETE:
151
-			case self::SUBJECT_DELETE . '_self':
152
-			case self::SUBJECT_UPDATE:
153
-			case self::SUBJECT_UPDATE . '_self':
154
-			case self::SUBJECT_SHARE_USER:
155
-			case self::SUBJECT_UNSHARE_USER:
156
-			case self::SUBJECT_UNSHARE_USER . '_self':
157
-				return [
158
-					'actor' => $this->generateUserParameter($parameters['actor']),
159
-					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
160
-				];
161
-			case self::SUBJECT_SHARE_USER . '_you':
162
-			case self::SUBJECT_UNSHARE_USER . '_you':
163
-				return [
164
-					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
165
-					'user' => $this->generateUserParameter($parameters['user']),
166
-				];
167
-			case self::SUBJECT_SHARE_USER . '_by':
168
-			case self::SUBJECT_UNSHARE_USER . '_by':
169
-				return [
170
-					'actor' => $this->generateUserParameter($parameters['actor']),
171
-					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
172
-					'user' => $this->generateUserParameter($parameters['user']),
173
-				];
174
-			case self::SUBJECT_SHARE_GROUP . '_you':
175
-			case self::SUBJECT_UNSHARE_GROUP . '_you':
176
-				return [
177
-					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
178
-					'group' => $this->generateGroupParameter($parameters['group']),
179
-				];
180
-			case self::SUBJECT_SHARE_GROUP . '_by':
181
-			case self::SUBJECT_UNSHARE_GROUP . '_by':
182
-				return [
183
-					'actor' => $this->generateUserParameter($parameters['actor']),
184
-					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
185
-					'group' => $this->generateGroupParameter($parameters['group']),
186
-				];
187
-		}
188
-
189
-		throw new \InvalidArgumentException();
190
-	}
38
+    public const SUBJECT_ADD = 'addressbook_add';
39
+    public const SUBJECT_UPDATE = 'addressbook_update';
40
+    public const SUBJECT_DELETE = 'addressbook_delete';
41
+    public const SUBJECT_SHARE_USER = 'addressbook_user_share';
42
+    public const SUBJECT_SHARE_GROUP = 'addressbook_group_share';
43
+    public const SUBJECT_UNSHARE_USER = 'addressbook_user_unshare';
44
+    public const SUBJECT_UNSHARE_GROUP = 'addressbook_group_unshare';
45
+
46
+    /** @var IFactory */
47
+    protected $languageFactory;
48
+
49
+    /** @var IManager */
50
+    protected $activityManager;
51
+
52
+    /** @var IEventMerger */
53
+    protected $eventMerger;
54
+
55
+    public function __construct(IFactory $languageFactory,
56
+                                IURLGenerator $url,
57
+                                IManager $activityManager,
58
+                                IUserManager $userManager,
59
+                                IGroupManager $groupManager,
60
+                                IEventMerger $eventMerger) {
61
+        parent::__construct($userManager, $groupManager, $url);
62
+        $this->languageFactory = $languageFactory;
63
+        $this->activityManager = $activityManager;
64
+        $this->eventMerger = $eventMerger;
65
+    }
66
+
67
+    /**
68
+     * @param string $language
69
+     * @param IEvent $event
70
+     * @param IEvent|null $previousEvent
71
+     * @return IEvent
72
+     * @throws \InvalidArgumentException
73
+     */
74
+    public function parse($language, IEvent $event, IEvent $previousEvent = null): IEvent {
75
+        if ($event->getApp() !== 'dav' || $event->getType() !== 'addressbook') {
76
+            throw new \InvalidArgumentException();
77
+        }
78
+
79
+        $l = $this->languageFactory->get('dav', $language);
80
+
81
+        if ($this->activityManager->getRequirePNG()) {
82
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/contacts-dark.png')));
83
+        } else {
84
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/contacts.svg')));
85
+        }
86
+
87
+        if ($event->getSubject() === self::SUBJECT_ADD) {
88
+            $subject = $l->t('{actor} created addressbook {addressbook}');
89
+        } elseif ($event->getSubject() === self::SUBJECT_ADD . '_self') {
90
+            $subject = $l->t('You created addressbook {addressbook}');
91
+        } elseif ($event->getSubject() === self::SUBJECT_DELETE) {
92
+            $subject = $l->t('{actor} deleted addressbook {addressbook}');
93
+        } elseif ($event->getSubject() === self::SUBJECT_DELETE . '_self') {
94
+            $subject = $l->t('You deleted addressbook {addressbook}');
95
+        } elseif ($event->getSubject() === self::SUBJECT_UPDATE) {
96
+            $subject = $l->t('{actor} updated addressbook {addressbook}');
97
+        } elseif ($event->getSubject() === self::SUBJECT_UPDATE . '_self') {
98
+            $subject = $l->t('You updated addressbook {addressbook}');
99
+        } elseif ($event->getSubject() === self::SUBJECT_SHARE_USER) {
100
+            $subject = $l->t('{actor} shared addressbook {addressbook} with you');
101
+        } elseif ($event->getSubject() === self::SUBJECT_SHARE_USER . '_you') {
102
+            $subject = $l->t('You shared addressbook {addressbook} with {user}');
103
+        } elseif ($event->getSubject() === self::SUBJECT_SHARE_USER . '_by') {
104
+            $subject = $l->t('{actor} shared addressbook {addressbook} with {user}');
105
+        } elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER) {
106
+            $subject = $l->t('{actor} unshared addressbook {addressbook} from you');
107
+        } elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_you') {
108
+            $subject = $l->t('You unshared addressbook {addressbook} from {user}');
109
+        } elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_by') {
110
+            $subject = $l->t('{actor} unshared addressbook {addressbook} from {user}');
111
+        } elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_self') {
112
+            $subject = $l->t('{actor} unshared addressbook {addressbook} from themselves');
113
+        } elseif ($event->getSubject() === self::SUBJECT_SHARE_GROUP . '_you') {
114
+            $subject = $l->t('You shared addressbook {addressbook} with group {group}');
115
+        } elseif ($event->getSubject() === self::SUBJECT_SHARE_GROUP . '_by') {
116
+            $subject = $l->t('{actor} shared addressbook {addressbook} with group {group}');
117
+        } elseif ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP . '_you') {
118
+            $subject = $l->t('You unshared addressbook {addressbook} from group {group}');
119
+        } elseif ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP . '_by') {
120
+            $subject = $l->t('{actor} unshared addressbook {addressbook} from group {group}');
121
+        } else {
122
+            throw new \InvalidArgumentException();
123
+        }
124
+
125
+        $parsedParameters = $this->getParameters($event, $l);
126
+        $this->setSubjects($event, $subject, $parsedParameters);
127
+
128
+        $event = $this->eventMerger->mergeEvents('addressbook', $event, $previousEvent);
129
+
130
+        if ($event->getChildEvent() === null) {
131
+            if (isset($parsedParameters['user'])) {
132
+                // Couldn't group by calendar, maybe we can group by users
133
+                $event = $this->eventMerger->mergeEvents('user', $event, $previousEvent);
134
+            } elseif (isset($parsedParameters['group'])) {
135
+                // Couldn't group by calendar, maybe we can group by groups
136
+                $event = $this->eventMerger->mergeEvents('group', $event, $previousEvent);
137
+            }
138
+        }
139
+
140
+        return $event;
141
+    }
142
+
143
+    protected function getParameters(IEvent $event, IL10N $l): array {
144
+        $subject = $event->getSubject();
145
+        $parameters = $event->getSubjectParameters();
146
+
147
+        switch ($subject) {
148
+            case self::SUBJECT_ADD:
149
+            case self::SUBJECT_ADD . '_self':
150
+            case self::SUBJECT_DELETE:
151
+            case self::SUBJECT_DELETE . '_self':
152
+            case self::SUBJECT_UPDATE:
153
+            case self::SUBJECT_UPDATE . '_self':
154
+            case self::SUBJECT_SHARE_USER:
155
+            case self::SUBJECT_UNSHARE_USER:
156
+            case self::SUBJECT_UNSHARE_USER . '_self':
157
+                return [
158
+                    'actor' => $this->generateUserParameter($parameters['actor']),
159
+                    'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
160
+                ];
161
+            case self::SUBJECT_SHARE_USER . '_you':
162
+            case self::SUBJECT_UNSHARE_USER . '_you':
163
+                return [
164
+                    'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
165
+                    'user' => $this->generateUserParameter($parameters['user']),
166
+                ];
167
+            case self::SUBJECT_SHARE_USER . '_by':
168
+            case self::SUBJECT_UNSHARE_USER . '_by':
169
+                return [
170
+                    'actor' => $this->generateUserParameter($parameters['actor']),
171
+                    'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
172
+                    'user' => $this->generateUserParameter($parameters['user']),
173
+                ];
174
+            case self::SUBJECT_SHARE_GROUP . '_you':
175
+            case self::SUBJECT_UNSHARE_GROUP . '_you':
176
+                return [
177
+                    'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
178
+                    'group' => $this->generateGroupParameter($parameters['group']),
179
+                ];
180
+            case self::SUBJECT_SHARE_GROUP . '_by':
181
+            case self::SUBJECT_UNSHARE_GROUP . '_by':
182
+                return [
183
+                    'actor' => $this->generateUserParameter($parameters['actor']),
184
+                    'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
185
+                    'group' => $this->generateGroupParameter($parameters['group']),
186
+                ];
187
+        }
188
+
189
+        throw new \InvalidArgumentException();
190
+    }
191 191
 }
Please login to merge, or discard this patch.
Spacing   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -86,37 +86,37 @@  discard block
 block discarded – undo
86 86
 
87 87
 		if ($event->getSubject() === self::SUBJECT_ADD) {
88 88
 			$subject = $l->t('{actor} created addressbook {addressbook}');
89
-		} elseif ($event->getSubject() === self::SUBJECT_ADD . '_self') {
89
+		} elseif ($event->getSubject() === self::SUBJECT_ADD.'_self') {
90 90
 			$subject = $l->t('You created addressbook {addressbook}');
91 91
 		} elseif ($event->getSubject() === self::SUBJECT_DELETE) {
92 92
 			$subject = $l->t('{actor} deleted addressbook {addressbook}');
93
-		} elseif ($event->getSubject() === self::SUBJECT_DELETE . '_self') {
93
+		} elseif ($event->getSubject() === self::SUBJECT_DELETE.'_self') {
94 94
 			$subject = $l->t('You deleted addressbook {addressbook}');
95 95
 		} elseif ($event->getSubject() === self::SUBJECT_UPDATE) {
96 96
 			$subject = $l->t('{actor} updated addressbook {addressbook}');
97
-		} elseif ($event->getSubject() === self::SUBJECT_UPDATE . '_self') {
97
+		} elseif ($event->getSubject() === self::SUBJECT_UPDATE.'_self') {
98 98
 			$subject = $l->t('You updated addressbook {addressbook}');
99 99
 		} elseif ($event->getSubject() === self::SUBJECT_SHARE_USER) {
100 100
 			$subject = $l->t('{actor} shared addressbook {addressbook} with you');
101
-		} elseif ($event->getSubject() === self::SUBJECT_SHARE_USER . '_you') {
101
+		} elseif ($event->getSubject() === self::SUBJECT_SHARE_USER.'_you') {
102 102
 			$subject = $l->t('You shared addressbook {addressbook} with {user}');
103
-		} elseif ($event->getSubject() === self::SUBJECT_SHARE_USER . '_by') {
103
+		} elseif ($event->getSubject() === self::SUBJECT_SHARE_USER.'_by') {
104 104
 			$subject = $l->t('{actor} shared addressbook {addressbook} with {user}');
105 105
 		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER) {
106 106
 			$subject = $l->t('{actor} unshared addressbook {addressbook} from you');
107
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_you') {
107
+		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER.'_you') {
108 108
 			$subject = $l->t('You unshared addressbook {addressbook} from {user}');
109
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_by') {
109
+		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER.'_by') {
110 110
 			$subject = $l->t('{actor} unshared addressbook {addressbook} from {user}');
111
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER . '_self') {
111
+		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_USER.'_self') {
112 112
 			$subject = $l->t('{actor} unshared addressbook {addressbook} from themselves');
113
-		} elseif ($event->getSubject() === self::SUBJECT_SHARE_GROUP . '_you') {
113
+		} elseif ($event->getSubject() === self::SUBJECT_SHARE_GROUP.'_you') {
114 114
 			$subject = $l->t('You shared addressbook {addressbook} with group {group}');
115
-		} elseif ($event->getSubject() === self::SUBJECT_SHARE_GROUP . '_by') {
115
+		} elseif ($event->getSubject() === self::SUBJECT_SHARE_GROUP.'_by') {
116 116
 			$subject = $l->t('{actor} shared addressbook {addressbook} with group {group}');
117
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP . '_you') {
117
+		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP.'_you') {
118 118
 			$subject = $l->t('You unshared addressbook {addressbook} from group {group}');
119
-		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP . '_by') {
119
+		} elseif ($event->getSubject() === self::SUBJECT_UNSHARE_GROUP.'_by') {
120 120
 			$subject = $l->t('{actor} unshared addressbook {addressbook} from group {group}');
121 121
 		} else {
122 122
 			throw new \InvalidArgumentException();
@@ -146,39 +146,39 @@  discard block
 block discarded – undo
146 146
 
147 147
 		switch ($subject) {
148 148
 			case self::SUBJECT_ADD:
149
-			case self::SUBJECT_ADD . '_self':
149
+			case self::SUBJECT_ADD.'_self':
150 150
 			case self::SUBJECT_DELETE:
151
-			case self::SUBJECT_DELETE . '_self':
151
+			case self::SUBJECT_DELETE.'_self':
152 152
 			case self::SUBJECT_UPDATE:
153
-			case self::SUBJECT_UPDATE . '_self':
153
+			case self::SUBJECT_UPDATE.'_self':
154 154
 			case self::SUBJECT_SHARE_USER:
155 155
 			case self::SUBJECT_UNSHARE_USER:
156
-			case self::SUBJECT_UNSHARE_USER . '_self':
156
+			case self::SUBJECT_UNSHARE_USER.'_self':
157 157
 				return [
158 158
 					'actor' => $this->generateUserParameter($parameters['actor']),
159 159
 					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
160 160
 				];
161
-			case self::SUBJECT_SHARE_USER . '_you':
162
-			case self::SUBJECT_UNSHARE_USER . '_you':
161
+			case self::SUBJECT_SHARE_USER.'_you':
162
+			case self::SUBJECT_UNSHARE_USER.'_you':
163 163
 				return [
164 164
 					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
165 165
 					'user' => $this->generateUserParameter($parameters['user']),
166 166
 				];
167
-			case self::SUBJECT_SHARE_USER . '_by':
168
-			case self::SUBJECT_UNSHARE_USER . '_by':
167
+			case self::SUBJECT_SHARE_USER.'_by':
168
+			case self::SUBJECT_UNSHARE_USER.'_by':
169 169
 				return [
170 170
 					'actor' => $this->generateUserParameter($parameters['actor']),
171 171
 					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
172 172
 					'user' => $this->generateUserParameter($parameters['user']),
173 173
 				];
174
-			case self::SUBJECT_SHARE_GROUP . '_you':
175
-			case self::SUBJECT_UNSHARE_GROUP . '_you':
174
+			case self::SUBJECT_SHARE_GROUP.'_you':
175
+			case self::SUBJECT_UNSHARE_GROUP.'_you':
176 176
 				return [
177 177
 					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
178 178
 					'group' => $this->generateGroupParameter($parameters['group']),
179 179
 				];
180
-			case self::SUBJECT_SHARE_GROUP . '_by':
181
-			case self::SUBJECT_UNSHARE_GROUP . '_by':
180
+			case self::SUBJECT_SHARE_GROUP.'_by':
181
+			case self::SUBJECT_UNSHARE_GROUP.'_by':
182 182
 				return [
183 183
 					'actor' => $this->generateUserParameter($parameters['actor']),
184 184
 					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
Please login to merge, or discard this patch.
apps/dav/lib/CardDAV/Activity/Provider/Base.php 2 patches
Indentation   +116 added lines, -116 removed lines patch added patch discarded remove patch
@@ -37,120 +37,120 @@
 block discarded – undo
37 37
 
38 38
 abstract class Base implements IProvider {
39 39
 
40
-	/** @var IUserManager */
41
-	protected $userManager;
42
-
43
-	/** @var string[]  */
44
-	protected $userDisplayNames = [];
45
-
46
-	/** @var IGroupManager */
47
-	protected $groupManager;
48
-
49
-	/** @var string[] */
50
-	protected $groupDisplayNames = [];
51
-
52
-	/** @var IURLGenerator */
53
-	protected $url;
54
-
55
-	public function __construct(IUserManager $userManager,
56
-								IGroupManager $groupManager,
57
-								IURLGenerator $urlGenerator) {
58
-		$this->userManager = $userManager;
59
-		$this->groupManager = $groupManager;
60
-		$this->url = $urlGenerator;
61
-	}
62
-
63
-	/**
64
-	 * @param IEvent $event
65
-	 * @param string $subject
66
-	 * @param array $parameters
67
-	 */
68
-	protected function setSubjects(IEvent $event, string $subject, array $parameters): void {
69
-		$placeholders = $replacements = [];
70
-		foreach ($parameters as $placeholder => $parameter) {
71
-			$placeholders[] = '{' . $placeholder . '}';
72
-			$replacements[] = $parameter['name'];
73
-		}
74
-
75
-		$event->setParsedSubject(str_replace($placeholders, $replacements, $subject))
76
-			->setRichSubject($subject, $parameters);
77
-	}
78
-
79
-	/**
80
-	 * @param array $data
81
-	 * @param IL10N $l
82
-	 * @return array
83
-	 */
84
-	protected function generateAddressbookParameter(array $data, IL10N $l): array {
85
-		if ($data['uri'] === CardDavBackend::PERSONAL_ADDRESSBOOK_URI &&
86
-			$data['name'] === CardDavBackend::PERSONAL_ADDRESSBOOK_NAME) {
87
-			return [
88
-				'type' => 'addressbook',
89
-				'id' => $data['id'],
90
-				'name' => $l->t('Personal'),
91
-			];
92
-		}
93
-
94
-		return [
95
-			'type' => 'addressbook',
96
-			'id' => $data['id'],
97
-			'name' => $data['name'],
98
-		];
99
-	}
100
-
101
-	/**
102
-	 * @param string $uid
103
-	 * @return array
104
-	 */
105
-	protected function generateUserParameter(string $uid): array {
106
-		if (!isset($this->userDisplayNames[$uid])) {
107
-			$this->userDisplayNames[$uid] = $this->getUserDisplayName($uid);
108
-		}
109
-
110
-		return [
111
-			'type' => 'user',
112
-			'id' => $uid,
113
-			'name' => $this->userDisplayNames[$uid],
114
-		];
115
-	}
116
-
117
-	/**
118
-	 * @param string $uid
119
-	 * @return string
120
-	 */
121
-	protected function getUserDisplayName(string $uid): string {
122
-		$user = $this->userManager->get($uid);
123
-		if ($user instanceof IUser) {
124
-			return $user->getDisplayName();
125
-		}
126
-		return $uid;
127
-	}
128
-
129
-	/**
130
-	 * @param string $gid
131
-	 * @return array
132
-	 */
133
-	protected function generateGroupParameter(string $gid): array {
134
-		if (!isset($this->groupDisplayNames[$gid])) {
135
-			$this->groupDisplayNames[$gid] = $this->getGroupDisplayName($gid);
136
-		}
137
-
138
-		return [
139
-			'type' => 'user-group',
140
-			'id' => $gid,
141
-			'name' => $this->groupDisplayNames[$gid],
142
-		];
143
-	}
144
-
145
-	/**
146
-	 * @param string $gid
147
-	 * @return string
148
-	 */
149
-	protected function getGroupDisplayName(string $gid): string {
150
-		$group = $this->groupManager->get($gid);
151
-		if ($group instanceof IGroup) {
152
-			return $group->getDisplayName();
153
-		}
154
-		return $gid;
155
-	}
40
+    /** @var IUserManager */
41
+    protected $userManager;
42
+
43
+    /** @var string[]  */
44
+    protected $userDisplayNames = [];
45
+
46
+    /** @var IGroupManager */
47
+    protected $groupManager;
48
+
49
+    /** @var string[] */
50
+    protected $groupDisplayNames = [];
51
+
52
+    /** @var IURLGenerator */
53
+    protected $url;
54
+
55
+    public function __construct(IUserManager $userManager,
56
+                                IGroupManager $groupManager,
57
+                                IURLGenerator $urlGenerator) {
58
+        $this->userManager = $userManager;
59
+        $this->groupManager = $groupManager;
60
+        $this->url = $urlGenerator;
61
+    }
62
+
63
+    /**
64
+     * @param IEvent $event
65
+     * @param string $subject
66
+     * @param array $parameters
67
+     */
68
+    protected function setSubjects(IEvent $event, string $subject, array $parameters): void {
69
+        $placeholders = $replacements = [];
70
+        foreach ($parameters as $placeholder => $parameter) {
71
+            $placeholders[] = '{' . $placeholder . '}';
72
+            $replacements[] = $parameter['name'];
73
+        }
74
+
75
+        $event->setParsedSubject(str_replace($placeholders, $replacements, $subject))
76
+            ->setRichSubject($subject, $parameters);
77
+    }
78
+
79
+    /**
80
+     * @param array $data
81
+     * @param IL10N $l
82
+     * @return array
83
+     */
84
+    protected function generateAddressbookParameter(array $data, IL10N $l): array {
85
+        if ($data['uri'] === CardDavBackend::PERSONAL_ADDRESSBOOK_URI &&
86
+            $data['name'] === CardDavBackend::PERSONAL_ADDRESSBOOK_NAME) {
87
+            return [
88
+                'type' => 'addressbook',
89
+                'id' => $data['id'],
90
+                'name' => $l->t('Personal'),
91
+            ];
92
+        }
93
+
94
+        return [
95
+            'type' => 'addressbook',
96
+            'id' => $data['id'],
97
+            'name' => $data['name'],
98
+        ];
99
+    }
100
+
101
+    /**
102
+     * @param string $uid
103
+     * @return array
104
+     */
105
+    protected function generateUserParameter(string $uid): array {
106
+        if (!isset($this->userDisplayNames[$uid])) {
107
+            $this->userDisplayNames[$uid] = $this->getUserDisplayName($uid);
108
+        }
109
+
110
+        return [
111
+            'type' => 'user',
112
+            'id' => $uid,
113
+            'name' => $this->userDisplayNames[$uid],
114
+        ];
115
+    }
116
+
117
+    /**
118
+     * @param string $uid
119
+     * @return string
120
+     */
121
+    protected function getUserDisplayName(string $uid): string {
122
+        $user = $this->userManager->get($uid);
123
+        if ($user instanceof IUser) {
124
+            return $user->getDisplayName();
125
+        }
126
+        return $uid;
127
+    }
128
+
129
+    /**
130
+     * @param string $gid
131
+     * @return array
132
+     */
133
+    protected function generateGroupParameter(string $gid): array {
134
+        if (!isset($this->groupDisplayNames[$gid])) {
135
+            $this->groupDisplayNames[$gid] = $this->getGroupDisplayName($gid);
136
+        }
137
+
138
+        return [
139
+            'type' => 'user-group',
140
+            'id' => $gid,
141
+            'name' => $this->groupDisplayNames[$gid],
142
+        ];
143
+    }
144
+
145
+    /**
146
+     * @param string $gid
147
+     * @return string
148
+     */
149
+    protected function getGroupDisplayName(string $gid): string {
150
+        $group = $this->groupManager->get($gid);
151
+        if ($group instanceof IGroup) {
152
+            return $group->getDisplayName();
153
+        }
154
+        return $gid;
155
+    }
156 156
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -169,7 +169,7 @@
 block discarded – undo
169 169
 	protected function setSubjects(IEvent $event, string $subject, array $parameters): void {
170 170
 		$placeholders = $replacements = [];
171 171
 		foreach ($parameters as $placeholder => $parameter) {
172
-			$placeholders[] = '{' . $placeholder . '}';
172
+			$placeholders[] = '{'.$placeholder.'}';
173 173
 			$replacements[] = $parameter['name'];
174 174
 		}
175 175
 
Please login to merge, or discard this patch.
apps/dav/lib/CardDAV/Activity/Provider/Card.php 2 patches
Indentation   +105 added lines, -105 removed lines patch added patch discarded remove patch
@@ -36,109 +36,109 @@
 block discarded – undo
36 36
 use OCP\L10N\IFactory;
37 37
 
38 38
 class Card extends Base {
39
-	public const SUBJECT_ADD = 'card_add';
40
-	public const SUBJECT_UPDATE = 'card_update';
41
-	public const SUBJECT_DELETE = 'card_delete';
42
-
43
-	/** @var IFactory */
44
-	protected $languageFactory;
45
-
46
-	/** @var IManager */
47
-	protected $activityManager;
48
-
49
-	/** @var IEventMerger */
50
-	protected $eventMerger;
51
-
52
-	/** @var IAppManager */
53
-	protected $appManager;
54
-
55
-	public function __construct(IFactory $languageFactory,
56
-								IURLGenerator $url,
57
-								IManager $activityManager,
58
-								IUserManager $userManager,
59
-								IGroupManager $groupManager,
60
-								IEventMerger $eventMerger,
61
-								IAppManager $appManager) {
62
-		parent::__construct($userManager, $groupManager, $url);
63
-		$this->languageFactory = $languageFactory;
64
-		$this->activityManager = $activityManager;
65
-		$this->eventMerger = $eventMerger;
66
-		$this->appManager = $appManager;
67
-	}
68
-
69
-	/**
70
-	 * @param string $language
71
-	 * @param IEvent $event
72
-	 * @param IEvent|null $previousEvent
73
-	 * @return IEvent
74
-	 * @throws \InvalidArgumentException
75
-	 */
76
-	public function parse($language, IEvent $event, IEvent $previousEvent = null): IEvent {
77
-		if ($event->getApp() !== 'dav' || $event->getType() !== 'card') {
78
-			throw new \InvalidArgumentException();
79
-		}
80
-
81
-		$l = $this->languageFactory->get('dav', $language);
82
-
83
-		if ($this->activityManager->getRequirePNG()) {
84
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/contacts-dark.png')));
85
-		} else {
86
-			$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/contacts.svg')));
87
-		}
88
-
89
-		if ($event->getSubject() === self::SUBJECT_ADD) {
90
-			$subject = $l->t('{actor} created contact {card} in addressbook {addressbook}');
91
-		} elseif ($event->getSubject() === self::SUBJECT_ADD . '_self') {
92
-			$subject = $l->t('You created contact {card} in addressbook {addressbook}');
93
-		} elseif ($event->getSubject() === self::SUBJECT_DELETE) {
94
-			$subject = $l->t('{actor} deleted contact {card} from addressbook {addressbook}');
95
-		} elseif ($event->getSubject() === self::SUBJECT_DELETE . '_self') {
96
-			$subject = $l->t('You deleted contact {card} from addressbook {addressbook}');
97
-		} elseif ($event->getSubject() === self::SUBJECT_UPDATE) {
98
-			$subject = $l->t('{actor} updated contact {card} in addressbook {addressbook}');
99
-		} elseif ($event->getSubject() === self::SUBJECT_UPDATE . '_self') {
100
-			$subject = $l->t('You updated contact {card} in addressbook {addressbook}');
101
-		} else {
102
-			throw new \InvalidArgumentException();
103
-		}
104
-
105
-		$parsedParameters = $this->getParameters($event, $l);
106
-		$this->setSubjects($event, $subject, $parsedParameters);
107
-
108
-		$event = $this->eventMerger->mergeEvents('card', $event, $previousEvent);
109
-		return $event;
110
-	}
111
-
112
-	protected function getParameters(IEvent $event, IL10N $l): array {
113
-		$subject = $event->getSubject();
114
-		$parameters = $event->getSubjectParameters();
115
-
116
-		switch ($subject) {
117
-			case self::SUBJECT_ADD:
118
-			case self::SUBJECT_DELETE:
119
-			case self::SUBJECT_UPDATE:
120
-				return [
121
-					'actor' => $this->generateUserParameter($parameters['actor']),
122
-					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
123
-					'card' => $this->generateCardParameter($parameters['card']),
124
-				];
125
-			case self::SUBJECT_ADD . '_self':
126
-			case self::SUBJECT_DELETE . '_self':
127
-			case self::SUBJECT_UPDATE . '_self':
128
-				return [
129
-					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
130
-					'card' => $this->generateCardParameter($parameters['card']),
131
-				];
132
-		}
133
-
134
-		throw new \InvalidArgumentException();
135
-	}
136
-
137
-	private function generateCardParameter(array $cardData): array {
138
-		return [
139
-			'type' => 'addressbook-contact',
140
-			'id' => $cardData['id'],
141
-			'name' => $cardData['name'],
142
-		];
143
-	}
39
+    public const SUBJECT_ADD = 'card_add';
40
+    public const SUBJECT_UPDATE = 'card_update';
41
+    public const SUBJECT_DELETE = 'card_delete';
42
+
43
+    /** @var IFactory */
44
+    protected $languageFactory;
45
+
46
+    /** @var IManager */
47
+    protected $activityManager;
48
+
49
+    /** @var IEventMerger */
50
+    protected $eventMerger;
51
+
52
+    /** @var IAppManager */
53
+    protected $appManager;
54
+
55
+    public function __construct(IFactory $languageFactory,
56
+                                IURLGenerator $url,
57
+                                IManager $activityManager,
58
+                                IUserManager $userManager,
59
+                                IGroupManager $groupManager,
60
+                                IEventMerger $eventMerger,
61
+                                IAppManager $appManager) {
62
+        parent::__construct($userManager, $groupManager, $url);
63
+        $this->languageFactory = $languageFactory;
64
+        $this->activityManager = $activityManager;
65
+        $this->eventMerger = $eventMerger;
66
+        $this->appManager = $appManager;
67
+    }
68
+
69
+    /**
70
+     * @param string $language
71
+     * @param IEvent $event
72
+     * @param IEvent|null $previousEvent
73
+     * @return IEvent
74
+     * @throws \InvalidArgumentException
75
+     */
76
+    public function parse($language, IEvent $event, IEvent $previousEvent = null): IEvent {
77
+        if ($event->getApp() !== 'dav' || $event->getType() !== 'card') {
78
+            throw new \InvalidArgumentException();
79
+        }
80
+
81
+        $l = $this->languageFactory->get('dav', $language);
82
+
83
+        if ($this->activityManager->getRequirePNG()) {
84
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/contacts-dark.png')));
85
+        } else {
86
+            $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'places/contacts.svg')));
87
+        }
88
+
89
+        if ($event->getSubject() === self::SUBJECT_ADD) {
90
+            $subject = $l->t('{actor} created contact {card} in addressbook {addressbook}');
91
+        } elseif ($event->getSubject() === self::SUBJECT_ADD . '_self') {
92
+            $subject = $l->t('You created contact {card} in addressbook {addressbook}');
93
+        } elseif ($event->getSubject() === self::SUBJECT_DELETE) {
94
+            $subject = $l->t('{actor} deleted contact {card} from addressbook {addressbook}');
95
+        } elseif ($event->getSubject() === self::SUBJECT_DELETE . '_self') {
96
+            $subject = $l->t('You deleted contact {card} from addressbook {addressbook}');
97
+        } elseif ($event->getSubject() === self::SUBJECT_UPDATE) {
98
+            $subject = $l->t('{actor} updated contact {card} in addressbook {addressbook}');
99
+        } elseif ($event->getSubject() === self::SUBJECT_UPDATE . '_self') {
100
+            $subject = $l->t('You updated contact {card} in addressbook {addressbook}');
101
+        } else {
102
+            throw new \InvalidArgumentException();
103
+        }
104
+
105
+        $parsedParameters = $this->getParameters($event, $l);
106
+        $this->setSubjects($event, $subject, $parsedParameters);
107
+
108
+        $event = $this->eventMerger->mergeEvents('card', $event, $previousEvent);
109
+        return $event;
110
+    }
111
+
112
+    protected function getParameters(IEvent $event, IL10N $l): array {
113
+        $subject = $event->getSubject();
114
+        $parameters = $event->getSubjectParameters();
115
+
116
+        switch ($subject) {
117
+            case self::SUBJECT_ADD:
118
+            case self::SUBJECT_DELETE:
119
+            case self::SUBJECT_UPDATE:
120
+                return [
121
+                    'actor' => $this->generateUserParameter($parameters['actor']),
122
+                    'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
123
+                    'card' => $this->generateCardParameter($parameters['card']),
124
+                ];
125
+            case self::SUBJECT_ADD . '_self':
126
+            case self::SUBJECT_DELETE . '_self':
127
+            case self::SUBJECT_UPDATE . '_self':
128
+                return [
129
+                    'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
130
+                    'card' => $this->generateCardParameter($parameters['card']),
131
+                ];
132
+        }
133
+
134
+        throw new \InvalidArgumentException();
135
+    }
136
+
137
+    private function generateCardParameter(array $cardData): array {
138
+        return [
139
+            'type' => 'addressbook-contact',
140
+            'id' => $cardData['id'],
141
+            'name' => $cardData['name'],
142
+        ];
143
+    }
144 144
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -88,15 +88,15 @@  discard block
 block discarded – undo
88 88
 
89 89
 		if ($event->getSubject() === self::SUBJECT_ADD) {
90 90
 			$subject = $l->t('{actor} created contact {card} in addressbook {addressbook}');
91
-		} elseif ($event->getSubject() === self::SUBJECT_ADD . '_self') {
91
+		} elseif ($event->getSubject() === self::SUBJECT_ADD.'_self') {
92 92
 			$subject = $l->t('You created contact {card} in addressbook {addressbook}');
93 93
 		} elseif ($event->getSubject() === self::SUBJECT_DELETE) {
94 94
 			$subject = $l->t('{actor} deleted contact {card} from addressbook {addressbook}');
95
-		} elseif ($event->getSubject() === self::SUBJECT_DELETE . '_self') {
95
+		} elseif ($event->getSubject() === self::SUBJECT_DELETE.'_self') {
96 96
 			$subject = $l->t('You deleted contact {card} from addressbook {addressbook}');
97 97
 		} elseif ($event->getSubject() === self::SUBJECT_UPDATE) {
98 98
 			$subject = $l->t('{actor} updated contact {card} in addressbook {addressbook}');
99
-		} elseif ($event->getSubject() === self::SUBJECT_UPDATE . '_self') {
99
+		} elseif ($event->getSubject() === self::SUBJECT_UPDATE.'_self') {
100 100
 			$subject = $l->t('You updated contact {card} in addressbook {addressbook}');
101 101
 		} else {
102 102
 			throw new \InvalidArgumentException();
@@ -122,9 +122,9 @@  discard block
 block discarded – undo
122 122
 					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
123 123
 					'card' => $this->generateCardParameter($parameters['card']),
124 124
 				];
125
-			case self::SUBJECT_ADD . '_self':
126
-			case self::SUBJECT_DELETE . '_self':
127
-			case self::SUBJECT_UPDATE . '_self':
125
+			case self::SUBJECT_ADD.'_self':
126
+			case self::SUBJECT_DELETE.'_self':
127
+			case self::SUBJECT_UPDATE.'_self':
128 128
 				return [
129 129
 					'addressbook' => $this->generateAddressbookParameter($parameters['addressbook'], $l),
130 130
 					'card' => $this->generateCardParameter($parameters['card']),
Please login to merge, or discard this patch.
apps/dav/lib/CardDAV/Activity/Setting.php 1 patch
Indentation   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -28,54 +28,54 @@
 block discarded – undo
28 28
 use OCA\DAV\CalDAV\Activity\Setting\CalDAVSetting;
29 29
 
30 30
 class Setting extends CalDAVSetting {
31
-	/**
32
-	 * @return string Lowercase a-z and underscore only identifier
33
-	 */
34
-	public function getIdentifier(): string {
35
-		return 'contacts';
36
-	}
31
+    /**
32
+     * @return string Lowercase a-z and underscore only identifier
33
+     */
34
+    public function getIdentifier(): string {
35
+        return 'contacts';
36
+    }
37 37
 
38
-	/**
39
-	 * @return string A translated string
40
-	 */
41
-	public function getName(): string {
42
-		return $this->l->t('A <strong>contact</strong> or <strong>addressbook</strong> was modified');
43
-	}
38
+    /**
39
+     * @return string A translated string
40
+     */
41
+    public function getName(): string {
42
+        return $this->l->t('A <strong>contact</strong> or <strong>addressbook</strong> was modified');
43
+    }
44 44
 
45
-	/**
46
-	 * @return int whether the filter should be rather on the top or bottom of
47
-	 * the admin section. The filters are arranged in ascending order of the
48
-	 * priority values. It is required to return a value between 0 and 100.
49
-	 */
50
-	public function getPriority(): int {
51
-		return 50;
52
-	}
45
+    /**
46
+     * @return int whether the filter should be rather on the top or bottom of
47
+     * the admin section. The filters are arranged in ascending order of the
48
+     * priority values. It is required to return a value between 0 and 100.
49
+     */
50
+    public function getPriority(): int {
51
+        return 50;
52
+    }
53 53
 
54
-	/**
55
-	 * @return bool True when the option can be changed for the stream
56
-	 */
57
-	public function canChangeStream(): bool {
58
-		return true;
59
-	}
54
+    /**
55
+     * @return bool True when the option can be changed for the stream
56
+     */
57
+    public function canChangeStream(): bool {
58
+        return true;
59
+    }
60 60
 
61
-	/**
62
-	 * @return bool True when the option can be changed for the stream
63
-	 */
64
-	public function isDefaultEnabledStream(): bool {
65
-		return true;
66
-	}
61
+    /**
62
+     * @return bool True when the option can be changed for the stream
63
+     */
64
+    public function isDefaultEnabledStream(): bool {
65
+        return true;
66
+    }
67 67
 
68
-	/**
69
-	 * @return bool True when the option can be changed for the mail
70
-	 */
71
-	public function canChangeMail(): bool {
72
-		return true;
73
-	}
68
+    /**
69
+     * @return bool True when the option can be changed for the mail
70
+     */
71
+    public function canChangeMail(): bool {
72
+        return true;
73
+    }
74 74
 
75
-	/**
76
-	 * @return bool True when the option can be changed for the stream
77
-	 */
78
-	public function isDefaultEnabledMail(): bool {
79
-		return false;
80
-	}
75
+    /**
76
+     * @return bool True when the option can be changed for the stream
77
+     */
78
+    public function isDefaultEnabledMail(): bool {
79
+        return false;
80
+    }
81 81
 }
Please login to merge, or discard this patch.
apps/dav/lib/CardDAV/Activity/Backend.php 2 patches
Indentation   +441 added lines, -441 removed lines patch added patch discarded remove patch
@@ -41,445 +41,445 @@
 block discarded – undo
41 41
 
42 42
 class Backend {
43 43
 
44
-	/** @var IActivityManager */
45
-	protected $activityManager;
46
-
47
-	/** @var IGroupManager */
48
-	protected $groupManager;
49
-
50
-	/** @var IUserSession */
51
-	protected $userSession;
52
-
53
-	/** @var IAppManager */
54
-	protected $appManager;
55
-
56
-	public function __construct(IActivityManager $activityManager,
57
-								IGroupManager $groupManager,
58
-								IUserSession $userSession,
59
-								IAppManager $appManager) {
60
-		$this->activityManager = $activityManager;
61
-		$this->groupManager = $groupManager;
62
-		$this->userSession = $userSession;
63
-		$this->appManager = $appManager;
64
-	}
65
-
66
-	/**
67
-	 * Creates activities when an addressbook was creates
68
-	 *
69
-	 * @param array $addressbookData
70
-	 */
71
-	public function onAddressbookCreate(array $addressbookData): void {
72
-		$this->triggerAddressbookActivity(Addressbook::SUBJECT_ADD, $addressbookData);
73
-	}
74
-
75
-	/**
76
-	 * Creates activities when a calendar was updated
77
-	 *
78
-	 * @param array $addressbookData
79
-	 * @param array $shares
80
-	 * @param array $properties
81
-	 */
82
-	public function onAddressbookUpdate(array $addressbookData, array $shares, array $properties): void {
83
-		$this->triggerAddressbookActivity(Addressbook::SUBJECT_UPDATE, $addressbookData, $shares, $properties);
84
-	}
85
-
86
-	/**
87
-	 * Creates activities when a calendar was deleted
88
-	 *
89
-	 * @param array $addressbookData
90
-	 * @param array $shares
91
-	 */
92
-	public function onAddressbookDelete(array $addressbookData, array $shares): void {
93
-		$this->triggerAddressbookActivity(Addressbook::SUBJECT_DELETE, $addressbookData, $shares);
94
-	}
95
-
96
-	/**
97
-	 * Creates activities for all related users when a calendar was touched
98
-	 *
99
-	 * @param string $action
100
-	 * @param array $addressbookData
101
-	 * @param array $shares
102
-	 * @param array $changedProperties
103
-	 */
104
-	protected function triggerAddressbookActivity(string $action, array $addressbookData, array $shares = [], array $changedProperties = []): void {
105
-		if (!isset($addressbookData['principaluri'])) {
106
-			return;
107
-		}
108
-
109
-		$principal = explode('/', $addressbookData['principaluri']);
110
-		$owner = array_pop($principal);
111
-
112
-		$currentUser = $this->userSession->getUser();
113
-		if ($currentUser instanceof IUser) {
114
-			$currentUser = $currentUser->getUID();
115
-		} else {
116
-			$currentUser = $owner;
117
-		}
118
-
119
-		$event = $this->activityManager->generateEvent();
120
-		$event->setApp('dav')
121
-			->setObject('addressbook', (int) $addressbookData['id'])
122
-			->setType('addressbook')
123
-			->setAuthor($currentUser);
124
-
125
-		$changedVisibleInformation = array_intersect([
126
-			'{DAV:}displayname',
127
-			'{' . Plugin::NS_CARDDAV . '}addressbook-description',
128
-		], array_keys($changedProperties));
129
-
130
-		if (empty($shares) || ($action === Addressbook::SUBJECT_UPDATE && empty($changedVisibleInformation))) {
131
-			$users = [$owner];
132
-		} else {
133
-			$users = $this->getUsersForShares($shares);
134
-			$users[] = $owner;
135
-		}
136
-
137
-		foreach ($users as $user) {
138
-			$event->setAffectedUser($user)
139
-				->setSubject(
140
-					$user === $currentUser ? $action . '_self' : $action,
141
-					[
142
-						'actor' => $currentUser,
143
-						'addressbook' => [
144
-							'id' => (int) $addressbookData['id'],
145
-							'uri' => $addressbookData['uri'],
146
-							'name' => $addressbookData['{DAV:}displayname'],
147
-						],
148
-					]
149
-				);
150
-			$this->activityManager->publish($event);
151
-		}
152
-	}
153
-
154
-	/**
155
-	 * Creates activities for all related users when an addressbook was (un-)shared
156
-	 *
157
-	 * @param array $addressbookData
158
-	 * @param array $shares
159
-	 * @param array $add
160
-	 * @param array $remove
161
-	 */
162
-	public function onAddressbookUpdateShares(array $addressbookData, array $shares, array $add, array $remove): void {
163
-		$principal = explode('/', $addressbookData['principaluri']);
164
-		$owner = $principal[2];
165
-
166
-		$currentUser = $this->userSession->getUser();
167
-		if ($currentUser instanceof IUser) {
168
-			$currentUser = $currentUser->getUID();
169
-		} else {
170
-			$currentUser = $owner;
171
-		}
172
-
173
-		$event = $this->activityManager->generateEvent();
174
-		$event->setApp('dav')
175
-			->setObject('addressbook', (int) $addressbookData['id'])
176
-			->setType('addressbook')
177
-			->setAuthor($currentUser);
178
-
179
-		foreach ($remove as $principal) {
180
-			// principal:principals/users/test
181
-			$parts = explode(':', $principal, 2);
182
-			if ($parts[0] !== 'principal') {
183
-				continue;
184
-			}
185
-			$principal = explode('/', $parts[1]);
186
-
187
-			if ($principal[1] === 'users') {
188
-				$this->triggerActivityUser(
189
-					$principal[2],
190
-					$event,
191
-					$addressbookData,
192
-					Addressbook::SUBJECT_UNSHARE_USER,
193
-					Addressbook::SUBJECT_DELETE . '_self'
194
-				);
195
-
196
-				if ($owner !== $principal[2]) {
197
-					$parameters = [
198
-						'actor' => $event->getAuthor(),
199
-						'addressbook' => [
200
-							'id' => (int) $addressbookData['id'],
201
-							'uri' => $addressbookData['uri'],
202
-							'name' => $addressbookData['{DAV:}displayname'],
203
-						],
204
-						'user' => $principal[2],
205
-					];
206
-
207
-					if ($owner === $event->getAuthor()) {
208
-						$subject = Addressbook::SUBJECT_UNSHARE_USER . '_you';
209
-					} elseif ($principal[2] === $event->getAuthor()) {
210
-						$subject = Addressbook::SUBJECT_UNSHARE_USER . '_self';
211
-					} else {
212
-						$event->setAffectedUser($event->getAuthor())
213
-							->setSubject(Addressbook::SUBJECT_UNSHARE_USER . '_you', $parameters);
214
-						$this->activityManager->publish($event);
215
-
216
-						$subject = Addressbook::SUBJECT_UNSHARE_USER . '_by';
217
-					}
218
-
219
-					$event->setAffectedUser($owner)
220
-						->setSubject($subject, $parameters);
221
-					$this->activityManager->publish($event);
222
-				}
223
-			} elseif ($principal[1] === 'groups') {
224
-				$this->triggerActivityGroup($principal[2], $event, $addressbookData, Addressbook::SUBJECT_UNSHARE_USER);
225
-
226
-				$parameters = [
227
-					'actor' => $event->getAuthor(),
228
-					'addressbook' => [
229
-						'id' => (int) $addressbookData['id'],
230
-						'uri' => $addressbookData['uri'],
231
-						'name' => $addressbookData['{DAV:}displayname'],
232
-					],
233
-					'group' => $principal[2],
234
-				];
235
-
236
-				if ($owner === $event->getAuthor()) {
237
-					$subject = Addressbook::SUBJECT_UNSHARE_GROUP . '_you';
238
-				} else {
239
-					$event->setAffectedUser($event->getAuthor())
240
-						->setSubject(Addressbook::SUBJECT_UNSHARE_GROUP . '_you', $parameters);
241
-					$this->activityManager->publish($event);
242
-
243
-					$subject = Addressbook::SUBJECT_UNSHARE_GROUP . '_by';
244
-				}
245
-
246
-				$event->setAffectedUser($owner)
247
-					->setSubject($subject, $parameters);
248
-				$this->activityManager->publish($event);
249
-			}
250
-		}
251
-
252
-		foreach ($add as $share) {
253
-			if ($this->isAlreadyShared($share['href'], $shares)) {
254
-				continue;
255
-			}
256
-
257
-			// principal:principals/users/test
258
-			$parts = explode(':', $share['href'], 2);
259
-			if ($parts[0] !== 'principal') {
260
-				continue;
261
-			}
262
-			$principal = explode('/', $parts[1]);
263
-
264
-			if ($principal[1] === 'users') {
265
-				$this->triggerActivityUser($principal[2], $event, $addressbookData, Addressbook::SUBJECT_SHARE_USER);
266
-
267
-				if ($owner !== $principal[2]) {
268
-					$parameters = [
269
-						'actor' => $event->getAuthor(),
270
-						'addressbook' => [
271
-							'id' => (int) $addressbookData['id'],
272
-							'uri' => $addressbookData['uri'],
273
-							'name' => $addressbookData['{DAV:}displayname'],
274
-						],
275
-						'user' => $principal[2],
276
-					];
277
-
278
-					if ($owner === $event->getAuthor()) {
279
-						$subject = Addressbook::SUBJECT_SHARE_USER . '_you';
280
-					} else {
281
-						$event->setAffectedUser($event->getAuthor())
282
-							->setSubject(Addressbook::SUBJECT_SHARE_USER . '_you', $parameters);
283
-						$this->activityManager->publish($event);
284
-
285
-						$subject = Addressbook::SUBJECT_SHARE_USER . '_by';
286
-					}
287
-
288
-					$event->setAffectedUser($owner)
289
-						->setSubject($subject, $parameters);
290
-					$this->activityManager->publish($event);
291
-				}
292
-			} elseif ($principal[1] === 'groups') {
293
-				$this->triggerActivityGroup($principal[2], $event, $addressbookData, Addressbook::SUBJECT_SHARE_USER);
294
-
295
-				$parameters = [
296
-					'actor' => $event->getAuthor(),
297
-					'addressbook' => [
298
-						'id' => (int) $addressbookData['id'],
299
-						'uri' => $addressbookData['uri'],
300
-						'name' => $addressbookData['{DAV:}displayname'],
301
-					],
302
-					'group' => $principal[2],
303
-				];
304
-
305
-				if ($owner === $event->getAuthor()) {
306
-					$subject = Addressbook::SUBJECT_SHARE_GROUP . '_you';
307
-				} else {
308
-					$event->setAffectedUser($event->getAuthor())
309
-						->setSubject(Addressbook::SUBJECT_SHARE_GROUP . '_you', $parameters);
310
-					$this->activityManager->publish($event);
311
-
312
-					$subject = Addressbook::SUBJECT_SHARE_GROUP . '_by';
313
-				}
314
-
315
-				$event->setAffectedUser($owner)
316
-					->setSubject($subject, $parameters);
317
-				$this->activityManager->publish($event);
318
-			}
319
-		}
320
-	}
321
-
322
-	/**
323
-	 * Checks if a calendar is already shared with a principal
324
-	 *
325
-	 * @param string $principal
326
-	 * @param array[] $shares
327
-	 * @return bool
328
-	 */
329
-	protected function isAlreadyShared(string $principal, array $shares): bool {
330
-		foreach ($shares as $share) {
331
-			if ($principal === $share['href']) {
332
-				return true;
333
-			}
334
-		}
335
-
336
-		return false;
337
-	}
338
-
339
-	/**
340
-	 * Creates the given activity for all members of the given group
341
-	 *
342
-	 * @param string $gid
343
-	 * @param IEvent $event
344
-	 * @param array $properties
345
-	 * @param string $subject
346
-	 */
347
-	protected function triggerActivityGroup(string $gid, IEvent $event, array $properties, string $subject): void {
348
-		$group = $this->groupManager->get($gid);
349
-
350
-		if ($group instanceof IGroup) {
351
-			foreach ($group->getUsers() as $user) {
352
-				// Exclude current user
353
-				if ($user->getUID() !== $event->getAuthor()) {
354
-					$this->triggerActivityUser($user->getUID(), $event, $properties, $subject);
355
-				}
356
-			}
357
-		}
358
-	}
359
-
360
-	/**
361
-	 * Creates the given activity for the given user
362
-	 *
363
-	 * @param string $user
364
-	 * @param IEvent $event
365
-	 * @param array $properties
366
-	 * @param string $subject
367
-	 * @param string $subjectSelf
368
-	 */
369
-	protected function triggerActivityUser(string $user, IEvent $event, array $properties, string $subject, string $subjectSelf = ''): void {
370
-		$event->setAffectedUser($user)
371
-			->setSubject(
372
-				$user === $event->getAuthor() && $subjectSelf ? $subjectSelf : $subject,
373
-				[
374
-					'actor' => $event->getAuthor(),
375
-					'addressbook' => [
376
-						'id' => (int) $properties['id'],
377
-						'uri' => $properties['uri'],
378
-						'name' => $properties['{DAV:}displayname'],
379
-					],
380
-				]
381
-			);
382
-
383
-		$this->activityManager->publish($event);
384
-	}
385
-
386
-	/**
387
-	 * Creates activities when a card was created/updated/deleted
388
-	 *
389
-	 * @param string $action
390
-	 * @param array $addressbookData
391
-	 * @param array $shares
392
-	 * @param array $cardData
393
-	 */
394
-	public function triggerCardActivity(string $action, array $addressbookData, array $shares, array $cardData): void {
395
-		if (!isset($addressbookData['principaluri'])) {
396
-			return;
397
-		}
398
-
399
-		$principal = explode('/', $addressbookData['principaluri']);
400
-		$owner = array_pop($principal);
401
-
402
-		$currentUser = $this->userSession->getUser();
403
-		if ($currentUser instanceof IUser) {
404
-			$currentUser = $currentUser->getUID();
405
-		} else {
406
-			$currentUser = $owner;
407
-		}
408
-
409
-		$card = $this->getCardNameAndId($cardData);
410
-
411
-		$event = $this->activityManager->generateEvent();
412
-		$event->setApp('dav')
413
-			->setObject('addressbook', (int) $addressbookData['id'])
414
-			->setType('card')
415
-			->setAuthor($currentUser);
416
-
417
-		$users = $this->getUsersForShares($shares);
418
-		$users[] = $owner;
419
-
420
-		// Users for share can return the owner itself if the calendar is published
421
-		foreach (array_unique($users) as $user) {
422
-			$params = [
423
-				'actor' => $event->getAuthor(),
424
-				'addressbook' => [
425
-					'id' => (int) $addressbookData['id'],
426
-					'uri' => $addressbookData['uri'],
427
-					'name' => $addressbookData['{DAV:}displayname'],
428
-				],
429
-				'card' => [
430
-					'id' => $card['id'],
431
-					'name' => $card['name'],
432
-				],
433
-			];
434
-
435
-
436
-			$event->setAffectedUser($user)
437
-				->setSubject(
438
-					$user === $currentUser ? $action . '_self' : $action,
439
-					$params
440
-				);
441
-
442
-			$this->activityManager->publish($event);
443
-		}
444
-	}
445
-
446
-	/**
447
-	 * @param array $cardData
448
-	 * @return string[]
449
-	 */
450
-	protected function getCardNameAndId(array $cardData): array {
451
-		$vObject = Reader::read($cardData['carddata']);
452
-		return ['id' => (string) $vObject->UID, 'name' => (string) ($vObject->FN ?? '')];
453
-	}
454
-
455
-	/**
456
-	 * Get all users that have access to a given calendar
457
-	 *
458
-	 * @param array $shares
459
-	 * @return string[]
460
-	 */
461
-	protected function getUsersForShares(array $shares): array {
462
-		$users = $groups = [];
463
-		foreach ($shares as $share) {
464
-			$principal = explode('/', $share['{http://owncloud.org/ns}principal']);
465
-			if ($principal[1] === 'users') {
466
-				$users[] = $principal[2];
467
-			} elseif ($principal[1] === 'groups') {
468
-				$groups[] = $principal[2];
469
-			}
470
-		}
471
-
472
-		if (!empty($groups)) {
473
-			foreach ($groups as $gid) {
474
-				$group = $this->groupManager->get($gid);
475
-				if ($group instanceof IGroup) {
476
-					foreach ($group->getUsers() as $user) {
477
-						$users[] = $user->getUID();
478
-					}
479
-				}
480
-			}
481
-		}
482
-
483
-		return array_unique($users);
484
-	}
44
+    /** @var IActivityManager */
45
+    protected $activityManager;
46
+
47
+    /** @var IGroupManager */
48
+    protected $groupManager;
49
+
50
+    /** @var IUserSession */
51
+    protected $userSession;
52
+
53
+    /** @var IAppManager */
54
+    protected $appManager;
55
+
56
+    public function __construct(IActivityManager $activityManager,
57
+                                IGroupManager $groupManager,
58
+                                IUserSession $userSession,
59
+                                IAppManager $appManager) {
60
+        $this->activityManager = $activityManager;
61
+        $this->groupManager = $groupManager;
62
+        $this->userSession = $userSession;
63
+        $this->appManager = $appManager;
64
+    }
65
+
66
+    /**
67
+     * Creates activities when an addressbook was creates
68
+     *
69
+     * @param array $addressbookData
70
+     */
71
+    public function onAddressbookCreate(array $addressbookData): void {
72
+        $this->triggerAddressbookActivity(Addressbook::SUBJECT_ADD, $addressbookData);
73
+    }
74
+
75
+    /**
76
+     * Creates activities when a calendar was updated
77
+     *
78
+     * @param array $addressbookData
79
+     * @param array $shares
80
+     * @param array $properties
81
+     */
82
+    public function onAddressbookUpdate(array $addressbookData, array $shares, array $properties): void {
83
+        $this->triggerAddressbookActivity(Addressbook::SUBJECT_UPDATE, $addressbookData, $shares, $properties);
84
+    }
85
+
86
+    /**
87
+     * Creates activities when a calendar was deleted
88
+     *
89
+     * @param array $addressbookData
90
+     * @param array $shares
91
+     */
92
+    public function onAddressbookDelete(array $addressbookData, array $shares): void {
93
+        $this->triggerAddressbookActivity(Addressbook::SUBJECT_DELETE, $addressbookData, $shares);
94
+    }
95
+
96
+    /**
97
+     * Creates activities for all related users when a calendar was touched
98
+     *
99
+     * @param string $action
100
+     * @param array $addressbookData
101
+     * @param array $shares
102
+     * @param array $changedProperties
103
+     */
104
+    protected function triggerAddressbookActivity(string $action, array $addressbookData, array $shares = [], array $changedProperties = []): void {
105
+        if (!isset($addressbookData['principaluri'])) {
106
+            return;
107
+        }
108
+
109
+        $principal = explode('/', $addressbookData['principaluri']);
110
+        $owner = array_pop($principal);
111
+
112
+        $currentUser = $this->userSession->getUser();
113
+        if ($currentUser instanceof IUser) {
114
+            $currentUser = $currentUser->getUID();
115
+        } else {
116
+            $currentUser = $owner;
117
+        }
118
+
119
+        $event = $this->activityManager->generateEvent();
120
+        $event->setApp('dav')
121
+            ->setObject('addressbook', (int) $addressbookData['id'])
122
+            ->setType('addressbook')
123
+            ->setAuthor($currentUser);
124
+
125
+        $changedVisibleInformation = array_intersect([
126
+            '{DAV:}displayname',
127
+            '{' . Plugin::NS_CARDDAV . '}addressbook-description',
128
+        ], array_keys($changedProperties));
129
+
130
+        if (empty($shares) || ($action === Addressbook::SUBJECT_UPDATE && empty($changedVisibleInformation))) {
131
+            $users = [$owner];
132
+        } else {
133
+            $users = $this->getUsersForShares($shares);
134
+            $users[] = $owner;
135
+        }
136
+
137
+        foreach ($users as $user) {
138
+            $event->setAffectedUser($user)
139
+                ->setSubject(
140
+                    $user === $currentUser ? $action . '_self' : $action,
141
+                    [
142
+                        'actor' => $currentUser,
143
+                        'addressbook' => [
144
+                            'id' => (int) $addressbookData['id'],
145
+                            'uri' => $addressbookData['uri'],
146
+                            'name' => $addressbookData['{DAV:}displayname'],
147
+                        ],
148
+                    ]
149
+                );
150
+            $this->activityManager->publish($event);
151
+        }
152
+    }
153
+
154
+    /**
155
+     * Creates activities for all related users when an addressbook was (un-)shared
156
+     *
157
+     * @param array $addressbookData
158
+     * @param array $shares
159
+     * @param array $add
160
+     * @param array $remove
161
+     */
162
+    public function onAddressbookUpdateShares(array $addressbookData, array $shares, array $add, array $remove): void {
163
+        $principal = explode('/', $addressbookData['principaluri']);
164
+        $owner = $principal[2];
165
+
166
+        $currentUser = $this->userSession->getUser();
167
+        if ($currentUser instanceof IUser) {
168
+            $currentUser = $currentUser->getUID();
169
+        } else {
170
+            $currentUser = $owner;
171
+        }
172
+
173
+        $event = $this->activityManager->generateEvent();
174
+        $event->setApp('dav')
175
+            ->setObject('addressbook', (int) $addressbookData['id'])
176
+            ->setType('addressbook')
177
+            ->setAuthor($currentUser);
178
+
179
+        foreach ($remove as $principal) {
180
+            // principal:principals/users/test
181
+            $parts = explode(':', $principal, 2);
182
+            if ($parts[0] !== 'principal') {
183
+                continue;
184
+            }
185
+            $principal = explode('/', $parts[1]);
186
+
187
+            if ($principal[1] === 'users') {
188
+                $this->triggerActivityUser(
189
+                    $principal[2],
190
+                    $event,
191
+                    $addressbookData,
192
+                    Addressbook::SUBJECT_UNSHARE_USER,
193
+                    Addressbook::SUBJECT_DELETE . '_self'
194
+                );
195
+
196
+                if ($owner !== $principal[2]) {
197
+                    $parameters = [
198
+                        'actor' => $event->getAuthor(),
199
+                        'addressbook' => [
200
+                            'id' => (int) $addressbookData['id'],
201
+                            'uri' => $addressbookData['uri'],
202
+                            'name' => $addressbookData['{DAV:}displayname'],
203
+                        ],
204
+                        'user' => $principal[2],
205
+                    ];
206
+
207
+                    if ($owner === $event->getAuthor()) {
208
+                        $subject = Addressbook::SUBJECT_UNSHARE_USER . '_you';
209
+                    } elseif ($principal[2] === $event->getAuthor()) {
210
+                        $subject = Addressbook::SUBJECT_UNSHARE_USER . '_self';
211
+                    } else {
212
+                        $event->setAffectedUser($event->getAuthor())
213
+                            ->setSubject(Addressbook::SUBJECT_UNSHARE_USER . '_you', $parameters);
214
+                        $this->activityManager->publish($event);
215
+
216
+                        $subject = Addressbook::SUBJECT_UNSHARE_USER . '_by';
217
+                    }
218
+
219
+                    $event->setAffectedUser($owner)
220
+                        ->setSubject($subject, $parameters);
221
+                    $this->activityManager->publish($event);
222
+                }
223
+            } elseif ($principal[1] === 'groups') {
224
+                $this->triggerActivityGroup($principal[2], $event, $addressbookData, Addressbook::SUBJECT_UNSHARE_USER);
225
+
226
+                $parameters = [
227
+                    'actor' => $event->getAuthor(),
228
+                    'addressbook' => [
229
+                        'id' => (int) $addressbookData['id'],
230
+                        'uri' => $addressbookData['uri'],
231
+                        'name' => $addressbookData['{DAV:}displayname'],
232
+                    ],
233
+                    'group' => $principal[2],
234
+                ];
235
+
236
+                if ($owner === $event->getAuthor()) {
237
+                    $subject = Addressbook::SUBJECT_UNSHARE_GROUP . '_you';
238
+                } else {
239
+                    $event->setAffectedUser($event->getAuthor())
240
+                        ->setSubject(Addressbook::SUBJECT_UNSHARE_GROUP . '_you', $parameters);
241
+                    $this->activityManager->publish($event);
242
+
243
+                    $subject = Addressbook::SUBJECT_UNSHARE_GROUP . '_by';
244
+                }
245
+
246
+                $event->setAffectedUser($owner)
247
+                    ->setSubject($subject, $parameters);
248
+                $this->activityManager->publish($event);
249
+            }
250
+        }
251
+
252
+        foreach ($add as $share) {
253
+            if ($this->isAlreadyShared($share['href'], $shares)) {
254
+                continue;
255
+            }
256
+
257
+            // principal:principals/users/test
258
+            $parts = explode(':', $share['href'], 2);
259
+            if ($parts[0] !== 'principal') {
260
+                continue;
261
+            }
262
+            $principal = explode('/', $parts[1]);
263
+
264
+            if ($principal[1] === 'users') {
265
+                $this->triggerActivityUser($principal[2], $event, $addressbookData, Addressbook::SUBJECT_SHARE_USER);
266
+
267
+                if ($owner !== $principal[2]) {
268
+                    $parameters = [
269
+                        'actor' => $event->getAuthor(),
270
+                        'addressbook' => [
271
+                            'id' => (int) $addressbookData['id'],
272
+                            'uri' => $addressbookData['uri'],
273
+                            'name' => $addressbookData['{DAV:}displayname'],
274
+                        ],
275
+                        'user' => $principal[2],
276
+                    ];
277
+
278
+                    if ($owner === $event->getAuthor()) {
279
+                        $subject = Addressbook::SUBJECT_SHARE_USER . '_you';
280
+                    } else {
281
+                        $event->setAffectedUser($event->getAuthor())
282
+                            ->setSubject(Addressbook::SUBJECT_SHARE_USER . '_you', $parameters);
283
+                        $this->activityManager->publish($event);
284
+
285
+                        $subject = Addressbook::SUBJECT_SHARE_USER . '_by';
286
+                    }
287
+
288
+                    $event->setAffectedUser($owner)
289
+                        ->setSubject($subject, $parameters);
290
+                    $this->activityManager->publish($event);
291
+                }
292
+            } elseif ($principal[1] === 'groups') {
293
+                $this->triggerActivityGroup($principal[2], $event, $addressbookData, Addressbook::SUBJECT_SHARE_USER);
294
+
295
+                $parameters = [
296
+                    'actor' => $event->getAuthor(),
297
+                    'addressbook' => [
298
+                        'id' => (int) $addressbookData['id'],
299
+                        'uri' => $addressbookData['uri'],
300
+                        'name' => $addressbookData['{DAV:}displayname'],
301
+                    ],
302
+                    'group' => $principal[2],
303
+                ];
304
+
305
+                if ($owner === $event->getAuthor()) {
306
+                    $subject = Addressbook::SUBJECT_SHARE_GROUP . '_you';
307
+                } else {
308
+                    $event->setAffectedUser($event->getAuthor())
309
+                        ->setSubject(Addressbook::SUBJECT_SHARE_GROUP . '_you', $parameters);
310
+                    $this->activityManager->publish($event);
311
+
312
+                    $subject = Addressbook::SUBJECT_SHARE_GROUP . '_by';
313
+                }
314
+
315
+                $event->setAffectedUser($owner)
316
+                    ->setSubject($subject, $parameters);
317
+                $this->activityManager->publish($event);
318
+            }
319
+        }
320
+    }
321
+
322
+    /**
323
+     * Checks if a calendar is already shared with a principal
324
+     *
325
+     * @param string $principal
326
+     * @param array[] $shares
327
+     * @return bool
328
+     */
329
+    protected function isAlreadyShared(string $principal, array $shares): bool {
330
+        foreach ($shares as $share) {
331
+            if ($principal === $share['href']) {
332
+                return true;
333
+            }
334
+        }
335
+
336
+        return false;
337
+    }
338
+
339
+    /**
340
+     * Creates the given activity for all members of the given group
341
+     *
342
+     * @param string $gid
343
+     * @param IEvent $event
344
+     * @param array $properties
345
+     * @param string $subject
346
+     */
347
+    protected function triggerActivityGroup(string $gid, IEvent $event, array $properties, string $subject): void {
348
+        $group = $this->groupManager->get($gid);
349
+
350
+        if ($group instanceof IGroup) {
351
+            foreach ($group->getUsers() as $user) {
352
+                // Exclude current user
353
+                if ($user->getUID() !== $event->getAuthor()) {
354
+                    $this->triggerActivityUser($user->getUID(), $event, $properties, $subject);
355
+                }
356
+            }
357
+        }
358
+    }
359
+
360
+    /**
361
+     * Creates the given activity for the given user
362
+     *
363
+     * @param string $user
364
+     * @param IEvent $event
365
+     * @param array $properties
366
+     * @param string $subject
367
+     * @param string $subjectSelf
368
+     */
369
+    protected function triggerActivityUser(string $user, IEvent $event, array $properties, string $subject, string $subjectSelf = ''): void {
370
+        $event->setAffectedUser($user)
371
+            ->setSubject(
372
+                $user === $event->getAuthor() && $subjectSelf ? $subjectSelf : $subject,
373
+                [
374
+                    'actor' => $event->getAuthor(),
375
+                    'addressbook' => [
376
+                        'id' => (int) $properties['id'],
377
+                        'uri' => $properties['uri'],
378
+                        'name' => $properties['{DAV:}displayname'],
379
+                    ],
380
+                ]
381
+            );
382
+
383
+        $this->activityManager->publish($event);
384
+    }
385
+
386
+    /**
387
+     * Creates activities when a card was created/updated/deleted
388
+     *
389
+     * @param string $action
390
+     * @param array $addressbookData
391
+     * @param array $shares
392
+     * @param array $cardData
393
+     */
394
+    public function triggerCardActivity(string $action, array $addressbookData, array $shares, array $cardData): void {
395
+        if (!isset($addressbookData['principaluri'])) {
396
+            return;
397
+        }
398
+
399
+        $principal = explode('/', $addressbookData['principaluri']);
400
+        $owner = array_pop($principal);
401
+
402
+        $currentUser = $this->userSession->getUser();
403
+        if ($currentUser instanceof IUser) {
404
+            $currentUser = $currentUser->getUID();
405
+        } else {
406
+            $currentUser = $owner;
407
+        }
408
+
409
+        $card = $this->getCardNameAndId($cardData);
410
+
411
+        $event = $this->activityManager->generateEvent();
412
+        $event->setApp('dav')
413
+            ->setObject('addressbook', (int) $addressbookData['id'])
414
+            ->setType('card')
415
+            ->setAuthor($currentUser);
416
+
417
+        $users = $this->getUsersForShares($shares);
418
+        $users[] = $owner;
419
+
420
+        // Users for share can return the owner itself if the calendar is published
421
+        foreach (array_unique($users) as $user) {
422
+            $params = [
423
+                'actor' => $event->getAuthor(),
424
+                'addressbook' => [
425
+                    'id' => (int) $addressbookData['id'],
426
+                    'uri' => $addressbookData['uri'],
427
+                    'name' => $addressbookData['{DAV:}displayname'],
428
+                ],
429
+                'card' => [
430
+                    'id' => $card['id'],
431
+                    'name' => $card['name'],
432
+                ],
433
+            ];
434
+
435
+
436
+            $event->setAffectedUser($user)
437
+                ->setSubject(
438
+                    $user === $currentUser ? $action . '_self' : $action,
439
+                    $params
440
+                );
441
+
442
+            $this->activityManager->publish($event);
443
+        }
444
+    }
445
+
446
+    /**
447
+     * @param array $cardData
448
+     * @return string[]
449
+     */
450
+    protected function getCardNameAndId(array $cardData): array {
451
+        $vObject = Reader::read($cardData['carddata']);
452
+        return ['id' => (string) $vObject->UID, 'name' => (string) ($vObject->FN ?? '')];
453
+    }
454
+
455
+    /**
456
+     * Get all users that have access to a given calendar
457
+     *
458
+     * @param array $shares
459
+     * @return string[]
460
+     */
461
+    protected function getUsersForShares(array $shares): array {
462
+        $users = $groups = [];
463
+        foreach ($shares as $share) {
464
+            $principal = explode('/', $share['{http://owncloud.org/ns}principal']);
465
+            if ($principal[1] === 'users') {
466
+                $users[] = $principal[2];
467
+            } elseif ($principal[1] === 'groups') {
468
+                $groups[] = $principal[2];
469
+            }
470
+        }
471
+
472
+        if (!empty($groups)) {
473
+            foreach ($groups as $gid) {
474
+                $group = $this->groupManager->get($gid);
475
+                if ($group instanceof IGroup) {
476
+                    foreach ($group->getUsers() as $user) {
477
+                        $users[] = $user->getUID();
478
+                    }
479
+                }
480
+            }
481
+        }
482
+
483
+        return array_unique($users);
484
+    }
485 485
 }
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
 
125 125
 		$changedVisibleInformation = array_intersect([
126 126
 			'{DAV:}displayname',
127
-			'{' . Plugin::NS_CARDDAV . '}addressbook-description',
127
+			'{'.Plugin::NS_CARDDAV.'}addressbook-description',
128 128
 		], array_keys($changedProperties));
129 129
 
130 130
 		if (empty($shares) || ($action === Addressbook::SUBJECT_UPDATE && empty($changedVisibleInformation))) {
@@ -137,7 +137,7 @@  discard block
 block discarded – undo
137 137
 		foreach ($users as $user) {
138 138
 			$event->setAffectedUser($user)
139 139
 				->setSubject(
140
-					$user === $currentUser ? $action . '_self' : $action,
140
+					$user === $currentUser ? $action.'_self' : $action,
141 141
 					[
142 142
 						'actor' => $currentUser,
143 143
 						'addressbook' => [
@@ -190,7 +190,7 @@  discard block
 block discarded – undo
190 190
 					$event,
191 191
 					$addressbookData,
192 192
 					Addressbook::SUBJECT_UNSHARE_USER,
193
-					Addressbook::SUBJECT_DELETE . '_self'
193
+					Addressbook::SUBJECT_DELETE.'_self'
194 194
 				);
195 195
 
196 196
 				if ($owner !== $principal[2]) {
@@ -205,15 +205,15 @@  discard block
 block discarded – undo
205 205
 					];
206 206
 
207 207
 					if ($owner === $event->getAuthor()) {
208
-						$subject = Addressbook::SUBJECT_UNSHARE_USER . '_you';
208
+						$subject = Addressbook::SUBJECT_UNSHARE_USER.'_you';
209 209
 					} elseif ($principal[2] === $event->getAuthor()) {
210
-						$subject = Addressbook::SUBJECT_UNSHARE_USER . '_self';
210
+						$subject = Addressbook::SUBJECT_UNSHARE_USER.'_self';
211 211
 					} else {
212 212
 						$event->setAffectedUser($event->getAuthor())
213
-							->setSubject(Addressbook::SUBJECT_UNSHARE_USER . '_you', $parameters);
213
+							->setSubject(Addressbook::SUBJECT_UNSHARE_USER.'_you', $parameters);
214 214
 						$this->activityManager->publish($event);
215 215
 
216
-						$subject = Addressbook::SUBJECT_UNSHARE_USER . '_by';
216
+						$subject = Addressbook::SUBJECT_UNSHARE_USER.'_by';
217 217
 					}
218 218
 
219 219
 					$event->setAffectedUser($owner)
@@ -234,13 +234,13 @@  discard block
 block discarded – undo
234 234
 				];
235 235
 
236 236
 				if ($owner === $event->getAuthor()) {
237
-					$subject = Addressbook::SUBJECT_UNSHARE_GROUP . '_you';
237
+					$subject = Addressbook::SUBJECT_UNSHARE_GROUP.'_you';
238 238
 				} else {
239 239
 					$event->setAffectedUser($event->getAuthor())
240
-						->setSubject(Addressbook::SUBJECT_UNSHARE_GROUP . '_you', $parameters);
240
+						->setSubject(Addressbook::SUBJECT_UNSHARE_GROUP.'_you', $parameters);
241 241
 					$this->activityManager->publish($event);
242 242
 
243
-					$subject = Addressbook::SUBJECT_UNSHARE_GROUP . '_by';
243
+					$subject = Addressbook::SUBJECT_UNSHARE_GROUP.'_by';
244 244
 				}
245 245
 
246 246
 				$event->setAffectedUser($owner)
@@ -276,13 +276,13 @@  discard block
 block discarded – undo
276 276
 					];
277 277
 
278 278
 					if ($owner === $event->getAuthor()) {
279
-						$subject = Addressbook::SUBJECT_SHARE_USER . '_you';
279
+						$subject = Addressbook::SUBJECT_SHARE_USER.'_you';
280 280
 					} else {
281 281
 						$event->setAffectedUser($event->getAuthor())
282
-							->setSubject(Addressbook::SUBJECT_SHARE_USER . '_you', $parameters);
282
+							->setSubject(Addressbook::SUBJECT_SHARE_USER.'_you', $parameters);
283 283
 						$this->activityManager->publish($event);
284 284
 
285
-						$subject = Addressbook::SUBJECT_SHARE_USER . '_by';
285
+						$subject = Addressbook::SUBJECT_SHARE_USER.'_by';
286 286
 					}
287 287
 
288 288
 					$event->setAffectedUser($owner)
@@ -303,13 +303,13 @@  discard block
 block discarded – undo
303 303
 				];
304 304
 
305 305
 				if ($owner === $event->getAuthor()) {
306
-					$subject = Addressbook::SUBJECT_SHARE_GROUP . '_you';
306
+					$subject = Addressbook::SUBJECT_SHARE_GROUP.'_you';
307 307
 				} else {
308 308
 					$event->setAffectedUser($event->getAuthor())
309
-						->setSubject(Addressbook::SUBJECT_SHARE_GROUP . '_you', $parameters);
309
+						->setSubject(Addressbook::SUBJECT_SHARE_GROUP.'_you', $parameters);
310 310
 					$this->activityManager->publish($event);
311 311
 
312
-					$subject = Addressbook::SUBJECT_SHARE_GROUP . '_by';
312
+					$subject = Addressbook::SUBJECT_SHARE_GROUP.'_by';
313 313
 				}
314 314
 
315 315
 				$event->setAffectedUser($owner)
@@ -435,7 +435,7 @@  discard block
 block discarded – undo
435 435
 
436 436
 			$event->setAffectedUser($user)
437 437
 				->setSubject(
438
-					$user === $currentUser ? $action . '_self' : $action,
438
+					$user === $currentUser ? $action.'_self' : $action,
439 439
 					$params
440 440
 				);
441 441
 
Please login to merge, or discard this patch.
apps/dav/lib/Listener/CardListener.php 2 patches
Indentation   +63 added lines, -63 removed lines patch added patch discarded remove patch
@@ -36,73 +36,73 @@
 block discarded – undo
36 36
 use function sprintf;
37 37
 
38 38
 class CardListener implements IEventListener {
39
-	/** @var ActivityBackend */
40
-	private $activityBackend;
39
+    /** @var ActivityBackend */
40
+    private $activityBackend;
41 41
 
42
-	/** @var LoggerInterface */
43
-	private $logger;
42
+    /** @var LoggerInterface */
43
+    private $logger;
44 44
 
45
-	public function __construct(ActivityBackend $activityBackend,
46
-								LoggerInterface $logger) {
47
-		$this->activityBackend = $activityBackend;
48
-		$this->logger = $logger;
49
-	}
45
+    public function __construct(ActivityBackend $activityBackend,
46
+                                LoggerInterface $logger) {
47
+        $this->activityBackend = $activityBackend;
48
+        $this->logger = $logger;
49
+    }
50 50
 
51
-	public function handle(Event $event): void {
52
-		if ($event instanceof CardCreatedEvent) {
53
-			try {
54
-				$this->activityBackend->triggerCardActivity(
55
-					Card::SUBJECT_ADD,
56
-					$event->getAddressBookData(),
57
-					$event->getShares(),
58
-					$event->getCardData()
59
-				);
51
+    public function handle(Event $event): void {
52
+        if ($event instanceof CardCreatedEvent) {
53
+            try {
54
+                $this->activityBackend->triggerCardActivity(
55
+                    Card::SUBJECT_ADD,
56
+                    $event->getAddressBookData(),
57
+                    $event->getShares(),
58
+                    $event->getCardData()
59
+                );
60 60
 
61
-				$this->logger->debug(
62
-					sprintf('Activity generated for a new card in addressbook %d', $event->getAddressBookId())
63
-				);
64
-			} catch (Throwable $e) {
65
-				// Any error with activities shouldn't abort the addressbook creation, so we just log it
66
-				$this->logger->error('Error generating activities for a new card in addressbook: ' . $e->getMessage(), [
67
-					'exception' => $e,
68
-				]);
69
-			}
70
-		} elseif ($event instanceof CardUpdatedEvent) {
71
-			try {
72
-				$this->activityBackend->triggerCardActivity(
73
-					Card::SUBJECT_UPDATE,
74
-					$event->getAddressBookData(),
75
-					$event->getShares(),
76
-					$event->getCardData()
77
-				);
61
+                $this->logger->debug(
62
+                    sprintf('Activity generated for a new card in addressbook %d', $event->getAddressBookId())
63
+                );
64
+            } catch (Throwable $e) {
65
+                // Any error with activities shouldn't abort the addressbook creation, so we just log it
66
+                $this->logger->error('Error generating activities for a new card in addressbook: ' . $e->getMessage(), [
67
+                    'exception' => $e,
68
+                ]);
69
+            }
70
+        } elseif ($event instanceof CardUpdatedEvent) {
71
+            try {
72
+                $this->activityBackend->triggerCardActivity(
73
+                    Card::SUBJECT_UPDATE,
74
+                    $event->getAddressBookData(),
75
+                    $event->getShares(),
76
+                    $event->getCardData()
77
+                );
78 78
 
79
-				$this->logger->debug(
80
-					sprintf('Activity generated for a changed card in addressbook %d', $event->getAddressBookId())
81
-				);
82
-			} catch (Throwable $e) {
83
-				// Any error with activities shouldn't abort the addressbook update, so we just log it
84
-				$this->logger->error('Error generating activities for a changed card in addressbook: ' . $e->getMessage(), [
85
-					'exception' => $e,
86
-				]);
87
-			}
88
-		} elseif ($event instanceof CardDeletedEvent) {
89
-			try {
90
-				$this->activityBackend->triggerCardActivity(
91
-					Card::SUBJECT_DELETE,
92
-					$event->getAddressBookData(),
93
-					$event->getShares(),
94
-					$event->getCardData()
95
-				);
79
+                $this->logger->debug(
80
+                    sprintf('Activity generated for a changed card in addressbook %d', $event->getAddressBookId())
81
+                );
82
+            } catch (Throwable $e) {
83
+                // Any error with activities shouldn't abort the addressbook update, so we just log it
84
+                $this->logger->error('Error generating activities for a changed card in addressbook: ' . $e->getMessage(), [
85
+                    'exception' => $e,
86
+                ]);
87
+            }
88
+        } elseif ($event instanceof CardDeletedEvent) {
89
+            try {
90
+                $this->activityBackend->triggerCardActivity(
91
+                    Card::SUBJECT_DELETE,
92
+                    $event->getAddressBookData(),
93
+                    $event->getShares(),
94
+                    $event->getCardData()
95
+                );
96 96
 
97
-				$this->logger->debug(
98
-					sprintf('Activity generated for a deleted card in addressbook %d', $event->getAddressBookId())
99
-				);
100
-			} catch (Throwable $e) {
101
-				// Any error with activities shouldn't abort the addressbook deletion, so we just log it
102
-				$this->logger->error('Error generating activities for a deleted card in addressbook: ' . $e->getMessage(), [
103
-					'exception' => $e,
104
-				]);
105
-			}
106
-		}
107
-	}
97
+                $this->logger->debug(
98
+                    sprintf('Activity generated for a deleted card in addressbook %d', $event->getAddressBookId())
99
+                );
100
+            } catch (Throwable $e) {
101
+                // Any error with activities shouldn't abort the addressbook deletion, so we just log it
102
+                $this->logger->error('Error generating activities for a deleted card in addressbook: ' . $e->getMessage(), [
103
+                    'exception' => $e,
104
+                ]);
105
+            }
106
+        }
107
+    }
108 108
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -63,7 +63,7 @@  discard block
 block discarded – undo
63 63
 				);
64 64
 			} catch (Throwable $e) {
65 65
 				// Any error with activities shouldn't abort the addressbook creation, so we just log it
66
-				$this->logger->error('Error generating activities for a new card in addressbook: ' . $e->getMessage(), [
66
+				$this->logger->error('Error generating activities for a new card in addressbook: '.$e->getMessage(), [
67 67
 					'exception' => $e,
68 68
 				]);
69 69
 			}
@@ -81,7 +81,7 @@  discard block
 block discarded – undo
81 81
 				);
82 82
 			} catch (Throwable $e) {
83 83
 				// Any error with activities shouldn't abort the addressbook update, so we just log it
84
-				$this->logger->error('Error generating activities for a changed card in addressbook: ' . $e->getMessage(), [
84
+				$this->logger->error('Error generating activities for a changed card in addressbook: '.$e->getMessage(), [
85 85
 					'exception' => $e,
86 86
 				]);
87 87
 			}
@@ -99,7 +99,7 @@  discard block
 block discarded – undo
99 99
 				);
100 100
 			} catch (Throwable $e) {
101 101
 				// Any error with activities shouldn't abort the addressbook deletion, so we just log it
102
-				$this->logger->error('Error generating activities for a deleted card in addressbook: ' . $e->getMessage(), [
102
+				$this->logger->error('Error generating activities for a deleted card in addressbook: '.$e->getMessage(), [
103 103
 					'exception' => $e,
104 104
 				]);
105 105
 			}
Please login to merge, or discard this patch.
apps/dav/lib/Listener/AddressbookListener.php 2 patches
Indentation   +74 added lines, -74 removed lines patch added patch discarded remove patch
@@ -36,85 +36,85 @@
 block discarded – undo
36 36
 use function sprintf;
37 37
 
38 38
 class AddressbookListener implements IEventListener {
39
-	/** @var ActivityBackend */
40
-	private $activityBackend;
39
+    /** @var ActivityBackend */
40
+    private $activityBackend;
41 41
 
42
-	/** @var LoggerInterface */
43
-	private $logger;
42
+    /** @var LoggerInterface */
43
+    private $logger;
44 44
 
45
-	public function __construct(ActivityBackend $activityBackend,
46
-								LoggerInterface $logger) {
47
-		$this->activityBackend = $activityBackend;
48
-		$this->logger = $logger;
49
-	}
45
+    public function __construct(ActivityBackend $activityBackend,
46
+                                LoggerInterface $logger) {
47
+        $this->activityBackend = $activityBackend;
48
+        $this->logger = $logger;
49
+    }
50 50
 
51
-	public function handle(Event $event): void {
52
-		if ($event instanceof AddressBookCreatedEvent) {
53
-			try {
54
-				$this->activityBackend->onAddressbookCreate(
55
-					$event->getAddressBookData()
56
-				);
51
+    public function handle(Event $event): void {
52
+        if ($event instanceof AddressBookCreatedEvent) {
53
+            try {
54
+                $this->activityBackend->onAddressbookCreate(
55
+                    $event->getAddressBookData()
56
+                );
57 57
 
58
-				$this->logger->debug(
59
-					sprintf('Activity generated for new addressbook %d', $event->getAddressBookId())
60
-				);
61
-			} catch (Throwable $e) {
62
-				// Any error with activities shouldn't abort the addressbook creation, so we just log it
63
-				$this->logger->error('Error generating activities for a new addressbook: ' . $e->getMessage(), [
64
-					'exception' => $e,
65
-				]);
66
-			}
67
-		} elseif ($event instanceof AddressBookUpdatedEvent) {
68
-			try {
69
-				$this->activityBackend->onAddressbookUpdate(
70
-					$event->getAddressBookData(),
71
-					$event->getShares(),
72
-					$event->getMutations()
73
-				);
58
+                $this->logger->debug(
59
+                    sprintf('Activity generated for new addressbook %d', $event->getAddressBookId())
60
+                );
61
+            } catch (Throwable $e) {
62
+                // Any error with activities shouldn't abort the addressbook creation, so we just log it
63
+                $this->logger->error('Error generating activities for a new addressbook: ' . $e->getMessage(), [
64
+                    'exception' => $e,
65
+                ]);
66
+            }
67
+        } elseif ($event instanceof AddressBookUpdatedEvent) {
68
+            try {
69
+                $this->activityBackend->onAddressbookUpdate(
70
+                    $event->getAddressBookData(),
71
+                    $event->getShares(),
72
+                    $event->getMutations()
73
+                );
74 74
 
75
-				$this->logger->debug(
76
-					sprintf('Activity generated for changed addressbook %d', $event->getAddressBookId())
77
-				);
78
-			} catch (Throwable $e) {
79
-				// Any error with activities shouldn't abort the addressbook update, so we just log it
80
-				$this->logger->error('Error generating activities for a changed addressbook: ' . $e->getMessage(), [
81
-					'exception' => $e,
82
-				]);
83
-			}
84
-		} elseif ($event instanceof AddressBookDeletedEvent) {
85
-			try {
86
-				$this->activityBackend->onAddressbookDelete(
87
-					$event->getAddressBookData(),
88
-					$event->getShares()
89
-				);
75
+                $this->logger->debug(
76
+                    sprintf('Activity generated for changed addressbook %d', $event->getAddressBookId())
77
+                );
78
+            } catch (Throwable $e) {
79
+                // Any error with activities shouldn't abort the addressbook update, so we just log it
80
+                $this->logger->error('Error generating activities for a changed addressbook: ' . $e->getMessage(), [
81
+                    'exception' => $e,
82
+                ]);
83
+            }
84
+        } elseif ($event instanceof AddressBookDeletedEvent) {
85
+            try {
86
+                $this->activityBackend->onAddressbookDelete(
87
+                    $event->getAddressBookData(),
88
+                    $event->getShares()
89
+                );
90 90
 
91
-				$this->logger->debug(
92
-					sprintf('Activity generated for deleted addressbook %d', $event->getAddressBookId())
93
-				);
94
-			} catch (Throwable $e) {
95
-				// Any error with activities shouldn't abort the addressbook deletion, so we just log it
96
-				$this->logger->error('Error generating activities for a deleted addressbook: ' . $e->getMessage(), [
97
-					'exception' => $e,
98
-				]);
99
-			}
100
-		} elseif ($event instanceof AddressBookShareUpdatedEvent) {
101
-			try {
102
-				$this->activityBackend->onAddressbookUpdateShares(
103
-					$event->getAddressBookData(),
104
-					$event->getOldShares(),
105
-					$event->getAdded(),
106
-					$event->getRemoved()
107
-				);
91
+                $this->logger->debug(
92
+                    sprintf('Activity generated for deleted addressbook %d', $event->getAddressBookId())
93
+                );
94
+            } catch (Throwable $e) {
95
+                // Any error with activities shouldn't abort the addressbook deletion, so we just log it
96
+                $this->logger->error('Error generating activities for a deleted addressbook: ' . $e->getMessage(), [
97
+                    'exception' => $e,
98
+                ]);
99
+            }
100
+        } elseif ($event instanceof AddressBookShareUpdatedEvent) {
101
+            try {
102
+                $this->activityBackend->onAddressbookUpdateShares(
103
+                    $event->getAddressBookData(),
104
+                    $event->getOldShares(),
105
+                    $event->getAdded(),
106
+                    $event->getRemoved()
107
+                );
108 108
 
109
-				$this->logger->debug(
110
-					sprintf('Activity generated for (un)sharing addressbook %d', $event->getAddressBookId())
111
-				);
112
-			} catch (Throwable $e) {
113
-				// Any error with activities shouldn't abort the addressbook creation, so we just log it
114
-				$this->logger->error('Error generating activities for (un)sharing addressbook: ' . $e->getMessage(), [
115
-					'exception' => $e,
116
-				]);
117
-			}
118
-		}
119
-	}
109
+                $this->logger->debug(
110
+                    sprintf('Activity generated for (un)sharing addressbook %d', $event->getAddressBookId())
111
+                );
112
+            } catch (Throwable $e) {
113
+                // Any error with activities shouldn't abort the addressbook creation, so we just log it
114
+                $this->logger->error('Error generating activities for (un)sharing addressbook: ' . $e->getMessage(), [
115
+                    'exception' => $e,
116
+                ]);
117
+            }
118
+        }
119
+    }
120 120
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -60,7 +60,7 @@  discard block
 block discarded – undo
60 60
 				);
61 61
 			} catch (Throwable $e) {
62 62
 				// Any error with activities shouldn't abort the addressbook creation, so we just log it
63
-				$this->logger->error('Error generating activities for a new addressbook: ' . $e->getMessage(), [
63
+				$this->logger->error('Error generating activities for a new addressbook: '.$e->getMessage(), [
64 64
 					'exception' => $e,
65 65
 				]);
66 66
 			}
@@ -77,7 +77,7 @@  discard block
 block discarded – undo
77 77
 				);
78 78
 			} catch (Throwable $e) {
79 79
 				// Any error with activities shouldn't abort the addressbook update, so we just log it
80
-				$this->logger->error('Error generating activities for a changed addressbook: ' . $e->getMessage(), [
80
+				$this->logger->error('Error generating activities for a changed addressbook: '.$e->getMessage(), [
81 81
 					'exception' => $e,
82 82
 				]);
83 83
 			}
@@ -93,7 +93,7 @@  discard block
 block discarded – undo
93 93
 				);
94 94
 			} catch (Throwable $e) {
95 95
 				// Any error with activities shouldn't abort the addressbook deletion, so we just log it
96
-				$this->logger->error('Error generating activities for a deleted addressbook: ' . $e->getMessage(), [
96
+				$this->logger->error('Error generating activities for a deleted addressbook: '.$e->getMessage(), [
97 97
 					'exception' => $e,
98 98
 				]);
99 99
 			}
@@ -111,7 +111,7 @@  discard block
 block discarded – undo
111 111
 				);
112 112
 			} catch (Throwable $e) {
113 113
 				// Any error with activities shouldn't abort the addressbook creation, so we just log it
114
-				$this->logger->error('Error generating activities for (un)sharing addressbook: ' . $e->getMessage(), [
114
+				$this->logger->error('Error generating activities for (un)sharing addressbook: '.$e->getMessage(), [
115 115
 					'exception' => $e,
116 116
 				]);
117 117
 			}
Please login to merge, or discard this patch.
apps/dav/lib/AppInfo/Application.php 1 patch
Indentation   +263 added lines, -263 removed lines patch added patch discarded remove patch
@@ -92,276 +92,276 @@
 block discarded – undo
92 92
 use function is_null;
93 93
 
94 94
 class Application extends App implements IBootstrap {
95
-	public const APP_ID = 'dav';
95
+    public const APP_ID = 'dav';
96 96
 
97
-	public function __construct() {
98
-		parent::__construct(self::APP_ID);
99
-	}
97
+    public function __construct() {
98
+        parent::__construct(self::APP_ID);
99
+    }
100 100
 
101
-	public function register(IRegistrationContext $context): void {
102
-		$context->registerServiceAlias('CardDAVSyncService', SyncService::class);
103
-		$context->registerService(PhotoCache::class, function (ContainerInterface $c) {
104
-			/** @var IServerContainer $server */
105
-			$server = $c->get(IServerContainer::class);
101
+    public function register(IRegistrationContext $context): void {
102
+        $context->registerServiceAlias('CardDAVSyncService', SyncService::class);
103
+        $context->registerService(PhotoCache::class, function (ContainerInterface $c) {
104
+            /** @var IServerContainer $server */
105
+            $server = $c->get(IServerContainer::class);
106 106
 
107
-			return new PhotoCache(
108
-				$server->getAppDataDir('dav-photocache'),
109
-				$c->get(ILogger::class)
110
-			);
111
-		});
107
+            return new PhotoCache(
108
+                $server->getAppDataDir('dav-photocache'),
109
+                $c->get(ILogger::class)
110
+            );
111
+        });
112 112
 
113
-		/*
113
+        /*
114 114
 		 * Register capabilities
115 115
 		 */
116
-		$context->registerCapability(Capabilities::class);
116
+        $context->registerCapability(Capabilities::class);
117 117
 
118
-		/*
118
+        /*
119 119
 		 * Register Search Providers
120 120
 		 */
121
-		$context->registerSearchProvider(ContactsSearchProvider::class);
122
-		$context->registerSearchProvider(EventsSearchProvider::class);
123
-		$context->registerSearchProvider(TasksSearchProvider::class);
124
-
125
-		/**
126
-		 * Register event listeners
127
-		 */
128
-		$context->registerEventListener(CalendarCreatedEvent::class, ActivityUpdaterListener::class);
129
-		$context->registerEventListener(CalendarDeletedEvent::class, ActivityUpdaterListener::class);
130
-		$context->registerEventListener(CalendarDeletedEvent::class, CalendarObjectReminderUpdaterListener::class);
131
-		$context->registerEventListener(CalendarDeletedEvent::class, CalendarDeletionDefaultUpdaterListener::class);
132
-		$context->registerEventListener(CalendarUpdatedEvent::class, ActivityUpdaterListener::class);
133
-		$context->registerEventListener(CalendarObjectCreatedEvent::class, ActivityUpdaterListener::class);
134
-		$context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarContactInteractionListener::class);
135
-		$context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarObjectReminderUpdaterListener::class);
136
-		$context->registerEventListener(CalendarObjectUpdatedEvent::class, ActivityUpdaterListener::class);
137
-		$context->registerEventListener(CalendarObjectUpdatedEvent::class, CalendarContactInteractionListener::class);
138
-		$context->registerEventListener(CalendarObjectUpdatedEvent::class, CalendarObjectReminderUpdaterListener::class);
139
-		$context->registerEventListener(CalendarObjectDeletedEvent::class, ActivityUpdaterListener::class);
140
-		$context->registerEventListener(CalendarObjectDeletedEvent::class, CalendarObjectReminderUpdaterListener::class);
141
-		$context->registerEventListener(CalendarShareUpdatedEvent::class, CalendarContactInteractionListener::class);
142
-
143
-
144
-		$context->registerEventListener(AddressBookCreatedEvent::class, AddressbookListener::class);
145
-		$context->registerEventListener(AddressBookDeletedEvent::class, AddressbookListener::class);
146
-		$context->registerEventListener(AddressBookUpdatedEvent::class, AddressbookListener::class);
147
-		$context->registerEventListener(AddressBookShareUpdatedEvent::class, AddressbookListener::class);
148
-		$context->registerEventListener(CardCreatedEvent::class, CardListener::class);
149
-		$context->registerEventListener(CardDeletedEvent::class, CardListener::class);
150
-		$context->registerEventListener(CardUpdatedEvent::class, CardListener::class);
151
-
152
-		$context->registerNotifierService(Notifier::class);
153
-	}
154
-
155
-	public function boot(IBootContext $context): void {
156
-		// Load all dav apps
157
-		\OC_App::loadApps(['dav']);
158
-
159
-		$context->injectFn([$this, 'registerHooks']);
160
-		$context->injectFn([$this, 'registerContactsManager']);
161
-		$context->injectFn([$this, 'registerCalendarManager']);
162
-		$context->injectFn([$this, 'registerCalendarReminders']);
163
-	}
164
-
165
-	public function registerHooks(HookManager $hm,
166
-								   EventDispatcherInterface $dispatcher,
167
-								   IAppContainer $container,
168
-								   IServerContainer $serverContainer) {
169
-		$hm->setup();
170
-
171
-		// first time login event setup
172
-		$dispatcher->addListener(IUser::class . '::firstLogin', function ($event) use ($hm) {
173
-			if ($event instanceof GenericEvent) {
174
-				$hm->firstLogin($event->getSubject());
175
-			}
176
-		});
177
-
178
-		$birthdayListener = function ($event) use ($container): void {
179
-			if ($event instanceof GenericEvent) {
180
-				/** @var BirthdayService $b */
181
-				$b = $container->query(BirthdayService::class);
182
-				$b->onCardChanged(
183
-					(int) $event->getArgument('addressBookId'),
184
-					(string) $event->getArgument('cardUri'),
185
-					(string) $event->getArgument('cardData')
186
-				);
187
-			}
188
-		};
189
-
190
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::createCard', $birthdayListener);
191
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $birthdayListener);
192
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', function ($event) use ($container) {
193
-			if ($event instanceof GenericEvent) {
194
-				/** @var BirthdayService $b */
195
-				$b = $container->query(BirthdayService::class);
196
-				$b->onCardDeleted(
197
-					(int) $event->getArgument('addressBookId'),
198
-					(string) $event->getArgument('cardUri')
199
-				);
200
-			}
201
-		});
202
-
203
-		$clearPhotoCache = function ($event) use ($container): void {
204
-			if ($event instanceof GenericEvent) {
205
-				/** @var PhotoCache $p */
206
-				$p = $container->query(PhotoCache::class);
207
-				$p->delete(
208
-					$event->getArgument('addressBookId'),
209
-					$event->getArgument('cardUri')
210
-				);
211
-			}
212
-		};
213
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $clearPhotoCache);
214
-		$dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', $clearPhotoCache);
215
-
216
-		$dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($container) {
217
-			$user = $event->getSubject();
218
-			/** @var SyncService $syncService */
219
-			$syncService = $container->query(SyncService::class);
220
-			$syncService->updateUser($user);
221
-		});
222
-
223
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateShares', function (GenericEvent $event) use ($container) {
224
-			/** @var Backend $backend */
225
-			$backend = $container->query(Backend::class);
226
-			$backend->onCalendarUpdateShares(
227
-				$event->getArgument('calendarData'),
228
-				$event->getArgument('shares'),
229
-				$event->getArgument('add'),
230
-				$event->getArgument('remove')
231
-			);
232
-
233
-			// Here we should recalculate if reminders should be sent to new or old sharees
234
-		});
235
-
236
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::publishCalendar', function (GenericEvent $event) use ($container) {
237
-			/** @var Backend $backend */
238
-			$backend = $container->query(Backend::class);
239
-			$backend->onCalendarPublication(
240
-				$event->getArgument('calendarData'),
241
-				$event->getArgument('public')
242
-			);
243
-		});
244
-
245
-
246
-		$dispatcher->addListener('OCP\Federation\TrustedServerEvent::remove',
247
-			function (GenericEvent $event) {
248
-				/** @var CardDavBackend $cardDavBackend */
249
-				$cardDavBackend = \OC::$server->query(CardDavBackend::class);
250
-				$addressBookUri = $event->getSubject();
251
-				$addressBook = $cardDavBackend->getAddressBooksByUri('principals/system/system', $addressBookUri);
252
-				if (!is_null($addressBook)) {
253
-					$cardDavBackend->deleteAddressBook($addressBook['id']);
254
-				}
255
-			}
256
-		);
257
-
258
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createSubscription',
259
-			function (GenericEvent $event) use ($container, $serverContainer) {
260
-				$jobList = $serverContainer->getJobList();
261
-				$subscriptionData = $event->getArgument('subscriptionData');
262
-
263
-				/**
264
-				 * Initial subscription refetch
265
-				 *
266
-				 * @var RefreshWebcalService $refreshWebcalService
267
-				 */
268
-				$refreshWebcalService = $container->query(RefreshWebcalService::class);
269
-				$refreshWebcalService->refreshSubscription(
270
-					(string) $subscriptionData['principaluri'],
271
-					(string) $subscriptionData['uri']
272
-				);
273
-
274
-				$jobList->add(\OCA\DAV\BackgroundJob\RefreshWebcalJob::class, [
275
-					'principaluri' => $subscriptionData['principaluri'],
276
-					'uri' => $subscriptionData['uri']
277
-				]);
278
-			}
279
-		);
280
-
281
-		$dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::deleteSubscription',
282
-			function (GenericEvent $event) use ($container, $serverContainer) {
283
-				$jobList = $serverContainer->getJobList();
284
-				$subscriptionData = $event->getArgument('subscriptionData');
285
-
286
-				$jobList->remove(\OCA\DAV\BackgroundJob\RefreshWebcalJob::class, [
287
-					'principaluri' => $subscriptionData['principaluri'],
288
-					'uri' => $subscriptionData['uri']
289
-				]);
290
-
291
-				/** @var CalDavBackend $calDavBackend */
292
-				$calDavBackend = $container->query(CalDavBackend::class);
293
-				$calDavBackend->purgeAllCachedEventsForSubscription($subscriptionData['id']);
294
-			}
295
-		);
296
-
297
-		$eventHandler = function () use ($container, $serverContainer): void {
298
-			try {
299
-				/** @var UpdateCalendarResourcesRoomsBackgroundJob $job */
300
-				$job = $container->query(UpdateCalendarResourcesRoomsBackgroundJob::class);
301
-				$job->run([]);
302
-				$serverContainer->getJobList()->setLastRun($job);
303
-			} catch (Exception $ex) {
304
-				$serverContainer->getLogger()->logException($ex);
305
-			}
306
-		};
307
-
308
-		$dispatcher->addListener('\OCP\Calendar\Resource\ForceRefreshEvent', $eventHandler);
309
-		$dispatcher->addListener('\OCP\Calendar\Room\ForceRefreshEvent', $eventHandler);
310
-	}
311
-
312
-	public function registerContactsManager(IContactsManager $cm, IAppContainer $container): void {
313
-		$cm->register(function () use ($container, $cm): void {
314
-			$user = \OC::$server->getUserSession()->getUser();
315
-			if (!is_null($user)) {
316
-				$this->setupContactsProvider($cm, $container, $user->getUID());
317
-			} else {
318
-				$this->setupSystemContactsProvider($cm, $container);
319
-			}
320
-		});
321
-	}
322
-
323
-	private function setupContactsProvider(IContactsManager $contactsManager,
324
-										   IAppContainer $container,
325
-										   string $userID): void {
326
-		/** @var ContactsManager $cm */
327
-		$cm = $container->query(ContactsManager::class);
328
-		$urlGenerator = $container->getServer()->getURLGenerator();
329
-		$cm->setupContactsProvider($contactsManager, $userID, $urlGenerator);
330
-	}
331
-
332
-	private function setupSystemContactsProvider(IContactsManager $contactsManager,
333
-												 IAppContainer $container): void {
334
-		/** @var ContactsManager $cm */
335
-		$cm = $container->query(ContactsManager::class);
336
-		$urlGenerator = $container->getServer()->getURLGenerator();
337
-		$cm->setupSystemContactsProvider($contactsManager, $urlGenerator);
338
-	}
339
-
340
-	public function registerCalendarManager(ICalendarManager $calendarManager,
341
-											 IAppContainer $container): void {
342
-		$calendarManager->register(function () use ($container, $calendarManager) {
343
-			$user = \OC::$server->getUserSession()->getUser();
344
-			if ($user !== null) {
345
-				$this->setupCalendarProvider($calendarManager, $container, $user->getUID());
346
-			}
347
-		});
348
-	}
349
-
350
-	private function setupCalendarProvider(ICalendarManager $calendarManager,
351
-										   IAppContainer $container,
352
-										   $userId) {
353
-		$cm = $container->query(CalendarManager::class);
354
-		$cm->setupCalendarProvider($calendarManager, $userId);
355
-	}
356
-
357
-	public function registerCalendarReminders(NotificationProviderManager $manager,
358
-											   ILogger $logger): void {
359
-		try {
360
-			$manager->registerProvider(AudioProvider::class);
361
-			$manager->registerProvider(EmailProvider::class);
362
-			$manager->registerProvider(PushProvider::class);
363
-		} catch (Throwable $ex) {
364
-			$logger->logException($ex);
365
-		}
366
-	}
121
+        $context->registerSearchProvider(ContactsSearchProvider::class);
122
+        $context->registerSearchProvider(EventsSearchProvider::class);
123
+        $context->registerSearchProvider(TasksSearchProvider::class);
124
+
125
+        /**
126
+         * Register event listeners
127
+         */
128
+        $context->registerEventListener(CalendarCreatedEvent::class, ActivityUpdaterListener::class);
129
+        $context->registerEventListener(CalendarDeletedEvent::class, ActivityUpdaterListener::class);
130
+        $context->registerEventListener(CalendarDeletedEvent::class, CalendarObjectReminderUpdaterListener::class);
131
+        $context->registerEventListener(CalendarDeletedEvent::class, CalendarDeletionDefaultUpdaterListener::class);
132
+        $context->registerEventListener(CalendarUpdatedEvent::class, ActivityUpdaterListener::class);
133
+        $context->registerEventListener(CalendarObjectCreatedEvent::class, ActivityUpdaterListener::class);
134
+        $context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarContactInteractionListener::class);
135
+        $context->registerEventListener(CalendarObjectCreatedEvent::class, CalendarObjectReminderUpdaterListener::class);
136
+        $context->registerEventListener(CalendarObjectUpdatedEvent::class, ActivityUpdaterListener::class);
137
+        $context->registerEventListener(CalendarObjectUpdatedEvent::class, CalendarContactInteractionListener::class);
138
+        $context->registerEventListener(CalendarObjectUpdatedEvent::class, CalendarObjectReminderUpdaterListener::class);
139
+        $context->registerEventListener(CalendarObjectDeletedEvent::class, ActivityUpdaterListener::class);
140
+        $context->registerEventListener(CalendarObjectDeletedEvent::class, CalendarObjectReminderUpdaterListener::class);
141
+        $context->registerEventListener(CalendarShareUpdatedEvent::class, CalendarContactInteractionListener::class);
142
+
143
+
144
+        $context->registerEventListener(AddressBookCreatedEvent::class, AddressbookListener::class);
145
+        $context->registerEventListener(AddressBookDeletedEvent::class, AddressbookListener::class);
146
+        $context->registerEventListener(AddressBookUpdatedEvent::class, AddressbookListener::class);
147
+        $context->registerEventListener(AddressBookShareUpdatedEvent::class, AddressbookListener::class);
148
+        $context->registerEventListener(CardCreatedEvent::class, CardListener::class);
149
+        $context->registerEventListener(CardDeletedEvent::class, CardListener::class);
150
+        $context->registerEventListener(CardUpdatedEvent::class, CardListener::class);
151
+
152
+        $context->registerNotifierService(Notifier::class);
153
+    }
154
+
155
+    public function boot(IBootContext $context): void {
156
+        // Load all dav apps
157
+        \OC_App::loadApps(['dav']);
158
+
159
+        $context->injectFn([$this, 'registerHooks']);
160
+        $context->injectFn([$this, 'registerContactsManager']);
161
+        $context->injectFn([$this, 'registerCalendarManager']);
162
+        $context->injectFn([$this, 'registerCalendarReminders']);
163
+    }
164
+
165
+    public function registerHooks(HookManager $hm,
166
+                                    EventDispatcherInterface $dispatcher,
167
+                                    IAppContainer $container,
168
+                                    IServerContainer $serverContainer) {
169
+        $hm->setup();
170
+
171
+        // first time login event setup
172
+        $dispatcher->addListener(IUser::class . '::firstLogin', function ($event) use ($hm) {
173
+            if ($event instanceof GenericEvent) {
174
+                $hm->firstLogin($event->getSubject());
175
+            }
176
+        });
177
+
178
+        $birthdayListener = function ($event) use ($container): void {
179
+            if ($event instanceof GenericEvent) {
180
+                /** @var BirthdayService $b */
181
+                $b = $container->query(BirthdayService::class);
182
+                $b->onCardChanged(
183
+                    (int) $event->getArgument('addressBookId'),
184
+                    (string) $event->getArgument('cardUri'),
185
+                    (string) $event->getArgument('cardData')
186
+                );
187
+            }
188
+        };
189
+
190
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::createCard', $birthdayListener);
191
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $birthdayListener);
192
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', function ($event) use ($container) {
193
+            if ($event instanceof GenericEvent) {
194
+                /** @var BirthdayService $b */
195
+                $b = $container->query(BirthdayService::class);
196
+                $b->onCardDeleted(
197
+                    (int) $event->getArgument('addressBookId'),
198
+                    (string) $event->getArgument('cardUri')
199
+                );
200
+            }
201
+        });
202
+
203
+        $clearPhotoCache = function ($event) use ($container): void {
204
+            if ($event instanceof GenericEvent) {
205
+                /** @var PhotoCache $p */
206
+                $p = $container->query(PhotoCache::class);
207
+                $p->delete(
208
+                    $event->getArgument('addressBookId'),
209
+                    $event->getArgument('cardUri')
210
+                );
211
+            }
212
+        };
213
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $clearPhotoCache);
214
+        $dispatcher->addListener('\OCA\DAV\CardDAV\CardDavBackend::deleteCard', $clearPhotoCache);
215
+
216
+        $dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($container) {
217
+            $user = $event->getSubject();
218
+            /** @var SyncService $syncService */
219
+            $syncService = $container->query(SyncService::class);
220
+            $syncService->updateUser($user);
221
+        });
222
+
223
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::updateShares', function (GenericEvent $event) use ($container) {
224
+            /** @var Backend $backend */
225
+            $backend = $container->query(Backend::class);
226
+            $backend->onCalendarUpdateShares(
227
+                $event->getArgument('calendarData'),
228
+                $event->getArgument('shares'),
229
+                $event->getArgument('add'),
230
+                $event->getArgument('remove')
231
+            );
232
+
233
+            // Here we should recalculate if reminders should be sent to new or old sharees
234
+        });
235
+
236
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::publishCalendar', function (GenericEvent $event) use ($container) {
237
+            /** @var Backend $backend */
238
+            $backend = $container->query(Backend::class);
239
+            $backend->onCalendarPublication(
240
+                $event->getArgument('calendarData'),
241
+                $event->getArgument('public')
242
+            );
243
+        });
244
+
245
+
246
+        $dispatcher->addListener('OCP\Federation\TrustedServerEvent::remove',
247
+            function (GenericEvent $event) {
248
+                /** @var CardDavBackend $cardDavBackend */
249
+                $cardDavBackend = \OC::$server->query(CardDavBackend::class);
250
+                $addressBookUri = $event->getSubject();
251
+                $addressBook = $cardDavBackend->getAddressBooksByUri('principals/system/system', $addressBookUri);
252
+                if (!is_null($addressBook)) {
253
+                    $cardDavBackend->deleteAddressBook($addressBook['id']);
254
+                }
255
+            }
256
+        );
257
+
258
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::createSubscription',
259
+            function (GenericEvent $event) use ($container, $serverContainer) {
260
+                $jobList = $serverContainer->getJobList();
261
+                $subscriptionData = $event->getArgument('subscriptionData');
262
+
263
+                /**
264
+                 * Initial subscription refetch
265
+                 *
266
+                 * @var RefreshWebcalService $refreshWebcalService
267
+                 */
268
+                $refreshWebcalService = $container->query(RefreshWebcalService::class);
269
+                $refreshWebcalService->refreshSubscription(
270
+                    (string) $subscriptionData['principaluri'],
271
+                    (string) $subscriptionData['uri']
272
+                );
273
+
274
+                $jobList->add(\OCA\DAV\BackgroundJob\RefreshWebcalJob::class, [
275
+                    'principaluri' => $subscriptionData['principaluri'],
276
+                    'uri' => $subscriptionData['uri']
277
+                ]);
278
+            }
279
+        );
280
+
281
+        $dispatcher->addListener('\OCA\DAV\CalDAV\CalDavBackend::deleteSubscription',
282
+            function (GenericEvent $event) use ($container, $serverContainer) {
283
+                $jobList = $serverContainer->getJobList();
284
+                $subscriptionData = $event->getArgument('subscriptionData');
285
+
286
+                $jobList->remove(\OCA\DAV\BackgroundJob\RefreshWebcalJob::class, [
287
+                    'principaluri' => $subscriptionData['principaluri'],
288
+                    'uri' => $subscriptionData['uri']
289
+                ]);
290
+
291
+                /** @var CalDavBackend $calDavBackend */
292
+                $calDavBackend = $container->query(CalDavBackend::class);
293
+                $calDavBackend->purgeAllCachedEventsForSubscription($subscriptionData['id']);
294
+            }
295
+        );
296
+
297
+        $eventHandler = function () use ($container, $serverContainer): void {
298
+            try {
299
+                /** @var UpdateCalendarResourcesRoomsBackgroundJob $job */
300
+                $job = $container->query(UpdateCalendarResourcesRoomsBackgroundJob::class);
301
+                $job->run([]);
302
+                $serverContainer->getJobList()->setLastRun($job);
303
+            } catch (Exception $ex) {
304
+                $serverContainer->getLogger()->logException($ex);
305
+            }
306
+        };
307
+
308
+        $dispatcher->addListener('\OCP\Calendar\Resource\ForceRefreshEvent', $eventHandler);
309
+        $dispatcher->addListener('\OCP\Calendar\Room\ForceRefreshEvent', $eventHandler);
310
+    }
311
+
312
+    public function registerContactsManager(IContactsManager $cm, IAppContainer $container): void {
313
+        $cm->register(function () use ($container, $cm): void {
314
+            $user = \OC::$server->getUserSession()->getUser();
315
+            if (!is_null($user)) {
316
+                $this->setupContactsProvider($cm, $container, $user->getUID());
317
+            } else {
318
+                $this->setupSystemContactsProvider($cm, $container);
319
+            }
320
+        });
321
+    }
322
+
323
+    private function setupContactsProvider(IContactsManager $contactsManager,
324
+                                            IAppContainer $container,
325
+                                            string $userID): void {
326
+        /** @var ContactsManager $cm */
327
+        $cm = $container->query(ContactsManager::class);
328
+        $urlGenerator = $container->getServer()->getURLGenerator();
329
+        $cm->setupContactsProvider($contactsManager, $userID, $urlGenerator);
330
+    }
331
+
332
+    private function setupSystemContactsProvider(IContactsManager $contactsManager,
333
+                                                    IAppContainer $container): void {
334
+        /** @var ContactsManager $cm */
335
+        $cm = $container->query(ContactsManager::class);
336
+        $urlGenerator = $container->getServer()->getURLGenerator();
337
+        $cm->setupSystemContactsProvider($contactsManager, $urlGenerator);
338
+    }
339
+
340
+    public function registerCalendarManager(ICalendarManager $calendarManager,
341
+                                                IAppContainer $container): void {
342
+        $calendarManager->register(function () use ($container, $calendarManager) {
343
+            $user = \OC::$server->getUserSession()->getUser();
344
+            if ($user !== null) {
345
+                $this->setupCalendarProvider($calendarManager, $container, $user->getUID());
346
+            }
347
+        });
348
+    }
349
+
350
+    private function setupCalendarProvider(ICalendarManager $calendarManager,
351
+                                            IAppContainer $container,
352
+                                            $userId) {
353
+        $cm = $container->query(CalendarManager::class);
354
+        $cm->setupCalendarProvider($calendarManager, $userId);
355
+    }
356
+
357
+    public function registerCalendarReminders(NotificationProviderManager $manager,
358
+                                                ILogger $logger): void {
359
+        try {
360
+            $manager->registerProvider(AudioProvider::class);
361
+            $manager->registerProvider(EmailProvider::class);
362
+            $manager->registerProvider(PushProvider::class);
363
+        } catch (Throwable $ex) {
364
+            $logger->logException($ex);
365
+        }
366
+    }
367 367
 }
Please login to merge, or discard this patch.