get_session(); $registry = $appbox->get_registry(); $request = http_request::getInstance(); $user = User_Adapter::getInstance($session->get_usr_id(), $appbox); if (!isset($parm)) $parm = $request->get_parms("bas", "qry", "pag" , "sel", "ord", "sort", "stemme" , "search_type", "recordtype", "status", "fields", "datemin", "datemax", "datefield"); $parm['sel'] = explode(';', $parm['sel']); if (!$parm['bas']) $parm['bas'] = array(); $parm["pag"] = (int) $parm["pag"]; $mod = $user->getPrefs('view'); function dmicrotime_float($message = '', $stack = 'def') { static $last = array(); list($usec, $sec) = explode(' ', microtime()); $new = ((float) $usec + (float) $sec); $last[$stack] = $new; return ($new - $last[$stack]); } dmicrotime_float(); $json = array(); //$options = array( // 'type' => $parm['search_type'], // 'bases' => $parm['bas'], // 'champs' => $parm['fields'], // 'status' => $parm['status'], // 'recordtype' => (in_array($parm['recordtype'], array('image', 'video', 'audio', 'document', 'flash')) ? $parm['recordtype'] : ''), // 'date' => array( // 'minbound' => $parm['datemin'], // 'maxbound' => $parm['datemax'], // 'field' => explode('|', $parm['datefield']) // ) //); $options = new searchEngine_options(); $options->set_bases($parm['bas'], $user->ACL()); if (!is_array($parm['fields'])) $parm['fields'] = array(); $options->set_fields($parm['fields']); if (!is_array($parm['status'])) $parm['status'] = array(); $options->set_status($parm['status']); $options->set_search_type($parm['search_type']); $options->set_record_type($parm['recordtype']); $options->set_min_date($parm['datemin']); $options->set_max_date($parm['datemax']); $options->set_date_fields(explode('|', $parm['datefield'])); $options->set_sort($parm['sort'], $parm['ord']); $options->set_use_stemming($parm['stemme']); if ($parm['ord'] === NULL) $parm['ord'] = PHRASEA_ORDER_DESC; else $parm['ord'] = (int) $parm['ord']; $form = serialize($options); $perPage = (int) $user->getPrefs('images_per_page'); $search_engine = new searchEngine_adapter($registry); $search_engine->set_options($options); if ($parm['pag'] < 1) { $search_engine->set_is_first_page(true); $search_engine->reset_cache(); $parm['pag'] = 1; } $result = $search_engine->query_per_page($parm['qry'], $parm["pag"], $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 = "
"; $explain .= ""; if ($result->get_count_total_results() != $result->get_count_available_results()) { $explain .= sprintf(_('reponses:: %d Resultats rappatries sur un total de %d trouves'), $result->get_count_available_results(), $result->get_count_total_results()); } else { $explain .= sprintf(_('reponses:: %d Resultats'), $result->get_count_total_results()); } $explain .= " "; $explain .= '
' . $result->get_query_time() . ' s
dans index ' . $result->get_search_indexes(); $explain .= "
"; $infoResult = ' | ' . sprintf(_('reponses:: %d reponses'), $result->get_count_total_results()) . ' | ' . sprintf(_('reponses:: %s documents selectionnes'), ''); $json['infos'] = $infoResult; $json['navigation'] = $string; $prop = null; $propal_n = 0; if ($search_engine->is_first_page()) { $propals = $result->get_suggestions(); if (count($propals) > 0) { foreach ($propals as $prop_array) { if ($prop_array['value'] !== $parm['qry'] && $prop_array['hits'] > $result->get_count_total_results()) { $prop = $prop_array['value']; break; } } } } $core = \bootstrap::getCore(); $twig = $core->getTwig(); if ($result->get_count_total_results() === 0) { $template = 'prod/results/help.twig'; } else { if ($mod == 'thumbs') { $template = 'prod/results/answergrid.html'; } else { $template = 'prod/results/answerlist.html'; } } $json['results'] = $twig->render($template, array( 'results' => $result, 'GV_social_tools' => $registry->get('GV_social_tools'), 'array_selected' => $parm['sel'], 'highlight' => $search_engine->get_query(), 'searchEngine' => $search_engine, 'suggestions' => $prop ) ); $json['query'] = $parm['qry']; $json['phrasea_props'] = $proposals; $json['total_answers'] = (int) $result->get_count_available_results(); $json['next_page'] = ($page < $npages && $result->get_count_available_results() > 0) ? ($page + 1) : false; $json['prev_page'] = ($page > 1 && $result->get_count_available_results() > 0) ? ($page - 1) : false; $json['form'] = $form; echo p4string::jsonencode($json);