source: pmb4.2/trunk/fuentes/pmb/circ/resa_planning/authors/expl.inc.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 6.7 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: expl.inc.php,v 1.6.2.1 2015-08-14 10:30:03 dbellamy Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8// accès à une notice par code-barre, ISBN, ou numéro commercial ou par CB exemplaire
9
10//droits d'acces lecture notice
11$acces_j='';
12if ($gestion_acces_active==1 && $gestion_acces_user_notice==1) {
13        require_once("$class_path/acces.class.php");
14        $ac= new acces();
15        $dom_1= $ac->setDomain(1);
16        $acces_j = $dom_1->getJoin($PMBuserid,4,'notice_id');
17}
18// on commence par voir ce que la saisie utilisateur est ($ex_query)
19$ex_query_original = $ex_query;
20$ex_query = clean_string($ex_query);
21
22$EAN = '';
23$isbn = '';
24$code = '';
25$rqt_bulletin = 0;
26
27if(isEAN($ex_query)) {
28        // la saisie est un EAN -> on tente de le formater en ISBN
29        $EAN=$ex_query;
30        $isbn = EANtoISBN($ex_query);
31        // si échec, on prend l'EAN comme il vient
32        if(!$isbn)
33                $code = str_replace("*","%",$ex_query);
34        else {
35                $code=$isbn;
36                $code10=formatISBN($code,10);
37        }
38} else {
39        if(isISBN($ex_query)) {
40                // si la saisie est un ISBN
41                $isbn = formatISBN($ex_query);
42                // si échec, ISBN erroné on le prend sous cette forme
43                if(!$isbn)
44                        $code = str_replace("*","%",$ex_query);
45                else {
46                        $code10=$isbn ;
47                        $code=formatISBN($code10,13);
48                }
49        } else {
50                // ce n'est rien de tout ça, on prend la saisie telle quelle
51                $code = str_replace("*","%",$ex_query);
52                // filtrer par typdoc_query si selectionné
53                if($typdoc_query) $where_typedoc=" and typdoc='$typdoc_query' ";
54        }
55}
56
57if ($EAN && $isbn) {
58
59        // cas des EAN purs : constitution de la requête
60        $requete = "SELECT distinct notices.* FROM notices ";
61        $requete.= $acces_j;
62        $requete.= "join exemplaires on notices.notice_id=exemplaires.expl_notice ";
63        $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";
64        $myQuery = pmb_mysql_query($requete, $dbh);
65       
66} elseif ($isbn) {
67
68        // recherche d'un isbn
69        $requete = "SELECT distinct notices.* FROM notices ";
70        $requete.= $acces_j;
71        $requete.= "join exemplaires on notices.notice_id=exemplaires.expl_notice ";
72        $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";
73        $myQuery = pmb_mysql_query($requete, $dbh);
74        if(pmb_mysql_num_rows($myQuery)==0) {
75                // rien trouvé en monographie
76                // cas où un exemplaire de bulletin correspond à un ISBN
77                $requete = "SELECT distinct notices.*, bulletin_id FROM notices ";
78                $requete.= $acces_j;
79                $requete.= "join bulletins on bulletin_notice=notice_id join exemplaires on (bulletin_id=expl_bulletin and expl_notice=0) ";
80                $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') ";
81                $requete.= "GROUP BY bulletin_id limit 10";
82                $rqt_bulletin=1;
83        }
84} elseif ($code) {
85
86        // recherche d'un exemplaire
87        // note : le code est recherché aussi dans le champ code des notices
88        // (cas des code-barres disques qui échappent à l'EAN)
89        $requete = "SELECT distinct notices.* FROM notices ";
90        $requete.= $acces_j;
91        $requete.= "join exemplaires on notices.notice_id=exemplaires.expl_notice ";
92        $requete.= "WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR notices.code like '$code') limit 10";
93        $myQuery = pmb_mysql_query($requete, $dbh);
94        if(pmb_mysql_num_rows($myQuery)==0) {
95                // rien trouvé en monographie
96                $requete = "SELECT distinct notices.*, bulletin_id FROM notices ";
97                $requete.= $acces_j;
98                $requete.= "join bulletins on bulletin_notice=notice_id join exemplaires on (bulletin_id=expl_bulletin and expl_notice=0) ";
99                $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') ";
100                $requete.= " GROUP BY bulletin_id limit 10";
101                $rqt_bulletin=1;
102        }
103
104} else {
105       
106        error_message($msg[235], $msg[307]." $ex_query".($pmb_allow_external_search?"<br /><a href='./catalog.php?categ=search&mode=7&external_type=simple&from_mode=0&code=".rawurlencode($ex_query)."'>".$msg["connecteurs_external_search_sources"]."</a>":""), 1, "./catalog.php?categ=search&mode=0");
107        die();
108       
109}
110if ($rqt_bulletin!=1) {
111        if(pmb_mysql_num_rows($myQuery)) {
112                if(pmb_mysql_num_rows($myQuery) > 1) {
113                        // la recherche fournit plusieurs résultats !!!
114                        // boucle de parcours des notices trouvées
115                        // inclusion du javascript de gestion des listes dépliables
116                        // début de liste
117                        print $begin_result_liste;
118                while($notice = pmb_mysql_fetch_object($myQuery)) {
119                                if($notice->niveau_biblio != 's' && $notice->niveau_biblio != 'a') {
120                                        // notice de monographie (les autres n'ont pas de code ni d'exemplaire !!! ;-)
121                                        $link = "./circ.php?categ=resa_planning&resa_action=add_resa&id_empr=$id_empr&groupID=$groupID&id_notice=!!id!!";
122                                        $display = new mono_display($notice, 6, $link, 1, '', '', '', 1);
123                                        print $display->result;
124                                }
125                        }
126                        print $end_result_liste;
127                } else {
128                $notice = pmb_mysql_fetch_object($myQuery);
129                                        // un seul résultat
130                        print "<script type=\"text/javascript\">";
131                        print "document.location = \"./circ.php?categ=resa_planning&resa_action=add_resa&id_empr=$id_empr&groupID=$groupID&id_notice=".$notice->notice_id."\"";
132                        print "</script>";
133                }
134        } else {
135                print $RESA_author_query;
136                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");
137        }
138                }  else {
139        // C'est un périodique
140        $res = @pmb_mysql_query($requete, $dbh);
141        if (pmb_mysql_num_rows($res)) {
142                if(pmb_mysql_num_rows($res) > 1) {
143                        print $begin_result_liste;
144                        while (($n=pmb_mysql_fetch_object($res))) {
145                                $link_bulletin = "./circ.php?categ=resa_planning&resa_action=add_resa&id_empr=$id_empr&groupID=$groupID&id_bulletin=!!id!!";
146                                require_once ("$class_path/serials.class.php") ;
147                                require_once ("$include_path/bull_info.inc.php") ;
148                                $n->isbd = show_bulletinage_info_resa($n->bulletin_id, $link_bulletin);
149                                print $n->isbd ;
150                        }
151                        print $end_result_liste;
152                } else {
153                        $n=pmb_mysql_fetch_object($res);
154                        // un seul résultat
155                        print "<script type=\"text/javascript\">";
156                        print "document.location = \"./circ.php?categ=resa_planning&resa_action=add_resa&id_empr=$id_empr&groupID=$groupID&id_bulletin=".$n->bulletin_id."\"";
157                        print "</script>";
158                }
159        } else {
160                print $RESA_author_query;
161                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");
162        }
163}
Note: See TracBrowser for help on using the repository browser.