locale)?$session->locale:GV_default_lng; if(isset($session->usr_id) && isset($session->ses_id)) { $ses_id = $session->ses_id; $usr_id = $session->usr_id; } else{ header("Location: /login/client/"); exit(); } if(!in_array(mb_strtolower(GV_client_showTitle), array("top", "bottom", "none"))) define("GV_client_showTitle","top"); if(!isset($parm)) { $request = httpRequest::getInstance(); $parm = $request->get_parms("mod", "bas" , "pag" , "qry", "search_type" , "qryAdv", 'opAdv', 'status', 'datemin', 'datemax', 'dateminfield', 'datemaxfield', 'infield' , "nba" , "regroup" // si rech par doc, regroup ,ou pizza , "ord" ); } $qry = ''; if(!($ph_session = phrasea_open_session($ses_id,$usr_id))) die(); if(trim($parm['qry']) != '') { $qry .= trim($parm['qry']); } if(count($parm['opAdv'])>0 && count($parm['opAdv']) == count($parm['qryAdv'])) { foreach($parm['opAdv'] as $opId=>$op) { if(trim($parm['qryAdv'][$opId])!= '') { if($qry == trim($parm['qry'])) $qry = '('.trim($parm['qry']).')'; $qry .= ' '.$op.' ('.trim($parm['qryAdv'][$opId]).')'; } } } if($qry == '') $qry = GV_defaultQuery; $parm['qry'] = $qry; $qrySbas = array(); if(is_null($parm['bas'])) { exit('vous devez selectionner des collections dans lesquelles chercher'); } foreach($ph_session['bases'] as $base) { foreach($base['collections'] as $coll) { if(in_array($coll['base_id'],$parm['bas'])) $qrySbas[$base['sbas_id']] = $qry; } } /********************* STATUS***************/ $searchStatus = array(); if($parm['status']) { foreach($parm['status'] as $stat) { $stat = explode('_',$stat); $sbas = $stat[0]; $stat = $stat[1]; if(isset($searchStatus[$sbas][substr($stat,2)])) unset($searchStatus[$sbas][substr($stat,2)]); else $searchStatus[$sbas][substr($stat,2)] = substr($stat,0,2); } } $requestStat = array(); foreach($searchStatus as $sbas=>$searchStat) { if(isset($qrySbas[$sbas])) { for($i=4;($i<=64 && count($searchStat)>0);$i++) { if(!isset($requestStat[$sbas])) $requestStat[$sbas] = 'xxxx'; if(isset($searchStat[$i])) { if($searchStat[$i] == 'on') $requestStat[$sbas] = '1'.$requestStat[$sbas]; else $requestStat[$sbas] = '0'.$requestStat[$sbas]; unset($searchStat[$i]); } else $requestStat[$sbas] = 'x'.$requestStat[$sbas]; } } } foreach($requestStat as $sbas=>$status) { if($status != 'xxxx' && isset($qrySbas[$sbas])) { if($qrySbas[$sbas] == trim($parm['qry'])) $qrySbas[$sbas] = '('.trim($parm['qry']).')'; $qrySbas[$sbas] .= ' and (recordstatus='.$status.')'; } } /********************* CHAMP***************/ $searchField = array(); if($parm['infield']) { foreach($parm['infield'] as $field) { if($field == "") continue; $field = explode('_',$field); $sbas = $field[0]; $field = $field[1]; $searchField[$sbas] = $field; if(isset($qrySbas[$sbas])) { if($qrySbas[$sbas] == trim($parm['qry'])) $qrySbas[$sbas] = '('.trim($parm['qry']).')'; $qrySbas[$sbas] .= ' dans '.$field; } } } /********************* DATE***************/ if(count($parm['datemin'])>0) { foreach($parm['dateminfield'] as $opId=>$op) { $op = explode('_',$op); if(trim($parm['datemin'][$opId])!= '' && isset($qrySbas[$op[0]])) { if($qrySbas[$op[0]] == trim($parm['qry'])) $qrySbas[$op[0]] = '('.trim($parm['qry']).')'; $qrySbas[$op[0]] .= ' AND ('.$op[1].'>='.trim($parm['datemin'][$opId]).')'; } } } if(count($parm['datemax'])>0) { foreach($parm['datemaxfield'] as $opId=>$op) { $op = explode('_',$op); if(trim($parm['datemax'][$opId])!= '' && isset($qrySbas[$op[0]])) { if($qrySbas[$op[0]] == trim($parm['qry'])) $qrySbas[$op[0]] = '('.trim($parm['qry']).')'; $qrySbas[$op[0]] .= ' AND ('.$op[1].'<='.trim($parm['datemax'][$opId]).')'; } } } if($parm["ord"]===NULL) $parm["ord"] = PHRASEA_ORDER_DESC; else $parm["ord"] = (int)$parm["ord"]; if(!$lng) { $lng = GV_default_lng ; } if(!$parm['bas']) $parm['bas'] = array(); if($parm["pag"]===NULL) $parm["pag"] = ""; // le mode d'affichage if(!$parm["mod"]) $parm["mod"] = "3X6"; $mod = explode("X", $parm["mod"]); if(count($mod) == 1) { $mod_row = (int)($mod[0]); $mod_col = 1; } else { $mod_row = (int)($mod[0]); $mod_col = (int)($mod[1]); } $mod_xy = $mod_col*$mod_row; $conn = connection::getInstance(); if(!$conn) die(); $tbases = array(); if($parm['qry'] !== NULL) { $page = $npages = $nbanswers = $rqtime = null; $usrRight = array(); $dateLog = date("Y-m-d H:i:s"); if($parm["pag"] === "") // pas de page : c'est une recherche { $qp = $simple_treeq = $needthesaurus = $indep_treeq = $treeq = array(); $nbanswers = $courcahnum = 0; $time_start = getthemicrotime(); $qp['main'] = new qparser($lng); $qp['main']->debug = false; $simple_treeq['main'] = $qp['main']->parsequery($qry); $qp['main']->priority_opk($simple_treeq['main']); $indep_treeq['main'] = $qp['main']->extendThesaurusOnTerms($simple_treeq['main'], true, true, false); $needthesaurus['main'] = $qp['main']->containsColonOperator($indep_treeq['main']); foreach($qrySbas as $sbas=>$qryBas) { $qp[$sbas] = new qparser($lng); $qp[$sbas]->debug = false; $simple_treeq[$sbas] = $qp[$sbas]->parsequery($qryBas); $qp[$sbas]->priority_opk($simple_treeq[$sbas]); $indep_treeq[$sbas] = $qp[$sbas]->extendThesaurusOnTerms($simple_treeq[$sbas], true, true, false); $needthesaurus[$sbas] = $qp[$sbas]->containsColonOperator($indep_treeq[$sbas]); } foreach($ph_session["bases"] as $phbase) { $tcoll = array(); foreach($phbase["collections"] as $coll) { if(in_array($coll["base_id"],$parm['bas'])) $tcoll[] = (int)$coll["base_id"]; // le tableau de colls doit contenir des int } if(sizeof($tcoll) > 0 && isset($qrySbas[$phbase['sbas_id']])) // au - une coll de la base ?tait coch?e { $connbas = connection::getInstance($phbase['sbas_id']); if($connbas) { $kbase = $phbase["sbas_id"]; $tbases[$kbase] = array(); $tbases[$kbase]["searchcoll"] = $tcoll; $tbases[$kbase]["domthesaurus"] = null; if($needthesaurus[$kbase]) { $domthesaurus = databox::get_dom_thesaurus($phbase['sbas_id']); if($domthesaurus) { $qp[$kbase]->thesaurus2($indep_treeq[$kbase], $phbase["sbas_id"], phrasea::sbas_names($kbase), $domthesaurus, true); $qp['main']->thesaurus2($indep_treeq['main'], $phbase["sbas_id"], phrasea::sbas_names($kbase), $domthesaurus, true); } $tbases[$kbase]["domthesaurus"] = $domthesaurus; } if($qp[$kbase]->errmsg != "") { ?> set_default($treeq[$kbase], $emptyw); // on simplifie $qp[$kbase]->factor_or($treeq[$kbase]); $qp[$kbase]->distrib_in($treeq[$kbase]); $qp[$kbase]->setNumValue($treeq[$kbase],$phbase["xmlstruct"]); $qp[$kbase]->thesaurus2_apply($treeq[$kbase], $kbase); $tbases[$kbase]["arrayq"] = $qp[$kbase]->makequery($treeq[$kbase]); $tbases[$kbase]["results"] = NULL; $nocache = FALSE; } } } if(GV_thesaurus) { ?> $base) { if($parm['search_type'] == '1') { $tbases[$kb]["results"] = phrasea_query2($ph_session["session_id"], $kb, $base["searchcoll"], $base["arrayq"], GV_sit, (string)($usr_id) , $nocache , PHRASEA_MULTIDOC_REGONLY ); if($tbases[$kb]["results"]) $nbanswers += $tbases[$kb]["results"]["nbanswers"]; } else { $tbases[$kb]["results"] = phrasea_query2($ph_session["session_id"], $kb, $base["searchcoll"], $base["arrayq"], GV_sit, (string)($usr_id) , $nocache , PHRASEA_MULTIDOC_DOCONLY ); if($tbases[$kb]["results"]) $nbanswers += $tbases[$kb]["results"]["nbanswers"]; } $dst_logid= array(); $sql = 'SELECT dist_logid FROM cache WHERE session_id="'.$conn->escape_string($ph_session["session_id"]).'"'; if($rs = $conn->query($sql)) { if( $row2 = $conn->fetch_assoc($rs) ) { $dst_logid = unserialize($row2["dist_logid"]); } $conn->free_result($rs); } $conn2 = connection::getInstance($kb); if($conn2 && isset($dst_logid[$kb])===true) { $newid = $conn2->getId("QUEST"); // $sql = "INSERT INTO quest (id, logid, date, askquest, nbrep, coll_id ) VALUES " ; // $sql .= " ('".$conn2->escape_string($newid)."', '".$conn2->escape_string($dst_logid[$kb])."','" . $conn2->escape_string($dateLog) . "', '".$conn2->escape_string($parm['qry'])."', '".$conn2->escape_string($tbases[$kb]["results"]["nbanswers"])."', '".$conn2->escape_string(implode(',',$base["searchcoll"]))."')"; // $conn2->query($sql); $sql3 = "INSERT INTO log_search (id, log_id, date, search, results, coll_id ) VALUES " ; $sql3 .= "(null, '".$conn2->escape_string($dst_logid[$kb])."','" . $conn2->escape_string($dateLog) . "', '".$conn2->escape_string($parm['qry'])."', ".$conn2->escape_string($tbases[$kb]["results"]["nbanswers"]).", '".$conn2->escape_string(implode(',',$base["searchcoll"]))."')" ; $conn2->query($sql3); } } $sql = 'SELECT * from dsel where usr_id="'.$conn->escape_string($usr_id).'" ORDER BY id ASC'; if($rs = $conn->query($sql)) { if($conn->num_rows($rs) >= 80 ) { if($row = $conn->fetch_assoc($rs)) { $sql = 'DELETE from dsel where usr_id="'. $conn->escape_string($usr_id).'" AND id="'.$conn->escape_string($row["id"]).'"' ; $conn->query($sql); } } $conn->free_result($rs); $id = $conn->getId("DSEL"); $sql = "INSERT INTO dsel (id, name, usr_id, query) VALUES ('".$conn->escape_string($id)."','".$conn->escape_string($parm['qry'])."', '". $conn->escape_string($usr_id)."', '".$conn->escape_string($parm['qry'])."')"; $conn->query($sql); } $history = queries::history(); echo ''; if(function_exists('phrasea_save_cache')) phrasea_save_cache($ph_session["session_id"]); $rqtime = getthemicrotime() - $time_start; $page = 0; } else { $nbanswers = $parm["nba"]; $page = 0+$parm["pag"]; } $npages = ceil($nbanswers / $mod_xy); $sql = 'SELECT base_id,canpreview,canhd,canputinalbum,candwnldhd,candwnldpreview, cancmd,restrict_dwnld,remain_dwnld FROM (usr NATURAL JOIN basusr ) WHERE usr.usr_id="'.$conn->escape_string($usr_id).'" ORDER BY base_id'; if($rs = $conn->query($sql)) { while($row = $conn->fetch_assoc($rs)) { $usrRight[$row["base_id"]] = $row; } $conn->free_result($rs); } $timeAsk = "" ; if($rqtime !== NULL) $timeAsk = sprintf(" (%s s.)", ((int)($rqtime*100))/100); // if($parm["pag"] === "") // pas de page : c'est une recherche // { $courcahnum = 0; $longueur = strlen($parm['qry']); $qrys = '
';
$dstatus = status::getDisplayStatus();
$user = user::getInstance($session->usr_id);
if(isset($dstatus[$sbas_id]))
{
foreach($dstatus[$sbas_id] as $n=>$statbit)
{
$d = ((int)$n)>>2;
$m = 1<<((int)$n & 0x03);
if($d>=0 && $d<=15)
{
if($statbit['printable'] == '0' && (!isset($user->_rights_bas[$occu['base_id']]) || $user->_rights_bas[$occu['base_id']]['chgstatus'] === false))
continue;
$x = hexdec(substr($occu["status"], 15-$d, 1));
if($x & $m)
{
$style1 = "visibility:auto;display:inline;";
}
else
{
$style0 = "visibility:auto;display:inline;";
}
if($x & $m)
{
if(trim($statbit["img_on"]) != '')
$status .= " ';
echo $status;
$isVideo = $docType == 'video' ? true:false;
$isAudio = $docType == 'audio' ? true:false;
$isImage = $docType == 'image' ? true:false;
$isDocument = $docType == 'document' ? true:false;
$prevTips = '';
if(GV_zommPrev_rollover_clientAnswer)
{
$sd = $thumbnail['preview'];
$isImage = false;
$isDocument = false;
if(!$isVideo && !$isAudio)
$isImage = true;
if($isImage)
{
if(isset($sd["preview"]["width"]) && $usrRight[$occu["base_id"]]['canpreview']=='1')
{
$prev = "directprev.php?bas=".$occu["base_id"]."&rec=".$occu["record_id"];
$prevTips = "";
}
elseif(isset($sd["thumbnail"]))
{
$sd["preview"] = $sd["thumbnail"];
$prev = p4string::addEndSlash($sd["thumbnail"]["baseurl"]).$sd["thumbnail"]["file"];
$prevTips = "";// ";
}
}
elseif($isVideo)
{
if(isset($sd["thumbnailGIF"]["width"]) && $usrRight[$occu["base_id"]]['canpreview']=='1')
{
$prev = "directprev.php?type=thumbnailGIF&bas=".$occu["base_id"]."&rec=".$occu["record_id"];
$prevTips = " ";
}
}
elseif($isDocument)
{
}
elseif($isAudio)
{
if(isset($sd["preview"]["width"]) && $usrRight[$occu["base_id"]]['canpreview']=='1')
{
$prev = "/include/directprev.php%3Ftype%3Dpreview%26bas%3D".$occu["base_id"]."%26rec%3D".$occu["record_id"];
$prevTips = "";
}
}
}
?>
_');">
_');">
', '');">
_" title="",'"'),$light_info)?>">
_">
| '.$light_info)?> |