コード例 #1
0
ファイル: Root.php プロジェクト: nlegoff/Phraseanet
 public function connect(SilexApplication $app)
 {
     $app['controller.prod'] = $this;
     $controllers = $app['controllers_factory'];
     $controllers->before(function (Request $request) use($app) {
         if (!$app['authentication']->isAuthenticated() && null !== $request->query->get('nolog')) {
             return $app->redirectPath('login_authenticate_as_guest');
         }
         if (null !== ($response = $app['firewall']->requireAuthentication())) {
             return $response;
         }
     });
     $controllers->get('/', function (Application $app) {
         try {
             \Session_Logger::updateClientInfos($app, 1);
         } catch (SessionNotFound $e) {
             return $app->redirectPath('logout');
         }
         $cssPath = $app['root.path'] . '/www/skins/prod/';
         $css = [];
         $cssfile = false;
         $finder = new Finder();
         $iterator = $finder->directories()->depth(0)->filter(function (\SplFileInfo $fileinfo) {
             return ctype_xdigit($fileinfo->getBasename());
         })->in($cssPath);
         foreach ($iterator as $dir) {
             $baseName = $dir->getBaseName();
             $css[$baseName] = $baseName;
         }
         $cssfile = $app['settings']->getUserSetting($app['authentication']->getUser(), 'css');
         if (!$cssfile && isset($css['000000'])) {
             $cssfile = '000000';
         }
         $feeds = $app['repo.feeds']->getAllForUser($app['acl']->get($app['authentication']->getUser()));
         $aggregate = Aggregate::createFromUser($app, $app['authentication']->getUser());
         $thjslist = "";
         $queries_topics = '';
         if ($app['conf']->get(['registry', 'classic', 'render-topics']) == 'popups') {
             $queries_topics = \queries::dropdown_topics($app['translator'], $app['locale']);
         } elseif ($app['conf']->get(['registry', 'classic', 'render-topics']) == 'tree') {
             $queries_topics = \queries::tree_topics($app['locale']);
         }
         $sbas = $bas2sbas = [];
         foreach ($app['phraseanet.appbox']->get_databoxes() as $databox) {
             $sbas_id = $databox->get_sbas_id();
             $sbas['s' + $sbas_id] = ['sbid' => $sbas_id, 'seeker' => null];
             foreach ($databox->get_collections() as $coll) {
                 $bas2sbas['b' . $coll->get_base_id()] = ['sbid' => $sbas_id, 'ckobj' => ['checked' => false], 'waschecked' => false];
             }
         }
         return $app['twig']->render('prod/index.html.twig', ['module_name' => 'Production', 'WorkZone' => new Helper\WorkZone($app, $app['request']), 'module_prod' => new Helper\Prod($app, $app['request']), 'cssfile' => $cssfile, 'module' => 'prod', 'events' => $app['events-manager'], 'GV_defaultQuery_type' => $app['conf']->get(['registry', 'searchengine', 'default-query-type']), 'GV_multiAndReport' => $app['conf']->get(['registry', 'modules', 'stories']), 'GV_thesaurus' => $app['conf']->get(['registry', 'modules', 'thesaurus']), 'cgus_agreement' => \databox_cgu::askAgreement($app), 'css' => $css, 'feeds' => $feeds, 'aggregate' => $aggregate, 'GV_google_api' => $app['conf']->get(['registry', 'webservices', 'google-charts-enabled']), 'queries_topics' => $queries_topics, 'search_status' => \databox_status::getSearchStatus($app), 'queries_history' => \queries::history($app, $app['authentication']->getUser()->getId()), 'thesau_js_list' => $thjslist, 'thesau_json_sbas' => json_encode($sbas), 'thesau_json_bas2sbas' => json_encode($bas2sbas), 'thesau_languages' => $app['locales.available']]);
     })->bind('prod');
     return $controllers;
 }
コード例 #2
0
ファイル: RSSFeeds.php プロジェクト: romainneutron/Phraseanet
 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;
 }
コード例 #3
0
 public function indexAction(Request $request)
 {
     try {
         \Session_Logger::updateClientInfos($this->app, 1);
     } catch (SessionNotFound $e) {
         return $this->app->redirectPath('logout');
     }
     $cssPath = $this->app['root.path'] . '/www/assets/prod/skins';
     $css = [];
     $finder = new Finder();
     /** @var SplFileInfo[] $iterator */
     $iterator = $finder->directories()->depth(0)->filter(function (\SplFileInfo $fileinfo) {
         return ctype_xdigit($fileinfo->getBasename());
     })->in($cssPath);
     foreach ($iterator as $dir) {
         $baseName = $dir->getBaseName();
         $css[$baseName] = $baseName;
     }
     $user = $this->getAuthenticatedUser();
     $cssfile = $this->getSettings()->getUserSetting($user, 'css');
     if (!$cssfile && isset($css['000000'])) {
         $cssfile = '000000';
     }
     $feeds = $this->getFeedRepository()->getAllForUser($this->getAclForUser());
     $aggregate = Aggregate::createFromUser($this->app, $user);
     $thjslist = "";
     $queries_topics = '';
     $conf = $this->getConf();
     if ($conf->get(['registry', 'classic', 'render-topics']) == 'popups') {
         $queries_topics = \queries::dropdown_topics($this->app['translator'], $this->app['locale']);
     } elseif ($conf->get(['registry', 'classic', 'render-topics']) == 'tree') {
         $queries_topics = \queries::tree_topics($this->app['locale']);
     }
     $sbas = $bas2sbas = [];
     foreach ($this->getApplicationBox()->get_databoxes() as $databox) {
         $sbas_id = $databox->get_sbas_id();
         $sbas['s' . $sbas_id] = ['sbid' => $sbas_id, 'seeker' => null];
         foreach ($databox->get_collections() as $coll) {
             $bas2sbas['b' . $coll->get_base_id()] = ['sbid' => $sbas_id, 'ckobj' => ['checked' => false], 'waschecked' => false];
         }
     }
     $helper = new Helper\Prod($this->app, $request);
     /** @var \Closure $filter */
     $filter = $this->app['plugin.filter_by_authorization'];
     $plugins = ['workzone' => $filter('workzone'), 'actionbar' => $filter('actionbar')];
     return $this->render('prod/index.html.twig', ['module_name' => 'Production', 'WorkZone' => new Helper\WorkZone($this->app, $request), 'module_prod' => $helper, 'search_datas' => $helper->get_search_datas(), 'cssfile' => $cssfile, 'module' => 'prod', 'events' => $this->app['events-manager'], 'GV_defaultQuery_type' => $conf->get(['registry', 'searchengine', 'default-query-type']), 'GV_multiAndReport' => $conf->get(['registry', 'modules', 'stories']), 'GV_thesaurus' => $conf->get(['registry', 'modules', 'thesaurus']), 'cgus_agreement' => \databox_cgu::askAgreement($this->app), 'css' => $css, 'feeds' => $feeds, 'aggregate' => $aggregate, 'GV_google_api' => $conf->get(['registry', 'webservices', 'google-charts-enabled']), 'queries_topics' => $queries_topics, 'search_status' => \databox_status::getSearchStatus($this->app), 'queries_history' => \queries::history($this->app, $user->getId()), 'thesau_js_list' => $thjslist, 'thesau_json_sbas' => json_encode($sbas), 'thesau_json_bas2sbas' => json_encode($bas2sbas), 'thesau_languages' => $this->app['locales.available'], 'plugins' => $plugins]);
 }
コード例 #4
0
ファイル: V1.php プロジェクト: nlegoff/Phraseanet
 public function get_publications(Application $app, Request $request)
 {
     $user = $app['authentication']->getUser();
     $restrictions = (array) ($request->get('feeds') ?: []);
     $feed = Aggregate::createFromUser($app, $user, $restrictions);
     $offset_start = (int) ($request->get('offset_start') ?: 0);
     $per_page = (int) ($request->get('per_page') ?: 5);
     $per_page = $per_page >= 1 && $per_page <= 20 ? $per_page : 20;
     $data = ['total_entries' => $feed->getCountTotalEntries(), 'offset_start' => $offset_start, 'per_page' => $per_page, 'entries' => $this->list_publications_entries($app, $feed, $offset_start, $per_page)];
     return Result::create($request, $data)->createResponse();
 }
コード例 #5
0
 public function showAggregatedPublicFeedAction(Request $request, $format)
 {
     $feed = Aggregate::getPublic($this->app);
     $page = (int) $request->query->get('page');
     return $this->createFormattedFeedResponse($format, $feed, $page);
 }
コード例 #6
0
ファイル: adapter.php プロジェクト: romainneutron/Phraseanet
 public function get_publications(Request $request, User $user)
 {
     $result = new API_V1_result($this->app, $request, $this);
     $feed = Aggregate::createFromUser($this->app, $user);
     $offset_start = (int) ($request->get('offset_start') ?: 0);
     $per_page = (int) ($request->get('per_page') ?: 5);
     $per_page = $per_page >= 1 && $per_page <= 20 ? $per_page : 5;
     $datas = ['total_entries' => $feed->getCountTotalEntries(), 'offset_start' => $offset_start, 'per_page' => $per_page, 'entries' => $this->list_publications_entries($feed, $offset_start, $per_page)];
     $result->set_datas($datas);
     return $result;
 }
コード例 #7
0
ファイル: Root.php プロジェクト: romainneutron/Phraseanet
 /**
  * Gets publications start home page for client
  *
  * @param  Application $app
  * @return string
  */
 private function getPublicationStartPage(Application $app)
 {
     return $app['twig']->render('client/home_inter_pub_basket.html.twig', ['feeds' => Aggregate::createFromUser($app, $app['authentication']->getUser()), 'image_size' => (int) $app['settings']->getUserSetting($app['authentication']->getUser(), 'images_size')]);
 }