getApp() !== 'spreed') { throw new UnknownActivityException('app'); } $uid = $event->getAffectedUser(); $user = $this->userManager->get($uid); if (!$user instanceof IUser || $this->config->isDisabledForUser($user)) { throw new UnknownActivityException('User can not use Talk'); } if ($this->activityManager->getRequirePNG()) { $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('spreed', 'app-dark.png'))); } else { $event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('spreed', 'app-dark.svg'))); } return $event; } /** * @param IEvent $event * @param string $subject * @param array $parameters */ protected function setSubjects(IEvent $event, string $subject, array $parameters): void { $placeholders = $replacements = []; foreach ($parameters as $placeholder => $parameter) { $placeholders[] = '{' . $placeholder . '}'; $replacements[] = $parameter['name']; } $event->setParsedSubject(str_replace($placeholders, $replacements, $subject)) ->setRichSubject($subject, $parameters); } protected function getRoom(Room $room, string $userId): array { switch ($room->getType()) { case Room::TYPE_ONE_TO_ONE: case Room::TYPE_ONE_TO_ONE_FORMER: $stringType = 'one2one'; break; case Room::TYPE_GROUP: $stringType = 'group'; break; case Room::TYPE_PUBLIC: default: $stringType = 'public'; break; } return [ 'type' => 'call', 'id' => (string)$room->getId(), 'name' => $room->getDisplayName($userId), 'link' => $this->url->linkToRouteAbsolute('spreed.Page.showCall', ['token' => $room->getToken()]), 'call-type' => $stringType, 'icon-url' => $this->avatarService->getAvatarUrl($room), ]; } protected function getFormerRoom(IL10N $l): array { return [ 'type' => 'highlight', 'id' => 'deleted', 'name' => $l->t('a conversation'), ]; } protected function getUser(string $uid): array { return [ 'type' => 'user', 'id' => $uid, 'name' => $this->userManager->getDisplayName($uid) ?? $uid, ]; } protected function getRemoteUser(Room $room, string $federationId): array { $cloudId = $this->cloudIdManager->resolveCloudId($federationId); $displayName = $cloudId->getDisplayId(); try { $participant = $this->participantService->getParticipantByActor($room, Attendee::ACTOR_FEDERATED_USERS, $federationId); $displayName = $participant->getAttendee()->getDisplayName(); } catch (ParticipantNotFoundException) { } return [ 'type' => 'user', 'id' => $cloudId->getUser(), 'name' => $displayName, 'server' => $cloudId->getRemote(), ]; } }