getFeedRepository()->find($id); if (! $feed instanceof Feed) { $this->app->abort(404, 'Feed not found'); } if (!$feed->isPublic()) { $this->app->abort(403, 'Forbidden'); } return $this->createFormattedFeedResponse($format, $feed, (int) $request->query->get('page')); } public function showUserFeedAction(Request $request, $id, $format) { $token = $this->getFeedTokenRepository()->find($id); $page = (int)$request->query->get('page'); return $this->createFormattedFeedResponse($format, $token->getFeed(), $page, $token->getUser()); } public function showAggregatedUserFeedAction(Request $request, $token, $format) { $token = $this->getAggregateTokenRepository()->findOneBy(["value" => $token]); $user = $token->getUser(); $feeds = $this->getFeedRepository()->getAllForUser($this->getAclForUser($user)); $aggregate = new Aggregate($this->getEntityManager(), $feeds, $token); $page = (int) $request->query->get('page'); return $this->createFormattedFeedResponse($format, $aggregate, $page, $user); } public function showCoolirisPublicFeedAction(Request $request) { $feed = Aggregate::getPublic($this->app); $page = (int) $request->query->get('page'); return $this->createFormattedFeedResponse('cooliris', $feed, $page); } public function showAggregatedPublicFeedAction(Request $request, $format) { $feed = Aggregate::getPublic($this->app); $page = (int) $request->query->get('page'); return $this->createFormattedFeedResponse($format, $feed, $page); } /** * @return FeedRepository */ private function getFeedRepository() { return $this->app['repo.feeds']; } /** * @param string $format * @param FeedInterface $feed * @param int $page * @return Response */ private function createFormattedFeedResponse($format, $feed, $page, User $user = null, $generator = 'Phraseanet') { /** @var FeedFormatterInterface $formatter */ $formatter = $this->app['feed.formatter-strategy']($format); return $formatter->createResponse($this->app, $feed, $page < 1 ? 1 : $page, $user, $generator); } /** * @return FeedTokenRepository */ private function getFeedTokenRepository() { return $this->app["repo.feed-tokens"]; } /** * @return AggregateTokenRepository */ private function getAggregateTokenRepository() { return $this->app['repo.aggregate-tokens']; } }