/** * Get record detailed view * * @param Request $request * * @return Response */ public function getRecord(Request $request) { if (!$request->isXmlHttpRequest()) { $this->app->abort(400); } $searchEngine = $options = null; $train = ''; if ('' === ($env = strtoupper($request->get('env', '')))) { $this->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($this->app, $request->get('options_serial')); $searchEngine = $this->getSearchEngine(); } catch (\Exception $e) { $this->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($this->app, $env, $pos < 0 ? 0 : $pos, $request->get('cont', ''), $searchEngine, $query, $options); if ($record->is_from_reg()) { $train = $this->render('prod/preview/reg_train.html.twig', ['record' => $record]); } if ($record->is_from_basket() && $reloadTrain) { $train = $this->render('prod/preview/basket_train.html.twig', ['record' => $record]); } if ($record->is_from_feed()) { $train = $this->render('prod/preview/feed_train.html.twig', ['record' => $record]); } return $this->app->json(["desc" => $this->render('prod/preview/caption.html.twig', ['record' => $record, 'highlight' => $query, 'searchEngine' => $searchEngine, 'searchOptions' => $options]), "html_preview" => $this->render('common/preview.html.twig', ['record' => $record]), "others" => $this->render('prod/preview/appears_in.html.twig', ['parents' => $record->get_grouping_parents(), 'baskets' => $record->get_container_baskets($this->getEntityManager(), $this->getAuthenticatedUser())]), "current" => $train, "history" => $this->render('prod/preview/short_history.html.twig', ['record' => $record]), "popularity" => $this->render('prod/preview/popularity.html.twig', ['record' => $record]), "tools" => $this->render('prod/preview/tools.html.twig', ['record' => $record]), "pos" => $record->getNumber(), "title" => str_replace(array('[[em]]', '[[/em]]'), array('<em>', '</em>'), $record->get_title($query, $searchEngine)), "collection_name" => $record->get_collection()->get_name(), "collection_logo" => $record->get_collection()->getLogo($record->get_base_id(), $this->app)]); }