before(function(Request $request) use ($app) { $response = $app['firewall']->requireAuthentication(); if($response instanceof Response) { return $response; } }); $controllers->post('/', function(Application $app, Request $request) { $appbox = $app['phraseanet.appbox']; $registry = $appbox->get_registry(); $user = $app['phraseanet.user']; $query = (string) $request->request->get('qry'); $mod = $user->getPrefs('view'); $json = array(); $options = new \searchEngine_options(); $bas = is_array($request->request->get('bas')) ? $request->request->get('bas') : array_keys($user->ACL()->get_granted_base()); /* @var $user \User_Adapter */ if ($user->ACL()->has_right('modifyrecord')) { $options->set_business_fields(array()); $BF = array(); foreach ($user->ACL()->get_granted_base(array('canmodifrecord')) as $collection) { if (count($bas) === 0 || in_array($collection->get_base_id(), $bas)) { $BF[] = $collection->get_base_id(); } } $options->set_business_fields($BF); } else { $options->set_business_fields(array()); } $status = is_array($request->request->get('status')) ? $request->request->get('status') : array(); $fields = is_array($request->request->get('fields')) ? $request->request->get('fields') : array(); $options->set_fields($fields); $options->set_status($status); $options->set_bases($bas, $user->ACL()); $options->set_search_type($request->request->get('search_type')); $options->set_record_type($request->request->get('recordtype')); $options->set_min_date($request->request->get('datemin')); $options->set_max_date($request->request->get('datemax')); $options->set_date_fields(explode('|', $request->request->get('datefield'))); $options->set_sort($request->request->get('sort'), $request->request->get('ord', PHRASEA_ORDER_DESC)); $options->set_use_stemming($request->request->get('stemme')); $form = serialize($options); $perPage = (int) $user->getPrefs('images_per_page'); $search_engine = new \searchEngine_adapter($app); $search_engine->set_options($options); $page = (int) $request->request->get('pag'); if ($page < 1) { $search_engine->set_is_first_page(true); $search_engine->reset_cache(); $page = 1; } $result = $search_engine->query_per_page($query, $page, $perPage); $proposals = $search_engine->is_first_page() ? $result->get_propositions() : false; $npages = $result->get_total_pages(); $page = $result->get_current_page(); $string = ''; if ($npages > 1) { $d2top = ($npages - $page); $d2bottom = $page; if (min($d2top, $d2bottom) < 4) { if ($d2bottom < 4) { for ($i = 1; ($i <= 4 && (($i <= $npages) === true)); $i ++ ) { if ($i == $page) $string .= ''; else $string .= "" . $i . ""; } if ($npages > 4) $string .= ">>"; } else { $start = $npages - 4; if (($start) > 0) $string .= "<<"; else $start = 1; for ($i = ($start); $i <= $npages; $i ++ ) { if ($i == $page) $string .= ''; else $string .= "" . $i . ""; } } } else { $string .= "<<"; for ($i = ($page - 2); $i <= ($page + 2); $i ++ ) { if ($i == $page) $string .= ''; else $string .= "" . $i . ""; } $string .= ">>"; } } $string .= '
'; $explain = "