source: pmb4.1/trunk/fuentes/pmb/circ/resa/authors/expl.inc.php @ 478

Last change on this file since 478 was 478, checked in by mabarracus, 4 years ago

copy trusty code 4.1

  • Property svn:executable set to *
File size: 6.2 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.12 2007-10-03 17:51:07 gueluneau Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9// accès à une notice par code-barre, ISBN, ou numéro commercial
10// on commence par voir ce que la saisie utilisateur est ($ex_query)
11
12$ex_query = clean_string($ex_query);
13
14$EAN = '';
15$isbn = '';
16$code = '';
17
18if(isEAN($ex_query)) {
19        // la saisie est un EAN -> on tente de le formater en ISBN
20        $EAN=$ex_query;
21        $isbn = EANtoISBN($ex_query);
22        // si échec, on prend l'EAN comme il vient
23        if(!$isbn) 
24                $code = str_replace("*","%",$ex_query);
25        else {
26                $code=$isbn;
27                $code10=formatISBN($code,10);
28        }
29} else {
30        if(isISBN($ex_query)) {
31                // si la saisie est un ISBN
32                $isbn = formatISBN($ex_query);
33                // si échec, ISBN erroné on le prend sous cette forme
34                if(!$isbn) 
35                        $code = str_replace("*","%",$ex_query);
36                else {
37                        $code10=$isbn ;
38                        $code=formatISBN($code10,13);
39                }
40        } else {
41                // ce n'est rien de tout ça, on prend la saisie telle quelle
42                $code = str_replace("*","%",$ex_query);
43        }
44}
45                       
46if ($EAN && $isbn) {
47        // cas des EAN purs : constitution de la requête
48        $requete = "SELECT distinct notices.* FROM (notices left join exemplaires on notices.notice_id=exemplaires.expl_notice)";
49        $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";
50        $myQuery = mysql_query($requete, $dbh);
51} elseif ($isbn) {
52        // recherche d'un isbn
53        $requete = "SELECT distinct notices.* FROM (notices left join exemplaires on notices.notice_id=exemplaires.expl_notice)";
54        $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";
55        $myQuery = mysql_query($requete, $dbh);
56} elseif ($code) {
57        // recherche d'un exemplaire
58        // note : le code est recherché aussi dans le champ code des notices
59        // (cas des code-barres disques qui échappent à l'EAN)
60        //
61        $requete = "SELECT distinct notices.* FROM (notices left join exemplaires on notices.notice_id=exemplaires.expl_notice)";
62        $requete .= " WHERE niveau_biblio='m' AND (exemplaires.expl_cb like '$code' OR notices.code like '$code') limit 10";
63        $myQuery = mysql_query($requete, $dbh);
64        if(mysql_num_rows($myQuery)==0) {
65                // rien trouvé en monographie
66                $requete = 'SELECT distinct notices.*, expl_bulletin, bulletin_id FROM notices left join bulletins on bulletin_notice=notice_id left join exemplaires on (bulletin_id=expl_bulletin and expl_notice=0) ';
67                $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') ";
68                $requete .= " GROUP BY bulletin_id limit 10";
69                $rqt_bulletin=1;
70        }
71} 
72
73if ($rqt_bulletin!=1) {
74        if(mysql_num_rows($myQuery)) {
75                if(mysql_num_rows($myQuery) > 1) {
76                        // la recherche fournit plusieurs résultats !!!
77                        // boucle de parcours des notices trouvées
78                        // inclusion du javascript de gestion des listes dépliables
79                        // début de liste
80                        print $begin_result_liste;
81                        while($notice = mysql_fetch_object($myQuery)) {
82                                if($notice->niveau_biblio != 's' && $notice->niveau_biblio != 'a') {
83                                        // notice de monographie (les autres n'ont pas de code ni d'exemplaire !!! ;-)
84                                        if ($categ=="visu_rech") {
85                                                if (SESSrights & CATALOGAGE_AUTH) {
86                                                        $link = "./catalog.php?categ=isbd&id=!!id!!" ;
87                                                        } else $link="" ;
88                                                } else $link = "./circ.php?categ=resa&id_empr=$id_empr&groupID=$groupID&id_notice=!!id!!";
89                                        $display = new mono_display($notice, 6, $link, 1, "", "", "", 1);
90                                        //($id, $level=1, $action='', $expl=1, $expl_link='', $lien_suppr_cart="", $explnum_link='', $show_resa=0 )
91                                        print pmb_bidi($display->result);
92                                        } 
93                                }
94                        print $end_result_liste;
95                        } else {
96                                $notice = mysql_fetch_object($myQuery);
97                                if ($categ=="visu_rech") {
98                                        if (SESSrights & CATALOGAGE_AUTH) {
99                                                $link = "./catalog.php?categ=isbd&id=!!id!!" ;
100                                                } else $link="" ;
101                                        print $begin_result_liste;
102                                        $display = new mono_display($notice, 6, $link, 1, "", "", "", 1);
103                                        print pmb_bidi($display->result);
104                                        print $end_result_liste;
105                                        } else {
106                                                print "<div class=\"row\"><div class=\"msg-perio\">".$msg[recherche_encours]."</div></div>";
107                                                // un seul résultat
108                                                print "<script type=\"text/javascript\">";
109                                                print "document.location = \"./circ.php?categ=resa&id_empr=$id_empr&groupID=$groupID&id_notice=".$notice->notice_id."\"";
110                                                print "</script>";
111                                                }
112                                }
113                } else {
114                        print $RESA_author_query;
115                        error_message($msg[235], $msg[307]." $ex_query", 0, "./circ.php?categ=resa&id_empr=$id_empr&groupID=$groupID&mode=0");
116                        }
117        } else {
118                // C'est un périodique
119                $res = @mysql_query($requete, $dbh);
120                if (mysql_num_rows($res)) {
121                        print $begin_result_liste;
122                        while (($n=mysql_fetch_object($res))) {
123                                if ($categ=="visu_rech") {
124                                        if (SESSrights & CATALOGAGE_AUTH) {
125                                                $link_serial = "./catalog.php?categ=serials&sub=view&serial_id=!!id!!";
126                                                $link_analysis = "";
127                                                $link_bulletin = "./catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=!!id!!";
128                                                } else {
129                                                        $link_serial = "";
130                                                        $link_analysis = "";
131                                                        $link_bulletin = "";
132                                                        }
133                                        require_once ("$include_path/bull_info.inc.php") ;
134                                        require_once ("$class_path/serials.class.php") ;
135                                        $expl->isbd = show_bulletinage_info($n->bulletin_id);
136                                        print pmb_bidi($expl->isbd) ;
137                                        // JUSQU'ICI
138                                        } else {
139                                                $link_serial = "./circ.php?categ=resa&id_empr=$id_empr&groupID=$groupID&mode=view_serial&serial_id=!!id!!";
140                                                $link_analysis = "";
141                                                $link_bulletin = "./circ.php?categ=resa&id_empr=$id_empr&groupID=$groupID&id_bulletin=!!id!!";
142                                                $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin);
143                                                print pmb_bidi($serial->result);
144                                                }
145                                }
146                        print $end_result_liste;
147                        } else {
148                                print $RESA_author_query;
149                                error_message($msg[235], $msg[307]." $ex_query", 0, "./circ.php?categ=resa&id_empr=$id_empr&groupID=$groupID&mode=0");
150                                }
151                }
152
Note: See TracBrowser for help on using the repository browser.