Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
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]);
 }
Exemplo n.º 3
0
 /**
  * Queries database to fetch documents
  *
  * @param  Application $app
  * @param  Request     $request
  * @return Response
  */
 public function query(Application $app, Request $request)
 {
     $query = $this->buildQueryFromRequest($request);
     $displayMode = explode('X', $request->request->get('mod', '3X6'));
     if (count($displayMode) === 1) {
         $modRow = (int) $displayMode[0];
         $modCol = 1;
     } else {
         $modRow = (int) $displayMode[0];
         $modCol = (int) $displayMode[1];
     }
     $perPage = $modCol * $modRow;
     $options = SearchEngineOptions::fromRequest($app, $request);
     $currentPage = (int) $request->request->get('pag', 0);
     if ($currentPage < 1) {
         $app['phraseanet.SE']->resetCache();
         $currentPage = 1;
     }
     $result = $app['phraseanet.SE']->query($query, ($currentPage - 1) * $perPage, $perPage, $options);
     $userQuery = new UserQuery();
     $userQuery->setUser($app['authentication']->getUser());
     $userQuery->setQuery($query);
     $app['EM']->persist($userQuery);
     $app['EM']->flush();
     if ($app['settings']->getUserSetting($app['authentication']->getUser(), 'start_page') === 'LAST_QUERY') {
         $app['manipulator.user']->setUserSetting($app['authentication']->getUser(), 'start_page_query', $query);
     }
     foreach ($options->getDataboxes() as $databox) {
         $colls = array_map(function (\collection $collection) {
             return $collection->get_coll_id();
         }, array_filter($options->getCollections(), function (\collection $collection) use($databox) {
             return $collection->get_databox()->get_sbas_id() == $databox->get_sbas_id();
         }));
         $app['phraseanet.SE.logger']->log($databox, $result->getQuery(), $result->getTotal(), $colls);
     }
     $searchData = $result->getResults();
     if (count($searchData) === 0) {
         return new Response($app['twig']->render("client/help.html.twig"));
     }
     $resultData = [];
     foreach ($searchData as $record) {
         try {
             $record->get_subdef('document');
             $lightInfo = $app['twig']->render('common/technical_datas.html.twig', ['record' => $record]);
         } catch (\Exception $e) {
             $lightInfo = '';
         }
         $caption = $app['twig']->render('common/caption.html.twig', ['view' => 'answer', 'record' => $record]);
         $docType = $record->get_type();
         $isVideo = $docType == 'video';
         $isAudio = $docType == 'audio';
         $isImage = $docType == 'image';
         $isDocument = $docType == 'document';
         if (!$isVideo && !$isAudio) {
             $isImage = true;
         }
         $canDownload = $app['acl']->get($app['authentication']->getUser())->has_right_on_base($record->get_base_id(), 'candwnldpreview') || $app['acl']->get($app['authentication']->getUser())->has_right_on_base($record->get_base_id(), 'candwnldhd') || $app['acl']->get($app['authentication']->getUser())->has_right_on_base($record->get_base_id(), 'cancmd');
         try {
             $previewExists = $record->get_preview()->is_physically_present();
         } catch (\Exception $e) {
             $previewExists = false;
         }
         $resultData[] = ['record' => $record, 'mini_logo' => \collection::getLogo($record->get_base_id(), $app), 'preview_exists' => $previewExists, 'light_info' => $lightInfo, 'caption' => $caption, 'is_video' => $isVideo, 'is_audio' => $isAudio, 'is_image' => $isImage, 'is_document' => $isDocument, 'can_download' => $canDownload, 'can_add_to_basket' => $app['acl']->get($app['authentication']->getUser())->has_right_on_base($record->get_base_id(), 'canputinalbum')];
     }
     return new Response($app['twig']->render("client/answers.html.twig", ['mod_col' => $modCol, 'mod_row' => $modRow, 'result_data' => $resultData, 'per_page' => $perPage, 'search_engine' => $app['phraseanet.SE'], 'search_engine_option' => $options->serialize(), 'history' => \queries::history($app, $app['authentication']->getUser()->getId()), 'result' => $result, 'proposals' => $currentPage === 1 ? $result->getProposals() : null, 'help' => count($resultData) === 0 ? $this->getHelpStartPage($app) : '']));
 }