source: pmb4.2/trunk/fuentes/pmb/catalog/serials/bulletinage/expl/bul_expl_form.inc.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: 18.4 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: bul_expl_form.inc.php,v 1.55 2015-05-07 10:21:31 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9
10if (!$expl_id) {
11        echo str_replace('!!page_title!!', $msg[4000].$msg[1003].$msg[4007], $serial_header); // pas d'id, c'est une création
12} else {
13        echo str_replace('!!page_title!!', $msg[4000].$msg[1003].$msg[4008], $serial_header);
14}
15
16/*
17le form d'exemplaire renvoit :
18
19$bul_id
20$id_form
21$org_cb
22$expl_id
23$expl_bulletin
24$expl_typdoc
25$expl_cote
26$expl_section
27$expl_statut
28$expl_location
29$expl_codestat
30$expl_note
31$expl_comment
32$expl_prix
33$expl_owner
34
35*/
36
37function do_selector_bul_section($section_id, $location_id) {
38        global $dbh;
39        global $charset;
40       
41        global $deflt_section;
42        global $deflt_location;
43       
44        if (!$section_id) $section_id=$deflt_section ;
45        if (!$location_id) $location_id=$deflt_location;
46
47        $rqtloc = "SELECT idlocation FROM docs_location order by location_libelle";
48        $resloc = pmb_mysql_query($rqtloc, $dbh);
49        while ($loc=pmb_mysql_fetch_object($resloc)) {
50                $requete = "SELECT idsection, section_libelle FROM docs_section, docsloc_section where idsection=num_section and num_location='$loc->idlocation' order by section_libelle";
51                $result = pmb_mysql_query($requete, $dbh);
52                $nbr_lignes = pmb_mysql_num_rows($result);
53                if ($nbr_lignes) {
54                        if ($loc->idlocation==$location_id) $selector .= "<div id=\"docloc_section".$loc->idlocation."\" style=\"display:block\">";
55                                else $selector .= "<div id=\"docloc_section".$loc->idlocation."\" style=\"display:none\">";
56                        $selector .= "<select name='f_ex_section".$loc->idlocation."' id='f_ex_section".$loc->idlocation."'>";
57                        while($line = pmb_mysql_fetch_row($result)) {
58                                $selector .= "<option value='$line[0]'";
59                                $line[0] == $section_id ? $selector .= ' SELECTED>' : $selector .= '>';
60                                $selector .= htmlentities($line[1],ENT_QUOTES, $charset).'</option>';
61                                }                                         
62                        $selector .= '</select></div>';
63                        }                 
64                }
65        return $selector;                         
66}                                                 
67
68function bul_do_form($obj, $bul_id=0) {
69        // $obj = objet contenant les propriétés de l'exemplaire associé
70        global $bul_expl_form;
71        global $msg; // pour texte du bouton supprimer
72        global $dbh;
73        global $pmb_type_audit,$select_categ_prop ;
74        global $pmb_antivol;
75        global $option_num_auto;
76        global $pmb_rfid_activate,$pmb_rfid_serveur_url,$charset;
77        global $pmb_expl_show_dates,$pmb_expl_show_lastempr;
78        global $thesaurus_concepts_active;
79                               
80        if (isset($option_num_auto)) {
81                $requete="DELETE from exemplaires_temp where sess not in (select SESSID from sessions)";
82                $res = pmb_mysql_query($requete,$dbh);
83        //Appel à la fonction de génération automatique de cb
84        $code_exemplaire =init_gen_code_exemplaire(0,$obj->expl_bulletin);     
85        do {
86                $code_exemplaire = gen_code_exemplaire(0,$obj->expl_bulletin,$code_exemplaire);
87                $requete="select expl_cb from exemplaires WHERE expl_cb='$code_exemplaire'";
88                $res0 = pmb_mysql_query($requete,$dbh);
89                $requete="select cb from exemplaires_temp WHERE cb='$code_exemplaire' AND sess <>'".SESSid."'";
90                $res1 = pmb_mysql_query($requete,$dbh);
91        } while((pmb_mysql_num_rows($res0)||pmb_mysql_num_rows($res1)));
92               
93                //Memorise dans temps le cb et la session pour le cas de multi utilisateur session
94                $obj->expl_cb = $code_exemplaire;
95                $requete="INSERT INTO exemplaires_temp (cb ,sess) VALUES ('$obj->expl_cb','".SESSid."')";
96                $res = pmb_mysql_query($requete,$dbh);
97        }
98       
99        //on compte le nombre de prets pour cet exemplaire
100        $req = "select count(arc_expl_id) as nb_prets from pret_archive where arc_expl_id = ".$obj->expl_id;
101        $res = pmb_mysql_query($req);
102        if(pmb_mysql_num_rows($res)){   
103                $arch_pret = pmb_mysql_fetch_object($res);
104                $nb_prets = $arch_pret->nb_prets ;
105        }else $nb_prets = 0;
106        if($nb_prets){
107                //dernière date de pret pour cet exemplaire
108                $req = "select date_format(last_loan_date, '".$msg["format_date"]."') as date_last from exemplaires where expl_id = ".$obj->expl_id;
109                $res = pmb_mysql_query($req);
110                if(pmb_mysql_num_rows($res)){
111                        $expl_pret = pmb_mysql_fetch_object($res);
112                        $date_last = $expl_pret->date_last ;
113                        $info_nb_prets=str_replace("!!nb_prets!!",$nb_prets,$msg['expl_nbprets']);
114                        $query = "select count(pret_idexpl) ";
115                        $query .= "from pret, empr where pret_idexpl='".$obj->expl_id."' and pret_idempr=id_empr ";
116                        $result = pmb_mysql_query($query, $dbh);
117                        if ($result && pmb_mysql_result($result,0,0)) {
118                                $info_date_last = str_replace("!!date_last!!",$date_last,$msg['expl_lastpret_encours']);
119                        } else {
120                                $info_date_last = str_replace("!!date_last!!",$date_last,$msg['expl_lastpret_retour']);
121                        }
122                        print $info_nb_prets." ".$info_date_last;
123                }
124        }
125
126        // l'annulation du form renvoit à :
127        $annuler = "./catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=".$obj->expl_bulletin;
128        $action = "./catalog.php?categ=serials&sub=bulletinage&action=expl_update";
129        $expl_nbparts=$obj->expl_cb;
130       
131        if(!$obj->expl_nbparts)$expl_nbparts=1;
132        else $expl_nbparts=$obj->expl_nbparts;
133
134        // mise à jour des champs de gestion
135        $bul_expl_form = str_replace('!!bul_id!!', $obj->expl_bulletin, $bul_expl_form);
136        $bul_expl_form = str_replace('!!id_form!!', md5(microtime()), $bul_expl_form);
137        $bul_expl_form = str_replace('!!org_cb!!', htmlentities($obj->expl_cb,ENT_QUOTES, $charset), $bul_expl_form);   
138        $bul_expl_form = str_replace('!!expl_id!!', $obj->expl_id, $bul_expl_form);
139       
140        $bul_expl_form = str_replace('!!action!!', $action, $bul_expl_form);
141        $bul_expl_form = str_replace('!!id!!', $obj->expl_notice, $bul_expl_form);
142        $bul_expl_form = str_replace('!!cb!!', htmlentities($obj->expl_cb,ENT_QUOTES, $charset), $bul_expl_form);
143        $bul_expl_form = str_replace('!!nbparts!!',   htmlentities($expl_nbparts  , ENT_QUOTES, $charset), $bul_expl_form);
144        $bul_expl_form = str_replace('!!note!!', $obj->expl_note, $bul_expl_form);
145        $bul_expl_form = str_replace('!!comment!!', $obj->expl_comment, $bul_expl_form);
146        $bul_expl_form = str_replace('!!cote!!', $obj->expl_cote, $bul_expl_form);
147        $bul_expl_form = str_replace('!!prix!!', $obj->expl_prix, $bul_expl_form);
148
149        // select "type document"
150        $bul_expl_form = str_replace('!!type_doc!!',
151                                do_selector('docs_type', 'expl_typdoc', $obj->expl_typdoc),
152                                $bul_expl_form);               
153
154        // select "section"
155        $bul_expl_form = str_replace('!!section!!',
156                                do_selector_bul_section($obj->expl_section, $obj->expl_location),
157                                $bul_expl_form);
158
159        // select "statut"
160        $bul_expl_form = str_replace('!!statut!!',
161                                do_selector('docs_statut', 'expl_statut', $obj->expl_statut),
162                                $bul_expl_form);
163
164        // select "localisation"
165        //visibilité des exemplaires
166        global $explr_visible_mod, $pmb_droits_explr_localises ;
167        if ($pmb_droits_explr_localises) $where_clause_explr = "idlocation in (".$explr_visible_mod.") and";
168        else $where_clause_explr="";
169        $bul_expl_form = str_replace('!!localisation!!',
170                                gen_liste ("select distinct idlocation, location_libelle from docs_location, docsloc_section where $where_clause_explr num_location=idlocation order by 2", "idlocation", "location_libelle", 'expl_location', "calcule_section(this);", $obj->expl_location, "", "","","",0),
171                                $bul_expl_form);
172
173        // select "code statistique"
174        $bul_expl_form = str_replace('!!codestat!!',
175                                do_selector('docs_codestat', 'expl_codestat', $obj->expl_codestat),
176                                $bul_expl_form);
177       
178        // select "owner"
179        $bul_expl_form = str_replace('!!owner!!',
180                                do_selector('lenders', 'expl_owner', $obj->expl_owner),
181                                $bul_expl_form);
182
183        //dates creation / modification
184        if ($obj->expl_id && ($pmb_expl_show_dates=='1' || $pmb_expl_show_dates=='3')) {
185                $bul_expl_form = str_replace('<!-- msg_exp_cre_date -->',"<label class='etiquette' >".htmlentities($msg['exp_cre_date'],ENT_QUOTES,$charset)."</label>",$bul_expl_form);
186                $bul_expl_form = str_replace('<!-- exp_cre_date -->',format_date($obj->create_date),$bul_expl_form);
187                $bul_expl_form = str_replace('<!-- msg_exp_upd_date -->',"<label class='etiquette' >".htmlentities($msg['exp_upd_date'],ENT_QUOTES,$charset)."</label>",$bul_expl_form);
188                $bul_expl_form = str_replace('<!-- exp_upd_date -->',format_date($obj->update_date),$bul_expl_form);
189        }
190       
191        //dates dépôt / retour
192        if ($obj->expl_id && ($pmb_expl_show_dates=='2' || $pmb_expl_show_dates=='3')) {
193                $bul_expl_form = str_replace('<!-- msg_exp_filing_date -->',"<label class='etiquette' >".htmlentities($msg['filing_date'],ENT_QUOTES,$charset)."</label>",$bul_expl_form);
194                $bul_expl_form = str_replace('<!-- exp_filing_date -->',format_date($obj->expl_date_depot),$bul_expl_form);
195                $bul_expl_form = str_replace('<!-- msg_exp_return_date -->',"<label class='etiquette' >".htmlentities($msg['return_date'],ENT_QUOTES,$charset)."</label>",$bul_expl_form);
196                $bul_expl_form = str_replace('<!-- exp_return_date -->',format_date($obj->expl_date_retour),$bul_expl_form);
197        }
198       
199        // Indexation concept
200        if($thesaurus_concepts_active == 1){
201                $index_concept = new index_concept($obj->expl_id, TYPE_EXPL);
202                $bul_expl_form = str_replace('<!-- index_concept_form -->', $index_concept->get_form("expl"), $bul_expl_form);
203        }
204       
205        // select "type_antivol"
206        $selector="";
207        if ($pmb_antivol>0) {
208                global $value_deflt_antivol;
209                if ($obj->type_antivol=="") $obj->type_antivol=$value_deflt_antivol;
210                // select "type_antivol"
211                $selector = "
212                <div class='colonne3'>
213                <!-- code stat -->
214                <label class='etiquette' for='type_antivol'>$msg[type_antivol]</label>
215                <div class='row'>
216                <select name='type_antivol' id='type_antivol'>";       
217                $selector .= "<option value='0'";
218                if($obj->type_antivol ==0)$selector .= ' SELECTED';
219                $selector .= '>';
220                $selector .= $msg["type_antivol_aucun"].'</option>';
221                $selector .= "<option value='1'";
222                if($obj->type_antivol ==1)$selector .= ' SELECTED';
223                $selector .= '>';
224                $selector .= $msg["type_antivol_magnetique"].'</option>';
225                $selector .= "<option value='2'";
226                if($obj->type_antivol ==2)$selector .= ' SELECTED';
227                $selector .= '>';
228                $selector .= $msg["type_antivol_autre"].'</option>';                               
229                $selector .= '</select></div></div>';   
230        }       
231        $bul_expl_form = str_replace('!!type_antivol!!', $selector, $bul_expl_form);
232
233        $p_perso=new parametres_perso("expl");
234        if (!$p_perso->no_special_fields) {
235                $c=0;
236                $perso="<hr />";
237                global $expl_id_from;
238                if ($expl_id_from && !$obj->expl_id) $perso_id_expl=$expl_id_from;
239                elseif ($obj->expl_id) $perso_id_expl=$obj->expl_id;
240                else $perso_id_expl=0;
241                $perso_=$p_perso->show_editable_fields($perso_id_expl);
242                for ($i=0; $i<count($perso_["FIELDS"]); $i++) {
243                        $p=$perso_["FIELDS"][$i];
244                        if ($c==0) $perso.="<div class='row'>\n";
245                        $perso.="<div class='colonne2'><label for='".$p["NAME"]."' class='etiquette'>".$p["TITRE"]."</label><div class='row'>".$p["AFF"]."</div></div>\n";
246                        $c++;
247                        if ($c==2) {
248                                $perso.="</div>\n";
249                                $c=0;
250                        }
251                }       
252                if ($c==1) $perso.="<div class='colonne2'>&nbsp;</div>\n</div>\n";
253                $perso=$perso_["CHECK_SCRIPTS"]."\n".$perso;
254                $perso="<div class='row'>".$perso."</div>";
255        } else $perso="";
256        $bul_expl_form = str_replace("!!champs_perso!!",$perso,$bul_expl_form);
257       
258       
259        // circulation des périodique
260        $perio_circ_tpl="";
261        $in_circ=0;     
262        if($obj->expl_id){
263                $req = "select * from serialcirc_expl where num_serialcirc_expl_id=".$obj->expl_id;             
264                $res_in_circ = pmb_mysql_query($req);
265                if(pmb_mysql_num_rows($res_in_circ)){
266                        $in_circ=1;
267                        $perio_circ_tpl="<label class='etiquette'>".$msg['serialcirc_expl_in_circ']."</label>";
268                }
269        }
270        if(!$in_circ){
271                $req = "select * from abts_abts, bulletins, serialcirc where abts_abts.num_notice =bulletin_notice and  bulletin_id=".$obj->expl_bulletin." and num_serialcirc_abt=abt_id
272                order by abt_name";
273                $res_circ = pmb_mysql_query($req);
274                if($nb=pmb_mysql_num_rows($res_circ)){
275                        $perio_circ_tpl="<input type='checkbox' name='serial_circ_add' value='1'> ".$msg['serialcirc_add_expl'];
276                        if($nb>1){
277                                $perio_circ_tpl.="<select name='abt_id'>";
278                        }
279                        while($circ = pmb_mysql_fetch_object($res_circ)){
280                                if($nb==1){
281                                        $perio_circ_tpl.="<input type='hidden' name='abt_id' value='".$circ->abt_id."' >";
282                                        break;
283                                }
284                                $perio_circ_tpl.="<option value='".$circ->abt_id."'> ".htmlentities($circ->abt_name,ENT_QUOTES,$charset)."</option>";   
285                        }
286                        if($nb>1){
287                                $perio_circ_tpl.="</select>";
288                        }                       
289                }
290        }
291               
292        $bul_expl_form = str_replace("!!perio_circ_tpl!!",$perio_circ_tpl,$bul_expl_form);
293        // bouton supprimer si modification
294        if ($obj->expl_id) {
295                $del_button = "<input type='button' class='bouton' value=' $msg[63] ' onClick=\"confirm_expl_delete();\">";     
296                $bt_dupliquer = "<input type='button' class='bouton' value=\"".$msg['dupl_expl_bt']."\" name='dupl_ex' id='dupl_ex' onClick=\"unload_off();document.location='./catalog.php?categ=serials&sub=bulletinage&action=dupl_expl&bul_id=".$obj->expl_bulletin."&expl_id=".$obj->expl_id."' ; \" />";
297                if ($pmb_type_audit) 
298                        $link_audit =  "<input class='bouton' type='button' onClick=\"openPopUp('./audit.php?type_obj=2&object_id=$obj->expl_id', 'audit_popup', 700, 500, -2, -2, '$select_categ_prop')\" title='$msg[audit_button]' value='$msg[audit_button]' />";
299                else 
300                        $link_audit = "" ;
301        } else {
302                $del_button = "" ;
303                $link_audit = "" ;
304                $bt_dupliquer = "";
305        }
306       
307        //boutons selon droits
308        $nex = new exemplaire($obj->cb, $obj->expl_id,$obj->notice,$obj->bulletin);
309        if ($nex->explr_acces_autorise=="MODIF") {
310                $bt_modifier = "<input type='submit' class='bouton' value=' $msg[77] ' onClick=\"return test_form(this.form)\" />";
311        } else {
312                $bt_modifier = "";
313                $del_button = "" ;
314                $bt_dupliquer = "";
315        }
316               
317        if ($pmb_rfid_activate==1 && $pmb_rfid_serveur_url ) {
318                $script_rfid_encode="if(script_rfid_encode()==false) return false;";   
319                $bul_expl_form = str_replace('!!questionrfid!!', $script_rfid_encode, $bul_expl_form);
320        }
321        else 
322                $bul_expl_form = str_replace('!!questionrfid!!', '', $bul_expl_form);
323       
324        $bul_expl_form = str_replace('!!del!!', $del_button, $bul_expl_form);
325        $bul_expl_form = str_replace('!!link_audit!!', $link_audit, $bul_expl_form);
326        $bul_expl_form = str_replace('!!bt_dupliquer!!', $bt_dupliquer, $bul_expl_form);
327        $bul_expl_form = str_replace('!!bt_modifier!!', $bt_modifier, $bul_expl_form);
328       
329        $bul_expl_form = str_replace('!!bul_id!!', $bul_id, $bul_expl_form);
330        $bul_expl_form = str_replace('!!expl_id!!', $obj->expl_id, $bul_expl_form);
331
332        // action du bouton annuler
333        $bul_expl_form = str_replace('!!annuler_action!!', $annuler, $bul_expl_form);
334
335        // rafraichissement de la liste des sections par rapport à la localisation sélectionnée
336//      $bul_expl_form .= "<script> calcule_section(document.forms['expl'].expl_location.options[document.forms['expl'].expl_location.selectedIndex].value); </script>";
337
338        // zone du dernier emrunteur
339        $last_pret = "";
340        if ($pmb_expl_show_lastempr && $obj->expl_lastempr) {
341                $lastempr = new emprunteur($obj->expl_lastempr, '', FALSE, 0) ;
342                $last_pret = "<hr /><div class='row'><b>$msg[expl_lastempr] </b>";
343                $link = "<a href='./circ.php?categ=pret&form_cb=".rawurlencode($lastempr->cb)."'>";
344                $last_pret .= $link.$lastempr->prenom.' '.$lastempr->nom.' ('.$lastempr->cb.')</a>';
345                $last_pret .= "</div>";
346                }
347               
348        // zone de l'emprunteur
349        $query = "select empr_cb, empr_nom, empr_prenom, ";
350        $query .= " date_format(pret_date, '".$msg["format_date"]."') as aff_pret_date, ";
351        $query .= " date_format(pret_retour, '".$msg["format_date"]."') as aff_pret_retour, ";
352        $query .= " IF(pret_retour>sysdate(),0,1) as retard " ; 
353        $query .= " from pret, empr where pret_idexpl='".$obj->expl_id."' and pret_idempr=id_empr ";
354        $result = pmb_mysql_query($query, $dbh);
355        if (pmb_mysql_num_rows($result)) {
356                $pret = pmb_mysql_fetch_object($result);
357                $last_pret .= "<hr /><div class='row'><b>$msg[380]</b> ";
358                $link = "<a href='./circ.php?categ=pret&form_cb=".rawurlencode($pret->empr_cb)."'>";
359                $last_pret .= $link.$pret->empr_prenom.' '.$pret->empr_nom.' ('.$pret->empr_cb.')</a>';
360                $last_pret .= "&nbsp;${msg[381]}&nbsp;".$pret->aff_pret_date;
361                $last_pret .= ".&nbsp;${msg[358]}&nbsp;".$pret->aff_pret_retour.".";
362                $last_pret .= "</div>";
363        } 
364        return $bul_expl_form.$last_pret ;
365
366}
367
368
369//verification des droits de modification notice
370$acces_m=1;
371if ($gestion_acces_active==1 && $gestion_acces_user_notice==1) {
372        require_once("$class_path/acces.class.php");
373        $ac= new acces();
374        $dom_1= $ac->setDomain(1);
375        $acces_j = $dom_1->getJoin($PMBuserid,8,'bulletin_notice');
376        $q = "select count(1) from bulletins $acces_j  where bulletin_id=".$bul_id;
377        $r = pmb_mysql_query($q, $dbh);
378        if(pmb_mysql_result($r,0,0)==0) {
379                $acces_m=0;
380        }
381}
382
383if ($acces_m==0) {
384
385        if (!$expl_id) {
386                error_message('', htmlentities($dom_1->getComment('mod_bull_error'), ENT_QUOTES, $charset), 1, '');
387        } else {
388                error_message('', htmlentities($dom_1->getComment('mod_expl_error'), ENT_QUOTES, $charset), 1, '');
389        }
390
391} else {
392               
393
394        // affichage des infos du bulletinage pour rappel
395        $bulletinage = new bulletinage_display($bul_id);
396        print pmb_bidi("<div class='row'><h2>".$bulletinage->display.'</h2></div>');
397       
398        if ($expl_id) {
399                // c'est une modif
400                $requete = "SELECT * FROM exemplaires WHERE expl_id=$expl_id AND expl_notice=0 LIMIT 1";
401                $myQuery = pmb_mysql_query($requete, $dbh);
402                if (pmb_mysql_num_rows($myQuery)) {
403                        $expl = pmb_mysql_fetch_object($myQuery);
404                        if ($action=='dupl_expl') {
405                                $expl_id_from=$expl->expl_id;
406                                $expl->expl_id=0;
407                                $expl->expl_cb="";
408                        }
409                        print bul_do_form($expl);
410                } else {
411                        print "impossible d'accéder à cet exemplaire.";
412                }
413        } else {
414                // création d'un exemplaire
415                // avant toute chose, on regarde si ce cb n'existe pas déjà
416                $requete = "SELECT count(1) FROM exemplaires WHERE expl_cb='".$noex."' ";
417                $myQuery = pmb_mysql_query($requete, $dbh);
418                if(!pmb_mysql_result($myQuery, 0, 0)) {
419                        $expl = new stdClass();
420                        $expl->expl_cb = $noex;
421                        $expl->expl_id = 0;
422                        $expl->expl_bulletin = $bul_id;
423                        $expl->expl_location = $deflt_docs_location;
424                        $expl->expl_section = $deflt_docs_section;
425                        $expl->expl_codestat = $deflt_docs_codestat;
426                        $expl->expl_typdoc = $deflt_docs_type;
427                        $expl->expl_statut = $deflt_docs_statut;
428                        $expl->expl_owner = $deflt_lenders;
429                        $expl_create_date='';
430                        $expl_update_date='';
431                       
432                        $bulletin = new bulletinage($bul_id);
433                        $expl->expl_cote = prefill_cote($bulletin->bulletin_notice);
434                       
435                        print bul_do_form($expl);
436                } else {
437                        print "<div class=\"row\"><div class=\"msg-perio\" size=\"+2\">".$msg["expl_message_code_utilise"]."</div></div>";
438                        print "<div class=\"row\"><a href=\"./catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=";
439                        print $bulletinage->bul_id;
440                        print "\">Retour</a></div>";
441                }
442        }
443}
444?>
Note: See TracBrowser for help on using the repository browser.