public function connect(Application $app) { $app['controller.rss-feeds'] = $this; $controllers = $app['controllers_factory']; $controllers->get('/feed/{id}/{format}/', function (Application $app, $id, $format) { $feed = $app['EM']->getRepository('Phraseanet:Feed')->find($id); if (null === $feed) { $app->abort(404, 'Feed not found'); } if (!$feed->isPublic()) { $app->abort(403, 'Forbidden'); } $request = $app['request']; $page = (int) $request->query->get('page'); $page = $page < 1 ? 1 : $page; return $app['feed.formatter-strategy']($format)->createResponse($app, $feed, $page); })->bind('feed_public')->assert('id', '\\d+')->assert('format', '(rss|atom)'); $controllers->get('/userfeed/{token}/{id}/{format}/', function (Application $app, $token, $id, $format) { $token = $app["EM"]->find('Phraseanet:FeedToken', $id); $request = $app['request']; $page = (int) $request->query->get('page'); $page = $page < 1 ? 1 : $page; return $app['feed.formatter-strategy']($format)->createResponse($app, $token->getFeed(), $page, $token->getUser()); })->bind('feed_user')->assert('id', '\\d+')->assert('format', '(rss|atom)'); $controllers->get('/userfeed/aggregated/{token}/{format}/', function (Application $app, $token, $format) { $token = $app['EM']->getRepository('Phraseanet:AggregateToken')->findOneBy(["value" => $token]); $user = $token->getUser(); $feeds = $app['EM']->getRepository('Phraseanet:Feed')->getAllForUser($app['acl']->get($user)); $aggregate = new Aggregate($app['EM'], $feeds, $token); $request = $app['request']; $page = (int) $request->query->get('page'); $page = $page < 1 ? 1 : $page; return $app['feed.formatter-strategy']($format)->createResponse($app, $aggregate, $page, $user); })->bind('feed_user_aggregated')->assert('format', '(rss|atom)'); $controllers->get('/aggregated/{format}/', function (Application $app, $format) { $feed = Aggregate::getPublic($app); $request = $app['request']; $page = (int) $request->query->get('page'); $page = $page < 1 ? 1 : $page; return $app['feed.formatter-strategy']($format)->createResponse($app, $feed, $page); })->bind('feed_public_aggregated')->assert('format', '(rss|atom)'); $controllers->get('/cooliris/', function (Application $app) { $feed = Aggregate::getPublic($app); $request = $app['request']; $page = (int) $request->query->get('page'); $page = $page < 1 ? 1 : $page; return $app['feed.formatter-strategy']('cooliris')->createResponse($app, $feed, $page, null, 'Phraseanet', $app); })->bind('feed_public_cooliris'); return $controllers; }
public function showAggregatedPublicFeedAction(Request $request, $format) { $feed = Aggregate::getPublic($this->app); $page = (int) $request->query->get('page'); return $this->createFormattedFeedResponse($format, $feed, $page); }