Skip to content

Commit 90044b1

Browse files
committed
fixing group activities
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
1 parent 03b2b2f commit 90044b1

File tree

3 files changed

+60
-1
lines changed

3 files changed

+60
-1
lines changed

lib/Activity/ProviderParser.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ protected function generateExternalMemberParameter(Member $member): array {
269269
return [
270270
'type' => 'email',
271271
'id' => $member->getUserId(),
272+
'link' => '',
272273
'name' => $member->getDisplayName(),
273274
'_parsed' => $member->getDisplayName()
274275
];

lib/Activity/ProviderSubjectCircleMember.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public function parseSubjectCircleMemberRemove(
159159

160160
$this->parseCircleMemberEvent(
161161
$event, $circle, $member,
162-
$this->l10n->t('You removed {member} leave {circle}'),
162+
$this->l10n->t('You removed {member} from {circle}'),
163163
$this->l10n->t('{author} made {member} leave {circle}')
164164
);
165165

lib/Service/ActivityService.php

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,31 @@ public function onMemberRemove(Circle $circle, Member $member, int $eventType):
247247
return;
248248
}
249249

250+
switch ($member->getUserType()) {
251+
case Member::TYPE_USER:
252+
case Member::TYPE_MAIL:
253+
case Member::TYPE_CONTACT:
254+
$this->onMemberRemoveAccount($circle, $member, $eventType);
255+
break;
256+
257+
case Member::TYPE_CIRCLE:
258+
$this->onMemberRemoveCircle(
259+
$circle,
260+
$member,
261+
$eventType
262+
);
263+
break;
264+
}
265+
}
266+
267+
268+
private function onMemberRemoveAccount(
269+
Circle $circle,
270+
Member $member,
271+
int $eventType
272+
): void {
250273
$event = $this->generateEvent('circles_as_member');
274+
251275
try {
252276
$event->setSubject(
253277
match ($eventType) {
@@ -266,6 +290,40 @@ public function onMemberRemove(Circle $circle, Member $member, int $eventType):
266290
$this->publishEvent(
267291
$event, array_merge(
268292
[$member],
293+
$this->memberRequest->getInheritedMembers(
294+
$circle->getSingleId(),
295+
false,
296+
Member::LEVEL_MODERATOR
297+
)
298+
)
299+
);
300+
}
301+
302+
private function onMemberRemoveCircle(
303+
Circle $circle,
304+
Member $member,
305+
int $eventType = CircleGenericEvent::JOINED
306+
): void {
307+
$event = $this->generateEvent('circles_as_member');
308+
309+
try {
310+
$event->setSubject(
311+
match ($eventType) {
312+
CircleGenericEvent::LEFT => 'member_circle_left',
313+
CircleGenericEvent::REMOVED => 'member_circle_removed'
314+
},
315+
[
316+
'circle' => json_encode($circle),
317+
'member' => json_encode($member)
318+
]
319+
);
320+
} catch (UnhandledMatchError $e) {
321+
return;
322+
}
323+
324+
$this->publishEvent(
325+
$event, array_merge(
326+
$this->memberRequest->getInheritedMembers($member->getSingleId(), false, Member::LEVEL_MEMBER),
269327
$this->memberRequest->getInheritedMembers($circle->getSingleId(), false, Member::LEVEL_MODERATOR)
270328
)
271329
);

0 commit comments

Comments
 (0)