getSubjectParameters(); $ver = $this->initActivityParser($event, $params); if ($ver === 1) { return $this->deprecatedProvider->parse($language, $event, $previousEvent); } $this->setIcon($event); $this->parseAsNonMember($event, $params); $this->parseAsMember($event, $params); $this->parseAsModerator($event, $params); } catch (FakeException|InvalidItemException) { /** clean exit */ } return $event; } /** * @param IEvent $event * @param array $params */ private function initActivityParser(IEvent $event, array $params): int { if ($event->getApp() !== Application::APP_ID) { throw new UnknownActivityException(); } if (!key_exists('circle', $params)) { throw new UnknownActivityException(); } return $params['ver'] ?? 1; } /** * @param IEvent $event */ private function setIcon(IEvent $event): void { $path = $this->urlGenerator->imagePath(Application::APP_ID, 'circles.svg'); $event->setIcon($this->urlGenerator->getAbsoluteURL($path)); } /** * @param IEvent $event * @param array $params * * @throws FakeException */ private function parseAsNonMember( IEvent $event, array $params, ): void { if ($event->getType() !== 'circles_as_non_member') { return; } $this->parserCircle->parseSubjectCircleCreate($event, $params); } /** * @param IEvent $event * @param array $params * * @throws FakeException */ private function parseAsMember( IEvent $event, array $params, ): void { if ($event->getType() !== 'circles_as_member') { return; } $this->parserCircle->parseSubjectCircleCreate($event, $params); $this->parserCircle->parseSubjectCircleDelete($event, $params); $this->parseMemberAsMember($event, $params); $this->parseCircleMemberAsMember($event, $params); } /** * @param IEvent $event * @param array $params * * @throws FakeException * @throws InvalidItemException */ private function parseAsModerator(IEvent $event, array $params): void { if ($event->getType() !== 'circles_as_moderator') { return; } $this->parseMemberAsModerator($event, $params); } /** * @param IEvent $event * @param array $params * * @throws FakeException */ private function parseMemberAsMember( IEvent $event, array $params, ): void { if (!array_key_exists('member', $params)) { return; } $this->parserMember->parseSubjectMemberJoin($event, $params); $this->parserMember->parseSubjectMemberAdd($event, $params); $this->parserMember->parseSubjectMemberLeft($event, $params); $this->parserMember->parseSubjectMemberRemove($event, $params); } /** * @param IEvent $event * @param array $params * * @throws FakeException */ private function parseCircleMemberAsMember( IEvent $event, array $params, ): void { if (!array_key_exists('member', $params)) { return; } $this->parserCircleMember->parseSubjectCircleMemberJoin($event, $params); $this->parserCircleMember->parseSubjectCircleMemberAdd($event, $params); $this->parserCircleMember->parseSubjectCircleMemberLeft($event, $params); $this->parserCircleMember->parseSubjectCircleMemberRemove($event, $params); } /** * @param IEvent $event * @param array $params * * @throws FakeException * @throws InvalidItemException */ private function parseMemberAsModerator( IEvent $event, array $params, ): void { if (!array_key_exists('member', $params)) { return; } $this->parserMember->parseMemberInvited($event, $params); $this->parserMember->parseMemberLevel($event, $params); $this->parserMember->parseMemberRequestInvitation($event, $params); $this->parserMember->parseMemberOwner($event, $params); } }