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 = '
'._('client::answers: rapport de questions par bases').'
'; foreach($qrySbas as $sbas=>$qryBas) $qrys .= '
'.phrasea::sbas_names($sbas).'
'.$qryBas.'
'; $txt = "".substr($parm['qry'],0,36).($longueur>36?"...":"")."" . sprintf(_('client::answers: %d reponses'),(int)$nbanswers)."  ".(GV_debug?$timeAsk:'') ; ?> $max ) { for($p=0; $p<$npages; $p++) { if($p == $page) $pages .= ''.($p+1).''; elseif( ( $p>= ($page-$ecart) ) && ( $p<= ($page+$ecart) )) $pages .= ''.($p+1).''; elseif( ($page<($ecart+2)) && ($p < ($max-$ecart+2) ) ) // si je suis dans les premieres pages ... $pages .= ''.($p+1).''; elseif( ($page>=($npages-$ecart-2)) && ($p >= ($npages-(2*$ecart)-2) ) ) // si je suis dans les dernieres pages ... $pages .= ''.($p+1).''; elseif( $p==($npages-1)) // c"est la derniere $pages .= '...'.($p+1).''; elseif( $p==0) // c"est la premiere $pages .= ''.($p+1).'...'; if( ($p == $page) || ( ( $p>= ($page-$ecart) ) && ( $p<= ($page+$ecart) )) || ( ($page<($ecart+2)) && ($p < ($max-$ecart+2) ) ) || ( ($page>=($npages-$ecart-2)) && ($p >= ($npages-(2*$ecart)-2) ) ) || ( $p==0) ) $pages .= ' - '; } } else { for($p=0; $p<$npages; $p++) { if($p == $page) $pages .= ''.($p+1).''; else $pages .= ''.($p+1).''; if($p+1<$npages) $pages .= ' - '; } } $string2 = $pages.''; ?>

'; $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 .= ""; } else { if(trim($statbit["img_off"]) != '') $status .= ""; } } } } $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 = "
"; } } } ?>
'.$duration.''; } if($isAudio){ $duration = answer::get_duration($occu["xml"]); if($duration != '00:00') echo '
'.$duration.'
'; } $onclick = ""; if(phrasea_isgrp($ses_id, $occu["base_id"], $occu["record_id"])) { $onclick='openPreview(\'REG\',0,\''.$occu["base_id"].'_'.$occu["record_id"].'\');'; } else { $onclick='openPreview(\'RESULT\','.$courcahnum.');'; } if($mod_col == '1') $pic_roll = $prevTips; else $pic_roll = $caption; $pic_roll = str_replace(array('&','"'),array('&','"'),$pic_roll); ?> captionTips" id="IMG_" src="" title="" />
'.collection::getLogo($occu['base_id']); $minilogos .= '
'; echo $minilogos; if( ($usrRight[$occu["base_id"]]["candwnldpreview"] || $usrRight[$occu["base_id"]]["candwnldhd"] || $usrRight[$occu["base_id"]]["cancmd"]) ) { ?>
_');">
_');">
', '');">
_" title="",'"'),$light_info)?>">
_"> 
'.$light_info)?>
'; $b = true; foreach($proposals["BASES"] as $zbase) { if((int)(count($proposals["BASES"]) > 1) && count($zbase["TERMS"])>0) { $style = $b? 'style="margin-top:0px;"':''; $b = false; $html .= "

" . sprintf(_('reponses::propositions pour la base %s'), htmlentities($zbase["NAME"])) . "

"; } $t = true; foreach($zbase["TERMS"] as $path=>$props) { $style = $t? 'style="margin-top:0px;"':''; $t = false; $html .= "

" . sprintf(_('reponses::propositions pour le terme %s'), htmlentities($props["TERM"])) . "

"; $html .= $props["HTML"]; } } $html .= ''; return($html); }