share(function (PhraseaApplication $app) { return (new ShareController($app)) ->setEntityManagerLocator(new LazyLocator($app, 'orm.em')) ; }); } public function boot(Application $app) { // no-op } public function connect(Application $app) { $controllers = $this->createAuthenticatedCollection($app); $firewall = $this->getFirewall($app); $controllers->before(function () use ($firewall) { $firewall->requireNotGuest(); }); // tranform 'basket' argument (id) to basket object $controllers->before($app['middleware.basket.converter']); $controllers->get('/record/{base_id}/{record_id}/', 'controller.prod.share:shareRecord') ->before(function (Request $request) use ($app, $firewall) { $socialTools = $app['conf']->get(['registry', 'actions', 'social-tools']); if ($socialTools === "all") { return; } elseif ($socialTools === "none") { $app->abort(403, 'social tools disabled'); } elseif ($socialTools === "publishers") { $firewall->requireRightOnSbas( \phrasea::sbasFromBas($app, $request->attributes->get('base_id')), \ACL::BAS_CHUPUB ); } else { throw new \Exception("bad value \"" . $socialTools . "\" for social tools"); } }) ->bind('share_record'); /** @uses ShareController::quitshareAction() */ $controllers->post('/quitshare/{basket}/', 'controller.prod.share:quitshareAction') ->assert('basket', '\d+') ->bind('prod_share_quitshare'); return $controllers; } }