setDomain(1);
$acces_j = $dom_1->getJoin($PMBuserid,4,'notice_id');
}
// on commence par voir ce que la saisie utilisateur est ($ex_query)
$ex_query_original = $ex_query;
$ex_query = clean_string($ex_query);
$EAN = '';
$isbn = '';
$code = '';
$rqt_bulletin = 0;
if(isEAN($ex_query)) {
// la saisie est un EAN -> on tente de le formater en ISBN
$EAN=$ex_query;
$isbn = EANtoISBN($ex_query);
// si échec, on prend l'EAN comme il vient
if(!$isbn)
$code = str_replace("*","%",$ex_query);
else {
$code=$isbn;
$code10=formatISBN($code,10);
}
} else {
if(isISBN($ex_query)) {
// si la saisie est un ISBN
$isbn = formatISBN($ex_query);
// si échec, ISBN erroné on le prend sous cette forme
if(!$isbn)
$code = str_replace("*","%",$ex_query);
else {
$code10=$isbn ;
$code=formatISBN($code10,13);
}
} else {
// ce n'est rien de tout ça, on prend la saisie telle quelle
$code = str_replace("*","%",$ex_query);
// filtrer par typdoc_query si selectionné
if(!empty($typdoc_query)) $where_typedoc=" and typdoc in ('".implode("','", $typdoc_query)."') ";
}
}
if ($EAN && $isbn) {
// cas des EAN purs : constitution de la requête
$requete = "SELECT distinct notices.* FROM notices ";
$requete.= $acces_j;
$requete.= "join exemplaires on notices.notice_id=exemplaires.expl_notice ";
$requete.= "WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR exemplaires.expl_cb='$ex_query' OR notices.code in ('$code','$EAN'".($code10?",'$code10'":"").")) limit 10";
$myQuery = pmb_mysql_query($requete);
} elseif ($isbn) {
// recherche d'un isbn
$requete = "SELECT distinct notices.* FROM notices ";
$requete.= $acces_j;
$requete.= "join exemplaires on notices.notice_id=exemplaires.expl_notice ";
$requete.= "WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR exemplaires.expl_cb='$ex_query' OR notices.code in ('$code'".($code10?",'$code10'":"").")) limit 10";
$myQuery = pmb_mysql_query($requete);
if(pmb_mysql_num_rows($myQuery)==0) {
// rien trouvé en monographie
// cas où un exemplaire de bulletin correspond à un ISBN
$requete = "SELECT distinct notices.*, bulletin_id FROM notices ";
$requete.= $acces_j;
$requete.= "join bulletins on bulletin_notice=notice_id join exemplaires on (bulletin_id=expl_bulletin and expl_notice=0) ";
$requete.= "WHERE niveau_biblio='s' AND (exemplaires.expl_cb like '$ex_query' OR bulletin_numero like '$ex_query' OR bulletin_cb like '$ex_query' OR notices.code like '$ex_query') ";
$requete.= "GROUP BY bulletin_id limit 10";
$rqt_bulletin=1;
}
} elseif ($code) {
// recherche d'un exemplaire
// note : le code est recherché aussi dans le champ code des notices
// (cas des code-barres disques qui échappent à l'EAN)
$requete = "SELECT distinct notices.* FROM notices ";
$requete.= $acces_j;
$requete.= "join exemplaires on notices.notice_id=exemplaires.expl_notice ";
$requete.= "WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR notices.code like '$code') limit 10";
$myQuery = pmb_mysql_query($requete);
if(pmb_mysql_num_rows($myQuery)==0) {
// rien trouvé en monographie
$requete = "SELECT distinct notices.*, bulletin_id FROM notices ";
$requete.= $acces_j;
$requete.= "join bulletins on bulletin_notice=notice_id join exemplaires on (bulletin_id=expl_bulletin and expl_notice=0) ";
$requete.= " WHERE niveau_biblio='s' AND (exemplaires.expl_cb like '$code' OR bulletin_numero like '$code' OR bulletin_cb like '$code' OR notices.code like '$code') ";
$requete.= " GROUP BY bulletin_id limit 10";
$rqt_bulletin=1;
}
} else {
error_message($msg[235], $msg[307]." $ex_query".($pmb_allow_external_search?"
".$msg["connecteurs_external_search_sources"]."":""), 1, "./catalog.php?categ=search&mode=0");
die();
}
if ($rqt_bulletin!=1) {
if(pmb_mysql_num_rows($myQuery)) {
if(pmb_mysql_num_rows($myQuery) > 1) {
// la recherche fournit plusieurs résultats !!!
// boucle de parcours des notices trouvées
// inclusion du javascript de gestion des listes dépliables
// début de liste
print $begin_result_liste;
while($notice = pmb_mysql_fetch_object($myQuery)) {
if($notice->niveau_biblio != 's' && $notice->niveau_biblio != 'a') {
// notice de monographie (les autres n'ont pas de code ni d'exemplaire !!! ;-)
$link = "./circ.php?categ=resa_planning&resa_action=add_resa&id_empr=$id_empr&groupID=$groupID&id_notice=!!id!!";
$display = new mono_display($notice, 6, $link, 1, '', '', '', 1);
print $display->result;
}
}
print $end_result_liste;
} else {
$notice = pmb_mysql_fetch_object($myQuery);
// un seul résultat
print "";
}
} else {
error_message($msg[235], $msg[307]." $ex_query", 0, "./circ.php?categ=resa_planning&resa_action=search_resa&id_empr=$id_empr&groupID=$groupID&mode=0");
}
} else {
// C'est un périodique
$res = @pmb_mysql_query($requete);
if (pmb_mysql_num_rows($res)) {
if(pmb_mysql_num_rows($res) > 1) {
print $begin_result_liste;
while (($n=pmb_mysql_fetch_object($res))) {
$link_bulletin = "./circ.php?categ=resa_planning&resa_action=add_resa&id_empr=$id_empr&groupID=$groupID&id_bulletin=!!id!!";
require_once ("$class_path/serials.class.php") ;
require_once ("$include_path/bull_info.inc.php") ;
$n->isbd = show_bulletinage_info_resa($n->bulletin_id, $link_bulletin);
print $n->isbd ;
}
print $end_result_liste;
} else {
$n=pmb_mysql_fetch_object($res);
// un seul résultat
print "";
}
} else {
error_message($msg[235], $msg[307]." $ex_query", 1, "./circ.php?categ=resa_planning&resa_action=search_resa&id_empr=$id_empr&groupID=$groupID&mode=0");
}
}