*/ class UserAddedToGroupActivityListener implements IEventListener { public function __construct( private Manager $groupManager, private IManager $activityManager, private IUserSession $userSession, ) { } public function handle(Event $event): void { if (!($event instanceof UserAddedEvent)) { return; } $user = $event->getUser(); $group = $event->getGroup(); $subAdminManager = $this->groupManager->getSubAdmin(); $usersToNotify = $subAdminManager->getGroupsSubAdmins($group); $usersToNotify[] = $user; $event = $this->activityManager->generateEvent(); $event->setApp('settings') ->setType('group_settings'); $actor = $this->userSession->getUser(); if ($actor instanceof IUser) { $event->setAuthor($actor->getUID()) ->setSubject(GroupProvider::ADDED_TO_GROUP, [ 'user' => $user->getUID(), 'group' => $group->getGID(), 'actor' => $actor->getUID(), ]); } else { $event->setSubject(GroupProvider::ADDED_TO_GROUP, [ 'user' => $user->getUID(), 'group' => $group->getGID(), ]); } foreach ($usersToNotify as $userToNotify) { $event->setAffectedUser($userToNotify->getUID()); $this->activityManager->publish($event); } } }