source: pmb4.2/trunk/fuentes/pmb/classes/sel_searcher.class.php @ 815

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

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 34.6 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: sel_searcher.class.php,v 1.8 2015-04-03 11:16:20 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9//Classe de recherche pour selecteurs
10
11require_once("$class_path/analyse_query.class.php");
12require_once("$class_path/sel_display.class.php");
13require_once("$base_path/selectors/templates/sel_searcher_templates.tpl.php");
14
15//Classe générique de recherche
16if(!defined('AUT_LIST')) define("AUT_LIST",1);
17if(!defined('ELT_LIST'))define("ELT_LIST",2);
18if(!defined('AUT_SEARCH'))define("AUT_SEARCH",3);
19
20$tab_query=array();
21$tab_query['notice']=$msg['selector_lib_noti'];
22$tab_query['bulletin']=$msg['selector_lib_bull'];
23$tab_query['article']=$msg['selector_lib_art'];
24$tab_query['abt']=$msg['selector_lib_abt'];
25$tab_query['frais']=$msg['selector_lib_frais'];
26$tab_query['panier']=$msg['selector_lib_caddie'];
27$tab_query['sug']=$msg['selector_lib_sug'];
28
29$tab_autorun=array();
30$tab_autorun['notice']=false;
31$tab_autorun['bulletin']=false;
32$tab_autorun['article']=false;
33$tab_autorun['abt']=true;
34$tab_autorun['frais']=false;
35$tab_autorun['panier']=false;
36$tab_autorun['sug']=false;
37
38class sel_searcher {
39
40        var $etat;                                                              //Etat de la recherche
41        var $page;                                                              //Page courante de la recherche
42        var $nbresults;                                                 //Nombre de résultats de la dernière recherche
43        var $nbepage;
44        var $aut_id;                                                    //Numéro d'autorité pour la recherche
45        var $aut_type;                                                  //Type d'autorité pour la recherche
46        var $store_form;                                                //Formulaire contenant les infos de navigation plus des champs pour la recherche
47        var $first_search_result;
48        var $direct = 0;
49
50        //Elements obligatoires
51        var $base_url = '';                                             //url de base pour les menus,   
52        var $tab_choice=array();                                //Liste des choix a effectuer dans le menu
53       
54        var $elt_f_list = '';                                   //Formulaire d'affichage des elements
55        var $elt_b_list = '';                                   //Affichage Debut de liste elements
56        var $elt_e_list = '';                                   //Affichage Fin de liste elements
57        var $elt_r_list = '';                                   //Affichage ligne element
58        var $elt_r_list_values = array();               //tableau des elements a afficher dans la liste
59        var $action = '';                                               //Action a transmettre pour retour des parametres
60        var $action_values = array();                   //tableau des elements à modifier dans l'action
61        var $back_script = '';                                  //Script a executer sur selection d'un element
62        var $back_script_show_all = '';                 //Script a executer sur bouton "Afficher tous les résultats"
63       
64        var $aut_b_list = '';                                   //Affichage Debut de liste autorites
65        var $aut_e_list = '';                                   //Affichage Fin de liste autorites
66        var $aut_r_list = '';                                   //Affichage ligne autorite
67        var $aut_r_list_values = array();               //tableau des autorites a afficher dans la liste
68       
69        //Constructeur
70        function sel_searcher($base_url) {
71               
72                global $etat,$aut_type,$aut_id,$page;
73                       
74                $this->base_url=$base_url;
75                $this->etat=$etat;
76                $this->aut_type=$aut_type;
77                $this->aut_id=$aut_id;
78                $this->page=$page;
79               
80                //$this->run();
81        }
82
83       
84        function run() {
85               
86                $this->set_menu();
87                if (!$this->etat) {
88                        $this->show_form();
89                } else {
90                        switch ($this->etat) {
91                                case "first_search":
92                                        $r=$this->make_first_search();
93                                        $this->first_search_result=$r;
94                                        switch ($r) {
95                                                case AUT_SEARCH:
96                                                        $this->etat="aut_search"; 
97                                                        $this->direct=1;
98                                                        $this->make_aut_search();
99                                                        $this->make_store_form();
100                                                        $this->aut_store_search();
101                                                        $this->aut_elt_list();
102                                                        $this->pager();
103                                                        break;
104                                                case AUT_LIST:
105                                                        $this->make_store_form();
106                                                        $this->store_search();
107                                                        $this->aut_list();
108                                                        $this->pager();
109                                                        break;
110                                                case ELT_LIST:
111                                                        $this->make_store_form();
112                                                        $this->store_search();
113                                                        $this->elt_list();
114                                                        $this->pager();
115                                                        break;
116                                        }
117                                        break;
118                                case "aut_search":
119                                        $this->make_aut_search();
120                                        $this->make_store_form();
121                                        $this->aut_store_search();
122                                        $this->aut_elt_list();
123                                        $this->pager();
124                                        break;
125                        }
126                }
127        }
128
129       
130        function set_menu() {
131               
132                global $charset;
133                global $form_query, $nav_bar, $other_query;
134                global $tab_query,$tab_autorun;
135
136                $menu_query = $nav_bar;
137                foreach($this->tab_choice as $typ_query) {
138                        if (array_key_exists($typ_query, $tab_query)) {
139                                $menu_query = str_replace('<!-- other_query -->', $other_query.'<!-- other_query -->', $menu_query);
140                                $menu_query = str_replace('!!typ_query!!', $typ_query.($tab_autorun[$typ_query]==true?"&autorun=1":""), $menu_query);
141                                $menu_query = str_replace('!!lib!!', htmlentities($tab_query[$typ_query], ENT_QUOTES, $charset),  $menu_query);
142                                if ($typ_query==$this->cur_typ_query) {
143                                        $menu_query = str_replace('!!class!!', "class='sel_navbar_current'",  $menu_query);
144                                } else {
145                                        $menu_query = str_replace('!!class!!', '',  $menu_query);
146                                }
147                        }
148                }
149                $form_query = str_replace('!!menu_query!!', $menu_query, $form_query);
150        }       
151
152       
153        function show_form() {
154
155                global $charset;
156                global $form_query, $elt_query, $extended_query;
157               
158                $form_query = str_replace("!!elt_query!!", htmlentities(stripslashes($elt_query),ENT_QUOTES, $charset), $form_query);
159                $form_query = str_replace("<!-- extended_query -->", $extended_query, $form_query );
160                $form_query = str_replace("!!action_url!!", $this->base_url."&typ_query=".$this->cur_typ_query, $form_query);
161                print $form_query;
162        }
163       
164       
165        function pager() {
166
167                global $msg;
168
169                if (!$this->nbresults) return;
170               
171                $suivante = $this->page+1;
172                $precedente = $this->page-1;
173                if (!$this->page) $page_en_cours=0 ;
174                        else $page_en_cours=$this->page ;
175                               
176                // affichage du lien précédent si necessaire
177                if($precedente >= 0)
178                                $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>";
179
180                $deb = $page_en_cours - 10 ;
181                if ($deb<0) $deb=0;
182                for($i = $deb; ($i < $this->nbepage) && ($i<$page_en_cours+10); $i++) {
183                        if($i==$page_en_cours) $nav_bar .= "<strong>".($i+1)."</strong>";
184                                else $nav_bar .= "<a href='#' onClick=\"document.store_search.page.value=$i; document.store_search.submit(); return false;\">".($i+1)."</a>";
185                        if($i<$this->nbepage) $nav_bar .= " "; 
186                        }
187       
188                if($suivante<$this->nbepage)
189                                $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>";
190
191                // affichage de la barre de navigation
192                print "<div class='row'><div align='center'>$nav_bar</div></div>";
193        }
194
195       
196        function make_store_form() {
197                $this->store_form="<form name='store_search' action='".$this->base_url."&typ_query=".$this->cur_typ_query."' method='post' style='display:none'>
198                <input type='hidden' name='aut_type' value='".$this->aut_type."'/>
199                <input type='hidden' name='aut_id' value='".$this->aut_id."'/>
200                <input type='hidden' name='etat' value='".$this->etat."'/>
201                <input type='hidden' name='page' value='".$this->page."'/>
202                !!first_search_variables!!
203                </form>";
204        }
205
206        function show_elt() {
207        }
208
209       
210        function make_first_search() {
211                //A surcharger par la fonction qui fait la première recherche après la soumission du formulaire de recherche
212                //La fonction renvoie AUT_LIST (le résultat de la recherche est une liste d'autorité)
213                //ou ELT_LIST (le résultat de la recherche est une liste d'élements)
214                //La fonction doit mettre à jour le nombre de résultats dans $this->nbresults
215        }
216
217       
218        function make_aut_search() {
219                //A surcharger par la fonction qui fait la recherche des éléments à partir d'un numéro d'autorité (stoqué dans $this->aut_id)
220                //La fonction doit mettre à jour le nombre de résultats dans $this->nbresults
221        }
222
223       
224        function store_search() {
225                //A surcharger par la fonction qui écrit les variables du formulaire "store_search" pour stoquer les champs de recherche
226                //En liste de résultat de la première recherche. Il faut remplacer la chaine "!!first_search_variables!!" dans $this->store_form
227                global $elt_query;
228                global $charset;
229                $champs="<input type='hidden' name='elt_query' value='".htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset)."'/>";
230                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
231                print $this->store_form;
232        }
233
234       
235        function aut_store_search() {
236                //A surcharger par la fonction qui écrit les variables du formulaire "store_search" pour stoquer les champs de recherche
237                //En liste de résultat de la première recherche. Il faut remplacer la chaine "!!first_search_variables!!" dans $this->store_form
238                global $elt_query;
239                global $charset;
240                $champs="<input type='hidden' name='elt_query' value='".htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset)."'/>";
241                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
242                print $this->store_form;
243        }
244
245       
246        function aut_list() {
247                //A surcharger par la fonction qui affiche la liste des autorités issues de la première recherche
248        }
249
250       
251        function elt_list() {
252                //A surcharger par la fonction qui affiche la liste des éléments issues de la première recherche
253        }
254
255       
256        function aut_elt_list() {
257                //A surcharger par la fonction qui affiche la liste des éléments sous l'autorité $this->aut_id
258        }
259
260       
261        function rec_env() {
262                //A surcharger par la fonction qui enregistre
263        }
264}
265
266
267class sel_searcher_notice_mono extends sel_searcher {
268       
269        var $t_query;
270        var $cur_typ_query='notice';
271       
272       
273        function make_first_search() {
274
275                global $msg,$dbh;
276                global $elt_query;             
277                global $notice_statut_query, $doctype_query;
278                global $nb_per_page, $nb_per_page_select;
279                global $results_show_all;
280               
281                if (!$nb_per_page) {
282                        $nb_per_page=$nb_per_page_select; 
283                }
284               
285                $restrict = "niveau_biblio='m' ";                               
286                if ($notice_statut_query !='-1') {
287                        $restrict.= "and statut='".$notice_statut_query."' ";
288                }
289               
290                if ($doctype_query !='-1') {
291                        $restrict.= "and typdoc='".$doctype_query."' ";
292                }
293                $suite_rqt="or code='".$elt_query."' "; 
294                $isbn_verif=traite_code_isbn(stripslashes($elt_query));
295                if (isISBN($isbn_verif)) {
296                        $suite_rqt.="or code='".formatISBN($isbn_verif,13)."' ";
297                        $suite_rqt.="or code='".formatISBN($isbn_verif,10)."' ";
298                       
299                        $q_count = "select count(*) from notices where ".$restrict." and (0 ".$suite_rqt.")";
300                        $r_count = pmb_mysql_query($q_count, $dbh);
301                        $n_count = pmb_mysql_result($r_count,0,0);
302                        $this->nbresults = $n_count;
303                       
304                        $q_list = "select notice_id from notices where ".$restrict." and (0 ".$suite_rqt.")";
305                        if(!$results_show_all){
306                                $q_list.=" limit ".$this->page*$nb_per_page.", ".$nb_per_page." "; 
307                        }
308                        $r_list = pmb_mysql_query($q_list,$dbh);
309                        $this->t_query=$r_list;
310                        if(!$results_show_all){
311                                $this->nbepage=ceil($this->nbresults/$nb_per_page);
312                        }else{
313                                $this->nbepage=1;
314                        }
315                       
316                }else{
317                        $aq=new analyse_query(stripslashes($elt_query));
318                        if ($aq->error) {
319                                $this->show_form();
320                                error_message($msg["searcher_syntax_error"],sprintf($msg["searcher_syntax_error_desc"],$aq->current_car,$aq->input_html,$aq->error_message));
321                                return ;
322                        }else{
323                                $q_members = $aq->get_query_members("notices","index_wew","index_sew","notice_id");
324                                       
325                                $q_count = "select count(*) from notices where ".$restrict." and (".$q_members["where"]." ".$suite_rqt.")";
326                                $r_count = pmb_mysql_query($q_count, $dbh);
327                                $n_count = pmb_mysql_result($r_count,0,0);
328                                $this->nbresults = $n_count;
329                               
330                                $q_list = "select notice_id, ".$q_members['select']." as pert from notices where ".$restrict." and (".$q_members["where"]." ".$suite_rqt.") ".$q_members['post'];
331                                if(!$results_show_all){
332                                        $q_list.=" limit ".$this->page*$nb_per_page.", ".$nb_per_page." "; 
333                                }
334                                $r_list = pmb_mysql_query($q_list,$dbh);
335                                $this->t_query=$r_list;
336                                if(!$results_show_all){
337                                        $this->nbepage=ceil($this->nbresults/$nb_per_page);
338                                }else{
339                                        $this->nbepage=1;
340                                }
341                        }
342                }
343                return ELT_LIST;
344        }
345
346       
347        function store_search() {
348
349                global $elt_query;
350                global $notice_statut_query, $doctype_query;
351                global $charset;
352               
353                $champs="<input type='hidden' name='elt_query' value='".htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset)."'/>";
354                $champs.="<input type='hidden' name='notice_statut_query' value='".htmlentities(stripslashes($notice_statut_query),ENT_QUOTES,$charset)."'/>";
355                $champs.="<input type='hidden' name='doctype_query' value='".htmlentities(stripslashes($doctype_query),ENT_QUOTES,$charset)."'/>";
356                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
357                print $this->store_form;
358        }
359       
360       
361        function elt_list() {
362
363                global $msg, $charset;
364                global $elt_query;
365                global $results_show_all;
366               
367                $research .= '<b>'.htmlentities($msg['selector_lib_noti'],ENT_QUOTES,$charset).'</b>&nbsp;'.htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset);
368       
369                $this->show_form();
370                if ($this->nbresults) {
371                        $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
372                        if(!$results_show_all && ($this->nbepage!=1)){
373                                $research.="&nbsp;&nbsp;&nbsp;<input type='button' class='bouton_small' onclick='results_show_all();' name='searcher_results_show_all' value='".htmlentities($msg['searcher_results_show_all'],ENT_QUOTES,$charset)."'>";
374                        }
375                        $this->elt_b_list = str_replace('!!research!!', $research, $this->elt_b_list);
376                        print $this->elt_b_list;
377                        //Boutons check/uncheck/add selection
378                        print "<div class='row'>
379                                                <input type='button' class='bouton_small' onclick='check_uncheck(1);' id='searcher_results_check_all' name='searcher_results_check_all' value='".htmlentities($msg['searcher_results_check_all'],ENT_QUOTES,$charset)."'>
380                                                &nbsp;&nbsp;
381                                                <input type='button' class='bouton_small' onclick='add_selection();' id='searcher_results_add_selection' name='searcher_results_add_selection' value='".htmlentities($msg['searcher_results_add_selection'],ENT_QUOTES,$charset)."'>
382                                        </div>";
383                        print "<form name='searcher_results_check_form'>";
384                        // on lance la requête
385                        while(($nz=pmb_mysql_fetch_object($this->t_query))) {
386                                // notice de monographie
387                                $mono = new sel_mono_display($nz->notice_id,$this->base_url,'sel_searcher_select_');
388                                $mono->action=$this->action;
389                                $mono->action_values=$this->action_values;
390                                $mono->doForm();
391                                $list.= $this->elt_r_list;
392                                if (count($this->elt_r_list_values) ) {
393                                        foreach($this->elt_r_list_values as $v) {
394                                                $list = str_replace("!!$v!!", $mono->$v, $list);
395                                        }
396                                }
397                        }
398                        print $list;
399                        // fin de liste
400                        print "</form>";
401                        print $this->elt_e_liste;
402                        print $this->back_script;
403                        print $this->back_script_show_all;
404                } else {
405                        error_message_history($msg[357], $msg[1915],1);
406                }
407        }
408}
409
410
411class sel_searcher_notice_article extends sel_searcher {
412       
413        var $t_query;
414        var $cur_typ_query='article';
415       
416       
417        function make_first_search() {
418
419                global $msg,$dbh;
420                global $elt_query;             
421                global $notice_statut_query, $doctype_query;
422                global $nb_per_page, $nb_per_page_select;
423                global $results_show_all;
424               
425                if (!$nb_per_page) {
426                        $nb_per_page=$nb_per_page_select; 
427                }
428               
429                $restrict = "niveau_biblio='a' ";                               
430                if ($notice_statut_query !='-1') {
431                        $restrict.= "and statut='".$notice_statut_query."' ";
432                }
433               
434                if ($doctype_query !='-1') {
435                        $restrict.= "and typdoc='".$doctype_query."' ";
436                }
437               
438                $aq=new analyse_query(stripslashes($elt_query));
439                if ($aq->error) {
440                        $this->show_form();
441                        error_message($msg["searcher_syntax_error"],sprintf($msg["searcher_syntax_error_desc"],$aq->current_car,$aq->input_html,$aq->error_message));
442                } else {
443                       
444                        $q_members = $aq->get_query_members("notices","index_wew","index_sew","notice_id");                     
445                        $q_count = "select count(*) from notices where ".$restrict." and (".$q_members["where"]." ".$suite_rqt.")";
446                        $r_count = pmb_mysql_query($q_count, $dbh);
447                        $n_count = pmb_mysql_result($r_count,0,0);
448                        $this->nbresults = $n_count;
449                       
450                        $q_list = "select notice_id, ".$q_members['select']." as pert from notices where ".$restrict." and (".$q_members["where"]." ".$suite_rqt.") ".$q_members['post'];
451                        if(!$results_show_all){
452                                $q_list.=" limit ".$this->page*$nb_per_page.", ".$nb_per_page." "; 
453                        }
454                        $r_list = pmb_mysql_query($q_list,$dbh);
455                        $this->t_query=$r_list;
456                        if(!$results_show_all){
457                                $this->nbepage=ceil($this->nbresults/$nb_per_page);
458                        }else{
459                                $this->nbepage=1;
460                        }
461                        return ELT_LIST;
462                }
463        }
464
465       
466        function store_search() {
467
468                global $elt_query;
469                global $notice_statut_query, $doctype_query;
470                global $charset;
471               
472                $champs="<input type='hidden' name='elt_query' value='".htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset)."'/>";
473                $champs.="<input type='hidden' name='notice_statut_query' value='".htmlentities(stripslashes($notice_statut_query),ENT_QUOTES,$charset)."'/>";
474                $champs.="<input type='hidden' name='doctype_query' value='".htmlentities(stripslashes($doctype_query),ENT_QUOTES,$charset)."'/>";
475                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
476                print $this->store_form;
477        }
478       
479       
480        function elt_list() {
481
482                global $msg, $charset;
483                global $elt_query;
484                global $results_show_all;
485               
486                $research .= '<b>'.htmlentities($msg['selector_lib_noti'],ENT_QUOTES,$charset).'</b>&nbsp;'.htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset);
487       
488                $this->show_form();
489                if ($this->nbresults) {
490                        $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
491                        if(!$results_show_all && ($this->nbepage!=1)){
492                                $research.="&nbsp;&nbsp;&nbsp;<input type='button' class='bouton_small' onclick='results_show_all();' name='searcher_results_show_all' value='".htmlentities($msg['searcher_results_show_all'],ENT_QUOTES,$charset)."'>";
493                        }
494                        $this->elt_b_list = str_replace('!!research!!', $research, $this->elt_b_list);
495                        print $this->elt_b_list;
496                        //Boutons check/uncheck/add selection
497                        print "<div class='row'>
498                                                <input type='button' class='bouton_small' onclick='check_uncheck(1);' id='searcher_results_check_all' name='searcher_results_check_all' value='".htmlentities($msg['searcher_results_check_all'],ENT_QUOTES,$charset)."'>
499                                                &nbsp;&nbsp;
500                                                <input type='button' class='bouton_small' onclick='add_selection();' id='searcher_results_add_selection' name='searcher_results_add_selection' value='".htmlentities($msg['searcher_results_add_selection'],ENT_QUOTES,$charset)."'>
501                                        </div>";
502                        print "<form name='searcher_results_check_form'>";
503                        // on lance la requête
504                        while(($nz=pmb_mysql_fetch_object($this->t_query))) {
505                                // notice d'article
506                                $art = new sel_article_display($nz->notice_id,$this->base_url,'sel_searcher_select_');
507                                $art->action=$this->action;
508                                $art->action_values=$this->action_values;
509                                $art->doForm();
510                                $list.= $this->elt_r_list;
511                                if (count($this->elt_r_list_values) ) {
512                                        foreach($this->elt_r_list_values as $v) {
513                                                $list = str_replace("!!$v!!", $art->$v, $list);
514                                        }
515                                }
516                        }
517                        print $list;
518                        // fin de liste
519                        print "</form>";
520                        print $this->elt_e_liste;
521                        print $this->back_script;
522                        print $this->back_script_show_all;
523                } else {
524                        error_message_history($msg[357], $msg[1915],1);
525                }
526        }
527}
528
529
530class sel_searcher_bulletin extends sel_searcher {
531       
532        var $t_query;
533        var $cur_typ_query='bulletin';
534       
535       
536        function make_first_search() {
537
538                global $msg,$dbh;
539                global $elt_query;
540                global $nb_per_page, $nb_per_page_select;
541                global $results_show_all;
542               
543                if (!$nb_per_page) {
544                        $nb_per_page=$nb_per_page_select; 
545                }
546                                               
547                $restrict = "niveau_biblio='s' ";                               
548                $restrict.= "and bulletin_notice=notice_id ";
549               
550                $suite_rqt="or code='".$elt_query."' ";
551               
552                $issn_verif=traite_code_ISSN(stripslashes($elt_query));
553                if (isISSN(stripslashes($elt_query))) {
554                        $suite_rqt.=" or code='".$issn_verif."' ";
555                        $q_count = "select count(distinct notice_id) from notices, bulletins where ".$restrict." and (0 ".$suite_rqt.")";
556                        $r_count = pmb_mysql_query($q_count);
557                        $n_count = pmb_mysql_result($r_count,0,0);
558                        $this->nbresults = $n_count;
559                       
560                        $q_list = "select distinct(notice_id) from notices, bulletins where ".$restrict." and (0 ".$suite_rqt.")";
561                        if(!$results_show_all){
562                                $q_list .=" limit ".$this->page*$nb_per_page.", ".$nb_per_page." "; 
563                        }
564                        $r_list = pmb_mysql_query($q_list,$dbh);
565                        $this->t_query=$r_list;
566                        if(!$results_show_all){
567                                $this->nbepage=ceil($this->nbresults/$nb_per_page);
568                        }else{
569                                $this->nbepage=1;
570                        }
571                }else{
572                        $aq=new analyse_query(stripslashes($elt_query));
573                        if ($aq->error) {
574                                $this->show_form();
575                                error_message($msg["searcher_syntax_error"],sprintf($msg["searcher_syntax_error_desc"],$aq->current_car,$aq->input_html,$aq->error_message));
576                                return ;
577                        } else {
578                                $q_members = $aq->get_query_members("notices","index_wew","index_sew","notice_id");     
579                                $q_count = "select count(distinct notice_id) from notices, bulletins where ".$restrict." and (".$q_members["where"]." ".$suite_rqt.")";
580                                $r_count = pmb_mysql_query($q_count);
581                                $n_count = pmb_mysql_result($r_count,0,0);
582                                $this->nbresults = $n_count;
583                               
584                                $q_list = "select distinct(notice_id), ".$q_members['select']." as pert from notices, bulletins where ".$restrict." and (".$q_members["where"]." ".$suite_rqt.") ".$q_members['post'];
585                                if(!$results_show_all){
586                                        $q_list.=" limit ".$this->page*$nb_per_page.", ".$nb_per_page." "; 
587                                }
588                                $r_list = pmb_mysql_query($q_list,$dbh);
589                                $this->t_query=$r_list;
590                                if(!$results_show_all){
591                                        $this->nbepage=ceil($this->nbresults/$nb_per_page);
592                                }else{
593                                        $this->nbepage=1;
594                                }
595                        }
596                }
597                return AUT_LIST;
598        }
599
600       
601        function make_aut_search() {
602               
603                global $dbh;
604                global $nb_per_page, $nb_per_page_select;
605                global $results_show_all;
606               
607                if (!$nb_per_page) {
608                        $nb_per_page=$nb_per_page_select; 
609                }
610                       
611                switch ($this->aut_type) {
612                        case 'perio':
613                                $q_count="select count(*) from bulletins where bulletin_notice='".$this->aut_id."' ";
614                                $q_list="select bulletin_id from bulletins where bulletin_notice='".$this->aut_id."' order by date_date desc, bulletin_numero desc";
615                                if(!$results_show_all){
616                                        $q_list.=" limit ".($this->page*$nb_per_page).",".$nb_per_page;
617                                }
618                                break;
619                }
620                $r_count = pmb_mysql_query($q_count, $dbh);
621                $n_count = pmb_mysql_result($r_count,0,0);
622                $this->nbresults=$n_count;
623               
624                $r_list = pmb_mysql_query($q_list, $dbh);
625                $this->t_query=$r_list;
626                if(!$results_show_all){
627                        $this->nbepage=ceil($this->nbresults/$nb_per_page);
628                }else{
629                        $this->nbepage=1;
630                }
631        }
632       
633       
634        function aut_list() {
635
636                global $msg, $charset;
637                global $elt_query;
638                global $results_show_all;
639               
640                $research .= '<b>'.htmlentities($msg['771'],ENT_QUOTES,$charset).'</b>&nbsp;'.htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset);
641       
642                $this->show_form();
643                if ($this->nbresults) {
644                        $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
645                        if(!$results_show_all && ($this->nbepage!=1)){
646                                $research.="&nbsp;&nbsp;&nbsp;<input type='button' class='bouton_small' onclick='results_show_all();' name='searcher_results_show_all' value='".htmlentities($msg['searcher_results_show_all'],ENT_QUOTES,$charset)."'>";
647                        }
648                        $this->aut_b_list = str_replace('!!research!!', $research, $this->aut_b_list);
649                        print $this->aut_b_list;
650
651                        // on lance la requete
652                        while(($nz=pmb_mysql_fetch_object($this->t_query))) {
653                                // notice de perio
654                                $perio = new sel_serial_display($nz->notice_id, $this->base_url);
655                                $perio->action="<a href='".$this->base_url."&typ_query=".$this->cur_typ_query."&etat=aut_search&aut_type=perio&aut_id=!!aut_id!!' >!!display!!</a>";
656                                $perio->doForm();
657                                $list.= $this->aut_r_list;
658                                if (count($this->aut_r_list_values)) {
659                                        foreach($this->aut_r_list_values as $v) {
660                                                $list=str_replace("!!$v!!", $perio->$v, $list);
661                                        }
662                                }
663                        }
664                        print $list;
665                        print $this->back_script_show_all;
666                        // fin de liste
667                        print $this->aut_e_liste;
668                } else {
669                        error_message_history($msg[357], $msg[1915], 1);
670                }
671        }
672
673       
674        function aut_elt_list() {
675                       
676                global $msg, $charset;
677                global $elt_query;
678                global $results_show_all;
679
680                $research .= '<b>'.htmlentities($msg['selector_lib_bull'],ENT_QUOTES,$charset).'</b>&nbsp;'.htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset);
681       
682                $this->show_form();
683                if ($this->nbresults) {
684                        $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
685                        if(!$results_show_all && ($this->nbepage!=1)){
686                                $research.="&nbsp;&nbsp;&nbsp;<input type='button' class='bouton_small' onclick='results_show_all();' name='searcher_results_show_all' value='".htmlentities($msg['searcher_results_show_all'],ENT_QUOTES,$charset)."'>";
687                        }
688                        $this->elt_b_list = str_replace('!!research!!', $research, $this->elt_b_list);
689                        print $this->elt_b_list;
690                        //Boutons check/uncheck/add selection
691                        print "<div class='row'>
692                                                <input type='button' class='bouton_small' onclick='check_uncheck(1);' id='searcher_results_check_all' name='searcher_results_check_all' value='".htmlentities($msg['searcher_results_check_all'],ENT_QUOTES,$charset)."'>
693                                                &nbsp;&nbsp;
694                                                <input type='button' class='bouton_small' onclick='add_selection();' id='searcher_results_add_selection' name='searcher_results_add_selection' value='".htmlentities($msg['searcher_results_add_selection'],ENT_QUOTES,$charset)."'>
695                                        </div>";
696                        print "<form name='searcher_results_check_form'>";
697                        // on lance la requête
698                        while(($nz=pmb_mysql_fetch_object($this->t_query))) {
699                                // bulletin
700                                $bull = new sel_bulletin_display($nz->bulletin_id, $this->base_url,'sel_searcher_select_');
701                                $bull->action=$this->action;
702                                $bull->action_values=$this->action_values;
703                                $bull->doForm();
704                                $list.= $this->elt_r_list;
705                                if (count($this->elt_r_list_values)) {
706                                        foreach($this->elt_r_list_values as $v) {
707                                                $list = str_replace("!!$v!!", $bull->$v, $list);
708                                        }
709                                }
710                        }
711                        print $list;
712                        // fin de liste
713                        print "</form>";
714                        print $this->elt_e_liste;
715                        print $this->back_script;
716                        $this->back_script_show_all = str_replace('!!base_url!!',$this->base_url,$this->back_script_show_all);
717                        $this->back_script_show_all = str_replace('!!cur_typ_query!!',$this->cur_typ_query,$this->back_script_show_all);
718                        $this->back_script_show_all = str_replace('!!aut_id!!',$this->aut_id,$this->back_script_show_all);
719                        print $this->back_script_show_all;
720                } else {
721                        error_message_history($msg[357], $msg[1915], 1);
722                }
723        }
724}
725
726
727class sel_searcher_frais extends sel_searcher {
728       
729        var $t_query;
730        var $cur_typ_query='frais';
731       
732       
733        function make_first_search() {
734
735                global $msg,$dbh;
736                global $elt_query;
737                global $nb_per_page, $nb_per_page_select;
738                global $results_show_all;
739               
740                if (!$nb_per_page) {
741                        $nb_per_page=$nb_per_page_select; 
742                }
743               
744                $aq=new analyse_query(stripslashes($elt_query));
745                if ($aq->error) {
746                        $this->show_form();
747                        error_message($msg["searcher_syntax_error"],sprintf($msg["searcher_syntax_error_desc"],$aq->current_car,$aq->input_html,$aq->error_message));
748                } else {
749                        $q_count=$aq->get_query_count('frais','libelle','index_libelle','id_frais');
750                        $r_count = pmb_mysql_query($q_count);
751                        $n_count = pmb_mysql_result($r_count,0,0);
752                        $this->nbresults = $n_count;
753                       
754                        if(!$results_show_all){
755                                $q_list = $aq->get_query('frais','libelle','index_libelle','id_frais', $this->page*$nb_per_page , $nb_per_page); 
756                        }else{
757                                $q_list = $aq->get_query('frais','libelle','index_libelle','id_frais');
758                        }
759                        $r_list = pmb_mysql_query($q_list,$dbh);
760                        $this->t_query=$r_list;
761                        if(!$results_show_all){
762                                $this->nbepage=ceil($this->nbresults/$nb_per_page);
763                        }else{
764                                $this->nbepage=1;
765                        }
766                        return ELT_LIST;
767                }
768        }
769
770
771        function elt_list() {
772
773                global $msg, $charset;
774                global $elt_query;
775                global $results_show_all;
776               
777                $research .= '<b>'.htmlentities($msg['selector_lib_frais'],ENT_QUOTES,$charset).'</b>&nbsp;'.htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset);
778       
779                $this->show_form();
780                if ($this->nbresults) {
781                        $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
782                        if(!$results_show_all && ($this->nbepage!=1)){
783                                $research.="&nbsp;&nbsp;&nbsp;<input type='button' class='bouton_small' onclick='results_show_all();' name='searcher_results_show_all' value='".htmlentities($msg['searcher_results_show_all'],ENT_QUOTES,$charset)."'>";
784                        }
785                        $this->elt_b_list = str_replace('!!research!!', $research, $this->elt_b_list);
786                        print $this->elt_b_list;
787                        //Boutons check/uncheck/add selection
788                        print "<div class='row'>
789                                                <input type='button' class='bouton_small' onclick='check_uncheck(1);' id='searcher_results_check_all' name='searcher_results_check_all' value='".htmlentities($msg['searcher_results_check_all'],ENT_QUOTES,$charset)."'>
790                                                &nbsp;&nbsp;
791                                                <input type='button' class='bouton_small' onclick='add_selection();' id='searcher_results_add_selection' name='searcher_results_add_selection' value='".htmlentities($msg['searcher_results_add_selection'],ENT_QUOTES,$charset)."'>
792                                        </div>";
793                        print "<form name='searcher_results_check_form'>";
794                        // on lance la requête
795                        while(($nz=pmb_mysql_fetch_object($this->t_query))) {
796                               
797                                // frais annexes
798                                $frais = new sel_frais_display($nz->id_frais, $this->base_url,'sel_searcher_select_');
799                                $frais->action=$this->action;
800                                $frais->action_values=$this->action_values;
801                                $frais->doForm();
802                                $list.= $this->elt_r_list;
803                                if (count($this->elt_r_list_values) ) {
804                                        foreach($this->elt_r_list_values as $v) {
805                                                $list = str_replace("!!$v!!", $frais->$v, $list);
806                                        }
807                                }
808                        }
809                        print $list;
810                        // fin de liste
811                        print "</form>";
812                        print $this->elt_e_liste;
813                        print $this->back_script;
814                        print $this->back_script_show_all;
815                } else {
816                        error_message_history($msg[357], $msg[1915], 1);
817                }
818        }
819}
820
821
822class sel_searcher_abt extends sel_searcher {
823       
824        var $t_query;
825        var $cur_typ_query='abt';
826       
827       
828        function make_first_search() {
829
830                global $msg,$dbh;
831                global $elt_query;
832                global $location_query, $date_ech_query;
833                global $nb_per_page, $nb_per_page_select;
834                global $results_show_all;
835               
836                if (!$nb_per_page) {
837                        $nb_per_page=$nb_per_page_select; 
838                }
839
840                $restrict = "1 ";
841                if ($location_query!='-1') {
842                        $restrict.= "and location_id='".$location_query."' ";
843                }
844                $restrict.= "and notice_id=num_notice ";
845               
846                if ($date_ech_query!='-1') {
847                        $restrict.= "and date_fin < '".$date_ech_query."' ";   
848                }
849               
850                $suite_rqt="or code='".$elt_query."' ";
851               
852                $issn_verif=traite_code_ISSN(stripslashes($elt_query));
853                if (isISSN(stripslashes($elt_query))) {
854                        $suite_rqt.=" or code='".$issn_verif."' ";                     
855                        $q_count = "select count(abt_id) from notices, abts_abts where ".$restrict." and (0 ".$suite_rqt.")";
856                        $r_count = pmb_mysql_query($q_count);
857                        $n_count = pmb_mysql_result($r_count,0,0);
858                        $this->nbresults = $n_count;
859                       
860                        $q_list = "select tit1, abt_id, abt_name from notices, abts_abts where ".$restrict." and (0 ".$suite_rqt.") ORDER BY 1,3";
861                        if(!$results_show_all){
862                                $q_list .= " limit ".$this->page*$nb_per_page.", ".$nb_per_page." ";
863                        } 
864                        $r_list = pmb_mysql_query($q_list,$dbh);
865                        $this->t_query=$r_list;
866                        if(!$results_show_all){
867                                $this->nbepage=ceil($this->nbresults/$nb_per_page);
868                        }else{
869                                $this->nbepage=1;
870                        }
871                       
872                }else{
873                        $aq=new analyse_query(stripslashes($elt_query));
874                        if ($aq->error) {
875                                $this->show_form();
876                                error_message($msg["searcher_syntax_error"],sprintf($msg["searcher_syntax_error_desc"],$aq->current_car,$aq->input_html,$aq->error_message));
877                                return ;
878                        } else {
879                                $q_members = $aq->get_query_members("notices","index_wew","index_sew","abt_id");                       
880                                $q_count = "select count(abt_id) from notices, abts_abts where ".$restrict." and (".$q_members["where"]." ".$suite_rqt.")";
881                                $r_count = pmb_mysql_query($q_count);
882                                $n_count = pmb_mysql_result($r_count,0,0);
883                                $this->nbresults = $n_count;
884                               
885                                $q_list = "select abt_id, ".$q_members['select']." as pert from notices, abts_abts where ".$restrict." and (".$q_members["where"]." ".$suite_rqt.") ".$q_members['post'];
886                                if(!$results_show_all){
887                                        $q_list.=" limit ".$this->page*$nb_per_page.", ".$nb_per_page." "; 
888                                }
889                                //on surcharge la requête d'origine pour ajouter trier sur titre de périodique
890                                $new_q_list="
891                                                SELECT tit1, a.abt_id, a.abt_name, pert
892                                                FROM notices n, abts_abts a, (".$q_list.") as q
893                                                WHERE q.abt_id=a.abt_id AND a.num_notice=n.notice_id
894                                                ORDER BY 1 ASC,3 DESC";
895                                $r_list = pmb_mysql_query($new_q_list,$dbh);
896                                $this->t_query=$r_list;
897                                if(!$results_show_all){
898                                        $this->nbepage=ceil($this->nbresults/$nb_per_page);
899                                }else{
900                                        $this->nbepage=1;
901                                }
902                        }
903                }
904                return ELT_LIST;
905        }
906
907       
908        function store_search() {
909
910                global $elt_query;
911                global $location_query, $date_ech_query;
912                global $charset;
913               
914                $champs="<input type='hidden' name='elt_query' value='".htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset)."'/>";
915                $champs.="<input type='hidden' name='location_query' value='".htmlentities(stripslashes($location_query),ENT_QUOTES,$charset)."'/>";
916                $champs.="<input type='hidden' name='date_ech_query' value='".htmlentities(stripslashes($date_ech_query),ENT_QUOTES,$charset)."'/>";
917                $this->store_form=str_replace("!!first_search_variables!!",$champs,$this->store_form);
918                print $this->store_form;
919        }
920       
921       
922        function elt_list() {
923
924                global $msg, $charset;
925                global $elt_query;
926                global $results_show_all;
927
928                $research .= '<b>'.htmlentities($msg['selector_lib_abt'],ENT_QUOTES,$charset).'</b>&nbsp;'.htmlentities(stripslashes($elt_query),ENT_QUOTES,$charset);
929       
930                $this->show_form();
931                if ($this->nbresults) {
932                        $research .= " => ".sprintf($msg["searcher_results"],$this->nbresults);
933                        if(!$results_show_all && ($this->nbepage!=1)){
934                                $research.="&nbsp;&nbsp;&nbsp;<input type='button' class='bouton_small' onclick='results_show_all();' name='searcher_results_show_all' value='".htmlentities($msg['searcher_results_show_all'],ENT_QUOTES,$charset)."'>";
935                        }
936                        $this->elt_b_list = str_replace('!!research!!', $research, $this->elt_b_list);
937                        print $this->elt_b_list;
938                        //Boutons check/uncheck/add selection
939                        print "<div class='row'>
940                                                <input type='button' class='bouton_small' onclick='check_uncheck(1);' id='searcher_results_check_all' name='searcher_results_check_all' value='".htmlentities($msg['searcher_results_check_all'],ENT_QUOTES,$charset)."'>
941                                                &nbsp;&nbsp;
942                                                <input type='button' class='bouton_small' onclick='add_selection();' id='searcher_results_add_selection' name='searcher_results_add_selection' value='".htmlentities($msg['searcher_results_add_selection'],ENT_QUOTES,$charset)."'>
943                                        </div>";
944                        print "<form name='searcher_results_check_form'>";
945                        // on lance la requête
946                        while(($nz=pmb_mysql_fetch_object($this->t_query))) {
947                                // abonnement
948                                $abt = new sel_abt_display($nz->abt_id, $this->base_url,'sel_searcher_select_');
949                                $abt->action=$this->action;
950                                $abt->action_values=$this->action_values;
951                                $abt->doForm();
952                                $list.= $this->elt_r_list;
953                                if (count($this->elt_r_list_values)) {
954                                        foreach($this->elt_r_list_values as $v) {
955                                                $list = str_replace("!!$v!!", $abt->$v, $list);
956                                        }
957                                }
958                        }
959                        print $list;
960                        // fin de liste
961                        print "</form>";
962                        print $this->elt_e_liste;
963                        print $this->back_script;
964                        print $this->back_script_show_all;
965                } else {
966                        error_message_history($msg[357], $msg[1915],1);
967                }
968        }       
969}
970
971?>
Note: See TracBrowser for help on using the repository browser.