Esempio n. 1
0
 /**
  * Get record detailed view
  *
  * @param Application $app
  * @param Request     $request
  *
  * @return JsonResponse
  */
 public function getRecord(Application $app, Request $request)
 {
     if (!$request->isXmlHttpRequest()) {
         $app->abort(400);
     }
     $searchEngine = $options = null;
     $train = '';
     if ('' === ($env = strtoupper($request->get('env', '')))) {
         $app->abort(400, '`env` parameter is missing');
     }
     // Use $request->get as HTTP method can be POST or GET
     if ('RESULT' == ($env = strtoupper($request->get('env', '')))) {
         try {
             $options = SearchEngineOptions::hydrate($app, $request->get('options_serial'));
             $searchEngine = $app['phraseanet.SE'];
         } catch (\Exception $e) {
             $app->abort(400, 'Search-engine options are not valid or missing');
         }
     }
     $pos = (int) $request->get('pos', 0);
     $query = $request->get('query', '');
     $reloadTrain = !!$request->get('roll', false);
     $record = new \record_preview($app, $env, $pos < 0 ? 0 : $pos, $request->get('cont', ''), $searchEngine, $query, $options);
     if ($record->is_from_reg()) {
         $train = $app['twig']->render('prod/preview/reg_train.html.twig', ['record' => $record]);
     }
     if ($record->is_from_basket() && $reloadTrain) {
         $train = $app['twig']->render('prod/preview/basket_train.html.twig', ['record' => $record]);
     }
     if ($record->is_from_feed()) {
         $train = $app['twig']->render('prod/preview/feed_train.html.twig', ['record' => $record]);
     }
     return $app->json(["desc" => $app['twig']->render('prod/preview/caption.html.twig', ['record' => $record, 'highlight' => $query, 'searchEngine' => $searchEngine, 'searchOptions' => $options]), "html_preview" => $app['twig']->render('common/preview.html.twig', ['record' => $record]), "others" => $app['twig']->render('prod/preview/appears_in.html.twig', ['parents' => $record->get_grouping_parents(), 'baskets' => $record->get_container_baskets($app['EM'], $app['authentication']->getUser())]), "current" => $train, "history" => $app['twig']->render('prod/preview/short_history.html.twig', ['record' => $record]), "popularity" => $app['twig']->render('prod/preview/popularity.html.twig', ['record' => $record]), "tools" => $app['twig']->render('prod/preview/tools.html.twig', ['record' => $record]), "pos" => $record->get_number(), "title" => str_replace(['[[em]]', '[[/em]]'], ['<em>', '</em>'], $record->get_title($query, $searchEngine))]);
 }
Esempio n. 2
0
 /**
  * Get a preview answer train
  *
  * @param  Request $request
  * @return Response
  */
 public function queryAnswerTrain(Request $request)
 {
     if (null === ($optionsSerial = $request->get('options_serial'))) {
         $this->app->abort(400, 'Search engine options are missing');
     }
     try {
         $options = SearchEngineOptions::hydrate($this->app, $optionsSerial);
     } catch (\Exception $e) {
         $this->app->abort(400, 'Provided search engine options are not valid');
     }
     $pos = (int) $request->request->get('pos', 0);
     $query = $request->request->get('query', '');
     $record = new \record_preview($this->app, 'RESULT', $pos, '', $this->getSearchEngine(), $query, $options);
     $index = $pos - 3 < 0 ? 0 : $pos - 3;
     return $this->app->json(['current' => $this->render('prod/preview/result_train.html.twig', ['records' => $record->get_train(), 'index' => $index, 'selected' => $pos])]);
 }
Esempio n. 3
0
 /**
  * Get a preview reg train
  *
  * @param  Application $app
  * @param  Request     $request
  * @return Response
  */
 public function queryRegTrain(Application $app, Request $request)
 {
     $record = new \record_preview($app, 'REG', $request->request->get('pos'), $request->request->get('cont'));
     return new Response($app['twig']->render('prod/preview/reg_train.html.twig', ['container_records' => $record->get_container()->get_children(), 'record' => $record]));
 }