source: pmb4.2/trunk/fuentes/pmb/classes/search_perso.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: 10.8 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: search_perso.class.php,v 1.5 2015-05-15 12:30:51 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9// classes de gestion des recherches personnalisées
10
11// inclusions principales
12require_once("$include_path/templates/search_perso.tpl.php");
13require_once("$class_path/search.class.php");
14
15class search_perso {
16
17// constructeur
18function search_perso($id=0) {
19        global $PMBuserid,$search_perso_user;
20        // si id, allez chercher les infos dans la base
21        $this->autorisations = $PMBuserid;
22        if($id) {
23                $this->id = $id;
24                $this->fetch_data();
25        }       
26        if(!$search_perso_user) {
27                $search_perso_user=$this->get_link_user();
28        }
29        return $this->id;
30}
31   
32// récupération des infos en base
33function fetch_data() {
34        global $dbh;
35       
36        $myQuery = pmb_mysql_query("SELECT * FROM search_perso WHERE search_id='".$this->id."' LIMIT 1", $dbh);
37        $myreq= pmb_mysql_fetch_object($myQuery);
38       
39        $this->autorisations=$myreq->autorisations;
40        $this->name=$myreq->search_name;
41        $this->shortname=$myreq->search_shortname;
42        $this->query=$myreq->search_query;
43        $this->human=$myreq->search_human;
44        $this->directlink=$myreq->search_directlink;
45}
46
47function get_link_user() {
48        global $dbh,$PMBuserid; 
49       
50        $requete = "SELECT * FROM search_perso";
51        if ($PMBuserid!=1) $requete.=" WHERE (autorisations='$PMBuserid' or autorisations like '$PMBuserid %' or autorisations like '% $PMBuserid %' or autorisations like '% $PMBuserid') ";
52        $requete .= " order by search_name ";
53        $myQuery = pmb_mysql_query($requete, $dbh);
54        $this->search_perso_user=array();
55        $link="";
56        if(pmb_mysql_num_rows($myQuery)){
57                $i=0;
58                while(($r=pmb_mysql_fetch_object($myQuery))) {
59                        if($r->search_directlink) {                             
60                                if($r->search_shortname)$libelle=$r->search_shortname;
61                                else $libelle=$r->search_name;
62                                $link.="
63                                        <span>
64                                                <a href=\"javascript:document.forms['search_form".$r->search_id."'].submit();\">$libelle</a>
65                                        </span>
66                                ";
67                        }
68                        $this->search_perso_user[$i]= new stdClass();           
69                        $this->search_perso_user[$i]->id=$r->search_id;
70                        $this->search_perso_user[$i]->name=$r->search_name;
71                        $this->search_perso_user[$i]->shortname=$r->search_shortname;
72                        $this->search_perso_user[$i]->query=$r->search_query;
73                        $this->search_perso_user[$i]->human=$r->search_human;
74                        $this->search_perso_user[$i]->directlink=$r->search_directlink;                                 
75                        $i++;                   
76                }       
77        }       
78        $this->directlink_user=$link;
79        return true;
80}
81// fonction de mise à jour ou de création
82function update($value) {       
83        global $dbh,$msg,$search_perso_user;
84        $fields="";
85        foreach($value as $key => $val) {
86                if($fields) $fields.=","; 
87                $fields.=" $key='$val' ";       
88        }               
89        if($this->id) {
90                // modif
91                $no_erreur=pmb_mysql_query("UPDATE search_perso SET $fields WHERE search_id=".$this->id, $dbh); 
92                if(!$no_erreur) {
93                        error_message($msg["search_perso_form_edit"], $msg["search_perso_form_add_error"],1);   
94                        exit;
95                }
96               
97        } else {
98                // create
99                $no_erreur=pmb_mysql_query("INSERT INTO search_perso SET $fields ", $dbh);
100                $this->id = pmb_mysql_insert_id($dbh);
101                if(!$no_erreur) {
102                        error_message($msg["search_perso_form_add"], $msg["search_perso_form_add_error"],1);
103                        exit;
104                }
105        }       
106        // rafraischissement des données
107        $this->fetch_data();
108        $search_perso_user=$this->get_link_user();
109        return $this->id;
110}
111
112function update_from_form() {
113        global $PMBuserid,$name,$shortname,$query,$human,$directlink,$rech_autorisations;
114       
115        $value= new stdClass();
116        if (is_array($rech_autorisations)) $autorisations=implode(" ",$rech_autorisations);
117        else $autorisations="1";
118        $value->autorisations=$autorisations;
119        $value->search_name=$name;
120        $value->search_shortname=$shortname;
121        $value->search_query=$query;
122        $value->search_human=$human;
123        $value->search_directlink=$directlink;
124       
125        $this->update($value); 
126}
127
128// fonction générant le form de saisie
129function do_form() {
130        global $msg,$tpl_search_perso_form,$charset;   
131       
132        // titre formulaire
133        if($this->id) {
134                $libelle=$msg["search_perso_form_edit"];
135                $link_delete="<input type='button' class='bouton' value='".$msg[63]."' onClick=\"confirm_delete();\" />";
136               
137        } else {
138                $libelle=$msg["search_perso_form_add"];
139                $link_delete="";
140                /*
141                foreach($_POST as $key =>$val) {
142                        if($val) {
143                                if(is_array($val)) {
144                                        foreach($val as $val_array) {
145                                                $memo_search.= "<input type='hidden' name='".$key."[]' value='$val_array'/>";
146                                        }
147                                }
148                                else $memo_search.="<input type='hidden' name='$key' value='$val'/>";
149                        }               
150                }               
151                $this->query=$memo_search;
152               
153                global $search;         
154        for ($i=0; $i<count($search); $i++) {
155                $op="op_".$i."_".$search[$i];
156                global $$op;
157                $field_="field_".$i."_".$search[$i];
158                global $$field_;
159        }       */     
160                $my_search=new search();
161                $this->query=$my_search->serialize_search();
162                $this->human = $my_search->make_human_query();         
163        }
164        // Champ éditable
165        $tpl_search_perso_form = str_replace('!!id!!', htmlentities($this->id,ENT_QUOTES,$charset), $tpl_search_perso_form);
166        $tpl_search_perso_form = str_replace('!!name!!', htmlentities($this->name,ENT_QUOTES,$charset), $tpl_search_perso_form);
167        $tpl_search_perso_form = str_replace('!!shortname!!', htmlentities($this->shortname,ENT_QUOTES,$charset), $tpl_search_perso_form);
168        if($this->directlink) $checked= " checked='checked' ";
169        $tpl_search_perso_form = str_replace('!!directlink!!', $checked, $tpl_search_perso_form);
170
171        if ($this->id) {
172                $tpl_search_perso_form = str_replace('!!autorisations_users!!', $this->aff_form_autorisations($this->autorisations,0), $tpl_search_perso_form);
173        } else {
174                $tpl_search_perso_form = str_replace('!!autorisations_users!!', $this->aff_form_autorisations("",1), $tpl_search_perso_form);
175        }
176
177        $tpl_search_perso_form = str_replace('!!query!!', htmlentities($this->query,ENT_QUOTES,$charset), $tpl_search_perso_form);
178        $tpl_search_perso_form = str_replace('!!human!!', htmlentities($this->human,ENT_QUOTES,$charset), $tpl_search_perso_form);
179       
180        $action="./catalog.php?categ=serials&sub=collstate_update&serial_id=".$this->serial_id."&id=".$this->id;
181        $tpl_search_perso_form = str_replace('!!action!!', $action, $tpl_search_perso_form);
182        $tpl_search_perso_form = str_replace('!!delete!!', $link_delete, $tpl_search_perso_form);
183        $tpl_search_perso_form = str_replace('!!libelle!!',htmlentities($libelle,ENT_QUOTES,$charset) , $tpl_search_perso_form);
184       
185        $link_annul = "onClick=\"unload_off();history.go(-1);\"";
186        $tpl_search_perso_form = str_replace('!!annul!!', $link_annul, $tpl_search_perso_form);
187       
188        return $tpl_search_perso_form; 
189}
190
191//fonction gérant les autorisations sur la recherche prédéfinie
192function aff_form_autorisations ($param_autorisations="1", $creation_rech="1") {
193        global $dbh;
194        global $msg;
195        global $PMBuserid;
196
197        $requete_users = "SELECT userid, username FROM users order by username ";
198        $res_users = pmb_mysql_query($requete_users, $dbh);
199        $all_users=array();
200        while (list($all_userid,$all_username)=pmb_mysql_fetch_row($res_users)) {
201                $all_users[]=array($all_userid,$all_username);
202        }
203        if ($creation_rech) $param_autorisations.=" ".$PMBuserid ;
204
205        $autorisations_donnees=explode(" ",$param_autorisations);
206
207        for ($i=0 ; $i<count($all_users) ; $i++) {
208                if (array_search ($all_users[$i][0], $autorisations_donnees)!==FALSE) $autorisation[$i][0]=1;
209                else $autorisation[$i][0]=0;
210                $autorisation[$i][1]= $all_users[$i][0];
211                $autorisation[$i][2]= $all_users[$i][1];
212        }
213        $autorisations_users="";
214        $id_check_list='';
215        while (list($row_number, $row_data) = each($autorisation)) {
216                $id_check="auto_".$row_data[1];
217                if($id_check_list)$id_check_list.='|';
218                $id_check_list.=$id_check;
219                if ($row_data[1]==1) $autorisations_users.="<span class='usercheckbox'><input type='checkbox' name='rech_autorisations[]' id='$id_check' value='".$row_data[1]."' checked class='checkbox' readonly /><label for='$id_check' class='normlabel'>&nbsp;".$row_data[2]."</label></span>&nbsp;";
220                elseif ($row_data[0]) $autorisations_users.="<span class='usercheckbox'><input type='checkbox' name='rech_autorisations[]' id='$id_check' value='".$row_data[1]."' checked class='checkbox' /><label for='$id_check' class='normlabel'>&nbsp;".$row_data[2]."</label></span>&nbsp;";
221                else $autorisations_users.="<span class='usercheckbox'><input type='checkbox' name='rech_autorisations[]' id='$id_check' value='".$row_data[1]."' class='checkbox' /><label for='$id_check' class='normlabel'>&nbsp;".$row_data[2]."</label></span>&nbsp;";
222        }
223        $autorisations_users.="<input type='hidden' id='auto_id_list' name='auto_id_list' value='$id_check_list' >";
224        return $autorisations_users;
225}
226
227// fonction générant le form de saisie
228function do_list() {
229        global $tpl_search_perso_liste_tableau,$tpl_search_perso_liste_tableau_ligne;   
230               
231        // liste des lien de recherche directe
232        $tpl_search_perso_liste_tableau = str_replace('!!preflink!!',$this->directlink_user , $tpl_search_perso_liste_tableau);
233        $liste="";
234        // pour toute les recherche de l'utilisateur
235        $my_search=new search();
236        for($i=0;$i<count($this->search_perso_user);$i++) {
237                if ($i % 2) $pair_impair = "even"; else $pair_impair = "odd";
238               
239                //composer le formulaire de la recherche
240                $my_search->unserialize_search($this->search_perso_user[$i]->query);
241                $forms_search.= $my_search->make_hidden_search_form("./catalog.php?categ=search&mode=6","search_form".$this->search_perso_user[$i]->id);
242               
243               
244        $td_javascript="  onmousedown=\"document.forms['search_form".$this->search_perso_user[$i]->id."'].submit();\" ";
245        $tr_surbrillance = "onmouseover=\"this.className='surbrillance'\" onmouseout=\"this.className='".$pair_impair."'\" ";
246
247        $line = str_replace('!!td_javascript!!',$td_javascript , $tpl_search_perso_liste_tableau_ligne);
248        $line = str_replace('!!tr_surbrillance!!',$tr_surbrillance , $line);
249        $line = str_replace('!!pair_impair!!',$pair_impair , $line);
250
251                $line =str_replace('!!id!!', $this->search_perso_user[$i]->id, $line);
252                $line = str_replace('!!name!!', $this->search_perso_user[$i]->name, $line);
253                $line = str_replace('!!human!!', $this->search_perso_user[$i]->human, $line);           
254                $line = str_replace('!!shortname!!', $this->search_perso_user[$i]->shortname, $line);
255                if($this->search_perso_user[$i]->directlink)
256                        $directlink="<img src='./images/tick.gif' border='0'  hspace='0' align='middle'  class='bouton-nav' value='=' />";
257                else $directlink="";
258                $line = str_replace('!!directlink!!', $directlink, $line);
259               
260                $liste.=$line;
261        }
262        $tpl_search_perso_liste_tableau = str_replace('!!lignes_tableau!!',$liste , $tpl_search_perso_liste_tableau);
263        return $forms_search.$tpl_search_perso_liste_tableau;   
264}
265
266// suppression d'une collection ou de toute les collections d'un périodique
267function delete() {
268        global $dbh,$search_perso_user;
269       
270        if($this->id) {
271                pmb_mysql_query("DELETE from search_perso WHERE search_id='".$this->id."' ", $dbh);
272        }
273        $search_perso_user=$this->get_link_user();     
274}
275
276} // fin définition classe
Note: See TracBrowser for help on using the repository browser.