source: pmb4.1/trunk/fuentes/pmb/classes/facette_search_opac.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: 15.9 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: facette_search_opac.class.php,v 1.12.2.2 2014-09-23 08:21:07 arenou Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9// classes de gestion des facettes pour la recherche OPAC
10
11// inclusions principales
12require_once("$include_path/templates/facette_search_opac_tpl.php");
13require_once("$include_path/user_error.inc.php");
14
15class facette_search {
16        var $fields_array=array();
17        protected $id;
18        protected $name;
19        protected $crit;
20        protected $ss_crit;
21        protected $nb_result;
22        protected $visible;
23        protected $order_sort;
24        protected $type_sort;
25        protected $limit_plus;
26       
27       
28        function facette_search(){
29                $this->fields_array = $this->fields_array();
30        }
31       
32//recuperation de champs_base.xml
33        function fields_array(){
34                global $include_path,$msg;
35                global $dbh, $champ_base;
36               
37                if(!count($champ_base)) {
38                        $file = $include_path."/indexation/notices/champs_base_subst.xml";
39                        if(!file_exists($file)){
40                                $file = $include_path."/indexation/notices/champs_base.xml";
41                        }
42                        $fp=fopen($file,"r");
43                if ($fp) {
44                                $xml=fread($fp,filesize($file));
45                        }
46                        fclose($fp);
47                        $champ_base=_parser_text_no_function_($xml,"INDEXATION");
48                }
49                return $champ_base;
50        }
51
52//creation de la liste des criteres principaux
53        function create_list_fields(){
54                global $msg,$tpl_form_facette;
55                //recuperation du fichier xml de configuration
56                $array = $this->array_sort();
57                $array2 = $this->array_subfields($this->crit);
58                $post_flag = true;
59                $post_param = "list_crit";
60                $post_param2 = "&sub_field";
61                $script ="<script type='text/javascript' src='./javascript/http_request.js'></script>
62                        <script type='text/javascript'>
63                       
64                                function load_subfields(id_ss_champs){
65                                        var lst = document.getElementById('list_crit');
66                                        var id = lst.value;
67                                        var id_subfields = id_ss_champs;
68                                        var xhr_object=  new http_request();                                   
69                                        xhr_object.request('./ajax.php?module=admin&categ=opac&section=lst_facette',\"$post_flag\",\"$post_param=\"+id+\"$post_param2=\"+id_subfields,'true',cback,0,0)
70                                }
71                               
72                                function cback(response){                                               
73                                        var div = document.getElementById('liste2');
74                                        div.innerHTML = response;
75                                }
76                        </script>";
77               
78                $tpl_form_facette = str_replace('!!script!!', $script, $tpl_form_facette);
79               
80                $select ="<select id='list_crit' name='list_crit' onchange='load_subfields(0)'>";               
81                foreach ($array as $id => $value) {                     
82                        if($id==$this->crit){
83                                $select.="<option value=".$id." selected='selected'>".$value."</option>";
84                        } else {
85                                $select.="<option value=".$id.">".$value."</option>";
86                        }
87                }
88                $select.="</select></br>";
89                if($this->crit!=null) $select .= "<script>load_subfields(".$this->ss_crit.")</script>";
90                return $select;
91        }
92       
93//liste liee => sous champs
94        function create_list_subfields($id,$id_ss_champs=0,$suffixe_id=0){
95                global $msg,$charset;
96                $array = $this->array_subfields($id);
97                $tab_ss_champs = array();
98                $select_ss_champs="<label>".$msg["facette_filtre_secondaire"]."</label></br>";
99                if($suffixe_id){
100                        $name_ss_champs="list_ss_champs_".$suffixe_id;
101                }else{
102                        $name_ss_champs="list_ss_champs";
103                }
104                $select_ss_champs.="<select id='$name_ss_champs' name='$name_ss_champs'>";
105               
106                if((count($array)>1)){
107                        foreach($array as $j=>$val2){
108                                if($id_ss_champs == $j) $select_ss_champs.="<option value=".$j." selected='selected'>".htmlentities($val2,ENT_QUOTES,$charset)."</option>";
109                                else $select_ss_champs.="<option value=".$j.">".htmlentities($val2,ENT_QUOTES,$charset)."</option>";
110                        }
111                       
112                        $select_ss_champs.="</select></br>";
113                        return $select_ss_champs;
114                }elseif(count($array)==1){
115                        foreach($array as $j=>$val2){
116                                $select_ss_champs = "<input type='hidden' name='$name_ss_champs' value='1'/>";
117                        }
118                        return $select_ss_champs;
119                }
120        }
121       
122//formulaire MaJ ou de creation d'une facette   
123        function form_facette(){
124                global $tpl_form_facette, $msg,$charset;
125               
126                $list_champs = $this->create_list_fields();
127               
128                $tpl_form_facette = str_replace('!!name_del_facette!!',sprintf($msg['label_alert_delete_facette'],htmlentities($this->name,ENT_QUOTES,$charset)),$tpl_form_facette);
129                $tpl_form_facette = str_replace('!!nameF!!',sprintf($msg['name_facette'],htmlentities($this->name,ENT_QUOTES,$charset)),$tpl_form_facette);
130                if($this->id==null){
131                        $tpl_form_facette = str_replace('!!libelle!!', htmlentities($msg['lib_nelle_facette_form'],ENT_QUOTES,$charset), $tpl_form_facette);
132                        $tpl_form_facette = str_replace('!!val_submit_form!!', htmlentities($msg['submitSendFacette'],ENT_QUOTES,$charset), $tpl_form_facette);
133                        $tpl_form_facette = str_replace('!!valHidden!!', htmlentities("creation",ENT_QUOTES,$charset), $tpl_form_facette);
134                        $input_delete_disable = "";
135                        $tpl_form_facette = str_replace('!!val_submit_suppr!!', $input_delete_disable, $tpl_form_facette);
136                        $val_nb = 0;
137                        $val_nb += 0;
138                        $tpl_form_facette = str_replace('!!val_nb!!', $val_nb, $tpl_form_facette);
139                        $tpl_form_facette = str_replace('!!defaut_check_order!!',$msg['default_check_facette'],$tpl_form_facette);
140                        $tpl_form_facette = str_replace('!!defaut_check_order2!!',"",$tpl_form_facette);
141                        $tpl_form_facette = str_replace('!!defaut_check_type2!!',$msg['default_check_facette'],$tpl_form_facette);
142                        $tpl_form_facette = str_replace('!!defaut_check_type!!',"",$tpl_form_facette);
143                        $tpl_form_facette = str_replace('!!limit_plus!!',"0",$tpl_form_facette);
144                } else {
145                        $input_delete = "<input class='bouton' type='button' value='".htmlentities($msg['submitSupprFacette'],ENT_QUOTES,$charset)."' onClick='javascript:confirm_delete()'/>";
146                        $tpl_form_facette = str_replace('!!val_submit_suppr!!',$input_delete, $tpl_form_facette);
147                        $tpl_form_facette = str_replace('!!libelle!!', htmlentities($msg['update_facette'],ENT_QUOTES,$charset), $tpl_form_facette);
148                        $tpl_form_facette = str_replace('!!val_submit_form!!', htmlentities($msg['submitMajFacette'],ENT_QUOTES,$charset), $tpl_form_facette);
149                        $tpl_form_facette = str_replace('!!valHidden!!', htmlentities($this->id,ENT_QUOTES,$charset), $tpl_form_facette);
150                        $tpl_form_facette = str_replace('!!val_nb!!', htmlentities($this->nb_result,ENT_QUOTES,$charset), $tpl_form_facette);
151                        $tpl_form_facette = str_replace('!!limit_plus!!',$this->limit_plus,$tpl_form_facette);
152                        $tpl_form_facette = str_replace('!!id!!', htmlentities($this->id,ENT_QUOTES,$charset), $tpl_form_facette);
153                       
154                        if($this->visible==1)$tpl_form_facette = str_replace('!!defaut_check!!', htmlentities($msg['default_check_facette'],ENT_QUOTES,$charset), $tpl_form_facette);
155                        if($this->order_sort)$tpl_form_facette = str_replace('!!defaut_check_order2!!', htmlentities($msg['default_check_facette'],ENT_QUOTES,$charset), $tpl_form_facette);
156                        else $tpl_form_facette = str_replace('!!defaut_check_order!!',htmlentities($msg['default_check_facette'],ENT_QUOTES,$charset),$tpl_form_facette);
157                        if($this->type_sort)$tpl_form_facette = str_replace('!!defaut_check_type2!!', htmlentities($msg['default_check_facette'],ENT_QUOTES,$charset), $tpl_form_facette);
158                        else $tpl_form_facette = str_replace('!!defaut_check_type!!',htmlentities($msg['default_check_facette'],ENT_QUOTES,$charset),$tpl_form_facette);
159                       
160                } 
161               
162                $tpl_form_facette = str_replace('!!liste1!!', $list_champs, $tpl_form_facette); 
163                return $tpl_form_facette;
164        }
165
166//enregistrement ou MaJ d une facette*
167        function save_form_facette(){
168                global $label_facette,$list_crit,$list_nb,$list_ss_champs,$visible,$hidden_form,$dbh,$type_sort,$order_sort,$limit_plus;
169                $redirect_list = "<script language='javascript'>location.href='./admin.php?categ=opac&sub=facette_search_opac&section=facette'</script>";
170               
171                if($visible==true) $visible=1;
172                else $visible=0;
173               
174                $requete="select max(facette_order) as ordre from facettes ";
175                $resultat=mysql_query($requete);
176                $ordre_max=@mysql_result($resultat,0,0);
177                $ordre_max++;
178               
179                $hidden_form+=0;
180                $list_ss_champs+=0;
181                $listNb+=0;
182                $list_crit+=0;
183                $limit_plus+=0;
184                if((!empty($hidden_form)&&($hidden_form!="creation"))){
185                       
186                        $req="UPDATE facettes
187                                        SET facette_name='".$label_facette."',facette_critere='".$list_crit."',
188                                                facette_ss_critere='".$list_ss_champs."',facette_nb_result='".$list_nb."',
189                                                facette_visible='".$visible."',facette_type_sort='".$type_sort."',facette_order_sort='".$order_sort."',
190                                                facette_limit_plus=$limit_plus
191                                        WHERE id_facette='".$hidden_form."'";
192                        $rep = mysql_query($req,$dbh) or die(mysql_error()."<br>$req");
193                } else {
194                        $req="INSERT INTO facettes                             
195                                SET facette_name='".$label_facette."',facette_critere='".$list_crit."',
196                                                facette_ss_critere='".$list_ss_champs."',facette_nb_result='".$list_nb."',
197                                                facette_visible='".$visible."',facette_type_sort='".$type_sort."',facette_order_sort='".$order_sort."',
198                                                facette_order=$ordre_max,
199                                                facette_limit_plus=$limit_plus
200                                ";
201                        $rep = mysql_query($req,$dbh) or die(mysql_error()."<br>$req");
202                       
203                } 
204                return $redirect_list;
205        }
206       
207//vue des listes deja creees => page d accueil des facettes
208        function view_list_facette(){
209                global $tpl_vue_facettes,$msg,$dbh,$charset;
210               
211                $req = "SELECT * FROM facettes  order by facette_order, facette_name";
212                $rq = mysql_query($req,$dbh) or die("Erreur SQL");
213                $lst="";
214                $array = $this->array_sort();
215                $array_subfields = array();
216               
217                $i = 0;
218               
219                while($rslt = mysql_fetch_object($rq)){
220                       
221                        $intit_crit = htmlentities($array[$rslt->facette_critere],ENT_QUOTES,$charset);
222                        $array_subfields = $this->array_subfields($rslt->facette_critere);
223                        $idF = $rslt->id_facette+0;
224                       
225                        if(sizeof($array_subfields)>1) $intit_subfields = htmlentities($array_subfields[$rslt->facette_ss_critere],ENT_QUOTES,$charset);
226                        else $intit_subfields = $msg["admin_opac_facette_ss_critere"];
227                        $nb_result = $rslt->facette_nb_result+0;
228                       
229                        if($nb_result==0)$nb_result = $msg["admin_opac_facette_illimite"];
230                        $visible = $rslt->facette_visible+0;
231                       
232                        if($visible==0)$visible="";
233                        else $visible="X";
234                       
235                        if ($i % 2) $pair_impair = "even"; else $pair_impair = "odd";
236                        $on_mouse_down="onMouseDown=\"document.location='./admin.php?categ=opac&sub=facette_search_opac&section=facette&action=edit&idF=$idF'\"";
237                        $td_javascript=" ";
238                $tr_surbrillance = "onmouseover=\"this.className='surbrillance'\" onmouseout=\"this.className='".$pair_impair."'\" ";
239                        $on_mouse_down="onMouseDown=\"document.location='./admin.php?categ=opac&sub=facette_search_opac&section=facette&action=edit&idF=".$idF."'\"";
240                        $sort_gestion="";
241                        if($rslt->facette_type_sort) $sort_gestion .= $msg['intit_gest_tri2'];
242                        else $sort_gestion .= $msg['intit_gest_tri1'];
243                        $sort_gestion .= " ".$msg['quotas_and']." ";
244                        if($rslt->facette_order_sort) $sort_gestion .= $msg['intit_gest_tri4'];
245                        else $sort_gestion .= $msg['intit_gest_tri3'];
246                       
247                        $lst .= "
248                                <tr >
249                                        <td>
250                                                <input type='button' class='bouton_small' value='-' onClick=\"document.location='./admin.php?categ=opac&sub=facette_search_opac&section=facette&action=up&idF=$idF'\"/></a>
251                                                <input type='button' class='bouton_small' value='+' onClick=\"document.location='./admin.php?categ=opac&sub=facette_search_opac&section=facette&action=down&idF=$idF'\"/>
252                                        </td>
253                                        <td style='cursor:pointer' class=".$pair_impair." ".$tr_surbrillance." ".$on_mouse_down.">".htmlentities($rslt->facette_name,ENT_QUOTES,$charset)."</td>
254                                        <td>".$intit_crit."</td>
255                                        <td>".$intit_subfields."</td>
256                                        <td>".$nb_result."</td>
257                                        <td>".$sort_gestion."</td>
258                                        <td>".$visible."</td>
259                                </tr>
260                        ";
261               
262                        $tpl_vue_facettes = str_replace('!!id!!',$rslt->id_facette, $tpl_vue_facettes);
263                        $i++;
264                }
265                $tpl_vue_facettes = str_replace('!!lst_facette!!', $lst, $tpl_vue_facettes);
266               
267                return $tpl_vue_facettes;
268        }
269       
270        function facette_up($idF){
271                $requete="select facette_order from facettes where id_facette=$idF";
272                $resultat=mysql_query($requete);
273                $ordre=mysql_result($resultat,0,0);
274                $requete="select max(facette_order) as ordre from facettes where facette_order<$ordre";
275                $resultat=mysql_query($requete);
276                $ordre_max=@mysql_result($resultat,0,0);
277                if ($ordre_max) {
278                        $requete="select id_facette from facettes where facette_order=$ordre_max limit 1";
279                        $resultat=mysql_query($requete);
280                        $id_facette_max=mysql_result($resultat,0,0);
281                        $requete="update facettes set facette_order='".$ordre_max."' where id_facette=$idF";
282                        mysql_query($requete);
283                        $requete="update facettes set facette_order='".$ordre."' where id_facette=".$id_facette_max;
284                        mysql_query($requete);
285                }               
286        }
287       
288        function facette_down($idF){
289                $requete="select facette_order from facettes where id_facette=$idF";
290                $resultat=mysql_query($requete);
291                $ordre=mysql_result($resultat,0,0);
292                $requete="select min(facette_order) as ordre from facettes where facette_order>$ordre";
293                $resultat=mysql_query($requete);
294                $ordre_min=@mysql_result($resultat,0,0);
295                if ($ordre_min) {
296                        $requete="select id_facette from facettes where facette_order=$ordre_min limit 1";
297                        $resultat=mysql_query($requete);
298                        $id_facette_min=mysql_result($resultat,0,0);
299                        $requete="update facettes set facette_order='".$ordre_min."' where id_facette=$idF";
300                        mysql_query($requete);
301                        $requete="update facettes set facette_order='".$ordre."' where id_facette=".$id_facette_min;
302                        mysql_query($requete);
303                }               
304        }
305       
306        function facette_order_by_name($idF){
307                global $dbh;
308                $req = "SELECT id_facette  FROM facettes order by facette_name";
309                $rq = mysql_query($req,$dbh);   
310                $i=1;
311                while($res = mysql_fetch_object($rq)){
312                        $req="UPDATE facettes SET facette_order='".$i++."' where id_facette=".$res->id_facette;
313                        mysql_query($req,$dbh);
314                }
315        }
316       
317//reaffiche le formulaire avec les bons elements
318        function edit_facette(){
319                global $dbh,$charset;
320                global $idF;
321               
322                $req = "SELECT * FROM facettes WHERE id_facette='".$idF."'";
323                $rep = mysql_query($req,$dbh) or die(mysql_error()."<br>$req");
324               
325                $rslt = mysql_fetch_object($rep);
326               
327                $this->id = $rslt->id_facette;
328                $this->name = $rslt->facette_name;
329                $this->crit =$rslt->facette_critere+0;
330                $this->ss_crit = $rslt->facette_ss_critere+0;
331                $this->nb_result = $rslt->facette_nb_result+0;
332                $this->limit_plus = $rslt->facette_limit_plus+0;
333                $this->visible = $rslt->facette_visible+0;
334                $this->order_sort = $rslt->facette_order_sort+0;
335                $this->type_sort = $rslt->facette_type_sort+0;
336                                               
337                $form_edit = $this->form_facette();
338               
339                return $form_edit;
340        }
341       
342        function array_sort(){
343                global $msg;
344               
345                $array_sort = array();
346               
347                $nb = count($this->fields_array['FIELD']);
348                for($i=0;$i<$nb;$i++){
349                        if($tmp= $msg[$this->fields_array['FIELD'][$i]['NAME']]){
350                                $lib = $tmp;
351                        }else{
352                                $lib = $this->fields_array['FIELD'][$i]['NAME'];
353                        }
354                        $id2 = $this->fields_array['FIELD'][$i]['ID'] + 0;
355                        $array_sort[$id2] = $lib;
356                       
357                }
358                asort($array_sort);
359                return $array_sort;
360               
361        }
362       
363        function array_subfields($id){
364                global $msg,$charset;
365                $tmp_array = $this->fields_array;
366                $array_subfields = array();
367                $bool_search = 0;
368                $i = 0;
369                if($id!=100){
370                        $array = array();
371                        while($bool_search==0){
372                                if($tmp_array['FIELD'][$i]['ID']==$id){
373                                        $isbd=$tmp_array['FIELD'][$i]['ISBD'];
374                                        $array = $tmp_array['FIELD'][$i]['TABLE'][0]['TABLEFIELD'];
375                                        $bool_search = 1;
376                                } 
377                                $i++;
378                                if($i> count($tmp_array['FIELD'])) return array();
379                        }
380                       
381                        $size = count($array);
382                        for($i=0;$i<$size;$i++){
383                                if ($array[$i]['NAME']) $array_subfields[$array[$i]['ID']+0] = $msg[$array[$i]['NAME']];
384                        }
385                        if($isbd){
386                                $array_subfields[$isbd[0]['ID']+0]=$msg['facette_isbd'];
387                        }
388                }else{
389                        $req= mysql_query("select idchamp,titre from notices_custom order by titre asc");
390                        $j=0;
391                        while($rslt=mysql_fetch_object($req)){
392                                $array_subfields[$rslt->idchamp+0] = $rslt->titre;
393                                $j++;
394                        }
395                }       
396                return $array_subfields;
397        }
398       
399        function delete_facette(){
400                global $id,$dbh;
401               
402                $redirect_list = "<script language='javascript'>location.href='./admin.php?categ=opac&sub=facette_search_opac&section=facette'</script>";
403                $req = "DELETE FROM facettes WHERE id_facette='".$id."'";
404                $rep = mysql_query($req,$dbh) or die(mysql_error()."<br>$req");
405               
406                print $redirect_list;   
407        }
408       
409}
410
Note: See TracBrowser for help on using the repository browser.