source: pmb4.1/trunk/fuentes/pmb/classes/searcher.class.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: 139.4 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: searcher.class.php,v 1.120 2014-03-07 11:13:19 dgoron Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9//Classe de recherche en catalogage...
10
11require_once("$class_path/analyse_query.class.php");
12require_once("$class_path/thesaurus.class.php");
13require_once("$class_path/sort.class.php");
14require_once("$include_path/templates/searcher_templates.tpl.php");
15
16
17//droits d'acces lecture notice
18$acces_j='';
19if ($gestion_acces_active==1 && $gestion_acces_user_notice==1) {
20        require_once("$class_path/acces.class.php");
21        $ac= new acces();
22        $dom_1= $ac->setDomain(1);
23        $acces_j = $dom_1->getJoin($PMBuserid,4,'notice_id');
24} 
25
26
27//Classe générique de recherche
28
29define("AUT_LIST",1);
30define("NOTICE_LIST",2);
31define("AUT_SEARCH",3);
32
33class searcher {
34
35        var $type;                    //Type de recherche
36        var $etat;                    //Etat de la recherche
37        var $page;                    //Page courante de la recherche
38        var $nbresults;               //Nombre de résultats de la dernière recherche
39        var $nbepage;
40        var $nb_per_page;
41        var $id;                        //Numéro d'autorité pour la recherche
42        var $store_form;                //Formulaire contenant les infos de navigation plus des champs pour la recherche
43        var $base_url;
44        var $first_search_result;
45        var $text_query;
46        var $text_query_tri;                    //pour les tris texte de la requête d'origine modifié par la classe tri
47        var $human_query;
48        var $human_notice_query;
49        var $human_aut_query;
50        var $docnum;
51        var $direct=0;
52        var $rec_history=false;
53        var $sort;
54       
55        //Constructeur
56        function searcher($base_url,$rec_history=false) {
57                global $type,$etat,$aut_id,$page, $docnum_query,$auto_postage_query;
58
59                $this->sort = new sort('notices','base');
60                $this->type=$type;
61                $this->etat=$etat;
62                $this->page=$page;
63                $this->id=$aut_id;
64                $this->base_url=$base_url;
65                $this->rec_history=$rec_history;
66                $this->docnum = ($docnum_query?1:0);
67                $this->auto_postage_query = ($auto_postage_query?1:0);
68                $this->run();
69        }
70
71        function make_store_form() {
72                $this->store_form="<form name='store_search' action='".$this->base_url."' method='post' style='display:none'>
73                <input type='hidden' name='type' value='".$this->type."'/>
74                <input type='hidden' name='etat' value='".$this->etat."'/>
75                <input type='hidden' name='page' value='".$this->page."'/>";
76                $this->store_form.="!!first_search_variables!!";
77                $this->store_form.="</form>";
78        }
79
80        function pager() {
81                global $msg;
82
83                if (!$this->nbresults) return;
84               
85                $suivante = $this->page+1;
86                $precedente = $this->page-1;
87                if (!$this->page) $page_en_cours=0 ;
88                        else $page_en_cours=$this->page ;
89                               
90                // affichage du lien précédent si nécéssaire
91                if($precedente >= 0)
92                                $nav_bar .= "<a href='#' onClick=\"document.store_search.page.value=$precedente; document.store_search.submit(); return false;\"><img src='./images/left.gif' border='0'  title='$msg[48]' alt='[$msg[48]]' hspace='3' align='middle'></a>";
93
94                $deb = $page_en_cours - 10 ;
95                if ($deb<0) $deb=0;
96                for($i = $deb; ($i < $this->nbepage) && ($i<$page_en_cours+10); $i++) {
97                        if($i==$page_en_cours) $nav_bar .= "<strong>".($i+1)."</strong>";
98                                else $nav_bar .= "<a href='#' onClick=\"document.store_search.page.value=$i; document.store_search.submit(); return false;\">".($i+1)."</a>";
99                        if($i<$this->nbepage) $nav_bar .= " "; 
100                        }
101       
102                if($suivante<$this->nbepage)
103                                $nav_bar .= "<a href='#' onClick=\"document.store_search.page.value=$suivante; document.store_search.submit(); return false;\"><img src='./images/right.gif' border='0' title='$msg[49]' alt='[$msg[49]]' hspace='3' align='middle'></a>";
104
105                // affichage de la barre de navigation
106                print "<div align='center'>$nav_bar</div>";
107        }
108
109        function show_notice() {
110        }
111       
112       
113        function run() {
114                if (!$this->etat) {
115                                $this->show_form();
116                } else {
117                                switch ($this->etat) {
118                                        case "first_search":
119                                                $r=$this->make_first_search();
120                                                //echo "req first:".$this->text_query."<br />";
121                                                $this->first_search_result=$r;
122                                                switch ($r) {
123                                                                case AUT_LIST:
124                                                                        $this->make_store_form();
125                                                                        $this->store_search();
126                                                                        $this->aut_list();
127                                                                        $this->pager();
128                                                                        break;
129                                                                case NOTICE_LIST:
130                                                                        $this->make_store_form();
131                                                                        $this->store_search();
132                                                                        $this->sort_notices();
133                                                                        $this->notice_list();
134                                                                        $this->pager();
135                                                                        break;
136                                                                case AUT_SEARCH:
137                                                                        $this->etat="aut_search";
138                                                                        $this->direct=1;
139                                                                        $this->make_aut_search();
140                                                                        $this->make_store_form();
141                                                                        $this->aut_store_search();
142                                                                        $this->sort_notices();
143                                                                        $this->aut_notice_list();
144                                                                        $this->pager();
145                                                                        break;
146                                                }
147                                                if ($this->rec_history)
148                                                                $this->rec_env();
149                                                break;
150                                        case "aut_search":
151                                                $this->make_aut_search();
152                                                $this->make_store_form();
153                                                $this->aut_store_search();
154                                                $this->sort_notices();
155                                                $this->aut_notice_list();
156                                                $this->pager();
157                                                if ($this->rec_history)
158                                                                $this->rec_env();
159                                                break;
160                                }
161                }
162        }
163       
164
165        function show_form() {
166                //A surcharger par la fonction qui affiche le formulaire de recherche
167        }
168
169        function make_first_search() {
170                //A surcharger par la fonction qui fait la première recherche après la soumission du formulaire de recherche
171                //La fonction renvoie AUT_LIST (le résultat de la recherche est une liste d'autorité)
172                //ou NOTICE_LIST (le résultat de la recherche est une liste de notices)
173                //La fonction doit mettre à jour le nombre de résultats dans $this->nbresults
174        }
175
176        function make_aut_search() {
177                //A surcharger par la fonction qui fait la recherche des notices à partir d'un numéro d'autorité (stoqué dans $this->id)
178                //La fonction doit mettre à jour le nombre de résultats dans $this->nbresults
179        }
180
181        function store_search() {
182                //A surcharger par la fonction qui écrit les variables du formulaire "store_search" pour stoquer les champs de recherche
183                //En liste de résultat de la première recherche. Il faut remplacer la chaine "!!first_search_variables!!" dans $this->store_form
184        }
185
186        function aut_store_search() {
187                //A surcharger par la fonction qui écrit les variables du formulaire "store_search" pour stoquer les champs de recherche
188                //En liste de résultat de la première recherche. Il faut remplacer la chaine "!!first_search_variables!!" dans $this->store_form
189        }
190
191        function aut_list() {
192                //A surcharger par la fonction qui affiche la liste des autorités issues de la première recherche
193        }
194
195        function notice_list() {
196                //A surcharger par la fonction qui affiche la liste des notices issues de la première recherche
197        }
198
199        function aut_notice_list() {
200                //A surcharger par la fonction qui affiche la liste des notice sous l'autorité $this->id
201        }
202
203        function rec_env() {
204                //A surcharger pa la fonction qui enregistre
205        }
206
207        static function convert_simple_multi($id_champ) {
208                //A surcharger par la fonction qui convertit des recherches simples en multi-critères
209        }
210
211        function sort_notices() {
212                global $msg;
213                global $pmb_nb_max_tri;
214               
215                if ($this->nbresults<=$pmb_nb_max_tri) {
216                        if ($_SESSION["tri"]) {
217                                //$this->text_query_tri = $this->text_query;
218                                //$this->text_query_tri = str_replace("limit ".$this->page*$this->nb_per_page.",".$this->nb_per_page, "limit 0,".$this->nbresults,$this->text_query_tri);
219                               
220                                //if ($this->nb_per_page) {
221                                        //$this->sort->limit = "limit ".$this->page*$this->nb_per_page.",".$this->nb_per_page;
222                                //}
223                                //$this->text_query_tri = $this->sort->appliquer_tri($_SESSION["tri"],$this->text_query,"notice_id");
224                                if ($this->nb_per_page) {
225                                        $this->text_query_tri = $this->sort->appliquer_tri($_SESSION["tri"],$this->text_query,"notice_id", $this->page*$this->nb_per_page, $this->nb_per_page);
226                                        //$this->text_query_tri .= " LIMIT ".$this->page*$this->nb_per_page.",".$this->nb_per_page;
227                                } else {
228                                        $this->text_query_tri = $this->sort->appliquer_tri($_SESSION["tri"],$this->text_query,"notice_id",0,0);
229                                       
230                                }
231                                //echo ($this->text_query_tri."<br />");
232                                $this->t_query = @mysql_query($this->text_query_tri);
233                       
234                                if (!$this->t_query) {
235                                        print mysql_error();   
236                                }
237                        } else {
238                                if (strpos($this->text_query,"limit")===false) {
239                                        if ($this->nb_per_page) {
240                                                $this->text_query .= "limit ".$this->page*$this->nb_per_page.",".$this->nb_per_page;
241                                        }
242                                } else {
243                                        if ($this->nb_per_page) {
244                                                $this->text_query = str_replace("limit 0,".$this->nbresults,"limit ".$this->page*$this->nb_per_page.",".$this->nb_per_page,$this->text_query);
245                                        }
246                                }       
247                                $this->t_query=@mysql_query($this->text_query); 
248                        }
249                } else {
250                        if (strpos($this->text_query,"limit")===false) {
251                                if ($this->nb_per_page) {
252                                        $this->text_query .= "limit ".$this->page*$this->nb_per_page.",".$this->nb_per_page;
253                                }
254                        } else {
255                                if ($this->nb_per_page) {
256                                        $this->text_query = str_replace("limit 0,".$this->nbresults,"limit ".$this->page*$this->nb_per_page.",".$this->nb_per_page,$this->text_query);
257                                }
258                        }
259                        $this->t_query = @mysql_query($this->text_query);       
260                }
261        }
262}
263
264
265class searcher_title extends searcher {
266        var $t_query;
267
268        function show_form() {
269                global $msg;
270                global $dbh;
271                global $charset,$lang;
272                global $NOTICE_author_query;
273                global $title_query,$all_query, $author_query,$ex_query,$typdoc_query, $statut_query, $docnum_query, $pmb_indexation_docnum_allfields, $pmb_indexation_docnum;
274                global $categ_query,$thesaurus_auto_postage_search,$auto_postage_query;
275                // on commence par créer le champ de sélection de document
276                // récupération des types de documents utilisés.
277                $query = "SELECT count(typdoc), typdoc ";
278                $query .= "FROM notices where typdoc!='' GROUP BY typdoc";
279                $result = @mysql_query($query, $dbh);
280                $toprint_typdocfield .= "  <option value=''>$msg[tous_types_docs]</option>\n";
281                $doctype = new marc_list('doctype');
282                while (($rt = mysql_fetch_row($result))) {
283                        $obj[$rt[1]]=1;
284                        $qte[$rt[1]]=$rt[0];
285                }       
286                foreach ($doctype->table as $key=>$libelle){
287                        if ($obj[$key]==1){
288                                $toprint_typdocfield .= "  <option ";
289                                $toprint_typdocfield .= " value='$key'";
290                                if ($typdoc == $key) $toprint_typdocfield .=" selected='selected' ";
291                                $toprint_typdocfield .= ">".htmlentities($libelle." (".$qte[$key].")",ENT_QUOTES, $charset)."</option>\n";
292                        }
293                }
294
295                // récupération des statuts de documents utilisés.
296                $query = "SELECT count(statut), id_notice_statut, gestion_libelle ";
297                $query .= "FROM notices, notice_statut where id_notice_statut=statut GROUP BY id_notice_statut order by gestion_libelle";
298                $result = mysql_query($query, $dbh);
299                $toprint_statutfield .= "  <option value=''>$msg[tous_statuts_notice]</option>\n";
300                while ($obj = @mysql_fetch_row($result)) {
301                                $toprint_statutfield .= "  <option value='$obj[1]'";
302                                if ($statut_query==$obj[1]) $toprint_statutfield.=" selected";
303                                $toprint_statutfield .=">".htmlentities($obj[2]."  (".$obj[0].")",ENT_QUOTES, $charset)."</OPTION>\n";
304                }
305
306                $NOTICE_author_query = str_replace("!!typdocfield!!", $toprint_typdocfield, $NOTICE_author_query);
307                $NOTICE_author_query = str_replace("!!statutfield!!", $toprint_statutfield, $NOTICE_author_query);
308                $NOTICE_author_query = str_replace("!!title_query!!",  htmlentities(stripslashes($title_query ),ENT_QUOTES, $charset),  $NOTICE_author_query);
309                $NOTICE_author_query = str_replace("!!all_query!!", htmlentities(stripslashes($all_query),ENT_QUOTES, $charset),  $NOTICE_author_query);
310                $NOTICE_author_query = str_replace("!!author_query!!", htmlentities(stripslashes($author_query),ENT_QUOTES, $charset),  $NOTICE_author_query);
311                $NOTICE_author_query = str_replace("!!categ_query!!", htmlentities(stripslashes($categ_query),ENT_QUOTES, $charset),  $NOTICE_author_query);
312               
313                $checkbox="";
314                if($thesaurus_auto_postage_search){                     
315                        $checkbox = "
316                        <div class='colonne'>
317                                <div class='row'>
318                                        <input type='checkbox' !!auto_postage_checked!! id='auto_postage_query' name='auto_postage_query'/><label for='auto_postage_query'>".$msg["search_autopostage_check"]."</label>
319                                </div>
320                        </div>";
321                        $checkbox = str_replace("!!auto_postage_checked!!",   (($auto_postage_query) ? 'checked' : ''),  $checkbox);                   
322                } 
323                $NOTICE_author_query = str_replace("!!auto_postage!!",   $checkbox,  $NOTICE_author_query);     
324               
325                $NOTICE_author_query = str_replace("!!ex_query!!",     htmlentities(stripslashes($ex_query    ),ENT_QUOTES, $charset),  $NOTICE_author_query);
326                if($pmb_indexation_docnum){                     
327                        $checkbox = "<div class='colonne'>
328                                <div class='row'>
329                                  <input type='checkbox' !!docnum_query_checked!! id='docnum_query' name='docnum_query'/><label for='docnum_query'>$msg[docnum_indexation]</label>
330                                </div>
331                        </div>";
332                        $checkbox = str_replace("!!docnum_query_checked!!",   (($pmb_indexation_docnum_allfields || $docnum_query) ? 'checked' : ''),  $checkbox);
333                        $NOTICE_author_query = str_replace("!!docnum_query!!",   $checkbox,  $NOTICE_author_query);
334                } else $NOTICE_author_query = str_replace("!!docnum_query!!", '' ,  $NOTICE_author_query);
335                $NOTICE_author_query = str_replace("!!base_url!!",     $this->base_url,$NOTICE_author_query);
336                print pmb_bidi($NOTICE_author_query);
337        }
338
339        function make_first_search() {
340               
341                global $msg,$charset,$lang,$dbh;
342                global $title_query,$all_query, $author_query,$ex_query,$typdoc_query, $statut_query, $etat, $docnum_query;             
343                global $categ_query,$thesaurus_auto_postage_search, $auto_postage_query;
344                global $nb_per_page_a_search;
345                global $class_path;
346                global $pmb_default_operator;
347                global $acces_j;
348               
349
350                if ($nb_per_page_a_search) $this->nb_per_page=$nb_per_page_a_search; else $this->nb_per_page=3;
351                $author_per_page=10;
352               
353                $restrict='';
354                if ($typdoc_query) $restrict = "and typdoc='".$typdoc_query."' ";
355                if ($statut_query) $restrict.= "and statut='".$statut_query."' ";
356                       
357                if (!$author_query && !$all_query && !$categ_query) {
358                       
359                                // Recherche sur le titre uniquement :
360                                $aq=new analyse_query(stripslashes($title_query));
361
362                } else if ($author_query && $title_query && !$all_query && !$categ_query) {
363                       
364                                // Recherche sur l'auteur et le titre :
365                                $aq_auth=new analyse_query(stripslashes($author_query),0,0,1,1);
366                                if (!$aq_auth->error) {
367                                        $aq=new analyse_query(stripslashes($title_query));
368                                        if (!$aq->error) {
369                                                $members_auth=$aq_auth->get_query_members("authors","concat(author_name,', ',author_rejete)","index_author","author_id");
370                                                $members_title=$aq->get_query_members("notices","index_wew","index_sew","notice_id",$restrict);
371
372                                                $requete_count = "select count(distinct notice_id) from notices ";
373                                                $requete_count.= $acces_j;
374                                                $requete_count.= ", authors, responsability where (".$members_auth["where"].") and (".$members_title["where"].") ";
375                                                $requete_count.= "and responsability_author=author_id and responsability_notice=notice_id ";
376                                                $requete_count.= $restrict;
377                                               
378                                                $requete = "select distinct notice_id,".$members_title["select"]."+".$members_auth["select"]." as pert from notices ";
379                                                $requete.= $acces_j;
380                                                $requete.= ", authors, responsability where (".$members_auth["where"].") and (".$members_title["where"].") ";
381                                                $requete.= "and responsability_author=author_id and responsability_notice=notice_id ";
382                                                $requete.= $restrict." order by pert desc, index_serie, tnvol, index_sew ";
383
384                                                $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
385                                                $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
386                                                $this->text_query=$requete;
387                                                //la requete et la limitation d'enregistrements seront traitées et exécutées dans sort_notices
388                                                return NOTICE_LIST;
389                                        }
390                                } else {
391                                        $aq=$aq_auth;
392                                }
393                               
394                } else if (!$title_query && !$all_query && !$categ_query) {
395                       
396                                // Recherche sur l'auteur uniquement :
397                                $aq=new analyse_query(stripslashes($author_query),0,0,1,1);
398                                if (!$aq->error) {
399                                        if ($typdoc_query || $statut_query || $acces_j) {
400
401                                                $restrict ="and responsability_author=author_id and responsability_notice=notice_id ".$restrict." ";
402                                                $members=$aq->get_query_members("authors","concat(author_name,', ',author_rejete)","index_author","author_id");
403                                               
404                                                $requete_count = "select count(distinct author_id) from authors, responsability, notices ";
405                                                $requete_count.= $acces_j;
406                                                $requete_count.= "where ".$members["where"]." ";
407                                                $requete_count.= $restrict;
408                                               
409                                                $requete = "select author_id,".$members["select"]." as pert from authors, responsability, notices ";
410                                                $requete.= $acces_j;
411                                                $requete.= "where ".$members["where"]." ";
412                                                $requete.= $restrict." group by author_id order by pert desc,author_name, author_rejete,author_numero , author_subdivision limit ".($this->page*$author_per_page).",".$author_per_page;
413                                               
414                                        } else {
415                                                $requete_count=$aq->get_query_count("authors","concat(author_name,', ',author_rejete)","index_author","author_id");
416                                                $t_query=$aq->get_query_members("authors","concat(author_name,', ',author_rejete)","index_author","author_id");
417                                                $requete="select author_id,".$t_query["select"]." as pert from authors where ".$t_query["where"]." group by author_id order by pert desc,author_name, author_rejete, author_numero , author_subdivision limit ".($this->page*$author_per_page).",".$author_per_page;
418                                        }
419       
420                                        $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
421                                        $this->t_query=@mysql_query($requete,$dbh);
422                                        $this->nbepage=ceil($this->nbresults/$author_per_page);
423                                        return AUT_LIST;
424                                }
425                               
426                } else if (!$title_query && !$author_query && !$categ_query) {
427                       
428                        // Recherche sur tous les champs (index global) uniquement :
429                        $aq=new analyse_query(stripslashes($all_query),0,0,1,1);
430                        $aq2=new analyse_query(stripslashes($all_query));
431                        if (!$aq->error) {
432                                $aq1=new analyse_query(stripslashes($all_query),0,0,1,1);
433                                $members1=$aq1->get_query_members("notices","index_wew","index_sew","notice_id",$restrict);
434                                global $pmb_title_ponderation;
435                                $pert1="+".$members1["select"]."*".$pmb_title_ponderation;
436                                $members=$aq->get_query_members("notices_global_index","infos_global","index_infos_global","num_notice");
437                                $members2=$aq2->get_query_members("notices_global_index","infos_global","index_infos_global","num_notice");
438                                if (($members2["where"]!="()")&&($pmb_default_operator)) {
439                                        $where_term="(".$members["where"]." or ".$members2["where"].")";
440                                } else {
441                                        $where_term=$members["where"];
442                                }                                                                                               
443                                if($docnum_query && $all_query!='*'){
444                                        //Si on a activé la recherche dans les docs num
445                                        //On traite les notices
446                                        $members_num_noti = $aq2->get_query_members("explnum","explnum_index_wew","explnum_index_sew","explnum_notice","",0,0,true);
447                                        $members_num_bull = $aq2->get_query_members("explnum","explnum_index_wew","explnum_index_sew","explnum_bulletin","",0,0,true);
448                                       
449                                        $join = "(
450                                        select tc.notice_id, sum(tc.pert) as pert, tc.typdoc from (
451                                        (
452                                        select notice_id, ".$members["select"]."+".$members1["select"]." as pert,typdoc
453                                        from notices join notices_global_index on num_notice=notice_id $acces_j 
454                                        where ".$members["where"]." $restrict 
455                                        )
456                                        union
457                                        (
458                                        select notice_id, ".$members_num_noti["select"]." as pert,typdoc
459                                        from notices join explnum on explnum_notice=notice_id $acces_j 
460                                        where  ".$members_num_noti["where"]." $restrict 
461                                        )
462                                        union
463                                        (
464                                        select if(num_notice,num_notice,bulletin_notice) as notice_id, ".$members_num_bull["select"]." as pert,typdoc
465                                        from explnum join bulletins on explnum_bulletin=bulletin_id ,notices $acces_j 
466                                        where bulletin_notice=notice_id and ".$members_num_bull["where"]." $restrict 
467                                        )       
468                                        )as tc group by notice_id
469                                        )";
470                                        $requete_count = "select count(distinct notice_id) from ($join) as union_table";
471                                        $requete="select uni.notice_id, sum(pert) as pert  from ($join) as uni join notices n on n.notice_id=uni.notice_id group by uni.notice_id order by pert desc, index_serie, tnvol, index_sew ";
472                                       
473                                } else {
474                                        $restrict.= " and num_notice = notice_id ";
475                                        $requete_count = "select count(1) from notices ";
476                                        $requete_count.= $acces_j;
477                                        $requete_count.= ", notices_global_index ";
478                                        $requete_count.= "where ".$where_term." ";
479                                        $requete_count.= $restrict;
480                                                                       
481                                        $requete = "select notice_id,".$members["select"]."$pert1 as pert from notices ";
482                                        $requete.= $acces_j;
483                                        $requete.= ", notices_global_index ";
484                                        $requete.= "where $where_term ";
485                                        $requete.= $restrict." order by pert desc, index_serie, tnvol, index_sew ";     
486                                }
487
488                                $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
489                                //la requete et la limitation d'enregistrements seront traitées et exécutées dans sort_notices
490                                $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
491                                $this->text_query=$requete;
492                                return NOTICE_LIST;
493                        }
494                } else if(!$author_query && !$categ_query) {
495                       
496                        // Recherche sur le titre et l'index global :
497                        $aq_all=new analyse_query(stripslashes($all_query),0,0,1,1);
498                        $aq_all2=new analyse_query(stripslashes($all_query));
499                        if (!$aq_all->error) {
500                                $aq=new analyse_query(stripslashes($title_query));
501                                if (!$aq->error) {
502                                        $members_all=$aq_all->get_query_members("notices_global_index","infos_global","index_infos_global","num_notice");
503                                        $members_all2=$aq_all2->get_query_members("notices_global_index","infos_global","index_infos_global","num_notice");
504                                        if (($members_all2["where"]!="()")&&($pmb_default_operator)) {
505                                                $where_term="(".$members_all["where"]." or ".$members_all2["where"].")";
506                                        } else {
507                                                $where_term=$members_all["where"];
508                                        }
509                                        $members_title=$aq->get_query_members("notices","index_wew","index_sew","notice_id",$restrict);
510                                       
511                                        $requete_count = "select count(distinct notice_id) from notices ";
512                                        $requete_count.= $acces_j;
513                                        $requete_count.= ", notices_global_index where ($where_term) and (".$members_title["where"].") and num_notice = notice_id ";
514                                        $requete_count.= $restrict;
515                                       
516                                        $requete = "select distinct notice_id, ".$members_title["select"]."+".$members_all["select"]." as pert from notices ";
517                                        $requete.= $acces_j;
518                                        $requete.= ", notices_global_index where ($where_term) and (".$members_title["where"].") and num_notice = notice_id ";
519                                        $requete.= $restrict." order by pert desc, index_serie, tnvol, index_sew "; 
520                                       
521                                        $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
522                                        //la requete et la limitation d'enregistrements seront traitées et exécutées dans sort_notices
523                                        $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
524                                        $this->text_query=$requete;
525                                        return NOTICE_LIST;
526                                }
527                        } else {
528                                $aq=$aq_all;
529                        }
530                       
531                } else if (!$title_query && !$categ_query) {
532                       
533                        // Recherche sur l'auteur et l'index global :
534                        $aq_auth=new analyse_query(stripslashes($author_query),0,0,1,1);
535                        if (!$aq_auth->error) {
536                                $aq=new analyse_query(stripslashes($all_query),0,0,1,1);
537                                $aq_all2=new analyse_query(stripslashes($all_query));
538                                if (!$aq->error) {
539                                        $members_auth=$aq_auth->get_query_members("authors","concat(author_name,', ',author_rejete)","index_author","author_id");
540                                        $members_all=$aq->get_query_members("notices_global_index","infos_global","index_infos_global","num_notice",$restrict);
541                                        $members_all2=$aq_all2->get_query_members("notices_global_index","infos_global","index_infos_global","num_notice",$restrict);
542                                        if (($members_all2["where"]!="()")&&($pmb_default_operator)) {
543                                                $where_term="(".$members_all["where"]." or ".$members_all2["where"].")";
544                                        } else {
545                                                $where_term=$members_all["where"];
546                                        }
547                                       
548                                        $requete_count = "select count(distinct notice_id) from notices ";
549                                        $requete_count.= $acces_j;
550                                        $requete_count.= ", notices_global_index, authors, responsability ";
551                                        $requete_count.= "where (".$members_auth["where"].") and ($where_term) and responsability_author=author_id ";
552                                        $requete_count.= "and responsability_notice=num_notice and num_notice=notice_id ";
553                                        $requete_count.= $restrict;
554                                       
555                                        $requete = "select distinct notice_id, ".$members_all["select"]."+".$members_auth["select"]." as pert from notices ";
556                                        $requete.= $acces_j;
557                                        $requete.= ", notices_global_index, authors, responsability where (".$members_auth["where"].") and ($where_term) and responsability_author=author_id ";
558                                        $requete.= "and responsability_notice=num_notice and num_notice=notice_id ";
559                                        $requete.= $restrict." order by pert desc, index_infos_global "; 
560                                       
561                                        $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
562                                        //la requete et la limitation d'enregistrements seront traitées et exécutées dans sort_notices
563                                        $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
564                                        $this->text_query=$requete;
565                                        return NOTICE_LIST;
566                                }
567                        } else {
568                                $aq=$aq_auth;
569                        }
570                } else if($author_query && $categ_query && !$all_query && !$title_query){
571                        // Recherche sur l'auteur et la catégorie :
572                        $aq_auth=new analyse_query(stripslashes($author_query),0,0,1,1);
573                        if (!$aq_auth->error) {
574                                $aq_categ=new analyse_query(stripslashes($categ_query),0,0,0,0);
575                                if (!$aq_categ->error) {
576                                        $members_auth=$aq_auth->get_query_members("authors","concat(author_name,', ',author_rejete)","index_author","author_id");
577                                        if($thesaurus_auto_postage_search && $auto_postage_query)
578                                                $members_categ=$aq_categ->get_query_members("categories","path_word_categ","index_path_word_categ","num_noeud");
579                                        else
580                                                $members_categ=$aq_categ->get_query_members("categories","libelle_categorie","index_categorie","num_noeud");
581                                        $requete_count = "select count(distinct notice_id) from notices ";
582                                        $requete_count.= $acces_j;
583                                        $requete_count.= ", categories, noeuds, notices_categories, authors, responsability ";
584                                        $requete_count.= "where (".$members_categ["where"].") and (".$members_auth["where"].") ";
585                                        $requete_count.= "and id_noeud= categories.num_noeud and notices_categories.num_noeud=categories.num_noeud and notcateg_notice = notice_id ";
586                                        $requete_count.= "and responsability_author=author_id and responsability_notice=notice_id ";
587                                        $requete_count.= $restrict;
588                                               
589                                        $requete = "select notice_id, ".$members_categ["select"]."+".$members_auth["select"]." as pert from notices ";
590                                        $requete.= $acces_j;
591                                        $requete.= ", categories, noeuds, notices_categories, authors, responsability ";
592                                        $requete.= "where (".$members_categ["where"].") and (".$members_auth["where"].") ";
593                                        $requete.= "and id_noeud= categories.num_noeud and notices_categories.num_noeud=categories.num_noeud and notcateg_notice = notice_id ";
594                                        $requete.= "and responsability_author=author_id and responsability_notice=notice_id ";
595                                        $requete.= $restrict." group by notice_id ";
596                                        $requete.= "order by pert desc ";
597
598                                        $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
599                                        //la requete et la limitation d'enregistrements seront traitées et exécutées dans sort_notices
600                                        $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
601                                        $this->text_query=$requete;
602                                        return NOTICE_LIST;
603                                               
604                                } else {
605                                        $aq=$aq_categ;
606                                }
607                        } else {
608                                $aq=$aq_auth;
609                        }
610                } else if($title_query && $categ_query && !$all_query && !$author_query){
611                        // Recherche sur le titre et la catégorie :
612                        $aq_title=new analyse_query(stripslashes($title_query));
613                        if (!$aq_title->error) {
614                                $aq_categ=new analyse_query(stripslashes($categ_query),0,0,0,0);
615                                if (!$aq_categ->error) {
616                                        $members_title=$aq_title->get_query_members("notices","index_wew","index_sew","notice_id",$restrict);
617                                        if($thesaurus_auto_postage_search && $auto_postage_query)
618                                                $members_categ=$aq_categ->get_query_members("categories","path_word_categ","index_path_word_categ","num_noeud");
619                                        else
620                                                $members_categ=$aq_categ->get_query_members("categories","libelle_categorie","index_categorie","num_noeud");
621                                       
622                                        $requete_count = "select count(distinct notice_id) from notices ";
623                                        $requete_count.= $acces_j;
624                                        $requete_count.= ", categories, noeuds, notices_categories ";
625                                        $requete_count.= "where (".$members_title["where"].") and (".$members_categ["where"].") ";
626                                        $requete_count.= "and id_noeud= categories.num_noeud and notices_categories.num_noeud=categories.num_noeud and notcateg_notice = notice_id ";
627                                        $requete_count.= $restrict;
628                                               
629                                        $requete = "select distinct notice_id, ".$members_title["select"]."+".$members_categ["select"]." as pert from notices ";
630                                        $requete.= $acces_j;
631                                        $requete.= ", categories, noeuds, notices_categories ";
632                                        $requete.= "where (".$members_title["where"].") and (".$members_categ["where"].") ";
633                                        $requete.= "and id_noeud= categories.num_noeud and notices_categories.num_noeud=categories.num_noeud and notcateg_notice = notice_id ";
634                                        $requete.= $restrict." order by pert desc, index_serie, tnvol, index_sew ";
635                                               
636                                        $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
637                                        //la requete et la limitation d'enregistrements seront traitées et exécutées dans sort_notices
638                                        $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
639                                        $this->text_query=$requete;
640                                        return NOTICE_LIST;
641                                } else {
642                                        $aq=$aq_categ;
643                                }
644                        } else {
645                                $aq=$aq_title;
646                        }
647                } else if($all_query && $categ_query && !$title_query && !$author_query){
648                        // Recherche sur la catégorie et l'index global :
649                        $aq_categ=new analyse_query(stripslashes($categ_query),0,0,0,0);
650                        if (!$aq_categ->error) {
651                                $aq=new analyse_query(stripslashes($all_query),0,0,1,1);
652                                $aq_all2=new analyse_query(stripslashes($all_query));
653                                if (!$aq->error) {
654                                        if($thesaurus_auto_postage_search && $auto_postage_query)
655                                                $members_categ=$aq_categ->get_query_members("categories","path_word_categ","index_path_word_categ","num_noeud");
656                                        else
657                                                $members_categ=$aq_categ->get_query_members("categories","libelle_categorie","index_categorie","num_noeud");
658                                        $members_all=$aq->get_query_members("notices_global_index","infos_global","index_infos_global","num_notice",$restrict);
659                                        $members_all2=$aq_all2->get_query_members("notices_global_index","infos_global","index_infos_global","num_notice",$restrict);
660                                        if (($members_all2["where"]!="()")&&($pmb_default_operator)) {
661                                                $where_term="(".$members_all["where"]." or ".$members_all2["where"].")";
662                                        } else {
663                                                $where_term=$members_all["where"];
664                                        }
665                                       
666                                        $requete_count = "select count(distinct notice_id) from notices ";
667                                        $requete_count.= $acces_j;
668                                        $requete_count.= ", notices_global_index, categories, noeuds, notices_categories ";
669                                        $requete_count.= "where (".$members_categ["where"].") and ($where_term) ";
670                                        $requete_count.= "and notices_global_index.num_notice=notices.notice_id and id_noeud= categories.num_noeud and notices_categories.num_noeud=categories.num_noeud and notcateg_notice = notice_id ";
671                                        $requete_count.= $restrict;
672                                       
673                                        $requete = "select distinct notice_id, ".$members_all["select"]."+".$members_categ["select"]." as pert from notices ";
674                                        $requete.= $acces_j;
675                                        $requete.= ", notices_global_index, categories, noeuds, notices_categories where (".$members_categ["where"].") and ($where_term) ";
676                                        $requete.= "and notices_global_index.num_notice=notices.notice_id and id_noeud= categories.num_noeud and notices_categories.num_noeud=categories.num_noeud and notcateg_notice = notice_id ";
677                                        $requete.= $restrict." order by pert desc, index_infos_global "; 
678
679                                        $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
680                                        //la requete et la limitation d'enregistrements seront traitées et exécutées dans sort_notices
681                                        $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
682                                        $this->text_query=$requete;
683                                        return NOTICE_LIST;
684                                }
685                        } else {
686                                $aq=$aq_categ;
687                        }
688                } else if($categ_query){
689                        $aq_auth=new analyse_query(stripslashes($categ_query),0,0,0,0);
690                        if (!$aq_auth->error) {
691                                if($thesaurus_auto_postage_search && $auto_postage_query)
692                                        $members_auth=$aq_auth->get_query_members("categories","path_word_categ","index_path_word_categ","num_noeud");                                         
693                                else 
694                                        $members_auth=$aq_auth->get_query_members("categories","libelle_categorie","index_categorie","num_noeud");                                             
695                                $requete_count = "select count(distinct notice_id) from notices ";
696                                $requete_count.= $acces_j;
697                                $requete_count.= ", categories, noeuds, notices_categories ";
698                                $requete_count.= "where (".$members_auth["where"].")  ";
699                                $requete_count.= "and id_noeud= categories.num_noeud and notices_categories.num_noeud=categories.num_noeud and notcateg_notice = notice_id ";
700                                $requete_count.= $restrict;
701                                       
702                                $requete = "select notice_id, ".$members_auth["select"]." as pert from notices ";
703                                $requete.= $acces_j;
704                                $requete.= ", categories, noeuds, notices_categories ";
705                                $requete.= "where (".$members_auth["where"].") ";
706                                $requete.= "and id_noeud= categories.num_noeud and notices_categories.num_noeud=categories.num_noeud and notcateg_notice = notice_id ";
707                                $requete.= $restrict." group by notice_id ";
708                                $requete.= "order by pert desc ";
709                                       
710                                $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
711                                //la requete et la limitation d'enregistrements seront traitées et exécutées dans sort_notices
712                                $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
713                                $this->text_query=$requete;
714                                return NOTICE_LIST;     
715                                       
716                        } else {
717                                $aq=$aq_auth;
718                        }
719                       
720                } else {                       
721                        // Recherche sur l'auteur, l'index global et le titre :
722                        $aq_auth=new analyse_query(stripslashes($author_query),0,0,1,1);
723                        if (!$aq_auth->error) {
724                                $aq=new analyse_query(stripslashes($all_query),0,0,1,1);
725                                $aq_all2=new analyse_query(stripslashes($all_query));
726                                if (!$aq->error) {
727                                        $aq_title=new analyse_query(stripslashes($title_query));
728                                        if (!$aq_title->error) {
729                                                $members_auth=$aq_auth->get_query_members("authors","concat(author_name,', ',author_rejete)","index_author","author_id");
730                                                $members_all=$aq->get_query_members("notices_global_index","infos_global","index_infos_global","num_notice");
731                                                $members_all2=$aq_all2->get_query_members("notices_global_index","infos_global","index_infos_global","num_notice",$restrict);
732                                                if (($members_all2["where"]!="()")&&($pmb_default_operator)) {
733                                                        $where_term="(".$members_all["where"]." or ".$members_all2["where"].")";
734                                                } else {
735                                                        $where_term=$members_all["where"];
736                                                }
737                                                $members_title=$aq_title->get_query_members("notices","index_wew","index_sew","notice_id",$restrict);
738                                               
739                                                $requete_count = "select count(distinct notice_id) from notices ";
740                                                $requete_count.= $acces_j;
741                                                $requete_count.= ", notices_global_index, authors,responsability ";
742                                                $requete_count.= "where (".$members_auth["where"].") and ($where_term) and (".$members_title["where"].") ";
743                                                $requete_count.= "and responsability_author=author_id and responsability_notice=num_notice and num_notice = notice_id ";
744                                                $requete_count.= $restrict;
745                                               
746                                                $requete = "select distinct notice_id,".$members_all["select"]."+".$members_auth["select"]."+".$members_title["select"]." as pert from notices ";
747                                                $requete.= $acces_j;
748                                                $requete.= ", notices_global_index, authors,responsability ";
749                                                $requete.= "where (".$members_auth["where"].") and ($where_term) and (".$members_title["where"].") ";
750                                                $requete.= "and responsability_author=author_id and responsability_notice=num_notice and num_notice = notice_id ";
751                                                $requete.= $restrict." order by pert desc, index_serie, tnvol, index_sew "; 
752                                               
753                                                $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
754                                                //la requete et la limitation d'enregistrements seront traitées et exécutées dans sort_notices
755                                                $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
756                                                $this->text_query=$requete;
757                                                return NOTICE_LIST;
758                                        }
759                                }
760                        } else {
761                                $aq=$aq_auth;
762                        }
763                }
764
765                if ($aq->error) {
766                        $this->show_form();
767                        error_message($msg["searcher_syntax_error"],sprintf($msg["searcher_syntax_error_desc"],$aq->current_car,$aq->input_html,$aq->error_message));
768                } else {
769                        $aq_title=new analyse_query(stripslashes($title_query));
770                        $members_title=$aq_title->get_query_members("notices","index_wew","index_sew","notice_id",$restrict);
771                       
772                        $requete_count = "select count(distinct notice_id) from notices ";
773                        $requete_count.= $acces_j;
774                        $requete_count.= "where (".$members_title["where"].") ";
775                        $requete_count.= $restrict;
776                        $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
777                       
778                        $requete = "select distinct notice_id, ".$members_title["select"]." as pert from notices ";
779                        $requete.= $acces_j;
780                        $requete.= "where (".$members_title["where"].") ";
781                        $requete.= $restrict." ";
782                        $requete.="order by pert desc, index_serie, tnvol, index_sew "; 
783
784                        //la requete et la limitation d'enregistrements seront traitées et exécutées dans sort_notices
785                        $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
786                        $this->text_query=$requete;
787                        return NOTICE_LIST;
788                }
789        }
790
791       
792        function make_aut_search() {
793                global $msg;
794                global $charset;
795                global $nb_per_page_a_search;
796                global $typdoc_query, $statut_query;
797                global $acces_j;
798
799                $restrict='';
800                if ($typdoc_query) $restrict = "and typdoc='".$typdoc_query."' ";
801                if ($statut_query) $restrict.= "and statut='".$statut_query."' ";
802               
803                if ($nb_per_page_a_search) $this->nb_per_page=$nb_per_page_a_search; else $this->nb_per_page=3;
804               
805                $requete_count = "select count(distinct notice_id) from notices ";
806                $requete_count.= $acces_j;
807                $requete_count.= ", responsability where notice_id=responsability_notice and responsability_author=".$this->id." ";
808                $requete_count.= $restrict;
809               
810                $requete = "select distinct notice_id from notices ";
811                $requete.= $acces_j; 
812                $requete.= ", responsability where notice_id=responsability_notice and responsability_author=".$this->id." ";
813                $requete.= $restrict." ";
814                $requete.= "order by index_serie, tnvol, index_sew ";
815//              $requete.= "limit ".($this->page*$this->nb_per_page).", ".$this->nb_per_page;
816               
817                $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
818                $this->t_query=@mysql_query($requete);
819                $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
820                $this->text_query=$requete;
821        }
822
823        function store_search() {
824                global $title_query,$all_query, $author_query,$typdoc_query, $statut_query,$categ_query,$docnum_query,$pmb_indexation_docnum;
825                global $charset;
826                $champs="<input type='hidden' name='title_query' value='".htmlentities(stripslashes($title_query),ENT_QUOTES,$charset)."'/>";
827                $champs.="<input type='hidden' name='all_query' value='".htmlentities(stripslashes($all_query),ENT_QUOTES,$charset)."'/>";
828                $champs.="<input type='hidden' name='author_query' value='".htmlentities(stripslashes($author_query),ENT_QUOTES,$charset)."'/>";
829                $champs.="<input type='hidden' name='typdoc_query' value='".htmlentities(stripslashes($typdoc_query),ENT_QUOTES,$charset)."'/>";
830                $champs.="<input type='hidden' name='statut_query' value='".htmlentities(stripslashes($statut_query),ENT_QUOTES,$charset)."'/>";
831                $champs.="<input type='hidden' name='categ_query' value='".htmlentities(stripslashes($categ_query),ENT_QUOTES,$charset)."'/>";
832                if ($pmb_indexation_docnum) {
833                        $champs.="<input type='hidden' name='docnum_query' value='".htmlentities(stripslashes($docnum_query),ENT_QUOTES,$charset)."'/>";
834                }
835                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
836                print $this->store_form;
837        }
838
839        function aut_store_search() {
840                global $typdoc_query, $statut_query;
841                global $charset;
842                $champs="<input type='hidden' name='aut_id' value='".htmlentities(stripslashes($this->id),ENT_QUOTES,$charset)."'/>";
843                $champs.="<input type='hidden' name='typdoc_query' value='".htmlentities(stripslashes($typdoc_query),ENT_QUOTES,$charset)."'/>";
844                $champs.="<input type='hidden' name='statut_query' value='".htmlentities(stripslashes($statut_query),ENT_QUOTES,$charset)."'/>";
845                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
846                print $this->store_form;
847        }
848
849        function aut_list() {
850                global $msg;
851                global $charset;
852                global $author_query;
853                global $typdoc_query, $statut_query;
854                global $pmb_allow_external_search;
855               
856                $research.="<b>${msg[234]}</b>&nbsp;".htmlentities(stripslashes($author_query),ENT_QUOTES,$charset);
857                $this->human_query=$research;
858                $this->human_aut_query=$research;
859
860                if ($this->nbresults) {
861                                $research .= " => ".$this->nbresults." ".$msg["search_resultat"];
862                                print pmb_bidi("<div class='othersearchinfo'>$research</div>");
863                                $author_list="<table>\n";
864                                $parity = 0 ;
865                                while ($author=@mysql_fetch_object($this->t_query)) {
866                                        if ($parity % 2) {
867                                                $pair_impair = "even";
868                                        } else {
869                                                $pair_impair = "odd";
870                                        }
871                                        $parity += 1;
872
873                                        $auteur = new auteur($author->author_id);
874
875                                        $notice_count_sql = "SELECT count(*) FROM responsability WHERE responsability_author = ".$author->author_id;
876                                        $notice_count = mysql_result(mysql_query($notice_count_sql), 0, 0);
877                                       
878                                        if($auteur->see) {
879                                                $link = $this->base_url."&aut_id=".$auteur->id."&etat=aut_search&typdoc_query=".$typdoc_query."&statut_query=".$statut_query;
880                                                $link_see = $this->base_url."&aut_id=".$auteur->see."&etat=aut_search&typdoc_query=".$typdoc_query."&statut_query=".$statut_query;
881                                                $forme = $auteur->display.".&nbsp;- ".$msg["see"]."&nbsp;: <a href='$link_see' class='lien_gestion'>$auteur->see_libelle</a> ";
882                                        } else {
883                                                $link = $this->base_url."&aut_id=".$auteur->id."&etat=aut_search&typdoc_query=".$typdoc_query."&statut_query=".$statut_query;
884                                                $forme = $auteur->display;
885                                        }
886
887                                        $tr_javascript=" onmouseover=\"this.className='surbrillance'\" onmouseout=\"this.className='$pair_impair'\" onmousedown=\"document.location='$link';\" ";
888                                        $author_list .= "<tr class='$pair_impair' $tr_javascript style='cursor: pointer'><td>$forme</td><td>".$notice_count."</td></tr>";
889                                }
890                                $author_list.="</table>\n";
891                                print pmb_bidi($author_list);
892                } else {
893                                $this->show_form();
894                                $cles="<strong>".htmlentities(stripslashes($author_query),ENT_QUOTES, $charset)."</strong>";
895                                //if ($pmb_allow_external_search) $external="<a href='catalog.php?categ=search&mode=7&from_mode=0&external_type=simple'>".$msg["connecteurs_external_search_sources"]."</a>";
896                                //error_message($msg[357], sprintf($msg["connecteurs_no_title"],$cles,$external), 0, "./catalog.php?categ=search&mode=0");
897                                error_message($msg[357], $msg[362]." ".$cles, 0, "./catalog.php?categ=search&mode=0");
898                }
899        }
900
901       
902        function notice_list_common($title) {
903                global $begin_result_liste;
904                global $end_result_liste;
905                global $msg;
906                global $charset;
907                global $pmb_nb_max_tri;
908                global $title_query,$author_query, $all_query,$categ_query;
909                global $link,$link_expl,$link_explnum,$link_serial,$link_analysis,$link_bulletin,$link_explnum_serial,$link_explnum_analysis,$link_explnum_bulletin,$link_notice_bulletin;
910                global $pmb_allow_external_search;
911                global $load_tablist_js;
912               
913                if ($this->nbresults) {
914                                $research=$title;
915                                $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
916                                print pmb_bidi("<div class='othersearchinfo'>$research</div>");
917                                print $begin_result_liste;
918                                $load_tablist_js=1;
919                                //Affichage des liens paniers et impression
920                                if ($this->rec_history) {
921                                       
922                                        if (($this->etat=='first_search')&&((string)$this->page=="")) {
923                                                $current=count($_SESSION["session_history"]);
924                                        } else { 
925                                                $current=$_SESSION["CURRENT"];
926                                        }
927                                        if ($current!==false) {
928                                                echo "&nbsp;<a href='#' onClick=\"openPopUp('./print_cart.php?current_print=$current&action=print_prepare','print',600,700,-2,-2,'scrollbars=yes,menubar=0,resizable=yes'); return false;\">";
929                                                echo "<img src='./images/basket_small_20x20.gif' border='0' align='center' alt=\"".$msg["histo_add_to_cart"]."\" title=\"".$msg["histo_add_to_cart"]."\"></a>&nbsp;";
930                                                $tri_id_info = $_SESSION["tri"] ? "&sort_id=".$_SESSION["tri"] : "";
931                                                echo "<a href='#' onClick=\"openPopUp('./print.php?current_print=$current&action_print=print_prepare".$tri_id_info."','print',500,600,-2,-2,'scrollbars=yes,menubar=0'); return false;\">";
932                                                echo "<img src='./images/print.gif' border='0' align='center' alt=\"".$msg["histo_print"]."\" title=\"".$msg["histo_print"]."\"/></a>";
933                                                if ($pmb_allow_external_search) {
934                                                        echo "&nbsp;<a href='catalog.php?categ=search&mode=7&from_mode=0&external_type=simple'>";
935                                                        echo "<img src='./images/external_search.png' border='0' align='center' alt=\"".$msg["connecteurs_external_search_sources"]."\" title=\"".$msg["connecteurs_external_search_sources"]."\"/></a>";
936                                                }
937                                               
938                                                // on affiche l'icone de tri seulement si on a atteint un nb maxi de résultats
939                                                if ($this->nbresults<=$pmb_nb_max_tri) {
940                                                       
941                                                        //affichage de l'icone de tri
942                                                        echo "<a href=# onClick=\"document.getElementById('history').src='./sort.php?type_tri=notices'; document.getElementById('history').style.display='';return false;\" ";
943                                                        echo "alt=\"".$msg['tris_dispos']."\" title=\"".$msg['tris_dispos']."\">";
944                                                        echo "<img src=./images/orderby_az.gif align=middle hspace=3></a>";
945                                                       
946                                                        //si on a un tri actif on affiche sa description
947                                                        if ($_SESSION["tri"]) {
948                                                                echo $msg['tri_par']." ".$this->sort->descriptionTriParId($_SESSION["tri"]);
949                                                        }
950                                                }
951                                        }
952                                }
953
954                                // on lance la requête
955                                $recherche_ajax_mode=0;
956                                $nb=0;
957                                while(($nz=@mysql_fetch_object($this->t_query))) {
958                                        if($nb++>5) $recherche_ajax_mode=1;
959                                        $n=@mysql_fetch_object(@mysql_query("SELECT * FROM notices WHERE notice_id=".$nz->notice_id));
960                                       
961                                        switch ($n->niveau_biblio) {
962                                                case 's' :
963                                                        // on a affaire à un périodique
964                                                        $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_serial, 0, 0, 1, 1, true, 1 ,$recherche_ajax_mode);
965                                                        print $serial->result;
966                                                        break;
967                                                case 'a' :
968                                                        // on a affaire à un article
969                                                        $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_analysis, 0, 0, 1, 1, true, 1 ,$recherche_ajax_mode);
970                                                        print $serial->result;
971                                                        break;
972                                                case 'b' :
973                                                        // on a affaire à un bulletin
974                                                        $rqt_bull_info = "SELECT s.notice_id as id_notice_mere, bulletin_id as id_du_bulletin, b.notice_id as id_notice_bulletin FROM notices as s, notices as b, bulletins WHERE b.notice_id=$n->notice_id and s.notice_id=bulletin_notice and num_notice=b.notice_id";
975                                                        $bull_ids=@mysql_fetch_object(mysql_query($rqt_bull_info));
976                                                        //si on a les droits
977                                                        if(SESSrights & CATALOGAGE_AUTH){
978                                                                //on teste la validité du lien
979                                                                if(!$link_notice_bulletin){
980                                                                        $link_notice_bulletin = './catalog.php?categ=serials&sub=bulletinage&action=view&bul_id='.$bull_ids->id_du_bulletin;
981                                                                } else {
982                                                                        $link_notice_bulletin = str_replace("!!id!!",$bull_ids->id_du_bulletin,$link_notice_bulletin);
983                                                                }
984                                                        }
985                                                        elseif($link_notice_bulletin) $link_notice_bulletin = str_replace("!!id!!",$bull_ids->id_du_bulletin,$link_notice_bulletin);
986                                                        $link_explnum_bulletin = str_replace("!!bul_id!!",$bull_ids->id_du_bulletin,$link_explnum_bulletin);
987                                                        $display = new mono_display($n, 6, $link_notice_bulletin, 1, $link_expl, '', $link_explnum_bulletin,1, 0, 1, 1, "", 1  , false,true,$recherche_ajax_mode);
988                                                        $link_notice_bulletin='';
989                                                        print $display->result;
990                                                        break;
991                                                default:
992                                                case 'm' :
993                                                        // notice de monographie
994                                                        $display = new mono_display($n, 6, $link, 1, $link_expl, '', $link_explnum,1, 0, 1, 1, "", 1   , false,true,$recherche_ajax_mode,1);
995                                                        print $display->result;
996                                                        break ;
997                                        }
998                                }
999                                // fin de liste
1000                                print $end_result_liste;
1001                } else {
1002                        $this->show_form();
1003                        $cles="<strong>".$title."</strong>";
1004                        if ($pmb_allow_external_search) $external="<a href='catalog.php?categ=search&mode=7&from_mode=0&external_type=simple'>".$msg["connecteurs_external_search_sources"]."</a>";
1005                        error_message($msg[357], sprintf($msg["connecteurs_no_title"],$cles,$external), 0, "./catalog.php?categ=search&mode=0");
1006                }
1007        }
1008
1009       
1010        function notice_list() {
1011                global $msg;
1012                global $charset;
1013                global $title_query,$author_query,$all_query,$categ_query;
1014               
1015                if($this->docnum){
1016                        $libelle = " [".$msg[docnum_search_with]."]";
1017                } else $libelle ='';
1018                if ($title_query) {
1019                        $research .= "<b>${msg[233]}</b>&nbsp;".htmlentities(stripslashes($title_query),ENT_QUOTES,$charset);
1020                }
1021                if ($all_query && !$title_query) {
1022                        $research.="<b>${msg[global_search]}$libelle</b>&nbsp;".htmlentities(stripslashes($all_query),ENT_QUOTES,$charset);
1023                } else if (($all_query && $title_query)) {
1024                        $research.= ", <b>${msg[global_search]}$libelle</b>&nbsp;".htmlentities(stripslashes($all_query),ENT_QUOTES,$charset);
1025                }       
1026                if ($categ_query) {
1027                        if ($research != "") $research .= ", ";
1028                        $research .= "<b>${msg["search_categorie_title"]}</b>&nbsp;".htmlentities(stripslashes($categ_query),ENT_QUOTES,$charset);
1029                }
1030                if ($author_query) {
1031                        $research.=", <b>${msg[234]}</b>&nbsp;".htmlentities(stripslashes($author_query),ENT_QUOTES,$charset);
1032                }
1033
1034                $this->human_query=$research;
1035                $this->human_notice_query=$research;
1036
1037                $this->notice_list_common($research);
1038        }
1039
1040       
1041        function aut_notice_list() {
1042                global $msg;
1043                global $charset;
1044
1045                $auteur = new auteur($this->id);
1046                $research.="<b>${msg[234]}</b>&nbsp;".$auteur->display;
1047
1048                $this->human_notice_query=$research;
1049
1050                $this->notice_list_common($research);
1051        }
1052
1053       
1054        function rec_env() {
1055                global $msg;
1056                switch ($this->etat) {
1057                                case 'first_search':
1058                                        if ((string)$this->page=="") {
1059                                                $_SESSION["CURRENT"]=count($_SESSION["session_history"]);
1060                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["URI"]=$this->base_url;
1061                                                $_POST["etat"]="";
1062                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['POST']=$_POST;
1063                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['GET']=$_GET;
1064                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]=array();
1065                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]=array();
1066                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_QUERY"]=$this->human_query;
1067                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_TITLE"]=$msg["354"];
1068                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["DOCNUM_QUERY"]=$this->docnum;
1069                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]["AUTO_POSTAGE_QUERY"]=$this->auto_postage_query;
1070                                        }
1071                                        if ((string)$this->page=="") { $_POST["page"]=0; $page=0; }
1072                                        if (($this->first_search_result==AUT_LIST)&&($_SESSION["CURRENT"]!==false)) {
1073                                                $_POST["etat"]="first_search";
1074                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['URI']=$this->base_url;
1075                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['POST']=$_POST;
1076                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['GET']=$_GET;
1077                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['PAGE']=$this->page+1;
1078                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]["HUMAN_QUERY"]=$this->human_aut_query;
1079                                        }
1080                                        if (($this->first_search_result==NOTICE_LIST)&&($_SESSION["CURRENT"]!==false)) {
1081                                                $_POST["etat"]="first_search";
1082                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['URI']=$this->base_url;
1083                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['POST']=$_POST;
1084                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['GET']=$_GET;
1085                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['TEXT_QUERY']=$this->text_query;
1086                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['PAGE']=$this->page+1;
1087                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]["HUMAN_QUERY"]=$this->human_notice_query;
1088                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]["DOCNUM_QUERY"]=$this->docnum;
1089                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]["AUTO_POSTAGE_QUERY"]=$this->auto_postage_query;
1090                                        }
1091                                        break;
1092                                case 'aut_search':
1093                                        if ($_SESSION["CURRENT"]!==false) {
1094                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['URI']=$this->base_url;
1095                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['POST']=$_POST;
1096                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['GET']=$_GET;
1097                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['PAGE']=$this->page+1;
1098                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['TEXT_QUERY']=$this->text_query;
1099                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['HUMAN_QUERY']=$this->human_notice_query;
1100                                        }
1101                                        break;
1102                }
1103                $_SESSION["last_required"]=false;
1104        }
1105       
1106        static function convert_simple_multi($id_champ) {
1107                global $search;
1108               
1109                $x=0;
1110               
1111                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["title_query"]) {
1112                        $op_="BOOLEAN";
1113                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["title_query"];
1114                       
1115                        $search[$x]="f_6";
1116                        //opérateur
1117                $op="op_".$x."_".$search[$x];
1118                global $$op;
1119                $$op=$op_;
1120                                       
1121                //contenu de la recherche
1122                $field="field_".$x."_".$search[$x];
1123                $field_=array();
1124                $field_[0]=$valeur_champ;
1125                global $$field;
1126                $$field=$field_;
1127               
1128                //opérateur inter-champ
1129                $inter="inter_".$x."_".$search[$x];
1130                global $$inter;
1131                $$inter="";
1132                                       
1133                //variables auxiliaires
1134                $fieldvar_="fieldvar_".$x."_".$search[$x];
1135                global $$fieldvar_;
1136                $$fieldvar_="";
1137                $fieldvar=$$fieldvar_;
1138                        $x++;
1139                } 
1140                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["all_query"]) {
1141                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["all_query"];
1142                        $op_="BOOLEAN";
1143                       
1144                        $search[$x]="f_7";
1145                        //opérateur
1146                $op="op_".$x."_".$search[$x];
1147                global $$op;
1148                $$op=$op_;
1149                                       
1150                //contenu de la recherche
1151                $field="field_".$x."_".$search[$x];
1152                $field_=array();
1153                $field_[0]=$valeur_champ;
1154                global $$field;
1155                $$field=$field_;
1156               
1157                //opérateur inter-champ
1158                $inter="inter_".$x."_".$search[$x];
1159                global $$inter;
1160                $$inter="";
1161                                       
1162                //variables auxiliaires
1163                $fieldvar_="fieldvar_".$x."_".$search[$x];
1164                global $$fieldvar_;
1165                $t["is_num"][0]=$_SESSION["session_history"][$id_champ]["NOTI"]["DOCNUM_QUERY"];
1166                $t["ck_affiche"][0]=$_SESSION["session_history"][$id_champ]["NOTI"]["DOCNUM_QUERY"];
1167                $$fieldvar_=$t;
1168                $fieldvar=$$fieldvar_;
1169                        $x++;
1170                }
1171                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["author_query"]) {
1172                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["author_query"];
1173                       
1174                        $op_="BOOLEAN";
1175                        $search[$x]="f_8";
1176                       
1177                        //opérateur
1178                $op="op_".$x."_".$search[$x];
1179                global $$op;
1180                $$op=$op_;
1181                                       
1182                //contenu de la recherche
1183                $field="field_".$x."_".$search[$x];
1184                $field_=array();
1185                $field_[0]=$valeur_champ;
1186                global $$field;
1187                $$field=$field_;
1188               
1189                //opérateur inter-champ
1190                $inter="inter_".$x."_".$search[$x];
1191                global $$inter;
1192                if ($x>0) {
1193                        $$inter="and";
1194                } else {
1195                        $$inter="";
1196                }                       
1197                //variables auxiliaires
1198                $fieldvar_="fieldvar_".$x."_".$search[$x];
1199                global $$fieldvar_;
1200                $$fieldvar_="";
1201                $fieldvar=$$fieldvar_;
1202                        $x++;
1203                } else {
1204                        if ($_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"]) {
1205                                $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"];
1206                                                       
1207                                $op_="EQ";
1208                                $search[$x]="f_8";
1209                                //opérateur
1210                        $op="op_".$x."_".$search[$x];
1211                        global $$op;
1212                        $$op=$op_;
1213                                       
1214                        //contenu de la recherche
1215                        $field="field_".$x."_".$search[$x];
1216                        $field_=array();
1217                        $field_[0]=$valeur_champ;
1218                        global $$field;
1219                        $$field=$field_;
1220               
1221                        //opérateur inter-champ
1222                        $inter="inter_".$x."_".$search[$x];
1223                        global $$inter;
1224                        if ($x>0) {
1225                                $$inter="and";
1226                        } else {
1227                                $$inter="";
1228                        }
1229                                       
1230                        //variables auxiliaires
1231                        $fieldvar_="fieldvar_".$x."_".$search[$x];
1232                        global $$fieldvar_;
1233                        $$fieldvar_="";
1234                        $fieldvar=$$fieldvar_;
1235                                $x++;
1236                        }
1237                }
1238                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["typdoc_query"]) {
1239                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["typdoc_query"];
1240                        $op_="EQ";
1241                        $search[$x]="f_9";
1242                        //opérateur
1243                $op="op_".$x."_".$search[$x];
1244                global $$op;
1245                $$op=$op_;
1246                                       
1247                //contenu de la recherche
1248                $field="field_".$x."_".$search[$x];
1249                $field_=array();
1250                $field_[0]=$valeur_champ;
1251                global $$field;
1252                $$field=$field_;
1253               
1254                //opérateur inter-champ
1255                $inter="inter_".$x."_".$search[$x];
1256                global $$inter;
1257                if ($x>0) {
1258                        $$inter="and";
1259                } else {
1260                        $$inter="";
1261                }                       
1262                //variables auxiliaires
1263                $fieldvar_="fieldvar_".$x."_".$search[$x];
1264                global $$fieldvar_;
1265                $$fieldvar_="";
1266                $fieldvar=$$fieldvar_;
1267                        $x++;
1268                } 
1269                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["statut_query"]) {
1270                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["statut_query"];
1271                        $op_="EQ";
1272                        $search[$x]="f_10";
1273                        //opérateur
1274                $op="op_".$x."_".$search[$x];
1275                global $$op;
1276                $$op=$op_;
1277                                       
1278                //contenu de la recherche
1279                $field="field_".$x."_".$search[$x];
1280                $field_=array();
1281                $field_[0]=$valeur_champ;
1282                global $$field;
1283                $$field=$field_;
1284               
1285                //opérateur inter-champ
1286                $inter="inter_".$x."_".$search[$x];
1287                global $$inter;
1288                if ($x>0) {
1289                        $$inter="and";
1290                } else {
1291                        $$inter="";
1292                }                       
1293                //variables auxiliaires
1294                $fieldvar_="fieldvar_".$x."_".$search[$x];
1295                global $$fieldvar_;
1296                $$fieldvar_="";
1297                $fieldvar=$$fieldvar_;
1298                } 
1299        }
1300       
1301        static function convert_simple_multi_unimarc($id_champ) {
1302                global $search;
1303               
1304                $x=0;
1305               
1306                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["title_query"]) {
1307                        $op_="BOOLEAN";
1308                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["title_query"];
1309                       
1310                        $search[$x]="f_6";
1311                        //opérateur
1312                $op="op_".$x."_".$search[$x];
1313                global $$op;
1314                $$op=$op_;
1315                                       
1316                //contenu de la recherche
1317                $field="field_".$x."_".$search[$x];
1318                $field_=array();
1319                $field_[0]=$valeur_champ;
1320                global $$field;
1321                $$field=$field_;
1322               
1323                //opérateur inter-champ
1324                $inter="inter_".$x."_".$search[$x];
1325                global $$inter;
1326                $$inter="";
1327                                       
1328                //variables auxiliaires
1329                $fieldvar_="fieldvar_".$x."_".$search[$x];
1330                global $$fieldvar_;
1331                $$fieldvar_="";
1332                $fieldvar=$$fieldvar_;
1333                        $x++;
1334                } 
1335                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["all_query"]) {
1336                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["all_query"];
1337                        $op_="BOOLEAN";
1338                       
1339                        $search[$x]="f_7";
1340                        //opérateur
1341                $op="op_".$x."_".$search[$x];
1342                global $$op;
1343                $$op=$op_;
1344                                       
1345                //contenu de la recherche
1346                $field="field_".$x."_".$search[$x];
1347                $field_=array();
1348                $field_[0]=$valeur_champ;
1349                global $$field;
1350                $$field=$field_;
1351               
1352                //opérateur inter-champ
1353                $inter="inter_".$x."_".$search[$x];
1354                global $$inter;
1355                $$inter="";
1356                                       
1357                //variables auxiliaires
1358                $fieldvar_="fieldvar_".$x."_".$search[$x];
1359                global $$fieldvar_;
1360                $$fieldvar_="";
1361                $fieldvar=$$fieldvar_;
1362                        $x++;
1363                }
1364                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["author_query"]) {
1365                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["author_query"];
1366                       
1367                        $op_="BOOLEAN";
1368                        $search[$x]="f_8";
1369                       
1370                        //opérateur
1371                $op="op_".$x."_".$search[$x];
1372                global $$op;
1373                $$op=$op_;
1374                                       
1375                //contenu de la recherche
1376                $field="field_".$x."_".$search[$x];
1377                $field_=array();
1378                $field_[0]=$valeur_champ;
1379                global $$field;
1380                $$field=$field_;
1381               
1382                //opérateur inter-champ
1383                $inter="inter_".$x."_".$search[$x];
1384                global $$inter;
1385                if ($x>0) {
1386                        $$inter="and";
1387                } else {
1388                        $$inter="";
1389                }                       
1390                //variables auxiliaires
1391                $fieldvar_="fieldvar_".$x."_".$search[$x];
1392                global $$fieldvar_;
1393                $$fieldvar_="";
1394                $fieldvar=$$fieldvar_;
1395                        $x++;
1396                } else {
1397                        if ($_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"]) {
1398                                $author_id=$_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"];
1399                                $requete="select concat(author_name,', ',author_rejete) from authors where author_id=".$author_id;
1400                                $r_author=mysql_query($requete);
1401                                if (@mysql_num_rows($r_author)) {
1402                                        $valeur_champ=mysql_result($r_author,0,0);
1403                                }
1404                                $op_="BOOLEAN";
1405                                $search[$x]="f_8";
1406                                //opérateur
1407                        $op="op_".$x."_".$search[$x];
1408                        global $$op;
1409                        $$op=$op_;
1410                                       
1411                        //contenu de la recherche
1412                        $field="field_".$x."_".$search[$x];
1413                        $field_=array();
1414                        $field_[0]=$valeur_champ;
1415                        global $$field;
1416                        $$field=$field_;
1417               
1418                        //opérateur inter-champ
1419                        $inter="inter_".$x."_".$search[$x];
1420                        global $$inter;
1421                        if ($x>0) {
1422                                $$inter="and";
1423                        } else {
1424                                $$inter="";
1425                        }
1426                                       
1427                        //variables auxiliaires
1428                        $fieldvar_="fieldvar_".$x."_".$search[$x];
1429                        global $$fieldvar_;
1430                        $$fieldvar_="";
1431                        $fieldvar=$$fieldvar_;
1432                                $x++;
1433                        }
1434                }
1435                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["typdoc_query"]) {
1436                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["typdoc_query"];
1437                        $op_="EQ";
1438                        $search[$x]="f_9";
1439                        //opérateur
1440                $op="op_".$x."_".$search[$x];
1441                global $$op;
1442                $$op=$op_;
1443                                       
1444                //contenu de la recherche
1445                $field="field_".$x."_".$search[$x];
1446                $field_=array();
1447                $field_[0]=$valeur_champ;
1448                global $$field;
1449                $$field=$field_;
1450               
1451                //opérateur inter-champ
1452                $inter="inter_".$x."_".$search[$x];
1453                global $$inter;
1454                if ($x>0) {
1455                        $$inter="and";
1456                } else {
1457                        $$inter="";
1458                }                       
1459                //variables auxiliaires
1460                $fieldvar_="fieldvar_".$x."_".$search[$x];
1461                global $$fieldvar_;
1462                $$fieldvar_="";
1463                $fieldvar=$$fieldvar_;
1464                        $x++;
1465                } 
1466                //Pas de statut !
1467        }
1468}
1469
1470class searcher_subject extends searcher {
1471        var $s_query="";
1472        var $i_query="";
1473        var $id_query="";
1474        var $nb_s;
1475        var $nb_i;
1476        var $nb_id;
1477        var $t_query;
1478
1479
1480        function show_form() {
1481                global $search_subject;
1482                global $search_indexint,$search_indexint_id;
1483                global $msg;
1484                global $charset;
1485                global $current_module;
1486                global $select3_prop,$search_form_categ,$browser;
1487                global $browser_url;
1488                global $thesaurus_mode_pmb;
1489                global $id_thes;
1490
1491                //affichage du selectionneur de thesaurus et du lien vers les thésaurus
1492                $liste_thesaurus = thesaurus::getThesaurusList();
1493                $sel_thesaurus = '';
1494                $lien_thesaurus = '';
1495               
1496                if ($thesaurus_mode_pmb != 0) {  //la liste des thesaurus n'est pas affichée en mode monothesaurus
1497                        $sel_thesaurus = "<select class='saisie-30em' id='id_thes' name='id_thes' ";
1498                        $sel_thesaurus.= "onchange = \"document.location = '".$this->base_url."&id_thes='+document.getElementById('id_thes').value; \">" ;
1499                        foreach($liste_thesaurus as $id_thesaurus=>$libelle_thesaurus) {
1500                                $sel_thesaurus.= "<option value='".$id_thesaurus."' "; ;
1501                                if ($id_thesaurus == $id_thes) $sel_thesaurus.= " selected";
1502                                $sel_thesaurus.= ">".htmlentities($libelle_thesaurus,ENT_QUOTES,$charset)."</option>";
1503                        }
1504                        $sel_thesaurus.= "<option value=-1 ";
1505                        if ($id_thes == -1) $sel_thesaurus.= "selected ";
1506                        $sel_thesaurus.= ">".htmlentities($msg['thes_all'],ENT_QUOTES,$charset)."</option>";
1507                        $sel_thesaurus.= "</select>&nbsp;";
1508               
1509                }       
1510                $search_form_categ=str_replace("<!-- sel_thesaurus -->",$sel_thesaurus,$search_form_categ);
1511               
1512               
1513                //affichage du choix de langue pour la recherche
1514                //              $sel_langue = '';
1515                //              $sel_langue = "<div class='row'>";
1516                //              $sel_langue.= "<input type='checkbox' name='lg_search' id='lg_search' value='1' />&nbsp;".htmlentities($msg['thes_sel_langue'],ENT_QUOTES, $charset);
1517                //              $sel_langue.= "</div><br />";
1518                //              $search_form_categ=str_replace("<!-- sel_langue -->",$sel_langue,$search_form_categ);
1519               
1520       
1521                $search_form_categ=str_replace("!!base_url!!",$this->base_url,$search_form_categ);
1522                $browser=str_replace("!!browser_url!!",$browser_url,$browser);
1523                print pmb_bidi($search_form_categ.$browser);
1524        }
1525       
1526
1527        function show_error($car,$input,$error_message) {
1528                global $browser_url;
1529                global $browser,$search_form_categ;
1530                global $msg;
1531               
1532               
1533                $search_form_categ=str_replace("!!base_url!!",$this->base_url,$search_form_categ);
1534                print pmb_bidi($search_form_categ);
1535                error_message($msg["searcher_syntax_error"],sprintf($msg["searcher_syntax_error_desc"],$car,$input,$error_message));
1536                $browser=str_replace("!!browser_url!!",$browser_url,$browser);
1537                print pmb_bidi($browser);
1538        }
1539
1540        function make_first_search() {
1541               
1542                global $search_subject;
1543                global $search_indexint,$search_indexint_id,$aut_type;
1544                global $msg;
1545                global $charset;
1546                global $browser,$search_form_categ,$browser_url;
1547                global $lang;
1548                global $dbh;
1549                global $id_thes;
1550                global $thesaurus_mode_pmb;
1551               
1552                if ($search_indexint_id) {
1553                                $this->id=$search_indexint_id;
1554                                $aut_type="indexint";
1555                                return AUT_SEARCH;
1556                }
1557
1558                $this->nbresults=0;
1559
1560                if ($search_subject) {
1561                                $aq=new analyse_query(stripslashes($search_subject));
1562                                if (!$aq->error) {
1563                                       
1564                                        if($id_thes !=-1){
1565                                                $thes= new thesaurus($id_thes);
1566                                        }
1567                                        $requete = "SELECT SQL_CALC_FOUND_ROWS noeuds.id_noeud AS categ_id, ";
1568                                        if(($id_thes !=-1) && ($thes->langue_defaut == $lang)){
1569                                                $members = $aq->get_query_members("categories", "libelle_categorie", "index_categorie", "num_noeud");
1570                                               
1571                                                $requete.= $members["select"]." AS pert ";
1572                                                $requete.= "FROM noeuds JOIN categories ON noeuds.id_noeud = categories.num_noeud AND categories.langue='".addslashes($lang)."' ";
1573                                                $requete.= "WHERE noeuds.num_thesaurus = '".$id_thes."' ";
1574                                                $requete.= "AND (".$members["where"].") ";
1575                                                $requete.= "AND categories.libelle_categorie NOT LIKE '~%' ";
1576                                                $requete.= "ORDER BY pert DESC,categories.index_categorie";
1577                                        }else{
1578                                                $members_catdef = $aq->get_query_members("catdef", "catdef.libelle_categorie", "catdef.index_categorie", "catdef.num_noeud");
1579                                                $members_catlg = $aq->get_query_members("catlg", "catlg.libelle_categorie", "catlg.index_categorie", "catlg.num_noeud");
1580                                               
1581                                                $requete.= "IF (catlg.num_noeud IS NULL, catdef.index_categorie, catlg.index_categorie) as index_categorie, ";
1582                                                $requete.= "IF (catlg.num_noeud IS NULL, ".$members_catdef["select"].", ".$members_catlg["select"].") as pert ";
1583                                               
1584                                                if($id_thes !=-1){
1585                                                        $requete.= "FROM noeuds JOIN categories AS catdef ON noeuds.id_noeud = catdef.num_noeud AND catdef.langue = '".$thes->langue_defaut."' ";
1586                                                        $requete.= "LEFT JOIN categories AS catlg ON catdef.num_noeud = catlg.num_noeud AND catlg.langue = '".$lang."' ";
1587                                                        $requete.= "WHERE noeuds.num_thesaurus = '".$id_thes."' ";
1588                                                }else{
1589                                                        //Plusieurs thésaurus
1590                                                        $requete.= "FROM noeuds JOIN thesaurus ON thesaurus.id_thesaurus = noeuds.num_thesaurus ";
1591                                                        $requete.= "JOIN categories AS catdef ON noeuds.id_noeud = catdef.num_noeud AND catdef.langue = thesaurus.langue_defaut ";
1592                                                        $requete.= "LEFT JOIN categories AS catlg on catdef.num_noeud = catlg.num_noeud AND catlg.langue = '".$lang."' ";
1593                                                        $requete.= "WHERE 1 "; 
1594                                                }
1595                                                $requete.= "AND catdef.libelle_categorie NOT LIKE '~%' ";
1596                                                $requete.= "AND (IF (catlg.num_noeud IS NULL, ".$members_catdef["where"].", ".$members_catlg["where"].") ) ORDER BY pert DESC,index_categorie";
1597                                        }
1598                                        $this->s_query = mysql_query($requete, $dbh);
1599                                       
1600                                        $qry = "SELECT FOUND_ROWS() AS NbRows";
1601                                        if($resnum = mysql_query($qry)){
1602                                                $this->nb_s = mysql_result($resnum,0,0);
1603                                        }
1604                                       
1605                                } else {
1606                                       
1607                                        $this->show_error($aq->current_car,$aq->input_html,$aq->error_message);
1608                                        return;
1609                                }
1610                }
1611
1612                if ($search_indexint) {
1613                                $aq=new analyse_query(stripslashes($search_indexint));
1614                                if (!$aq->error) {
1615                                       
1616                                        $this->nb_id=@mysql_result(@mysql_query("select count(distinct indexint_id) from indexint where indexint_name like '".str_replace("*","%",$search_indexint)."'"),0,0);
1617                                        if ($this->nb_id) {
1618                                                $this->id_query=@mysql_query("select indexint_id from indexint where indexint_name like '".str_replace("*","%",$search_indexint)."' order by indexint_name*1, indexint_name");
1619                                                if ($this->nb_id==1) {
1620                                                                $id=@mysql_fetch_object($this->id_query);
1621                                                                $this->id=$id->indexint_id;
1622                                                                $aut_type="indexint";
1623                                                                return AUT_SEARCH;
1624                                                }
1625                                        }
1626                                        $this->nb_i=@mysql_result(@mysql_query($aq->get_query_count("indexint","indexint_comment","index_indexint","indexint_id")),0,0);
1627                                        if ($this->nb_i)
1628                                                $this->i_query=@mysql_query($aq->get_query("indexint","indexint_comment","index_indexint","indexint_id"));
1629                                } else {
1630                                        $this->show_error($aq->current_car,$aq->input_html,$aq->error_message);
1631                                        return;
1632                                }
1633                }
1634               
1635                if (($this->nb_s+$this->nb_i+$this->nb_id)==0) {
1636                       
1637                       
1638                        //affichage du selectionneur de thesaurus et du lien vers les thésaurus
1639                        $liste_thesaurus = thesaurus::getThesaurusList();
1640                        $sel_thesaurus = '';
1641                        $lien_thesaurus = '';
1642                       
1643                        if ($thesaurus_mode_pmb != 0) {  //la liste des thesaurus n'est pas affichée en mode monothesaurus
1644                                $sel_thesaurus = "<select class='saisie-30em' id='id_thes' name='id_thes' ";
1645                                $sel_thesaurus.= "onchange = \"document.location = '".$this->base_url."&id_thes='+document.getElementById('id_thes').value; \">" ;
1646                                foreach($liste_thesaurus as $id_thesaurus=>$libelle_thesaurus) {
1647                                        $sel_thesaurus.= "<option value='".$id_thesaurus."' "; ;
1648                                        if ($id_thesaurus == $id_thes) $sel_thesaurus.= " selected";
1649                                        $sel_thesaurus.= ">".htmlentities($libelle_thesaurus,ENT_QUOTES,$charset)."</option>";
1650                                }
1651                                $sel_thesaurus.= "<option value=-1 ";
1652                                if ($id_thes == -1) $sel_thesaurus.= "selected ";
1653                                $sel_thesaurus.= ">".htmlentities($msg['thes_all'],ENT_QUOTES,$charset)."</option>";
1654                                $sel_thesaurus.= "</select>&nbsp;";
1655                       
1656                        }       
1657                        $search_form_categ=str_replace("<!-- sel_thesaurus -->",$sel_thesaurus,$search_form_categ);
1658                       
1659                       
1660                        //affichage du choix de langue pour la recherche
1661                        //              $sel_langue = '';
1662                        //              $sel_langue = "<div class='row'>";
1663                        //              $sel_langue.= "<input type='checkbox' name='lg_search' id='lg_search' value='1' />&nbsp;".htmlentities($msg['thes_sel_langue'],ENT_QUOTES, $charset);
1664                        //              $sel_langue.= "</div><br />";
1665                        //              $search_form_categ=str_replace("<!-- sel_langue -->",$sel_langue,$search_form_categ);
1666                       
1667                       
1668                       
1669                        $search_form_categ=str_replace("!!base_url!!",$this->base_url,$search_form_categ);
1670                        print pmb_bidi($search_form_categ);
1671                        error_message($msg["searcher_no_result"],$msg["searcher_no_result_desc"]);
1672                        $browser=str_replace("!!browser_url!!",$browser_url,$browser);
1673                        print pmb_bidi($browser);
1674                        return;
1675
1676                }
1677
1678                return AUT_LIST;
1679        }
1680
1681        function make_aut_search() {
1682                global $dbh;
1683                global $aut_type,$nb_per_page_a_search;
1684                global $thesaurus_auto_postage_montant,$thesaurus_auto_postage_descendant,$thesaurus_auto_postage_nb_montant,$thesaurus_auto_postage_nb_descendant;
1685                global $thesaurus_auto_postage_etendre_recherche,$nb_level_enfants,$nb_level_parents,$base_path,$msg;
1686                global $acces_j;
1687               
1688                if ($nb_per_page_a_search) $this->nb_per_page=$nb_per_page_a_search; else $this->nb_per_page=3;
1689
1690                switch ($aut_type) {
1691                        case "indexint":
1692                                $requete_count="select count(distinct notice_id) from notices ";
1693                                $requete_count.= $acces_j;
1694                                $requete_count.= "where indexint=".$this->id." ";
1695                               
1696                                $requete="select notice_id from notices ";
1697                                $requete.= $acces_j;
1698                                $requete.= "where indexint=".$this->id." ";
1699//                              $requete.= "order by index_serie,tnvol,index_sew limit ".($this->page*$this->nb_per_page).",".$this->nb_per_page;
1700                                break;
1701                               
1702                        case "categ":
1703                                //Lire le champ path du noeud pour étendre la recherche éventuellement au fils et aux père de la catégorie
1704                                // lien Etendre auto_postage
1705                                if(!isset($nb_level_enfants)) {
1706                                        // non defini, prise des valeurs par défaut
1707                                        if(isset($_SESSION["nb_level_enfants"]) && $thesaurus_auto_postage_etendre_recherche) $nb_level_descendant=$_SESSION["nb_level_enfants"];
1708                                        else $nb_level_descendant=$thesaurus_auto_postage_nb_descendant;
1709                                } else {
1710                                        $nb_level_descendant=$nb_level_enfants;
1711                                }                                               
1712                                // lien Etendre auto_postage
1713                                if(!isset($nb_level_parents)) {
1714                                        // non defini, prise des valeurs par défaut
1715                                        if(isset($_SESSION["nb_level_parents"]) && $thesaurus_auto_postage_etendre_recherche) $nb_level_montant=$_SESSION["nb_level_parents"];
1716                                        else $nb_level_montant=$thesaurus_auto_postage_nb_montant;
1717                                } else {
1718                                        $nb_level_montant=$nb_level_parents;
1719                                }       
1720                                $_SESSION["nb_level_enfants"]=  $nb_level_descendant;
1721                                $_SESSION["nb_level_parents"]=  $nb_level_montant;
1722                               
1723                                $q = "select path from noeuds where id_noeud = '".$this->id."' ";
1724                                $r = mysql_query($q, $dbh);
1725                                $path=mysql_result($r, 0, 0);
1726                                $nb_pere=substr_count($path,'/');
1727                               
1728                                // Si un path est renseigné et le paramètrage activé                   
1729                                if ($path && ($thesaurus_auto_postage_descendant || $thesaurus_auto_postage_montant || $thesaurus_auto_postage_etendre_recherche) && ($nb_level_montant || $nb_level_descendant)){
1730                                        //Recherche des fils
1731                                        if(($thesaurus_auto_postage_descendant || $thesaurus_auto_postage_etendre_recherche)&& $nb_level_descendant) {
1732                                                if($nb_level_descendant != '*' && is_numeric($nb_level_descendant))
1733                                                        $liste_fils=" path regexp '^$path(\\/[0-9]*){0,$nb_level_descendant}$' ";
1734                                                else 
1735                                                        $liste_fils=" path like '$path/%' or id_noeud='".$this->id."' ";
1736                                        } else {
1737                                                $liste_fils=" id_noeud = '".$this->id."' ";
1738                                        }                                                       
1739                                        // recherche des pères
1740                                        if(($thesaurus_auto_postage_montant || $thesaurus_auto_postage_etendre_recherche) && $nb_level_montant) {                                               
1741                                                $id_list_pere=explode('/',$path);                       
1742                                                $stop_pere=0;
1743                                                if($nb_level_montant != '*' && is_numeric($nb_level_montant)) $stop_pere=$nb_pere-$nb_level_montant;
1744                                                // si les fils intégré, il y a déjà la categ courant dans la requête
1745                                                if($liste_fils) $i=$nb_pere-1;
1746                                                else $i=$nb_pere;
1747                                                for($i;$i>=$stop_pere; $i--) {
1748                                                        $liste_pere.= " or id_noeud='".$id_list_pere[$i]."' ";
1749                                                }
1750                                        }                       
1751                                        // requete permettant de remonter les notices associées à la liste des catégories trouvées;
1752                                        $suite_req = "FROM noeuds inner join notices_categories on id_noeud=num_noeud inner join notices on notcateg_notice=notice_id ";
1753                                        $suite_req.= $acces_j;
1754                                        $suite_req.= "WHERE ($liste_fils $liste_pere) and notices_categories.notcateg_notice = notices.notice_id ";
1755                                } else {       
1756                                        // cas normal d'avant           
1757                                        $suite_req = "FROM notices_categories, notices ";
1758                                        $suite_req.= $acces_j;
1759                                        $suite_req.= "WHERE notices_categories.num_noeud = '".$this->id."' and notices_categories.notcateg_notice = notices.notice_id ";
1760                                }
1761                                if ($path) {
1762                                        if ($thesaurus_auto_postage_etendre_recherche == 1 || ($thesaurus_auto_postage_etendre_recherche == 2 && !$nb_pere)) {
1763                                                $input_txt="<input name='nb_level_enfants' type='text' size='2' value='$nb_level_descendant'
1764                                                        onchange=\"document.location='".$this->base_url."&aut_id=".$this->id."&aut_type=categ&etat=aut_search&no_rec_history=1&nb_level_enfants='+this.value\">";
1765                                                $auto_postage_form=str_replace("!!nb_level_enfants!!",$input_txt,$msg["categories_autopostage_enfants"]);
1766                                               
1767                                        }elseif ($thesaurus_auto_postage_etendre_recherche == 2 && $nb_pere) {
1768                                                $input_txt="<input name='nb_level_enfants' id='nb_level_enfants' type='text' size='2' value='$nb_level_descendant'
1769                                                        onchange=\"document.location='".$this->base_url."&aut_id=".$this->id."&aut_type=categ&etat=aut_search&no_rec_history=1&nb_level_enfants='+this.value+'&nb_level_enfants='+this.value+'&nb_level_parents='+document.getElementById('nb_level_parents').value;\">";
1770                                                $auto_postage_form=str_replace("!!nb_level_enfants!!",$input_txt,$msg["categories_autopostage_parents_enfants"]);
1771               
1772                                                $input_txt="<input name='nb_level_parents' id='nb_level_parents' type='text' size='2' value='$nb_level_montant'         
1773                                                        onchange=\"document.location='".$this->base_url."&aut_id=".$this->id."&aut_type=categ&etat=aut_search&no_rec_history=1&nb_level_parents='+this.value+'&nb_level_enfants='+document.getElementById('nb_level_enfants').value;\">";
1774                                                $auto_postage_form=str_replace("!!nb_level_parents!!",$input_txt,$auto_postage_form);
1775                               
1776                                        }elseif ($thesaurus_auto_postage_etendre_recherche == 3 ) {
1777                                                if($nb_pere) {
1778                                                        $input_txt="<input name='nb_level_parents' type='text' size='2' value='$nb_level_montant'
1779                                                                onchange=\"document.location='".$this->base_url."&aut_id=".$this->id."&aut_type=categ&etat=aut_search&no_rec_history=1&nb_level_parents='+this.value\">";
1780                                                        $auto_postage_form=str_replace("!!nb_level_parents!!",$input_txt,$msg["categories_autopostage_parents"]);
1781                                                }
1782                                        }
1783                                        $this->auto_postage_form=$auto_postage_form;
1784                                }
1785                                $requete_count="select count(distinct notice_id) ".$suite_req;
1786                                $requete = "select distinct notice_id ".$suite_req."order by index_serie,tnvol,index_sew ";//limit ".($this->page*$this->nb_per_page).",".$this->nb_per_page;
1787                                break;
1788                }
1789                $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
1790                $this->t_query=@mysql_query($requete);
1791                $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
1792                $this->text_query=$requete;
1793        }
1794
1795        function store_search() {
1796                global $search_subject;
1797                global $search_indexint,$search_indexint_id,$show_empty;
1798                global $charset;
1799                $champs="<input type='hidden' name='search_subject' value='".htmlentities(stripslashes($search_subject),ENT_QUOTES,$charset)."'/>";
1800                $champs.="<input type='hidden' name='search_indexint' value='".htmlentities(stripslashes($search_indexint),ENT_QUOTES,$charset)."'/>";
1801                $champs.="<input type='hidden' name='search_indexint_id' value='".htmlentities(stripslashes($search_indexint_id),ENT_QUOTES,$charset)."'/>";
1802                $champs.="<input type='hidden' name='show_empty' value='".$show_empty."'/>";
1803                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
1804                print pmb_bidi($this->store_form);
1805        }
1806
1807        function aut_store_search() {
1808                global $charset,$aut_type;
1809                $champs="<input type='hidden' name='aut_id' value='".htmlentities(stripslashes($this->id),ENT_QUOTES,$charset)."'/>";
1810                $champs.="<input type='hidden' name='aut_type' value='".htmlentities(stripslashes($aut_type),ENT_QUOTES,$charset)."'/>";
1811                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
1812                print pmb_bidi($this->store_form);
1813        }
1814
1815        function aut_list() {
1816                global $search_subject;
1817                global $search_indexint,$search_indexint_id;
1818                global $msg;
1819                global $charset;
1820                global $show_empty;
1821                $pair_impair = "";
1822                $parity = 0;
1823               
1824                if ($search_subject) $human[]="<b>".$msg["histo_subject"]."</b> ".htmlentities(stripslashes($search_subject),ENT_QUOTES,$charset);
1825                if ($search_indexint) $human[]="<b>".$msg["histo_indexint"]."</b> ".htmlentities(stripslashes($search_indexint),ENT_QUOTES,$charset);
1826                $this->human_query=implode(", ",$human);
1827                $this->human_aut_query=implode(", ",$human);
1828                if ($this->nb_s) {
1829                                $empty=false;
1830                                print "<strong>${msg[23]} : ".sprintf($msg["searcher_results"],$this->nb_s)."</strong><hr /><table>";
1831                                while($categ=@mysql_fetch_object($this->s_query)) {
1832                                        $pair_impair = $parity % 2 ? "even" : "odd";
1833                                       
1834                                        $temp = new category($categ->categ_id);
1835                                        if($temp->voir_id) {
1836                                                $cr=$temp->catalog_form;
1837                                                $temp = new category($temp->voir_id);
1838                                                $display = htmlentities($cr,ENT_QUOTES,$charset)." -> <i>".htmlentities($temp->catalog_form,ENT_QUOTES,$charset)."@</i>";
1839                                        } else {
1840                                                $display = htmlentities($temp->catalog_form,ENT_QUOTES,$charset);
1841                                        }
1842                                        if($temp->has_notices()) {
1843                                                $notice_count = $temp->notice_count(false);
1844                                                $link_categ = "<td><a href='".$this->base_url."&aut_id=".$temp->id."&aut_type=categ&etat=aut_search'>$display</a></td><td>$notice_count</td>";
1845                                        }
1846                                        else {
1847                                                $empty=true;
1848                                                if ($show_empty) $link_categ = "<td>$display</td><td></td>"; else $link_categ="";
1849                                        }
1850                                        if ($link_categ)
1851                                                print "<tr class=\"$pair_impair\">$link_categ</tr>";
1852                                }
1853                                print "</table>";
1854                                if (($empty)&&(!$show_empty)) print "<a href='#' onClick=\"document.store_search.show_empty.value=1; document.store_search.page.value=0; document.store_search.submit(); return false;\">".$msg["searcher_categ_empty_results"]."</a>";
1855                }
1856                if (($this->nb_i)||($this->nb_id)) {
1857                                if ($this->nb_id) {
1858                                        print "<br /><strong>${msg[indexint_catal_title]} ".$msg["searcher_exact_indexint"].": ".sprintf($msg["searcher_results"],$this->nb_id)."</strong><hr /><table>";
1859                                        $id_=array();
1860                                        $empty=false;
1861                                        while($indexint=@mysql_fetch_object($this->id_query)) {
1862                                                $pair_impair = $parity % 2 ? "even" : "odd";                                   
1863                                       
1864                                                $id_[$indexint->indexint_id]=1;
1865                                                $temp = new indexint($indexint->indexint_id);
1866                                                $display = htmlentities($temp->name." - ".$temp->comment,ENT_QUOTES,$charset);
1867                                                if($temp->has_notices()) {
1868                                                        $notice_count_sql = "SELECT count(*) FROM notices WHERE indexint = ".$temp->indexint_id;
1869                                                        $notice_count = mysql_result(mysql_query($notice_count_sql), 0, 0);
1870                                                        $link = "<td><a href='".$this->base_url."&aut_id=".$temp->indexint_id."&aut_type=indexint&etat=aut_search'>$display</a></td><td>".$notice_count."</td>";
1871                                                }
1872                                                else {
1873                                                                $empty=true;
1874                                                                if ($show_empty) $link = "<td>$display</td><td></td>"; else $link="";
1875                                                }
1876                                                if ($link) {
1877                                                        print "<tr class=\"$pair_impair\">$link</tr>";
1878                                                        $parity += 1;
1879                                                }
1880                                        }
1881                                        print "</table>";
1882                                        if (($empty)&&(!$show_empty)) print "<a href='#' onClick=\"document.store_search.show_empty.value=1; document.store_search.page.value=0; document.store_search.submit(); return false;\">".$msg["searcher_indexint_empty_results"]."</a><br /><br />";
1883                                }
1884                                $i_="";
1885                                if ($this->nb_i) {
1886                                        $empty=false;
1887                                        while($indexint=@mysql_fetch_object($this->i_query)) {
1888                                                $pair_impair = $parity % 2 ? "even" : "odd";
1889                                                if (!$id_[$indexint->indexint_id]) {
1890                                                                $temp = new indexint($indexint->indexint_id);
1891                                                                $display = htmlentities($temp->name." - ".$temp->comment,ENT_QUOTES,$charset);
1892                                                                if($temp->has_notices()) {
1893                                                                        $notice_count_sql = "SELECT count(*) FROM notices WHERE indexint = ".$temp->indexint_id;
1894                                                                        $notice_count = mysql_result(mysql_query($notice_count_sql), 0, 0);
1895                                                                        $link = "<td><a href='".$this->base_url."&aut_id=".$temp->indexint_id."&aut_type=indexint&etat=aut_search'>$display</a></td><td>".$notice_count."</td>";
1896                                                                }
1897                                                                else {
1898                                                                        $empty=true;
1899                                                                        if ($show_empty) $link = "<td>$display</td><td></td>"; else $link="";
1900                                                                }
1901                                                                if ($link) {
1902                                                                        $i_.="<tr class=\"$pair_impair\">$link</tr>";
1903                                                                        $parity += 1;
1904                                                                }
1905                                                } else $this->nb_i--;
1906                                        }
1907                                        $i_="<br /><strong>${msg[indexint_catal_title]} ".$msg["searcher_descr_indexint"]." : ".sprintf($msg["searcher_results"],$this->nb_i)."</strong><hr /><table>".$i_;
1908                                        $i_.="</table>";
1909                                        if (($empty)&&(!$show_empty)) $i_.="<a href='#' onClick=\"document.store_search.show_empty.value=1; document.store_search.page.value=0; document.store_search.submit(); return false;\">".$msg["searcher_indexint_empty_results"]."</a>";
1910                                        print $i_;
1911                                }
1912                }
1913        }
1914
1915        function notice_list_common($title) {
1916                global $begin_result_liste;
1917                global $end_result_liste;
1918                global $msg;
1919                global $charset;
1920                global $pmb_nb_max_tri;
1921                global $link,$link_expl,$link_explnum,$link_serial,$link_analysis,$link_bulletin,$link_explnum_serial,$link_explnum_analysis,$link_explnum_bulletin,$link_notice_bulletin;
1922                global $pmb_allow_external_search;
1923                global $load_tablist_js;
1924                $research=$title;
1925                $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
1926                if($this->auto_postage_form) $research.="&nbsp;&nbsp;".$this->auto_postage_form;
1927                print "<div class='othersearchinfo'>$research</div>";
1928                print $begin_result_liste;
1929                $load_tablist_js=1;
1930                //Affichage des liens paniers et impression
1931                if ($this->rec_history) {
1932                        if ((($this->etat=='first_search')&&((string)$this->page==""))||($this->direct))
1933                                $current=count($_SESSION["session_history"]);
1934                        else 
1935                                $current=$_SESSION["CURRENT"];
1936                       
1937                        if ($current!==false) {
1938                                echo "&nbsp;<a href='#' onClick=\"openPopUp('./print_cart.php?current_print=$current&action=print_prepare','print',600,700,-2,-2,'scrollbars=yes,menubar=0,resizable=yes'); w.focus(); return false;\">";
1939                                echo "<img src='./images/basket_small_20x20.gif' border='0' align='center' alt=\"".$msg["histo_add_to_cart"]."\" title=\"".$msg["histo_add_to_cart"]."\"></a>&nbsp;";
1940                                $tri_id_info = $_SESSION["tri"] ? "&sort_id=".$_SESSION["tri"] : "";
1941                                echo "<a href='#' onClick=\"openPopUp('./print.php?current_print=$current&action_print=print_prepare".$tri_id_info."','print',500,600,-2,-2,'scrollbars=yes,menubar=0'); return false;\">";
1942                                echo "<img src='./images/print.gif' border='0' align='center' alt=\"".$msg["histo_print"]."\" title=\"".$msg["histo_print"]."\"></a>";
1943                                if ($pmb_allow_external_search) { 
1944                                        print "&nbsp;<a href='catalog.php?categ=search&mode=7&from_mode=1&external_type=simple'>";
1945                                        echo "<img src='./images/external_search.png' border='0' align='center' alt=\"".$msg["connecteurs_external_search_sources"]."\" title=\"".$msg["connecteurs_external_search_sources"]."\"/></a>";
1946                                }
1947                                // on affiche l'icone de tri seulement si on a atteint un nb maxi de résultats
1948                                if ($this->nbresults<=$pmb_nb_max_tri) {
1949                                       
1950                                        //affichage de l'icone de tri
1951                                        echo "<a href=# onClick=\"document.getElementById('history').src='./sort.php?type_tri=notices'; document.getElementById('history').style.display='';return false;\" ";
1952                                        echo "alt=\"".$msg['tris_dispos']."\" title=\"".$msg['tris_dispos']."\">";
1953                                        echo "<img src=./images/orderby_az.gif align=middle hspace=3></a>";
1954                                       
1955                                        //si on a un tri actif on affiche sa description
1956                                        if ($_SESSION["tri"]) {
1957                                                echo $msg['tri_par']." ".$this->sort->descriptionTriParId($_SESSION["tri"]);
1958                                        }
1959                                }
1960                        }
1961                }
1962               
1963                // on lance la requête
1964                $recherche_ajax_mode=0;
1965                $nb=0;
1966                while(($nz=@mysql_fetch_object($this->t_query))) {
1967                                $n=@mysql_fetch_object(@mysql_query("SELECT * FROM notices WHERE notice_id=".$nz->notice_id));
1968                                if($nb++>5)$recherche_ajax_mode=1;
1969                                switch($n->niveau_biblio) {
1970                                        case 'm' :
1971                                                // notice de monographie
1972                                                $display = new mono_display($n, 6, $link, 1, $link_expl, '', $link_explnum,1, 0, 1, 1, "", 1  , false,true,$recherche_ajax_mode,1);
1973                                                print $display->result;
1974                                                break ;
1975                                        case 's' :
1976                                                // on a affaire à un périodique
1977                                                // function serial_display ($id, $level='1', $action_serial='', $action_analysis='', $action_bulletin='', $lien_suppr_cart="", $lien_explnum="", $bouton_explnum=1,$print=0,$show_explnum=1, $show_statut=0, $show_opac_hidden_fields=true, $draggable=0 ) {
1978                                                $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_serial, 0, 0, 1, 1, true, 1,$recherche_ajax_mode );
1979                                                print $serial->result;
1980                                                break;
1981                                        case 'a' :
1982                                                // on a affaire à un article
1983                                                // function serial_display ($id, $level='1', $action_serial='', $action_analysis='', $action_bulletin='', $lien_suppr_cart="", $lien_explnum="", $bouton_explnum=1,$print=0,$show_explnum=1, $show_statut=0, $show_opac_hidden_fields=true, $draggable=0 ) {
1984                                                $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_analysis, 0, 0, 1, 1, true, 1,$recherche_ajax_mode );
1985                                                print $serial->result;
1986                                                break;
1987                                        case 'b' :
1988                                                // on a affaire à un bulletin
1989                                                $rqt_bull_info = "SELECT s.notice_id as id_notice_mere, bulletin_id as id_du_bulletin, b.notice_id as id_notice_bulletin FROM notices as s, notices as b, bulletins WHERE b.notice_id=$n->notice_id and s.notice_id=bulletin_notice and num_notice=b.notice_id";
1990                                                $bull_ids=@mysql_fetch_object(mysql_query($rqt_bull_info));
1991                                                if(!$link_notice_bulletin){
1992                                                        $link_notice_bulletin = './catalog.php?categ=serials&sub=bulletinage&action=view&bul_id='.$bull_ids->id_du_bulletin;
1993                                                } else {
1994                                                        $link_notice_bulletin = str_replace("!!id!!",$bull_ids->id_du_bulletin,$link_notice_bulletin);
1995                                                }
1996                                                $link_explnum_bulletin = str_replace("!!bul_id!!",$bull_ids->id_du_bulletin,$link_explnum_bulletin);
1997                                                $display = new mono_display($n, 6, $link_notice_bulletin, 1, $link_expl, '', $link_explnum_bulletin,1, 0, 1, 1, "", 1  , false,true,$recherche_ajax_mode);
1998                                                $link_notice_bulletin = '';
1999                                                print $display->result;
2000                                                break;
2001                                }
2002                }
2003                // fin de liste
2004                print $end_result_liste;
2005        }
2006
2007        function aut_notice_list() {
2008                global $msg;
2009                global $charset;
2010                global $aut_type;
2011                global $search_subject,$search_indexint;
2012
2013                if ($this->direct) {
2014                        if ($search_subject) $human[]="<b>".$msg["histo_subject"]."</b> ".htmlentities(stripslashes($search_subject),ENT_QUOTES,$charset);
2015                        if ($search_indexint) $human[]="<b>".$msg["histo_indexint"]."</b> ".htmlentities(stripslashes($search_indexint),ENT_QUOTES,$charset);
2016                        $this->human_query=implode(", ",$human);
2017                        $this->human_aut_query=implode(", ",$human);
2018                }
2019                switch ($aut_type) {
2020                        case "indexint":
2021                                $temp = new indexint($this->id);
2022                                $display = "<b>".$msg["searcher_indexint"]."</b>&nbsp;".htmlentities($temp->name." - ".$temp->comment,ENT_QUOTES,$charset);
2023                                $this->human_notice_query=$display;
2024                                break;
2025                        case "categ":
2026                                $display = "<b>".$msg["searcher_categ"]."</b>&nbsp;";
2027                                $temp = new category($this->id);
2028                                if($temp->voir_id) {
2029                                        $cr=$temp->catalog_form;
2030                                        $temp = new category($temp->voir_id);
2031                                        $display.=htmlentities($cr,ENT_QUOTES,$charset)." -> <i>".htmlentities($temp->catalog_form,ENT_QUOTES,$charset)."@</i>";
2032                                } else {
2033                                                        $display.=htmlentities($temp->catalog_form,ENT_QUOTES,$charset);
2034                                }
2035                                $this->human_notice_query=$display;
2036                                break;
2037                }
2038                $this->notice_list_common($display);
2039        }
2040
2041        function rec_env() {
2042                global $msg;
2043                switch ($this->etat) {
2044                                case 'first_search':
2045                                        if ((string)$this->page=="") {
2046                                                $_SESSION["CURRENT"]=count($_SESSION["session_history"]);
2047                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["URI"]=$this->base_url;
2048                                                $_POST["etat"]="";
2049                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['POST']=$_POST;
2050                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['GET']=$_GET;
2051                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]=array();
2052                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]=array();
2053                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_QUERY"]=$this->human_query;
2054                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_TITLE"]=$msg["355"];
2055                                        }
2056                                        if ((string)$this->page=="") { $_POST["page"]=0; $page=0; }
2057                                        if (($this->first_search_result==AUT_LIST)&&($_SESSION["CURRENT"]!==false)) {
2058                                                $_POST["etat"]="first_search";
2059                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['URI']=$this->base_url;
2060                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['POST']=$_POST;
2061                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['GET']=$_GET;
2062                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['PAGE']=$this->page+1;
2063                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]["HUMAN_QUERY"]=$this->human_aut_query;
2064                                        }
2065                                        if (($this->first_search_result==NOTICE_LIST)&&($_SESSION["CURRENT"]!==false)) {
2066                                                $_POST["etat"]="first_search";
2067                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['URI']=$this->base_url;
2068                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['POST']=$_POST;
2069                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['GET']=$_GET;
2070                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['TEXT_QUERY']=$this->text_query;
2071                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['PAGE']=$this->page+1;
2072                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]["HUMAN_QUERY"]=$this->human_notice_query;
2073                                        }
2074                                        break;
2075                                case 'aut_search':
2076                                        if ($this->direct) {
2077                                                $_SESSION["CURRENT"]=count($_SESSION["session_history"]);
2078                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["URI"]=$this->base_url;
2079                                        //      $_POST["etat"]="";
2080                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['POST']=$_POST;
2081                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['GET']=$_GET;
2082                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]=array();
2083                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]=array();
2084                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_QUERY"]=$this->human_query;
2085                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["HUMAN_TITLE"]=$msg["335"];
2086                                        }
2087                                        if ((string)$this->page=="") { $_POST["page"]=0; $page=0; }
2088                                        if ($_SESSION["CURRENT"]!==false) {
2089                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['URI']=$this->base_url;
2090                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['POST']=$_POST;
2091                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['GET']=$_GET;
2092                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['PAGE']=$this->page+1;
2093                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['TEXT_QUERY']=$this->text_query;
2094                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['HUMAN_QUERY']=$this->human_notice_query;
2095                                        }
2096                                       
2097                                        break;
2098                }
2099                $_SESSION["last_required"]=false;
2100        }
2101       
2102        static function convert_simple_multi($id_champ) {
2103                global $search;
2104               
2105                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_indexint_id"]) {
2106                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_indexint_id"];
2107                        $op_="EQ";
2108                        $search[0]="f_2";
2109                } elseif ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_indexint"]) {
2110                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_indexint"];
2111                        $op_="EXACT";   
2112                        $search[0]="f_2";
2113                } elseif ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_subject"]) {
2114                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_subject"];
2115                        $op_="EQ";
2116                        $search[0]="f_1";
2117                } elseif ($_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"]) {
2118                        switch ($_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_type"]) {
2119                                case "indexint":
2120                                        $search[0]="f_2";
2121                                        break;
2122                                case "categ":
2123                                        $search[0]="f_1";
2124                                        break;
2125                        }
2126                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"];
2127                        $op_="EQ";     
2128                }
2129               
2130                //opérateur
2131        $op="op_0_".$search[0];
2132        global $$op;
2133        $$op=$op_;
2134                                       
2135        //contenu de la recherche
2136        $field="field_0_".$search[0];
2137        $field_=array();
2138        $field_[0]=$valeur_champ;
2139        global $$field;
2140        $$field=$field_;
2141               
2142        //opérateur inter-champ
2143        $inter="inter_0_".$search[0];
2144        global $$inter;
2145        $$inter="";
2146                                       
2147        //variables auxiliaires
2148        $fieldvar_="fieldvar_0_".$search[0];
2149        global $$fieldvar_;
2150        $$fieldvar_="";
2151        $fieldvar=$$fieldvar_;
2152        }
2153       
2154        static function convert_simple_multi_unimarc($id_champ) {
2155                global $search;
2156               
2157                if ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_indexint_id"]) {
2158                        $indexint_id=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_indexint_id"];
2159                        //Recherche de l'indexation
2160                        $requete="select indexint_name from indexint where indexint_id=".$indexint_id;
2161                        $r_indexint=mysql_query($requete);
2162                        if (@mysql_num_rows($r_indexint)) {
2163                                $valeur_champ=mysql_result($r_indexint,0,0);
2164                        }
2165                        $op_="BOOLEAN";
2166                        $search[0]="f_2";
2167                } elseif ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_indexint"]) {
2168                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_indexint"];
2169                        $op_="BOOLEAN"; 
2170                        $search[0]="f_2";
2171                } elseif ($_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_subject"]) {
2172                        $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["POST"]["search_subject"];
2173                        $op_="BOOLEAN";
2174                        $search[0]="f_1";
2175                } elseif ($_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"]) {
2176                        switch ($_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_type"]) {
2177                                case "indexint":
2178                                        $search[0]="f_2";
2179                                        //Recherche de l'indexation
2180                                        $indexint_id=$_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"];
2181                                        $requete="select indexint_name from indexint where indexint_id=".$indexint_id;
2182                                        $r_indexint=mysql_query($requete);
2183                                        if (@mysql_num_rows($r_indexint)) {
2184                                                $valeur_champ=mysql_result($r_indexint,0,0);
2185                                        }
2186                                        break;
2187                                case "categ":
2188                                        $search[0]="f_1";
2189                                        //Recherche de la catégorie
2190                                        $categ_id=$_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"];
2191                                        $requete="select libelle_categorie from categories where num_noeud=".$categ_id;
2192                                        $r_cat=mysql_query($requete);
2193                                        if (@mysql_num_rows($r_cat)) {
2194                                                $valeur_champ=mysql_result($r_cat,0,0);
2195                                        }
2196                                        break;
2197                        }
2198                        $op_="BOOLEAN"; 
2199                }
2200               
2201                //opérateur
2202        $op="op_0_".$search[0];
2203        global $$op;
2204        $$op=$op_;
2205                                       
2206        //contenu de la recherche
2207        $field="field_0_".$search[0];
2208        $field_=array();
2209        $field_[0]=$valeur_champ;
2210        global $$field;
2211        $$field=$field_;
2212               
2213        //opérateur inter-champ
2214        $inter="inter_0_".$search[0];
2215        global $$inter;
2216        $$inter="";
2217                                       
2218        //variables auxiliaires
2219        $fieldvar_="fieldvar_0_".$search[0];
2220        global $$fieldvar_;
2221        $$fieldvar_="";
2222        $fieldvar=$$fieldvar_;
2223        }
2224}
2225
2226class searcher_publisher extends searcher {
2227        var $p_query;
2228        var $c_query;
2229        var $s_query;
2230        var $nb_p;
2231        var $nb_c;
2232        var $nb_s;
2233        var $t_query;
2234       
2235        function show_form() {
2236                global $search_form_editeur,$browser_editeur,$browser_url;
2237
2238                $search_form_editeur=str_replace("!!base_url!!",$this->base_url,$search_form_editeur);
2239                $browser_editeur=str_replace("!!browser_url!!",$browser_url,$browser_editeur);
2240                print $search_form_editeur.$browser_editeur;
2241        }
2242
2243        function show_error($car,$input,$error_message) {
2244                global $browser_url;
2245                global $browser,$search_form_editeur;
2246                global $msg;
2247                $search_form_editeur=str_replace("!!base_url!!",$this->base_url,$search_form_editeur);
2248                print $search_form_editeur;
2249                error_message($msg["searcher_syntax_error"],sprintf($msg["searcher_syntax_error_desc"],$car,$input,$error_message));
2250                $browser=str_replace("!!browser_url!!",$browser_url,$browser);
2251                print $browser;
2252        }
2253
2254        function make_first_search() {
2255                global $search_ed;
2256                global $msg,$charset;
2257                global $browser,$browser_url,$search_form_editeur;
2258
2259                $aq=new analyse_query(stripslashes($search_ed),0,0,1,1);
2260                if (!$aq->error) {
2261                                $this->nbresults=0;
2262
2263                                //Recherche dans les éditeurs
2264                                $rq_p_c=$aq->get_query_count("publishers","ed_name","index_publisher","ed_id");
2265                                $this->nb_p=@mysql_result(@mysql_query($rq_p_c),0,0);
2266                                if ($this->nb_p) {
2267                                        $rq_p=$aq->get_query("publishers","ed_name","index_publisher","ed_id");
2268                                        $this->p_query=@mysql_query($rq_p);
2269                                }
2270                                //Recherche des collections
2271                                $rq_c_c=$aq->get_query_count("collections","collection_name","index_coll","collection_id");
2272                                $this->nb_c=@mysql_result(@mysql_query($rq_c_c),0,0);
2273                                if ($this->nb_c) {
2274                                        $rq_c=$aq->get_query("collections","collection_name","index_coll","collection_id");
2275                                        $this->c_query=@mysql_query($rq_c);
2276                                }
2277                                //Recherche des sous collections
2278                                $rq_s_c=$aq->get_query_count("sub_collections","sub_coll_name","index_sub_coll","sub_coll_id");
2279                                $this->nb_s=@mysql_result(@mysql_query($rq_s_c),0,0);
2280                                if ($this->nb_s) {
2281                                        $rq_s=$aq->get_query("sub_collections","sub_coll_name","index_sub_coll","sub_coll_id");
2282                                        $this->s_query=@mysql_query($rq_s);
2283                                }
2284                                if (($this->nb_p+$this->nb_c+$this->nb_s)==0) {
2285                                        $search_form_editeur=str_replace("!!base_url!!",$this->base_url,$search_form_editeur);
2286                                        print $search_form_editeur;
2287                                        error_message($msg["searcher_no_result"],$msg["searcher_no_result_desc"]);
2288                                        $browser=str_replace("!!browser_url!!",$browser_url,$browser);
2289                                        print $browser;
2290                                        return;
2291                                } else return AUT_LIST;
2292                } else {
2293                                $this->show_error($aq->current_car,$aq->input_html,$aq->error_message);
2294                }
2295        }
2296
2297        function make_aut_search() {
2298                global $aut_type,$mag,$charset,$nb_per_page_a_search;
2299                global $acces_j;
2300
2301                if ($nb_per_page_a_search) $this->nb_per_page=$nb_per_page_a_search; else $this->nb_per_page=3;
2302
2303                switch ($aut_type) {
2304                                case "publisher":
2305                                        $requete_count = "select count(distinct notice_id) from notices ";
2306                                        $requete_count.= $acces_j;
2307                                        $requete_count.= "where (ed1_id='".$this->id."' or ed2_id='".$this->id."') ";
2308                                       
2309                                        $requete = "select distinct notice_id from notices ";
2310                                        $requete.= $acces_j;
2311                                        $requete.= "where (ed1_id='".$this->id."' or ed2_id='".$this->id."') ";
2312//                                      $requete.= "order by index_serie,tnvol,index_sew limit ".($this->page*$this->nb_per_page).",".$this->nb_per_page;
2313                                        break;
2314                                       
2315                                case "collection":
2316                                        $requete_count = "select count(distinct notice_id) from notices ";
2317                                        $requete_count.= $acces_j;
2318                                        $requete_count.= "where coll_id='".$this->id."' ";
2319                                       
2320                                        $requete = "select distinct notice_id from notices ";
2321                                        $requete.= $acces_j;
2322                                        $requete.= "where coll_id='".$this->id."' ";
2323//                                      $requete.= "order by index_serie,tnvol,index_sew limit ".($this->page*$this->nb_per_page).",".$this->nb_per_page;
2324                                        break;
2325                                       
2326                                case "subcoll":
2327                                        $requete_count = "select count(distinct notice_id) from notices ";
2328                                        $requete_count.= $acces_j;
2329                                        $requete_count.= "where subcoll_id='".$this->id."' ";
2330                                       
2331                                        $requete = "select distinct notice_id from notices ";
2332                                        $requete.= $acces_j;
2333                                        $requete.= "where subcoll_id='".$this->id."' ";
2334//                                      $requete.= "order by index_serie,tnvol,index_sew limit ".($this->page*$this->nb_per_page).",".$this->nb_per_page;
2335                                        break;
2336
2337                }
2338                $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
2339                $this->t_query=@mysql_query($requete);
2340                $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
2341                $this->text_query=$requete;
2342        }
2343
2344        function store_search() {
2345                global $search_ed;
2346                global $show_empty;
2347                global $charset;
2348                $champs="<input type='hidden' name='search_ed' value='".htmlentities(stripslashes($search_ed),ENT_QUOTES,$charset)."'/>";
2349                $champs.="<input type='hidden' name='show_empty' value='".$show_empty."'/>";
2350                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
2351                print $this->store_form;
2352        }
2353
2354        function aut_store_search() {
2355                global $charset,$aut_type;
2356                $champs="<input type='hidden' name='aut_id' value='".htmlentities(stripslashes($this->id),ENT_QUOTES,$charset)."'/>";
2357                $champs.="<input type='hidden' name='aut_type' value='".htmlentities(stripslashes($aut_type),ENT_QUOTES,$charset)."'/>";
2358                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
2359                print $this->store_form;
2360        }
2361
2362        function aut_list() {
2363                global $msg,$charset;
2364                global $search_ed;
2365
2366                $this->human_query="<b>".$msg["356"]." </b> ".htmlentities(stripslashes($search_ed),ENT_QUOTES,$charset);
2367                $this->human_aut_query=$this->human_query;
2368               
2369                $pair_impair = "";
2370                $parity = 0;
2371                if ($this->nb_p) {
2372                                print "<strong>".$msg["searcher_publisher"]." : ".sprintf($msg["searcher_results"],$this->nb_p)."</strong><hr /><table>";
2373                                while ($p=@mysql_fetch_object($this->p_query)) {
2374                                        $pair_impair = $parity % 2 ? "even" : "odd";
2375                                        $temp=new editeur($p->ed_id);
2376                                        $notice_count_sql = "SELECT count(*) FROM notices WHERE ed1_id = ".$p->ed_id." OR ed2_id = ".$p->ed_id;
2377                                        $notice_count = mysql_result(mysql_query($notice_count_sql), 0, 0);
2378                                        print "<tr class=\"".$pair_impair."\"><td><a href='".$this->base_url."&etat=aut_search&aut_type=publisher&aut_id=".$p->ed_id."'>".htmlentities($temp->display,ENT_QUOTES,$charset)."</a>";
2379                                        if($temp->web) {
2380                                                print "&nbsp;<a href=\"".$temp->web."\" target=\"_web\">";
2381                                                print "<img src=\"./images/globe.gif\" border=\"0\" align=\"top\"></a>";
2382                                        }
2383                                        print "</td><td>$notice_count</td></tr>\n";
2384                                        $parity++;
2385                                }
2386                                print "</table>\n";
2387                }
2388                if ($this->nb_c) {
2389                                print "<strong>".$msg["searcher_coll"]." : ".sprintf($msg["searcher_results"],$this->nb_c)."</strong><hr /><table>";
2390                                while ($c=@mysql_fetch_object($this->c_query)) {
2391                                        $pair_impair = $parity % 2 ? "even" : "odd";
2392                                        $temp=new collection($c->collection_id);
2393                                        $notice_count_sql = "SELECT count(*) FROM notices WHERE coll_id = ".$c->collection_id;
2394                                        $notice_count = mysql_result(mysql_query($notice_count_sql), 0, 0);
2395                                        print "<tr class=\"".$pair_impair."\"><td><a href='".$this->base_url."&etat=aut_search&aut_type=collection&aut_id=".$c->collection_id."'>".htmlentities($temp->display,ENT_QUOTES,$charset)."</a></td><td>$notice_count</td></tr>\n";
2396                                        $parity++;
2397                                }
2398                                print "</table>\n";
2399                }
2400                if ($this->nb_s) {
2401                                print "<strong>".$msg["searcher_subcoll"]." : ".sprintf($msg["searcher_results"],$this->nb_s)."</strong><hr /><table>";
2402                                while ($s=@mysql_fetch_object($this->s_query)) {
2403                                        $pair_impair = $parity % 2 ? "even" : "odd";
2404                                        $temp=new subcollection($s->sub_coll_id);
2405                                        $notice_count_sql = "SELECT count(*) FROM notices WHERE subcoll_id = ".$s->sub_coll_id;
2406                                        $notice_count = mysql_result(mysql_query($notice_count_sql), 0, 0);
2407                                        print "<tr class=\"".$pair_impair."\"><td><a href='".$this->base_url."&etat=aut_search&aut_type=subcoll&aut_id=".$s->sub_coll_id."'>".$temp->display."</a></td><td>$notice_count</td></tr>\n";
2408                                        $parity++;
2409                                }
2410                                print "</table>\n";
2411                }
2412        }
2413
2414        function notice_list_common($title) {
2415                global $begin_result_liste;
2416                global $end_result_liste;
2417                global $msg;
2418                global $charset;
2419                global $pmb_nb_max_tri;
2420                global $link,$link_expl,$link_explnum,$link_serial,$link_analysis,$link_bulletin,$link_explnum_serial,$link_explnum_analysis,$link_explnum_bulletin,$link_notice_bulletin;
2421                global $pmb_allow_external_search;
2422                global $load_tablist_js;
2423                $research=$title;
2424                $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
2425                print "<div class='othersearchinfo'>$research</div>";
2426                print $begin_result_liste;
2427                $load_tablist_js=1;
2428                //Affichage des liens paniers et impression
2429                if ($this->rec_history) {
2430                        $current=$_SESSION["CURRENT"];
2431                        if ($current!==false) {
2432                                $tri_id_info = $_SESSION["tri"] ? "&sort_id=".$_SESSION["tri"] : "";
2433                                print "&nbsp;<a href='#' onClick=\"openPopUp('./print_cart.php?current_print=$current&action=print_prepare".$tri_id_info."','print',500, 600, -2, -2, 'scrollbars=yes,menubar=0,resizable=yes'); w.focus(); return false;\"><img src='./images/basket_small_20x20.gif' border='0' align='center' alt=\"".$msg["histo_add_to_cart"]."\" title=\"".$msg["histo_add_to_cart"]."\"></a>&nbsp;<a href='#' onClick=\"openPopUp('./print.php?current_print=$current&action_print=print_prepare','print', 500, 600, -2, -2, 'scrollbars=yes,menubar=0'); return false;\"><img src='./images/print.gif' border='0' align='center' alt=\"".$msg["histo_print"]."\" title=\"".$msg["histo_print"]."\"/></a>";
2434                                if ($pmb_allow_external_search) print "&nbsp;<a href='catalog.php?categ=search&mode=7&from_mode=3&external_type=simple'><img src='./images/external_search.png' border='0' align='center' alt=\"".$msg["connecteurs_external_search_sources"]."\" title=\"".$msg["connecteurs_external_search_sources"]."\"/></a>";
2435                                // on affiche l'icone de tri seulement si on a atteint un nb maxi de résultats
2436                                if ($this->nbresults<=$pmb_nb_max_tri) {
2437                                       
2438                                        //affichage de l'icone de tri
2439                                        echo "<a href=# onClick=\"document.getElementById('history').src='./sort.php?type_tri=notices'; document.getElementById('history').style.display='';return false;\" ";
2440                                        echo "alt=\"".$msg['tris_dispos']."\" title=\"".$msg['tris_dispos']."\">";
2441                                        echo "<img src=./images/orderby_az.gif align=middle hspace=3></a>";
2442                                       
2443                                        //si on a un tri actif on affiche sa description
2444                                        if ($_SESSION["tri"]) {
2445                                                echo $msg['tri_par']." ".$this->sort->descriptionTriParId($_SESSION["tri"]);
2446                                        }
2447                                }
2448                        }
2449                }
2450                // on lance la requête
2451                $recherche_ajax_mode=0;
2452                $nb=0;
2453                while(($nz=@mysql_fetch_object($this->t_query))) {
2454                                $n=@mysql_fetch_object(@mysql_query("SELECT * FROM notices WHERE notice_id=".$nz->notice_id));
2455                                if($nb++>5)$recherche_ajax_mode=1;
2456                                switch($n->niveau_biblio) {
2457                                        case 'm' :
2458                                                // notice de monographie
2459                                                $display = new mono_display($n, 6, $link, 1, $link_expl, '', $link_explnum,1, 0, 1, 1, "", 1  , false,true,$recherche_ajax_mode,1);
2460                                                print $display->result;
2461                                                break ;
2462                                        case 's' :
2463                                                // on a affaire à un périodique
2464                                                // function serial_display ($id, $level='1', $action_serial='', $action_analysis='', $action_bulletin='', $lien_suppr_cart="", $lien_explnum="", $bouton_explnum=1,$print=0,$show_explnum=1, $show_statut=0, $show_opac_hidden_fields=true, $draggable=0 ) {
2465                                                $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_serial, 0, 0, 1, 1, true, 1,$recherche_ajax_mode );
2466                                                print $serial->result;
2467                                                break;
2468                                        case 'a' :
2469                                                // on a affaire à un article
2470                                                // function serial_display ($id, $level='1', $action_serial='', $action_analysis='', $action_bulletin='', $lien_suppr_cart="", $lien_explnum="", $bouton_explnum=1,$print=0,$show_explnum=1, $show_statut=0, $show_opac_hidden_fields=true, $draggable=0 ) {
2471                                                $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_analysis, 0, 0, 1, 1, true, 1,$recherche_ajax_mode );
2472                                                print $serial->result;
2473                                                break;
2474                                        case 'b' :
2475                                                // on a affaire à un bulletin
2476                                                $rqt_bull_info = "SELECT s.notice_id as id_notice_mere, bulletin_id as id_du_bulletin, b.notice_id as id_notice_bulletin FROM notices as s, notices as b, bulletins WHERE b.notice_id=$n->notice_id and s.notice_id=bulletin_notice and num_notice=b.notice_id";
2477                                                $bull_ids=@mysql_fetch_object(mysql_query($rqt_bull_info));
2478                                                if(!$link_notice_bulletin){
2479                                                        $link_notice_bulletin = './catalog.php?categ=serials&sub=bulletinage&action=view&bul_id='.$bull_ids->id_du_bulletin;
2480                                                } else {
2481                                                        $link_notice_bulletin = str_replace("!!id!!",$bull_ids->id_du_bulletin,$link_notice_bulletin);
2482                                                }
2483                                                $link_explnum_bulletin = str_replace("!!bul_id!!",$bull_ids->id_du_bulletin,$link_explnum_bulletin);
2484                                                $display = new mono_display($n, 6, $link_notice_bulletin, 1, $link_expl, '', $link_explnum_bulletin,1, 0, 1, 1, "", 1  , false,true,$recherche_ajax_mode);
2485                                                $link_notice_bulletin = '';
2486                                                print $display->result;
2487                                                break;
2488                                }
2489                }
2490                // fin de liste
2491                print $end_result_liste;
2492        }
2493
2494        function aut_notice_list() {
2495                global $msg;
2496                global $charset;
2497                global $aut_type;
2498
2499                switch ($aut_type) {
2500                                case "publisher":
2501                                        $temp = new editeur($this->id);
2502                                        $display = "<b>".$msg["searcher_publisher"]."</b>&nbsp;".htmlentities($temp->display,ENT_QUOTES,$charset);
2503                                        $this->human_notice_query=$display;
2504                                        break;
2505                                case "collection":
2506                                        $display = "<b>".$msg["searcher_coll"]."</b>&nbsp;";
2507                                        $temp = new collection($this->id);
2508                                        $display.= htmlentities($temp->display,ENT_QUOTES,$charset);
2509                                        $this->human_notice_query=$display;
2510                                        break;
2511                                case "subcoll":
2512                                        $display = "<b>".$msg["searcher_subcoll"]."</b>&nbsp;";
2513                                        $temp = new subcollection($this->id);
2514                                        $display.=$temp->display;
2515                                        $this->human_notice_query=$display;
2516                                        break;
2517                }
2518                $this->notice_list_common($display);
2519        }
2520
2521        function rec_env() {
2522                global $msg;
2523                switch ($this->etat) {
2524                                case 'first_search':
2525                                        if ((string)$this->page=="") {
2526                                                $_SESSION["CURRENT"]=count($_SESSION["session_history"]);
2527                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["URI"]=$this->base_url;
2528                                                $_POST["etat"]="";
2529                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['POST']=$_POST;
2530                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['GET']=$_GET;
2531                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]=array();
2532                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]=array();
2533                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_QUERY"]=$this->human_query;
2534                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_TITLE"]=$msg["356"];
2535                                        }
2536                                        if ((string)$this->page=="") { $_POST["page"]=0; $page=0; }
2537                                        if (($this->first_search_result==AUT_LIST)&&($_SESSION["CURRENT"]!==false)) {
2538                                                $_POST["etat"]="first_search";
2539                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['URI']=$this->base_url;
2540                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['POST']=$_POST;
2541                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['GET']=$_GET;
2542                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['PAGE']=$this->page+1;
2543                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]["HUMAN_QUERY"]=$this->human_aut_query;
2544                                        }
2545                                        if (($this->first_search_result==NOTICE_LIST)&&($_SESSION["CURRENT"]!==false)) {
2546                                                $_POST["etat"]="first_search";
2547                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['URI']=$this->base_url;
2548                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['POST']=$_POST;
2549                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['GET']=$_GET;
2550                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['TEXT_QUERY']=$this->text_query;
2551                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['PAGE']=$this->page+1;
2552                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]["HUMAN_QUERY"]=$this->human_notice_query;
2553                                        }
2554                                        break;
2555                                case 'aut_search':
2556                                        if ($_SESSION["CURRENT"]!==false) {
2557                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['URI']=$this->base_url;
2558                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['POST']=$_POST;
2559                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['GET']=$_GET;
2560                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['PAGE']=$this->page+1;
2561                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['TEXT_QUERY']=$this->text_query;
2562                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['HUMAN_QUERY']=$this->human_notice_query;
2563                                        }
2564                                        break;
2565                }
2566                $_SESSION["last_required"]=false;
2567        }
2568       
2569        static function convert_simple_multi($id_champ) {
2570                global $search;
2571               
2572                $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"];
2573                $op_="EQ";
2574               
2575                switch ($_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_type"]) {
2576                        case "publisher":
2577                                $search[0]="f_3";
2578                        break;
2579                        case "collection":
2580                                $search[0]="f_4";
2581                        break;
2582                        case "subcoll":
2583                                $search[0]="f_5";
2584                        break;
2585                }       
2586                               
2587                //opérateur
2588        $op="op_0_".$search[0];
2589        global $$op;
2590        $$op=$op_;
2591                                       
2592        //contenu de la recherche
2593        $field="field_0_".$search[0];
2594        $field_=array();
2595        $field_[0]=$valeur_champ;
2596        global $$field;
2597        $$field=$field_;
2598               
2599        //opérateur inter-champ
2600        $inter="inter_0_".$search[0];
2601        global $$inter;
2602        $$inter="";
2603                                       
2604        //variables auxiliaires
2605        $fieldvar_="fieldvar_0_".$search[0];
2606        global $$fieldvar_;
2607        $$fieldvar_="";
2608        $fieldvar=$$fieldvar_;
2609        }
2610       
2611        static function convert_simple_multi_unimarc($id_champ) {
2612                global $search;
2613               
2614                $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"];
2615                $op_="BOOLEAN";
2616               
2617                switch ($_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_type"]) {
2618                        case "publisher":
2619                                $search[0]="f_3";
2620                                //Recherche de l'éditeur
2621                                $publisher_id=$valeur_champ;
2622                                $requete="select ed_name from publishers where ed_id=".$publisher_id;
2623                                $r_pub=mysql_query($requete);
2624                                if (@mysql_num_rows($r_pub)) {
2625                                        $valeur_champ=mysql_result($r_pub,0,0);
2626                                }
2627                        break;
2628                        case "collection":
2629                                $search[0]="f_4";
2630                                //Recherche de l'indexation
2631                                $coll_id=$valeur_champ;
2632                                $requete="select collection_name from collections where collection_id=".$coll_id;
2633                                $r_coll=mysql_query($requete);
2634                                if (@mysql_num_rows($r_coll)) {
2635                                        $valeur_champ=mysql_result($r_coll,0,0);
2636                                }
2637                        break;
2638                        case "subcoll":
2639                                $search[0]="f_5";
2640                                //Recherche de la sous-collection
2641                                $subcoll_id=$valeur_champ;
2642                                $requete="select sub_coll_name from sub_collections where sub_coll_id=".$subcoll_id;
2643                                $r_subcoll=mysql_query($requete);
2644                                if (@mysql_num_rows($r_subcoll)) {
2645                                        $valeur_champ=mysql_result($r_subcoll,0,0);
2646                                }
2647                        break;
2648                }       
2649                               
2650                //opérateur
2651        $op="op_0_".$search[0];
2652        global $$op;
2653        $$op=$op_;
2654                                       
2655        //contenu de la recherche
2656        $field="field_0_".$search[0];
2657        $field_=array();
2658        $field_[0]=$valeur_champ;
2659        global $$field;
2660        $$field=$field_;
2661               
2662        //opérateur inter-champ
2663        $inter="inter_0_".$search[0];
2664        global $$inter;
2665        $$inter="";
2666                                       
2667        //variables auxiliaires
2668        $fieldvar_="fieldvar_0_".$search[0];
2669        global $$fieldvar_;
2670        $$fieldvar_="";
2671        $fieldvar=$$fieldvar_;
2672        }
2673}
2674
2675class searcher_titre_uniforme extends searcher {
2676        var $p_query;
2677        var $c_query;
2678        var $s_query;
2679        var $nb_p;
2680        var $nb_c;
2681        var $nb_s;
2682        var $t_query;
2683       
2684        function show_form() {
2685                global $search_form_titre_uniforme,$browser_titre_uniforme,$browser_url;
2686
2687                $search_form_titre_uniforme=str_replace("!!base_url!!",$this->base_url,$search_form_titre_uniforme);
2688                $browser_titre_uniforme=str_replace("!!browser_url!!",$browser_url,$browser_titre_uniforme);
2689                print $search_form_titre_uniforme.$browser_titre_uniforme;     
2690        }
2691
2692        function show_error($car,$input,$error_message) {
2693                global $browser_url;
2694                global $browser,$search_form_editeur;
2695                global $msg;
2696                $search_form_editeur=str_replace("!!base_url!!",$this->base_url,$search_form_editeur);
2697                print $search_form_editeur;
2698                error_message($msg["searcher_syntax_error"],sprintf($msg["searcher_syntax_error_desc"],$car,$input,$error_message));
2699                $browser=str_replace("!!browser_url!!",$browser_url,$browser);
2700                print $browser;
2701        }
2702
2703        function make_first_search() {
2704                global $search_tu;
2705                global $msg,$charset;
2706                global $browser,$browser_url,$search_form_titre_uniforme;
2707
2708                $aq=new analyse_query(stripslashes($search_tu),0,0,1,1);
2709                if (!$aq->error) {
2710                        $this->nbresults=0;
2711
2712                        //Recherche dans les titres uniformes
2713                        $rq_tu_count=$aq->get_query_count("titres_uniformes","tu_name","index_tu","tu_id");
2714                        $this->nb_tu=@mysql_result(@mysql_query($rq_tu_count),0,0);
2715                        if ($this->nb_tu) {
2716                                $rq_tu=$aq->get_query("titres_uniformes","tu_name","index_tu","tu_id");
2717                                $this->tu_query=@mysql_query($rq_tu);
2718                                return AUT_LIST;
2719                        }else {
2720                                $search_form_titre_uniforme=str_replace("!!base_url!!",$this->base_url,$search_form_titre_uniforme);
2721                                print $search_form_titre_uniforme;
2722                                error_message($msg["searcher_no_result"],$msg["searcher_no_result_desc"]);
2723                                $browser=str_replace("!!browser_url!!",$browser_url,$browser);
2724                                print $browser;
2725                                return;
2726                        } 
2727                } else {
2728                        $this->show_error($aq->current_car,$aq->input_html,$aq->error_message);
2729                }
2730        }
2731
2732        function make_aut_search() {
2733                global $aut_type,$mag,$charset,$nb_per_page_a_search;
2734                global $acces_j;
2735
2736                if ($nb_per_page_a_search) $this->nb_per_page=$nb_per_page_a_search; else $this->nb_per_page=3;
2737
2738                switch ($aut_type) {
2739                        case "titre_uniforme":
2740                                $requete_count = "select count(distinct ntu_num_notice) from notices_titres_uniformes, notices ";
2741                                $requete_count.= $acces_j;
2742                                $requete_count.= "where ntu_num_notice=notice_id and ntu_num_tu='".$this->id."' ";
2743                               
2744                                $requete = "select distinct notice_id from notices_titres_uniformes, notices ";
2745                                $requete.= $acces_j;
2746                                $requete.= "where ntu_num_notice=notice_id and ntu_num_tu='".$this->id."' ";
2747//                              $requete.= "order by index_serie,tnvol,index_sew limit ".($this->page*$this->nb_per_page).",".$this->nb_per_page;
2748                        break;
2749                }
2750                $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
2751                $this->t_query=@mysql_query($requete);
2752                $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
2753                $this->text_query=$requete;
2754        }
2755
2756        function store_search() {
2757                global $search_ed;
2758                global $show_empty;
2759                global $charset;
2760                $champs="<input type='hidden' name='search_ed' value='".htmlentities(stripslashes($search_ed),ENT_QUOTES,$charset)."'/>";
2761                $champs.="<input type='hidden' name='show_empty' value='".$show_empty."'/>";
2762                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
2763                print $this->store_form;
2764        }
2765
2766        function aut_store_search() {
2767                global $charset,$aut_type;
2768                $champs="<input type='hidden' name='aut_id' value='".htmlentities(stripslashes($this->id),ENT_QUOTES,$charset)."'/>";
2769                $champs.="<input type='hidden' name='aut_type' value='".htmlentities(stripslashes($aut_type),ENT_QUOTES,$charset)."'/>";
2770                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
2771                print $this->store_form;
2772        }
2773
2774        function aut_list() {
2775                global $msg,$charset;
2776                global $search_tu;
2777                $this->human_query="<b>".$msg["356"]." </b> ".htmlentities(stripslashes($search_tu),ENT_QUOTES,$charset);
2778                $this->human_aut_query=$this->human_query;
2779               
2780                $pair_impair = "";
2781                $parity = 0;
2782                if ($this->nb_tu) {
2783                        print "<strong>".$msg["search_by_titre_uniforme"]." : ".sprintf($msg["searcher_results"],$this->nb_tu)."</strong><hr /><table>";
2784                        while (($p=@mysql_fetch_object($this->tu_query))) {
2785                                $pair_impair = $parity % 2 ? "even" : "odd";
2786                                $temp=new titre_uniforme($p->tu_id);
2787                                $notice_count_sql = "SELECT count(*) FROM notices_titres_uniformes WHERE ntu_num_tu = ".$p->tu_id ;
2788                                $notice_count = mysql_result(mysql_query($notice_count_sql), 0, 0);
2789                                print "<tr class=\"".$pair_impair."\"><td><a href='".$this->base_url."&etat=aut_search&aut_type=titre_uniforme&aut_id=".$p->tu_id."'>".htmlentities($temp->name,ENT_QUOTES,$charset)."</a>";
2790                               
2791                                print "</td><td>$notice_count</td></tr>\n";
2792                                $parity++;
2793                        }
2794                        print "</table>\n";
2795                }
2796        }
2797
2798        function notice_list_common($title) {
2799                global $begin_result_liste;
2800                global $end_result_liste;
2801                global $msg;
2802                global $charset;
2803                global $pmb_nb_max_tri;
2804                global $link,$link_expl,$link_explnum,$link_serial,$link_analysis,$link_bulletin,$link_explnum_serial,$link_explnum_analysis,$link_explnum_bulletin;
2805                global $pmb_allow_external_search;
2806                global $load_tablist_js;
2807                $research=$title;
2808                $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
2809                print "<div class='othersearchinfo'>$research</div>";
2810                print $begin_result_liste;
2811                $load_tablist_js=1;
2812                //Affichage des liens paniers et impression
2813                if ($this->rec_history) {
2814                        $current=$_SESSION["CURRENT"];
2815                        if ($current!==false) {
2816                                $tri_id_info = $_SESSION["tri"] ? "&sort_id=".$_SESSION["tri"] : "";
2817                                print "&nbsp;<a href='#' onClick=\"openPopUp('./print_cart.php?current_print=$current&action=print_prepare".$tri_id_info."','print',500, 600, -2, -2, 'scrollbars=yes,menubar=0,resizable=yes'); w.focus(); return false;\"><img src='./images/basket_small_20x20.gif' border='0' align='center' alt=\"".$msg["histo_add_to_cart"]."\" title=\"".$msg["histo_add_to_cart"]."\"></a>&nbsp;<a href='#' onClick=\"openPopUp('./print.php?current_print=$current&action_print=print_prepare','print', 500, 600, -2, -2, 'scrollbars=yes,menubar=0'); return false;\"><img src='./images/print.gif' border='0' align='center' alt=\"".$msg["histo_print"]."\" title=\"".$msg["histo_print"]."\"/></a>";
2818                                if ($pmb_allow_external_search) print "&nbsp;<a href='catalog.php?categ=search&mode=7&from_mode=3&external_type=simple'><img src='./images/external_search.png' border='0' align='center' alt=\"".$msg["connecteurs_external_search_sources"]."\" title=\"".$msg["connecteurs_external_search_sources"]."\"/></a>";
2819                                // on affiche l'icone de tri seulement si on a atteint un nb maxi de résultats
2820                                if ($this->nbresults<=$pmb_nb_max_tri) {
2821                                       
2822                                        //affichage de l'icone de tri
2823                                        echo "<a href=# onClick=\"document.getElementById('history').src='./sort.php?type_tri=notices'; document.getElementById('history').style.display='';return false;\" ";
2824                                        echo "alt=\"".$msg['tris_dispos']."\" title=\"".$msg['tris_dispos']."\">";
2825                                        echo "<img src=./images/orderby_az.gif align=middle hspace=3></a>";
2826                                       
2827                                        //si on a un tri actif on affiche sa description
2828                                        if ($_SESSION["tri"]) {
2829                                                echo $msg['tri_par']." ".$this->sort->descriptionTriParId($_SESSION["tri"]);
2830                                        }
2831                                }
2832                        }
2833                }
2834                // on lance la requête
2835                $recherche_ajax_mode=0;
2836                $nb=0;
2837                while(($nz=@mysql_fetch_object($this->t_query))) {
2838                        $n=@mysql_fetch_object(@mysql_query("SELECT * FROM notices WHERE notice_id=".$nz->notice_id));
2839                        if($nb++>5)$recherche_ajax_mode=1;
2840                        switch($n->niveau_biblio) {
2841                                case 'm' :
2842                                        // notice de monographie
2843                                        $display = new mono_display($n, 6, $link, 1, $link_expl, '', $link_explnum,1, 0, 1, 1, "", 1  , false,true,$recherche_ajax_mode,1);
2844                                        print $display->result;
2845                                        break ;
2846                                case 's' :
2847                                        // on a affaire à un périodique
2848                                        // function serial_display ($id, $level='1', $action_serial='', $action_analysis='', $action_bulletin='', $lien_suppr_cart="", $lien_explnum="", $bouton_explnum=1,$print=0,$show_explnum=1, $show_statut=0, $show_opac_hidden_fields=true, $draggable=0 ) {
2849                                        $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_serial, 0, 0, 1, 1, true, 1,$recherche_ajax_mode );
2850                                        print $serial->result;
2851                                        break;
2852                                case 'a' :
2853                                        // on a affaire à un article
2854                                        // function serial_display ($id, $level='1', $action_serial='', $action_analysis='', $action_bulletin='', $lien_suppr_cart="", $lien_explnum="", $bouton_explnum=1,$print=0,$show_explnum=1, $show_statut=0, $show_opac_hidden_fields=true, $draggable=0 ) {
2855                                        $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_analysis, 0, 0, 1, 1, true, 1,$recherche_ajax_mode );
2856                                        print $serial->result;
2857                                        break;
2858                                case 'b' :
2859                                        // on a affaire à un bulletin
2860                                        $rqt_bull_info = "SELECT s.notice_id as id_notice_mere, bulletin_id as id_du_bulletin, b.notice_id as id_notice_bulletin FROM notices as s, notices as b, bulletins WHERE b.notice_id=$n->notice_id and s.notice_id=bulletin_notice and num_notice=b.notice_id";
2861                                        $bull_ids=@mysql_fetch_object(mysql_query($rqt_bull_info));
2862                                        $link_notice_bulletin = './catalog.php?categ=serials&sub=bulletinage&action=view&bul_id='.$bull_ids->id_du_bulletin;
2863                                        $link_explnum_bulletin = str_replace("!!bul_id!!",$bull_ids->id_du_bulletin,$link_explnum_bulletin);
2864                                        $display = new mono_display($n, 6, $link_notice_bulletin, 1, $link_expl, '', $link_explnum_bulletin,1, 0, 1, 1, "", 1  , false,true,$recherche_ajax_mode);
2865                                        print $display->result;
2866                                        break;
2867                        }
2868                }
2869                // fin de liste
2870                print $end_result_liste;
2871        }
2872
2873        function aut_notice_list() {
2874                global $msg;
2875                global $charset;
2876                global $aut_type;
2877
2878                switch ($aut_type) {
2879                        case "titre_uniforme":
2880                                $temp = new titre_uniforme($this->id);
2881                                $display = "<b>".$msg["search_by_titre_uniforme"]."</b>&nbsp;".htmlentities($temp->name,ENT_QUOTES,$charset);
2882                                $this->human_notice_query=$display;
2883                        break;
2884                }
2885                $this->notice_list_common($display);
2886        }
2887
2888        function rec_env() {
2889                global $msg;
2890                switch ($this->etat) {
2891                        case 'first_search':
2892                                if ((string)$this->page=="") {
2893                                        $_SESSION["CURRENT"]=count($_SESSION["session_history"]);
2894                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["URI"]=$this->base_url;
2895                                        $_POST["etat"]="";
2896                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['POST']=$_POST;
2897                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['GET']=$_GET;
2898                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]=array();
2899                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]=array();
2900                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_QUERY"]=$this->human_query;
2901                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_TITLE"]=$msg["356"];
2902                                }
2903                                if ((string)$this->page=="") { $_POST["page"]=0; $page=0; }
2904                                if (($this->first_search_result==AUT_LIST)&&($_SESSION["CURRENT"]!==false)) {
2905                                        $_POST["etat"]="first_search";
2906                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['URI']=$this->base_url;
2907                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['POST']=$_POST;
2908                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['GET']=$_GET;
2909                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['PAGE']=$this->page+1;
2910                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]["HUMAN_QUERY"]=$this->human_aut_query;
2911                                }
2912                                if (($this->first_search_result==NOTICE_LIST)&&($_SESSION["CURRENT"]!==false)) {
2913                                        $_POST["etat"]="first_search";
2914                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['URI']=$this->base_url;
2915                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['POST']=$_POST;
2916                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['GET']=$_GET;
2917                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['TEXT_QUERY']=$this->text_query;
2918                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['PAGE']=$this->page+1;
2919                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]["HUMAN_QUERY"]=$this->human_notice_query;
2920                                }
2921                        break;
2922                        case 'aut_search':
2923                                if ($_SESSION["CURRENT"]!==false) {
2924                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['URI']=$this->base_url;
2925                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['POST']=$_POST;
2926                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['GET']=$_GET;
2927                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['PAGE']=$this->page+1;
2928                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['TEXT_QUERY']=$this->text_query;
2929                                        $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['HUMAN_QUERY']=$this->human_notice_query;
2930                                }
2931                        break;
2932                }
2933                $_SESSION["last_required"]=false;
2934        }
2935       
2936        static function convert_simple_multi($id_champ) {
2937                global $search;
2938               
2939                $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"];
2940                $op_="EQ";
2941               
2942                switch ($_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_type"]) {
2943                        case "titre_uniforme":
2944                                $search[0]="f_3";//!!!!!!!!! a modifier
2945                        break;         
2946                }                                       
2947                //opérateur
2948        $op="op_0_".$search[0];
2949        global $$op;
2950        $$op=$op_;
2951                                       
2952        //contenu de la recherche
2953        $field="field_0_".$search[0];
2954        $field_=array();
2955        $field_[0]=$valeur_champ;
2956        global $$field;
2957        $$field=$field_;
2958               
2959        //opérateur inter-champ
2960        $inter="inter_0_".$search[0];
2961        global $$inter;
2962        $$inter="";
2963                                       
2964        //variables auxiliaires
2965        $fieldvar_="fieldvar_0_".$search[0];
2966        global $$fieldvar_;
2967        $$fieldvar_="";
2968        $fieldvar=$$fieldvar_;
2969        }
2970       
2971        static function convert_simple_multi_unimarc($id_champ) {
2972                global $search;
2973               
2974                $valeur_champ=$_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_id"];
2975                $op_="BOOLEAN";
2976               
2977                switch ($_SESSION["session_history"][$id_champ]["NOTI"]["GET"]["aut_type"]) {
2978                        case "titre_uniforme":
2979                                $search[0]="f_3";
2980                                //Recherche de l'éditeur
2981                                $tu_id=$valeur_champ;
2982                                $requete="select tu_name from titres_uniformes where tu_id=".$tu_id;
2983                                $r_pub=mysql_query($requete);
2984                                if (@mysql_num_rows($r_pub)) {
2985                                        $valeur_champ=mysql_result($r_pub,0,0);
2986                                }
2987                        break;
2988                }       
2989                               
2990                //opérateur
2991        $op="op_0_".$search[0];
2992        global $$op;
2993        $$op=$op_;
2994                                       
2995        //contenu de la recherche
2996        $field="field_0_".$search[0];
2997        $field_=array();
2998        $field_[0]=$valeur_champ;
2999        global $$field;
3000        $$field=$field_;
3001               
3002        //opérateur inter-champ
3003        $inter="inter_0_".$search[0];
3004        global $$inter;
3005        $$inter="";
3006                                       
3007        //variables auxiliaires
3008        $fieldvar_="fieldvar_0_".$search[0];
3009        global $$fieldvar_;
3010        $$fieldvar_="";
3011        $fieldvar=$$fieldvar_;
3012        }
3013}
3014
3015
3016class searcher_serie extends searcher {
3017        var $p_query;
3018        var $c_query;
3019        var $s_query;
3020        var $nb_p;
3021        var $nb_c;
3022        var $nb_s;
3023        var $t_query;
3024       
3025        function show_form() {}
3026
3027        function show_error($car,$input,$error_message) {}
3028
3029        function make_first_search() {}
3030
3031        function make_aut_search() {
3032                global $aut_type,$mag,$charset,$nb_per_page_a_search;
3033                global $acces_j;
3034
3035                if ($nb_per_page_a_search) $this->nb_per_page=$nb_per_page_a_search; else $this->nb_per_page=3;
3036               
3037                switch($aut_type){
3038                        case 'tit_serie':
3039                                $requete_count = "select count(distinct notice_id) from notices ";
3040                                $requete_count.= $acces_j;
3041                                $requete_count.= "where index_serie in (select serie_index from series where serie_id='".$this->id."' ) ";
3042                               
3043                                $requete = "select distinct notice_id from notices ";
3044                                $requete.= $acces_j;
3045                                $requete.= "where index_serie in (select serie_index from series where serie_id='".$this->id."' ) ";
3046//                              $requete.= "order by index_serie,tnvol,index_sew limit ".($this->page*$this->nb_per_page).",".$this->nb_per_page;
3047                }                       
3048                $this->nbresults=@mysql_result(@mysql_query($requete_count),0,0);
3049                $this->t_query=@mysql_query($requete);
3050                $this->nbepage=ceil($this->nbresults/$this->nb_per_page);
3051                $this->text_query=$requete;             
3052        }
3053
3054        function store_search() {
3055                global $search_ed;
3056                global $show_empty;
3057                global $charset;
3058                $champs="<input type='hidden' name='search_ed' value='".htmlentities(stripslashes($search_ed),ENT_QUOTES,$charset)."'/>";
3059                $champs.="<input type='hidden' name='show_empty' value='".$show_empty."'/>";
3060                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
3061                print $this->store_form;
3062        }
3063
3064        function aut_store_search() {
3065                global $charset,$aut_type;
3066                $champs="<input type='hidden' name='aut_id' value='".htmlentities(stripslashes($this->id),ENT_QUOTES,$charset)."'/>";
3067                $champs.="<input type='hidden' name='aut_type' value='".htmlentities(stripslashes($aut_type),ENT_QUOTES,$charset)."'/>";
3068                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
3069                print $this->store_form;
3070        }
3071
3072        function aut_list() {}
3073
3074        function notice_list_common($title) {
3075                global $begin_result_liste;
3076                global $end_result_liste;
3077                global $msg;
3078                global $charset;
3079                global $pmb_nb_max_tri;
3080                global $link,$link_expl,$link_explnum,$link_serial,$link_analysis,$link_bulletin,$link_explnum_serial,$link_explnum_analysis,$link_explnum_bulletin,$link_notice_bulletin;
3081                global $pmb_allow_external_search;
3082                global $load_tablist_js;
3083                $research=$title;
3084                $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
3085                print "<div class='othersearchinfo'>$research</div>";
3086                print $begin_result_liste;
3087                $load_tablist_js=1;
3088                //Affichage des liens paniers et impression
3089                if ($this->rec_history) {
3090                        $current=$_SESSION["CURRENT"];
3091                        if ($current!==false) {
3092                                $tri_id_info = $_SESSION["tri"] ? "&sort_id=".$_SESSION["tri"] : "";
3093                                print "&nbsp;<a href='#' onClick=\"openPopUp('./print_cart.php?current_print=$current&action=print_prepare".$tri_id_info."','print',500, 600, -2, -2, 'scrollbars=yes,menubar=0,resizable=yes'); w.focus(); return false;\"><img src='./images/basket_small_20x20.gif' border='0' align='center' alt=\"".$msg["histo_add_to_cart"]."\" title=\"".$msg["histo_add_to_cart"]."\"></a>&nbsp;<a href='#' onClick=\"openPopUp('./print.php?current_print=$current&action_print=print_prepare','print', 500, 600, -2, -2, 'scrollbars=yes,menubar=0'); return false;\"><img src='./images/print.gif' border='0' align='center' alt=\"".$msg["histo_print"]."\" title=\"".$msg["histo_print"]."\"/></a>";
3094                                if ($pmb_allow_external_search) print "&nbsp;<a href='catalog.php?categ=search&mode=7&from_mode=3&external_type=simple'><img src='./images/external_search.png' border='0' align='center' alt=\"".$msg["connecteurs_external_search_sources"]."\" title=\"".$msg["connecteurs_external_search_sources"]."\"/></a>";
3095                                // on affiche l'icone de tri seulement si on a atteint un nb maxi de résultats
3096                                if ($this->nbresults<=$pmb_nb_max_tri) {
3097                                       
3098                                        //affichage de l'icone de tri
3099                                        echo "<a href=# onClick=\"document.getElementById('history').src='./sort.php?type_tri=notices'; document.getElementById('history').style.display='';return false;\" ";
3100                                        echo "alt=\"".$msg['tris_dispos']."\" title=\"".$msg['tris_dispos']."\">";
3101                                        echo "<img src=./images/orderby_az.gif align=middle hspace=3></a>";
3102                                       
3103                                        //si on a un tri actif on affiche sa description
3104                                        if ($_SESSION["tri"]) {
3105                                                echo $msg['tri_par']." ".$this->sort->descriptionTriParId($_SESSION["tri"]);
3106                                        }
3107                                }
3108                        }
3109                }
3110                // on lance la requête
3111                $recherche_ajax_mode=0;
3112                $nb=0;
3113                while(($nz=@mysql_fetch_object($this->t_query))) {
3114                                $n=@mysql_fetch_object(@mysql_query("SELECT * FROM notices WHERE notice_id=".$nz->notice_id));
3115                                if($nb++>5)$recherche_ajax_mode=1;
3116                                switch($n->niveau_biblio) {
3117                                        case 'm' :
3118                                                // notice de monographie
3119                                                $display = new mono_display($n, 6, $link, 1, $link_expl, '', $link_explnum,1, 0, 1, 1, "", 1  , false,true,$recherche_ajax_mode,1);
3120                                                print $display->result;
3121                                                break ;
3122                                        case 's' :
3123                                                // on a affaire à un périodique
3124                                                // function serial_display ($id, $level='1', $action_serial='', $action_analysis='', $action_bulletin='', $lien_suppr_cart="", $lien_explnum="", $bouton_explnum=1,$print=0,$show_explnum=1, $show_statut=0, $show_opac_hidden_fields=true, $draggable=0 ) {
3125                                                $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_serial, 0, 0, 1, 1, true, 1,$recherche_ajax_mode );
3126                                                print $serial->result;
3127                                                break;
3128                                        case 'a' :
3129                                                // on a affaire à un article
3130                                                // function serial_display ($id, $level='1', $action_serial='', $action_analysis='', $action_bulletin='', $lien_suppr_cart="", $lien_explnum="", $bouton_explnum=1,$print=0,$show_explnum=1, $show_statut=0, $show_opac_hidden_fields=true, $draggable=0 ) {
3131                                                $serial = new serial_display($n, 6, $link_serial, $link_analysis, $link_bulletin, "", $link_explnum_analysis, 0, 0, 1, 1, true, 1,$recherche_ajax_mode );
3132                                                print $serial->result;
3133                                                break;
3134                                        case 'b' :
3135                                                // on a affaire à un bulletin
3136                                                $rqt_bull_info = "SELECT s.notice_id as id_notice_mere, bulletin_id as id_du_bulletin, b.notice_id as id_notice_bulletin FROM notices as s, notices as b, bulletins WHERE b.notice_id=$n->notice_id and s.notice_id=bulletin_notice and num_notice=b.notice_id";
3137                                                $bull_ids=@mysql_fetch_object(mysql_query($rqt_bull_info));
3138                                                if(!$link_notice_bulletin){
3139                                                        $link_notice_bulletin = './catalog.php?categ=serials&sub=bulletinage&action=view&bul_id='.$bull_ids->id_du_bulletin;
3140                                                } else {
3141                                                        $link_notice_bulletin = str_replace("!!id!!",$bull_ids->id_du_bulletin,$link_notice_bulletin);
3142                                                }
3143                                                $display = new mono_display($n, 6, $link_notice_bulletin, 1, $link_expl, '', $link_explnum,1, 0, 1, 1, "", 1  , false,true,$recherche_ajax_mode);
3144                                                $link_notice_bulletin='';
3145                                                print $display->result;
3146                                                break;
3147                                }
3148                }
3149                // fin de liste
3150                print $end_result_liste;
3151        }
3152
3153        function aut_notice_list() {
3154                $this->notice_list_common($display);
3155        }
3156
3157        function rec_env() {
3158                global $msg;
3159                switch ($this->etat) {
3160                                case 'first_search':
3161                                        if ((string)$this->page=="") {
3162                                                $_SESSION["CURRENT"]=count($_SESSION["session_history"]);
3163                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["URI"]=$this->base_url;
3164                                                $_POST["etat"]="";
3165                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['POST']=$_POST;
3166                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]['GET']=$_GET;
3167                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]=array();
3168                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]=array();
3169                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_QUERY"]=$this->human_query;
3170                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["QUERY"]["HUMAN_TITLE"]=$msg["356"];
3171                                        }
3172                                        if ((string)$this->page=="") { $_POST["page"]=0; $page=0; }
3173                                        if (($this->first_search_result==AUT_LIST)&&($_SESSION["CURRENT"]!==false)) {
3174                                                $_POST["etat"]="first_search";
3175                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['URI']=$this->base_url;
3176                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['POST']=$_POST;
3177                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['GET']=$_GET;
3178                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]['PAGE']=$this->page+1;
3179                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["AUT"]["HUMAN_QUERY"]=$this->human_aut_query;
3180                                        }
3181                                        if (($this->first_search_result==NOTICE_LIST)&&($_SESSION["CURRENT"]!==false)) {
3182                                                $_POST["etat"]="first_search";
3183                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['URI']=$this->base_url;
3184                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['POST']=$_POST;
3185                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['GET']=$_GET;
3186                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['TEXT_QUERY']=$this->text_query;
3187                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['PAGE']=$this->page+1;
3188                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]["HUMAN_QUERY"]=$this->human_notice_query;
3189                                        }
3190                                        break;
3191                                case 'aut_search':
3192                                        if ($_SESSION["CURRENT"]!==false) {
3193                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['URI']=$this->base_url;
3194                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['POST']=$_POST;
3195                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['GET']=$_GET;
3196                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['PAGE']=$this->page+1;
3197                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['TEXT_QUERY']=$this->text_query;
3198                                                $_SESSION["session_history"][$_SESSION["CURRENT"]]["NOTI"]['HUMAN_QUERY']=$this->human_notice_query;
3199                                        }
3200                                        break;
3201                }
3202                $_SESSION["last_required"]=false;
3203        }
3204       
3205        static function convert_simple_multi($id_champ) {}
3206       
3207        static function convert_simple_multi_unimarc($id_champ) {}
3208}
3209?>
Note: See TracBrowser for help on using the repository browser.