addMandatoryAuthentication($controllers); $controllers->post('/', 'controller.prod.query:query') ->bind('prod_query'); $controllers->post('/answer-train/', 'controller.prod.query:queryAnswerTrain') ->bind('preview_answer_train'); $controllers->post('/reg-train/', 'controller.prod.query:queryRegTrain') ->bind('preview_reg_train'); return $controllers; } /** * Query Phraseanet to fetch records * * @param Application $app * @param Request $request * @return JsonResponse */ public function query(Application $app, Request $request) { $query = (string) $request->request->get('qry'); $json = []; $options = SearchEngineOptions::fromRequest($app, $request); $form = $options->serialize(); $perPage = (int) $app['settings']->getUserSetting($app['authentication']->getUser(), 'images_per_page'); $page = (int) $request->request->get('pag'); $firstPage = $page < 1; if ($page < 1) { $app['phraseanet.SE']->resetCache(); $page = 1; } /** @var SearchEngineResult $result */ $result = $app['phraseanet.SE']->query($query, (($page - 1) * $perPage), $perPage, $options); $app['manipulator.user']->logQuery($app['authentication']->getUser(), $result->getQuery()); 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); } $proposals = $firstPage ? $result->getProposals() : false; $npages = $result->getTotalPages($perPage); $page = $result->getCurrentPage($perPage); $string = ''; if ($npages > 1) { $d2top = ($npages - $page); $d2bottom = $page; if (min($d2top, $d2bottom) < 4) { if ($d2bottom < 4) { if($page != 1){ $string .= ""; } for ($i = 1; ($i <= 4 && (($i <= $npages) === true)); $i++) { if ($i == $page) $string .= ''; else $string .= "" . $i . ""; } if ($npages > 4) $string .= ""; $string .= ""; } else { $start = $npages - 4; if (($start) > 0){ $string .= ""; $string .= ""; }else $start = 1; for ($i = ($start); $i <= $npages; $i++) { if ($i == $page) $string .= ''; else $string .= "" . $i . ""; } if($page < $npages){ $string .= ""; } } } else { $string .= ""; for ($i = ($page - 2); $i <= ($page + 2); $i++) { if ($i == $page) $string .= ''; else $string .= "" . $i . ""; } $string .= ""; } } $string .= '
'; $explain = "