source: pmb4.1/trunk/fuentes/pmb/classes/notice_tpl.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: 12.5 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: notice_tpl.class.php,v 1.3 2013-10-04 14:14:35 dgoron Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9require_once("$include_path/templates/notice_tpl.tpl.php");
10require_once("$class_path/notice_tpl_gen.class.php");
11require_once("$class_path/marc_table.class.php");
12
13class notice_tpl {
14       
15        // ---------------------------------------------------------------
16        //              propriétés de la classe
17        // ---------------------------------------------------------------     
18        var $id;                // MySQL id in table 'notice_tpl'
19        var $name;              // nom du template
20        var $comment;   // description du template
21        var $code ; // Code du template
22       
23        // ---------------------------------------------------------------
24        //              constructeur
25        // ---------------------------------------------------------------
26        function notice_tpl($id=0) {                   
27                $this->id = $id;
28                $this->getData();
29        }
30       
31        // ---------------------------------------------------------------
32        //              getData() : récupération infos
33        // ---------------------------------------------------------------
34        function getData() {
35                global $dbh,$msg;
36
37                $this->name = '';                       
38                $this->comment = '';
39                $this->id_test = '';
40                $this->code=array();
41                $this->code[0]=array();
42               
43                $req_loc="select idlocation,location_libelle from docs_location";
44                $res_loc=mysql_query($req_loc);
45               
46                $this->location_label[0]=$msg["all_location"];
47                if (mysql_num_rows($res_loc)) { 
48                        while (($r=mysql_fetch_object($res_loc))) {
49                                $this->code[$r->idlocation]=array();
50                                $this->location_label[$r->idlocation]=$r->location_libelle;
51                        }
52                }       
53                $source = new marc_list("doctype");
54                $source_tab = $source->table;
55                $type_doc[0]="";
56                $this->type_doc_label[0]=$msg["tous_types_docs"];
57                foreach($source_tab as $key=>$libelle) {
58                        $type_doc[$key]="";
59                        $this->type_doc_label[$key]=$libelle;
60                }
61                foreach($this->code as $key =>$val) {
62                        $this->code[$key]["0"]=$type_doc;
63                        $this->code[$key]["m"]=$type_doc;
64                        $this->code[$key]["a"]=$type_doc;
65                        $this->code[$key]["s"]=$type_doc;
66                        $this->code[$key]["b"]=$type_doc;
67                }
68                $this->type_notice["0"]=$msg["notice_tpl_notice_all"];
69                $this->type_notice["m"]=$msg["notice_tpl_notice_monographie"];
70                $this->type_notice["a"]=$msg["notice_tpl_notice_article"];
71                $this->type_notice["s"]=$msg["notice_tpl_notice_periodique"];
72                $this->type_notice["b"]=$msg["notice_tpl_notice_bulletin"];
73       
74                if($this->id) {
75                        $requete = "SELECT * FROM notice_tpl WHERE notpl_id='".$this->id."' LIMIT 1 ";
76                        $result = @mysql_query($requete, $dbh);
77                        if(mysql_num_rows($result)) {
78                                $temp = mysql_fetch_object($result);                           
79                                $this->name     = $temp->notpl_name;
80                                $this->comment  = $temp->notpl_comment;
81                                $this->show_opac        = $temp->notpl_show_opac;                                       
82                                $this->id_test  = $temp->notpl_id_test;                 
83                                $requete = "SELECT * FROM notice_tplcode  WHERE num_notpl='".$this->id."' ";
84                                $result_code = @mysql_query($requete, $dbh);
85                                if(mysql_num_rows($result_code)) {
86                                        while(($temp_code= mysql_fetch_object($result_code))) {
87                                                $this->code[$temp_code->notplcode_localisation][$temp_code->notplcode_niveau_biblio] [$temp_code->notplcode_typdoc]=$temp_code->nottplcode_code;       
88                                        }
89                                }
90                        } else {
91                                // pas trouvé avec cette clé
92                                $this->id = 0;                                                         
93                        }
94                }
95        }
96       
97        // ---------------------------------------------------------------
98        //              show_list : affichage de la liste des éléments
99        // ---------------------------------------------------------------     
100        function show_list($link="./edit.php") {       
101                global $dbh, $charset,$msg;
102                global $notice_tpl_liste, $notice_tpl_liste_ligne;
103               
104                $requete = "SELECT * FROM notice_tpl ORDER BY notpl_name ";
105                $result = @mysql_query($requete, $dbh);
106                if(mysql_num_rows($result)) {
107                        $pair="odd";
108                        while(($temp = mysql_fetch_object($result))){   
109                                $id = $temp->notpl_id;                 
110                                $name = $temp->notpl_name;
111                                $comment = $temp->notpl_comment;
112                                if($temp->notpl_show_opac)      $show_opac=$msg["notice_tpl_show_opac_yes"];
113                                else $show_opac=$msg["notice_tpl_show_opac_no"];
114                                       
115                               
116                                if($pair=="even") $pair ="odd"; else $pair ="even";
117                                // contruction de la ligne
118                                $ligne=$notice_tpl_liste_ligne;
119                               
120                                $ligne = str_replace("!!name!!",        htmlentities($name,ENT_QUOTES, $charset), $ligne);
121                                $ligne = str_replace("!!comment!!",     htmlentities($comment,ENT_QUOTES, $charset), $ligne);
122                                $ligne = str_replace("!!show_opac!!",   $show_opac, $ligne);   
123                                $ligne = str_replace("!!pair!!",        $pair, $ligne);                                 
124                                $ligne = str_replace("!!link_edit!!",   $link."?categ=tpl&sub=notice&action=edit&id=$id", $ligne);     
125                                $ligne = str_replace("!!link_eval!!",   $link."?categ=tpl&sub=notice&action=eval&id=$id&id_test=".$this->id_test, $ligne);     
126                                $ligne = str_replace("!!id!!",          $id, $ligne);   
127                                $tableau.=$ligne;                       
128                        }                               
129                }
130                $liste = str_replace("!!notice_tpl_liste!!",$tableau, $notice_tpl_liste);       
131                $liste = str_replace("!!link_ajouter!!",        $link."?categ=tpl&sub=notice&action=edit", $liste);     
132                return $liste;
133        }       
134       
135        // ---------------------------------------------------------------
136        //              show_form : affichage du formulaire de saisie
137        // ---------------------------------------------------------------
138        function show_form($link="./edit.php") {
139       
140                global $msg;
141                global $notice_tpl_form, $notice_tpl_form_code;
142                global $charset;
143
144                $form=$notice_tpl_form;         
145                $action = $link."?categ=tpl&sub=notice&action=update&id=!!id!!";
146               
147                if($this->id) {
148                        $libelle = $msg["notice_tpl_modifier"];                 
149                        $button_delete = "<input type='button' class='bouton' value='".$msg[63]."' onClick=\"confirm_delete();\">";
150                        $action_delete = $link."?categ=tpl&sub=notice&action=delete&id=!!id!!";
151                        $button_duplicate = "<input type='button' class='bouton' value='".$msg["edit_tpl_duplicate_button"]."' onClick=\"document.location='./edit.php?categ=tpl&sub=notice&action=duplicate&id=".$this->id."';\" />";
152                        if($this->show_opac) $show_opac=" checked='checked' "; else $show_opac="";                     
153                } else {                       
154                        $libelle = $msg["notice_tpl_ajouter"];
155                        $button_delete = "";
156                        $button_duplicate = "";
157                        $action_delete= "";
158                }
159                foreach($this->code as $id_location =>$tab_typenotice) {       
160                        $form_typenotice_all='';
161       
162                        foreach($tab_typenotice as $typenotice =>$tab_typedoc) {                                                               
163                                $form_code_typedoc='';
164                                foreach($tab_typedoc as  $typedoc=>$code) {     
165                                        $form_code_temp = str_replace("!!loc!!", $id_location, $notice_tpl_form_code);
166                                        $form_code_temp = str_replace("!!typenotice!!", $typenotice, $form_code_temp);
167                                        $form_code_temp = str_replace("!!typedoc!!", $typedoc, $form_code_temp);
168                                        $form_code_temp = str_replace("!!code!!", htmlentities($code,ENT_QUOTES, $charset), $form_code_temp);                                   
169                                        $form_code_typedoc.= gen_plus("plus_typedoc".$id_location."_".$typenotice."_".$typedoc,$this->type_doc_label["$typedoc"],$form_code_temp);
170                                        if ($code != "") {
171                                                $form_code_typedoc.= "<script type='text/javascript'>
172                                                        document.getElementById('plus_typedoc".$id_location."_".$typenotice."_".$typedoc."Child').setAttribute('style','margin-bottom:6px; display:block;width:94%');
173                                                        if (document.getElementById('plus_typedoc".$id_location."_".$typenotice."_".$typedoc."Child').parentNode) {
174                                                                document.getElementById('plus_typedoc".$id_location."_".$typenotice."_".$typedoc."Child').parentNode.setAttribute('style','margin-bottom:6px; display:block;width:94%');
175                                                        }
176                                                </script>";
177                                        }                               
178                                }               
179                                $form_typenotice_all.= gen_plus("plus_typenotice".$id_location."_".$typenotice."_",$this->type_notice["$typenotice"],$form_code_typedoc);                                       
180                        }       
181                        $form_code.=gen_plus("plus_location".$id_location,$this->location_label[$id_location],$form_typenotice_all);
182                }
183                $form = str_replace("!!libelle!!",      $libelle, $form);
184                $form = str_replace("!!name!!",         htmlentities($this->name,ENT_QUOTES, $charset), $form);
185                $form = str_replace("!!comment!!",      htmlentities($this->comment,ENT_QUOTES, $charset), $form);
186                $form = str_replace("!!id_test!!",      htmlentities($this->id_test,ENT_QUOTES, $charset), $form);
187                $form = str_replace("!!show_opac!!",$show_opac, $form);
188                $form = str_replace("!!code_part!!", $form_code, $form);               
189       
190                $form = str_replace("!!action!!",       $action, $form);
191                $form = str_replace("!!duplicate!!", $button_duplicate, $form);         
192                $form = str_replace("!!delete!!",       $button_delete, $form);
193                $form = str_replace("!!action_delete!!",$action_delete, $form);
194                $form = str_replace("!!id!!",           $this->id, $form);                     
195                return $form;
196        }
197       
198        // ---------------------------------------------------------------
199        //              delete() : suppression
200        // ---------------------------------------------------------------
201        function delete() {
202                global $dbh;
203                global $msg;
204               
205                if(!$this->id)  return $msg[403]; 
206
207                // effacement dans la table
208                $requete = "DELETE FROM notice_tpl WHERE notpl_id='".$this->id."' ";
209                mysql_query($requete, $dbh);
210                $requete = "DELETE FROM  notice_tplcode  WHERE num_notpl='".$this->id."' ";
211                mysql_query($requete, $dbh);
212               
213                return false;
214        }
215       
216       
217       
218        // ---------------------------------------------------------------
219        //              update($value) : mise à jour
220        // ---------------------------------------------------------------
221        function update($value) {
222       
223                global $dbh;
224                global $msg;
225                global $include_path;
226                       
227                // nettoyage des chaînes en entrée             
228                $value['name'] = addslashes(clean_string($value['name']));
229                $value['comment'] = addslashes($value['comment']);             
230                $value['id_test'] = addslashes($value['id_test']);             
231                $value['show_opac'] = addslashes($value['show_opac']);
232               
233                if(!$value['name'])     return false;
234               
235                $requete  = "SET  ";
236                $requete .= "notpl_name='".$value["name"]."', ";       
237                $requete .= "notpl_id_test='".$value["id_test"]."', ";                 
238                $requete .= "notpl_comment='".$value["comment"]."', ";         
239                $requete .= "notpl_show_opac='".$value["show_opac"]."' ";               
240                 
241                if($this->id) {
242                        // update
243                        $requete = "UPDATE notice_tpl $requete WHERE notpl_id=".$this->id." ";
244                        if(!mysql_query($requete, $dbh)) {             
245                                require_once("$include_path/user_error.inc.php"); 
246                                warning($msg["notice_tpl_modifier"], $msg["notice_tpl_modifier_erreur"]);
247                                return false;
248                        }
249                } else {
250                        // creation
251                        $requete = "INSERT INTO notice_tpl ".$requete;
252                        if(mysql_query($requete, $dbh)) {
253                                $this->id=mysql_insert_id();                           
254                        } else {
255                                require_once("$include_path/user_error.inc.php"); 
256                                warning($msg["notice_tpl_ajouter"], $msg["notice_tpl_ajouter_erreur"]);
257                                return false;
258                        }
259                }
260               
261                // insertion du code
262                $requete = "DELETE FROM  notice_tplcode  WHERE num_notpl='".$this->id."' ";
263                mysql_query($requete, $dbh);
264               
265                if($value['code'])
266                foreach($value['code'] as $id_location =>$tab_typenotice) {                             
267                        foreach($tab_typenotice as $typenotice =>$tab_typedoc) {                                       
268                                foreach($tab_typedoc as  $typedoc=>$code) {     
269                                        $requete = "INSERT INTO notice_tplcode SET
270                                                num_notpl='".$this->id."',
271                                                notplcode_localisation='$id_location',
272                                                notplcode_typdoc='$typedoc',
273                                                notplcode_niveau_biblio='$typenotice',
274                                                nottplcode_code='". addslashes($code)."' ";     
275                                        if(!mysql_query($requete, $dbh)) {
276                                                require_once("$include_path/user_error.inc.php"); 
277                                                warning($msg["notice_tpl_ajouter"], $msg["notice_tpl_ajouter_erreur"]);
278                                                return false;
279                                        }                                               
280                                }       
281                                                       
282                        }                       
283                }       
284                return true;
285        }
286               
287        function update_from_form() {
288                global $name, $code_list, $comment,$id_test,$show_opac;
289               
290                $value['name']=stripslashes($name);
291                $value['comment']=stripslashes($comment);
292                $value['id_test']=stripslashes($id_test);
293                $value['show_opac']=stripslashes($show_opac);
294
295                foreach($code_list as $input_code)      {
296                        $code="";
297                        eval("global \$".$input_code.";\$code= $".$input_code.";");
298                        if($code) {
299                                list($label,$location,$type_notice,$type_doc)=explode("_",$input_code);                         
300                                $value["code"]["$location"]["$type_notice"]["$type_doc"]=stripslashes($code);
301                        }
302                }
303                $this->update($value);         
304        }
305       
306        function gen_tpl_select($select_name="notice_tpl", $selected_id=0) {           
307                global $msg;
308               
309                $requete = "SELECT notpl_id, concat(notpl_name,'. ',notpl_comment) as nom  FROM notice_tpl ORDER BY notpl_name ";
310                $onchange="";
311                return gen_liste ($requete, "notpl_id", "nom", $select_name, $onchange, $selected_id, 0, $msg["notice_tpl_list_default"], 0,$msg["notice_tpl_list_default"], 0) ;
312        }
313               
314        function show_eval($notice_id=0) {
315                global $notice_tpl_eval;
316                global $deflt2docs_location;
317               
318                if(!$notice_id)$notice_id=$this->id_test;
319                $notice_tpl_gen=new notice_tpl_gen($this->id); 
320                $tpl= $notice_tpl_gen->build_notice($notice_id,$deflt2docs_location); 
321                $form = str_replace("!!tpl!!",  $tpl, $notice_tpl_eval);               
322               
323                return $form;
324        }       
325
326} // fin class
Note: See TracBrowser for help on using the repository browser.