source: pmb4.2/trunk/fuentes/pmb/classes/serialcirc.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: 62.7 KB
Line 
1<?php
2// +-------------------------------------------------+
3// | 2002-2007 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: serialcirc.class.php,v 1.31 2015-07-16 09:37:06 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9require_once($include_path."/serialcirc.inc.php");
10require_once($include_path."/templates/serialcirc.tpl.php");
11require_once($class_path."/serial_display.class.php");
12require_once($class_path."/serialcirc_diff.class.php");
13require_once($class_path."/resa.class.php");
14require_once($class_path."/serialcirc_print_fields.class.php");
15@ini_set('zend.ze1_compatibility_mode',0);
16require_once($include_path."/h2o/h2o.php");
17require_once("$class_path/aut_link.class.php");
18
19class serialcirc {
20        var $info_expl=array();         
21        var $classement=array();
22        var $info_copy=array();
23        var $info_resa=array();
24        var $info_circ=array();
25        var $id_location=0;
26       
27        function serialcirc($id_location) {
28                global $pmb_lecteurs_localises,$deflt_docs_location;
29                $this->id_location=0;
30                if($pmb_lecteurs_localises){
31                        $id_location+=0;
32                        if(!$id_location)$id_location=$deflt_docs_location;
33                        $this->id_location=$id_location;
34                }       
35                $this->fetch_data();
36        }
37       
38        function fetch_data() {
39                $this->info_expl=array();
40                $this->info_circ=array();
41                $this->classement['alert']=array();
42                $this->classement['to_be_circ']=array();
43                $this->classement['in_circ']=array();
44                $this->classement['retard']=array();
45                $this->classement['reproduction_ask']=array();
46                $this->classement['is_in_resa_ask']=array();           
47                if($this->id_location) $restrict=" and expl_location=".$this->id_location;
48                $req="select * from serialcirc_expl,exemplaires,bulletins where expl_id=num_serialcirc_expl_id and expl_bulletin=bulletin_id $restrict";
49                $resultat=pmb_mysql_query($req);       
50                if ($resultat && pmb_mysql_num_rows($resultat)) {
51                        while($r=pmb_mysql_fetch_object($resultat)){   
52                                $this->info_expl[$r->expl_id]['expl_cb']= $r->expl_cb; 
53                                $this->info_expl[$r->expl_id]['expl_id']= $r->expl_id;                         
54                                $this->info_expl[$r->expl_id]['expl_statut']= $r->expl_statut;
55                                $this->info_expl[$r->expl_id]['expl_location']= $r->expl_location;
56                               
57                               
58                                $rqtSite = "SELECT location_libelle FROM docs_location WHERE idlocation=".$r->expl_location;
59                                $resSite = pmb_mysql_result(pmb_mysql_query($rqtSite),0);
60                                $this->info_expl[$r->expl_id]['expl_location_name']= $resSite;
61                               
62                                $this->info_expl[$r->expl_id]['expl_cote']= $r->expl_cote;
63                               
64                                $this->info_expl[$r->expl_id]['bulletine_date']= $r->serialcirc_expl_bulletine_date;
65                                $this->info_expl[$r->expl_id]['num_diff']= $r->num_serialcirc_expl_serialcirc_diff;     
66                                $this->info_expl[$r->expl_id]['expl_abt_num']= $r->expl_abt_num;                                                       
67                               
68                                $this->info_expl[$r->expl_id]['numero']= $r->bulletin_numero;
69                                $this->info_expl[$r->expl_id]['mention_date']= $r->mention_date;
70                                $this->info_expl[$r->expl_id]['bulletin_notice']= $r->bulletin_notice;
71                                $this->info_expl[$r->expl_id]['bulletin_id']= $r->bulletin_id;
72                                $this->info_expl[$r->expl_id]['num_notice']= $r->num_notice;   
73                                $this->info_expl[$r->expl_id]['expl_link']="./catalog.php?categ=serials&sub=bulletinage&action=expl_form&bul_id=".$r->bulletin_id."&expl_id=".$r->expl_id;                     
74                                $this->info_expl[$r->expl_id]['bull_link']="./catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=".$r->bulletin_id;
75                                $this->info_expl[$r->expl_id]['serial_link']="./catalog.php?categ=serials&sub=view&serial_id=".$r->bulletin_notice;
76                                $this->info_expl[$r->expl_id]['abt_link']="./catalog.php?categ=serialcirc_diff&sub=view&num_abt=".$r->expl_abt_num;
77                                $this->info_expl[$r->expl_id]['cirdiff_link']="./catalog.php?categ=serialcirc_diff&sub=view&num_abt=".$r->expl_abt_num;
78                                $this->info_expl[$r->expl_id]['view_link']='./circ.php?categ=visu_ex&form_cb_expl='.$r->expl_cb;                       
79                                       
80                                $req_serial="select * from notices  where notice_id=".$r->bulletin_notice."";
81                                $res_serial=pmb_mysql_query($req_serial);       
82                                if ($r_serial=pmb_mysql_fetch_object($res_serial)){     
83                                        $this->info_expl[$r->expl_id]['serial_title']=$r_serial->tit1;                                 
84                                }                               
85                               
86                                $this->info_expl[$r->expl_id]['num_serialcirc']= $r->num_serialcirc_expl_serialcirc;
87                                $this->info_expl[$r->expl_id]['serialcirc_diff'] = new serialcirc_diff($r->num_serialcirc_expl_serialcirc);
88                                $this->info_expl[$r->expl_id]['state_circ']= $r->serialcirc_expl_state_circ;
89                        //      $this->info_expl[$r->expl_id]['diff']= $r->num_serialcirc_expl_serialcirc_diff;
90                                $this->info_expl[$r->expl_id]['current_empr']= $r->num_serialcirc_expl_current_empr;                           
91                                $this->info_expl[$r->expl_id]['start_date']= $r->serialcirc_expl_start_date;
92                       
93                                $this->fetch_info_circ($r->expl_id);
94                               
95                                if($this->is_in_alert($r->expl_id)) $this->classement['alert'][]=$r->expl_id;
96                                else if($this->is_in_to_be_circ($r->expl_id)) $this->classement['to_be_circ'][]=$r->expl_id;
97                                if($this->is_in_circ($r->expl_id)) $this->classement['in_circ'][]=$r->expl_id;
98                                if($this->is_in_late($r->expl_id)) $this->classement['retard'][]=$r->expl_id;
99                                if($this->is_in_reproduction_ask($r->expl_id)) $this->classement['reproduction_ask'][]=$r->expl_id;
100                                if($this->is_in_resa_ask($r->expl_id)) $this->classement['is_in_resa_ask'][]=$r->expl_id;
101                               
102                                $this->info_expl[$r->expl_id]['circ']=array();
103                                $req_circ="select * from serialcirc_circ where num_serialcirc_circ_expl =".$r->expl_id;
104                                $resultat_circ=pmb_mysql_query($req_circ);     
105                                if (pmb_mysql_num_rows($resultat_circ)) {
106                                        while($r_circ=pmb_mysql_fetch_object($resultat_circ)){ 
107                                                $this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['subscription']=$r_circ->serialcirc_circ_subscription;
108                                                $this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['ret_asked ']=$r_circ->serialcirc_circ_ret_asked ;
109                                                $this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['trans_asked ']=$r_circ->serialcirc_circ_trans_asked ;
110                                                $this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['trans_doc_asked']=$r_circ->serialcirc_circ_trans_doc_asked;
111                                                $this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['expected_date']=$r_circ->serialcirc_circ_expected_date;
112                                                $this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['pointed_date']=$r_circ->serialcirc_circ_pointed_date;
113                                                if($this->info_expl[$r->expl_id]['serialcirc_diff']->virtual_circ && !$this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['subscription']==0){
114                                                        $this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['no_subscription']=1;
115                                                }
116                                                else {
117                                                        $this->info_expl[$r->expl_id]['circ'][$r_circ->num_serialcirc_circ_empr ]['no_subscription']=0;
118                                                }       
119                                        }
120                                }
121                        }
122                }
123                $this->fetch_data_copy() ;     
124                $this->fetch_data_resa() ;
125                // printr($this->info_expl);
126                // print"<pre>";print_r($this->info_expl);print_r($this->classement);print"</pre>";
127        }
128       
129        function fetch_data_copy(){
130                global $opac_url_base;
131                $this->info_copy=array();               
132                $req="select * from serialcirc_copy ,bulletins, notices where num_serialcirc_copy_bulletin=bulletin_id and bulletin_notice=notice_id order by serialcirc_copy_date ";
133                $resultat=pmb_mysql_query($req);
134                $i=0;
135                if (pmb_mysql_num_rows($resultat)) {
136                        while($r=pmb_mysql_fetch_object($resultat)){                           
137                                $this->info_copy[$i]['id']=$r->id_serialcirc_copy;
138                                $this->info_copy[$i]['id_empr']=$r->num_serialcirc_copy_empr;
139                                $this->info_copy[$i]['empr']=$this->empr_info($this->info_copy[$i]['id_empr']);
140                                $this->info_copy[$i]['id_bulletin']=$r->num_serialcirc_copy_bulletin;
141                                $this->info_copy[$i]['perio']=$r->tit1;
142                                $this->info_copy[$i]['numero']= $r->bulletin_numero;
143                                $this->info_copy[$i]['mention_date']= $r->mention_date;
144                                $this->info_copy[$i]['analysis']=$r->serialcirc_copy_analysis;
145                                $this->info_copy[$i]['date']=$r->serialcirc_copy_date;
146                                $this->info_copy[$i]['state']=$r->serialcirc_copy_state;
147                                $this->info_copy[$i]['comment']=$r->serialcirc_copy_comment;   
148                                $this->info_copy[$i]['serial_link']="./catalog.php?categ=serials&sub=view&serial_id=".$r->notice_id;   
149                                $this->info_copy[$i]['bull_link']="./catalog.php?categ=serials&sub=bulletinage&action=view&bul_id=".$r->bulletin_id;
150                                $this->info_copy[$i]['opac_link']=$opac_url_base."index.php?lvl=bulletin_display&id=".$r->bulletin_id;
151                                $this->index_info_copy[$r->id_serialcirc_copy]= $this->info_copy[$i];                                   
152                                $i++;
153                        }
154                }       
155        }
156       
157        function fetch_data_resa(){
158               
159                $this->info_resa=array();               
160                $req="select * from serialcirc_circ, exemplaires, bulletins, notices where serialcirc_circ_hold_asked=1 and num_serialcirc_circ_expl=expl_id and expl_bulletin=bulletin_id and bulletin_notice=notice_id order by num_serialcirc_circ_expl,serialcirc_circ_order ";
161                $resultat=pmb_mysql_query($req);
162                $i=0;
163                if ($resultat && pmb_mysql_num_rows($resultat)) {
164                        while($r=pmb_mysql_fetch_object($resultat)){                           
165                                $this->info_resa[$i]['id']=$r->id_serialcirc_circ;
166                                $this->info_resa[$i]['id_empr']=$r->num_serialcirc_circ_empr;
167                                $this->info_resa[$i]['id_expl']=$r->num_serialcirc_circ_expl;
168                                $this->info_resa[$i]['empr']=$this->empr_info($this->info_resa[$i]['id_empr']);
169                                $this->info_resa[$i]['id_bulletin']=$r->bulletin_id;
170                                $this->info_resa[$i]['perio']=$r->tit1;
171                                $this->info_resa[$i]['numero']= $r->bulletin_numero;
172                                $this->info_resa[$i]['mention_date']= $r->mention_date;                                         
173                                $i++;   
174                        }
175                }
176               
177        }       
178        function fetch_info_circ($id_expl){
179                $this->info_circ[$id_expl]=array();             
180                $req="select *,DATEDIFF(serialcirc_circ_expected_date,CURDATE())as late_diff from serialcirc_circ where num_serialcirc_circ_expl=$id_expl order by serialcirc_circ_order ";
181                $resultat=pmb_mysql_query($req);
182               
183                if ($resultat && pmb_mysql_num_rows($resultat)) {
184                        while($r=pmb_mysql_fetch_object($resultat)){                           
185                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['id']=$r->id_serialcirc_circ;                 
186                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['num_diff']=$r->num_serialcirc_circ_diff;     
187                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['num_expl']=$r->num_serialcirc_circ_expl;                     
188                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['num_empr']=$r->num_serialcirc_circ_empr;             
189                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['num_serialcirc']=$r->num_serialcirc_circ_serialcirc;         
190                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['order']=$r->serialcirc_circ_order;           
191                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['subscription']=$r->serialcirc_circ_subscription;             
192                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['hold_asked']=$r->serialcirc_circ_hold_asked;         
193                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['ret_asked']=$r->serialcirc_circ_ret_asked;           
194                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['trans_asked']=$r->serialcirc_circ_trans_asked;               
195                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['doc_asked']=$r->serialcirc_circ_trans_doc_asked;             
196                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['expected_date']=$r->serialcirc_circ_expected_date;
197                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['pointed_date']=$r->serialcirc_circ_pointed_date;             
198                                $this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['late_diff']=$r->late_diff;
199                                if($this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['late_diff'] <0 && !$this->info_circ[$id_expl][$r->num_serialcirc_circ_empr]['pointed_date']){
200                                        $this->info_expl[$id_expl]['is_late']=1;
201                                }else{
202                                        $this->info_expl[$id_expl]['is_late']=0;
203                                }                               
204                               
205                        }                       
206                }
207        //      $this->get_next_diff_id($id_expl);     
208                return $this->info_circ[$id_expl];
209        }       
210               
211        function empr_info($id){
212                global $dbh;
213                $info=array();
214                $req="select empr_cb, empr_nom ,  empr_prenom, empr_mail from empr where id_empr=".$id;
215                $res_empr=pmb_mysql_query($req);
216                if ($empr=pmb_mysql_fetch_object($res_empr)) {                 
217                        $info['cb'] = $empr->empr_cb;
218                        $info['nom'] = $empr->empr_nom; 
219                        $info['prenom'] = $empr->empr_prenom; 
220                        $info['mail'] = $empr->empr_mail;               
221                        $info['id_empr']=$id;   
222                        $info['view_link']='./circ.php?categ=pret&form_cb='.$empr->empr_cb;
223                        $info['empr_libelle']=$info['nom']." ".$info['prenom']." ( ".$info['cb'] ." ) ";
224                }
225                return $info;
226        }               
227       
228        function expl_info($id){
229                global $dbh;
230                $info=array();
231                $req="select * from exemplaires, bulletins, notices where expl_id=$id and expl_bulletin=bulletin_id and bulletin_notice=notice_id ";
232                $resultat=pmb_mysql_query($req);
233                               
234                if($r=pmb_mysql_fetch_object($resultat)){                               
235                        $info['id']=$id;                               
236                        $info['cb']=$r->expl_cb;                       
237                        $info['id_bulletin']=$r->num_serialcirc_copy_bulletin;
238                        $info['perio']=$r->tit1;
239                        $info['numero']= $r->bulletin_numero;
240                        $info['mention_date']= $r->mention_date;                               
241                        $info['view_link']='./circ.php?categ=visu_ex&form_cb_expl='.$r->expl_cb;               
242                }               
243                return $info;
244        }       
245       
246        function is_in_alert($expl_id){
247                if($this->info_expl[$expl_id]['serialcirc_diff']->virtual_circ){
248                        if( $this->info_expl[$expl_id]['start_date']=="0000-00-00")$start_date=$this->info_expl[$expl_id]['bulletine_date'];
249                        else $start_date=$this->info_expl[$expl_id]['start_date'];
250                        $req="select DATEDIFF(DATE_ADD('".$start_date."',       INTERVAL ".$this->info_expl[$expl_id]['serialcirc_diff']->duration_before_send." DAY),CURDATE())";
251                       
252                        $result=pmb_mysql_query($req);
253                        if($row = pmb_mysql_fetch_row($result)) {
254                                if($row[0]>0){ 
255                                        return true;
256                                }
257                        }
258                }
259                return false;
260        }       
261       
262        function is_alerted($expl_id){
263                //if($this->is_in_alert($expl_id)) return false;
264                if($this->info_expl[$expl_id]['start_date']!="0000-00-00")      return true;
265
266                return false;
267        }
268               
269        function is_in_to_be_circ($expl_id){   
270                if($this->is_in_alert($expl_id) && $this->is_alerted($expl_id))  return false;
271                if(!$this->info_expl[$expl_id]['state_circ'] && !$this->info_expl[$expl_id]['num_diff']){
272                        return true;
273                }       
274
275                return false;
276        }
277       
278        function is_in_circ($expl_id){
279                if($this->info_expl[$expl_id]['num_diff']){
280                        return true;                   
281                }
282                return false;
283        }
284
285        function empr_is_subscribe($empr_id, $expl_id){         
286                if( !$this->info_expl[$expl_id]['circ'][$empr_group['num_empr'] ]){
287                        return true;                   
288                } elseif( !$this->info_expl[$expl_id]['circ'][$empr_group['num_empr'] ]['no_subscription']){
289                        return true;
290                }
291                return false;
292        }       
293
294        function is_in_late($expl_id){
295                if(!$this->info_expl[$expl_id]['serialcirc_diff']->checked) return false;       
296                if( $this->info_expl[$expl_id]['start_date']=="0000-00-00") return false;       
297                return $this->info_expl[$expl_id]['is_late'];
298        }
299       
300        function is_in_reproduction_ask($expl_id){
301                if(!$this->info_expl[$expl_id]['state_circ'] && !$this->info_expl[$expl_id]['num_diff']){
302                        return true;
303                }                                       
304        }
305       
306        function is_in_resa_ask($expl_id){
307               
308        }
309
310        function delete_diffusion($expl_id){
311                global $dbh;
312               
313                $status=1;
314                if (!$this->info_expl[$expl_id]) return 0;
315                // Traitement des résa
316                $req="select num_serialcirc_circ_empr from serialcirc_circ where serialcirc_circ_hold_asked=2 and num_serialcirc_circ_expl=$expl_id
317                order by serialcirc_circ_order";
318                $res=pmb_mysql_query($req);
319                if(pmb_mysql_num_rows($res)){
320                        while ($r=pmb_mysql_fetch_object($res)) {
321                                $resa=new reservation($r->num_serialcirc_circ_empr,0,$this->info_expl[$expl_id]['bulletin_id']);
322                                $resa->add();
323                        }
324                }
325                $req="delete from serialcirc_expl where num_serialcirc_expl_id =$expl_id";
326                pmb_mysql_query($req);         
327                $req="delete from serialcirc_circ where num_serialcirc_circ_expl =$expl_id";
328                pmb_mysql_query($req);
329               
330                // on change le statut si demandé
331                if($this->info_expl[$expl_id]['serialcirc_diff']->expl_statut_circ_after){
332                        $req="update exemplaires set expl_statut=".$this->info_expl[$expl_id]['serialcirc_diff']->expl_statut_circ_after." where expl_id=".$expl_id;
333                        pmb_mysql_query($req); 
334                }
335               
336                // traitement résa
337                $query = "select count(1) from resa where resa_idbulletin=".$this->info_expl[$expl_id]['bulletin_id'];
338                $result = @pmb_mysql_query($query, $dbh);
339                if(@pmb_mysql_result($result, 0, 0)) {
340                        $status=2;// mail de résa sera envoyé à l'affectation dans résa à traiter
341                }
342                return $status;
343        }
344
345        static function delete_expl($expl_id){
346                $req="delete from serialcirc_expl where num_serialcirc_expl_id =$expl_id";
347                pmb_mysql_query($req);         
348                $req="delete from serialcirc_circ where num_serialcirc_circ_expl =$expl_id";
349                pmb_mysql_query($req);
350        }
351       
352        function copy_accept($copy_id){ 
353                global $serialcirc_copy_accepted_mail,$msg,$biblio_name, $biblio_email,$PMBuseremailbcc;
354               
355                if(!$this->index_info_copy[$copy_id]) return false;                     
356                $copy=$this->index_info_copy[$copy_id];         
357                $texte_mail=$serialcirc_copy_accepted_mail;
358                $texte_mail=str_replace("!!issue!!", $copy['perio']."-".$copy['numero'], $texte_mail);                 
359                mailpmb($copy['empr']["prenom"]." ".$copy['empr']["nom"], $copy['empr']["mail"],        $msg["serialcirc_circ_title"],  $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
360               
361                $req="update serialcirc_copy set serialcirc_copy_state=1  where id_serialcirc_copy=$copy_id ";
362                pmb_mysql_query($req);                                 
363                return true;
364        }               
365       
366        function copy_isdone($bul_id){ 
367                global $serialcirc_copy_isdone_mail,$msg,$biblio_name, $biblio_email,$PMBuseremailbcc;
368                $req="select * from serialcirc_copy where num_serialcirc_copy_bulletin=$bul_id ";
369                $resultat=pmb_mysql_query($req);               
370                if ($resultat && pmb_mysql_num_rows($resultat)) {
371                        while($r=pmb_mysql_fetch_object($resultat)){
372                                // envoit des mails
373                                if($copy=$this->index_info_copy[$r->id_serialcirc_copy]){               
374                                        $texte_mail=$serialcirc_copy_isdone_mail;
375                                        $texte_mail=str_replace("!!issue!!", $copy['perio']."-".$copy['numero'], $texte_mail);         
376                                        $texte_mail=str_replace("!!see!!", "<a href='".$copy['opac_link']."'>".$copy['numero']."</a>", $texte_mail);           
377                                        mailpmb($copy['empr']["prenom"]." ".$copy['empr']["nom"], $copy['empr']["mail"], $msg["serialcirc_circ_title"], $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
378                                }                               
379                        }
380                        // on efface
381                        $req="delete from serialcirc_copy where num_serialcirc_copy_bulletin=$bul_id ";
382                        $resultat=pmb_mysql_query($req);
383                }               
384        }
385
386        function copy_none($copy_id){
387                global $serialcirc_copy_no_mail,$msg,$biblio_name, $biblio_email,$PMBuseremailbcc;             
388                       
389                if(!$this->index_info_copy[$copy_id]) return false;                     
390                $req="delete from serialcirc_copy where id_serialcirc_copy=$copy_id";
391                pmb_mysql_query($req);         
392                $copy=$this->index_info_copy[$copy_id];         
393                $texte_mail=$serialcirc_copy_no_mail;
394                $texte_mail=str_replace("!!issue!!", $copy['perio']."-".$copy['numero'], $texte_mail);                 
395                mailpmb($copy['empr']["prenom"]." ".$copy['empr']["nom"], $copy['empr']["mail"], $msg["serialcirc_circ_title"], $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
396                               
397                return true;
398        }       
399       
400        function ask_send_mail($expl_id,$empr_id,$objet,$texte_mail){
401                global $biblio_name,$biblio_email,$PMBuseremailbcc;
402                $expl_info=$this->expl_info($expl_id);
403                $empr_info=$this->empr_info($empr_id);
404                $texte_mail=str_replace("!!issue!!", $expl_info['perio']."-".$expl_info['numero'], $texte_mail);                       
405                mailpmb($empr_info["prenom"]." ".$empr_info["nom"], $empr_info["mail"], $objet, $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);   
406                return true;
407        }
408       
409        function resa_accept($expl_id,$empr_id){               
410       
411                $req="select * from bulletins, exemplaires where bulletin_id=expl_bulletin and expl_id=$expl_id";
412                $res=pmb_mysql_query($req);
413                if ($r=pmb_mysql_fetch_object($res)) {         
414//                      $resa=new reservation($empr_id,0,$r->bulletin_id);
415//                      $resa->add();
416                        $req="update serialcirc_circ set serialcirc_circ_hold_asked=2 where
417                        num_serialcirc_circ_expl=$expl_id and num_serialcirc_circ_empr=$empr_id";
418                        $res=pmb_mysql_query($req);                     
419                }
420                // mail de résa sera envoyé à l'affectation dans résa à traité                 
421                return true;
422        }       
423       
424        function resa_none($expl_id,$empr_id){
425                global $serialcirc_resa_no_mail,$msg;                   
426                $req="update serialcirc_circ set serialcirc_circ_hold_asked=0 where
427                num_serialcirc_circ_expl=$expl_id and num_serialcirc_circ_empr=$empr_id";
428                $res=pmb_mysql_query($req);
429                       
430                // mail
431                $this->ask_send_mail($expl_id,$empr_id,$msg["serialcirc_circ_title"],$serialcirc_resa_no_mail);         
432                return true;
433        }       
434        function get_all_next_empr_id($expl_id){
435       
436        }
437        function get_next_diff_id($expl_id){
438                $found=0;       
439                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $id_diff => $diffusion){
440                        // pas en circ on retourne le premier
441                        if(!$this->info_expl[$expl_id]['num_diff']) return $id_diff;                   
442                        if($id_diff==$this->info_expl[$expl_id]['num_diff'])$found=1; 
443                        elseif( $found ){
444                                return $id_diff;
445                        }
446                }
447                // le dernier l'a consulté; pas de suivant;
448                return 0;               
449        }
450       
451
452        // l'exemplaire revient à la bib
453        function return_expl($expl_id){
454                global $msg;
455               
456                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
457                        // delete et changement de statut éventuel
458                        $status=$this->delete_diffusion($expl_id);
459                }else{// SERIALCIRC_TYPE_star
460                        // envoi au empr suivant
461                        if($next_diff_id=$this->get_next_diff_id($expl_id)){   
462                                $req="UPDATE serialcirc_expl SET num_serialcirc_expl_serialcirc_diff=".$next_diff_id.",
463                                serialcirc_expl_state_circ=1,
464                                serialcirc_expl_ret_asked=0,
465                                serialcirc_expl_trans_asked=0,
466                                serialcirc_expl_trans_doc_asked=0,
467                                num_serialcirc_expl_current_empr=0
468                                where num_serialcirc_expl_id= $expl_id";
469                               
470                                pmb_mysql_query($req);
471                                $status=2;
472                        }else{
473                                // C'est terminé!
474                                $status=$this->delete_diffusion($expl_id);
475                        }       
476                }
477                switch($status){
478                        case "2":
479                                $info=$msg["circ_retour_ranger_resa"];
480                                break;
481                        default://On ne mets pas de message différent si l'exemplaire a déjà été retourné
482                                $info=$msg["serialcirc_info_retour"];
483                                break;
484                }
485                return $info;
486        }
487               
488        function print_diffusion($expl_id,$start_diff_id){     
489                $tpl=$this->build_print_diffusion($expl_id,$start_diff_id);             
490                global $class_path;
491                require_once($class_path.'/html2pdf/html2pdf.class.php');       
492            $html2pdf = new HTML2PDF('P','A4','fr');
493            $html2pdf->WriteHTML($tpl);
494            $html2pdf->Output('diffusion.pdf');         
495        }
496       
497        function print_sel_diffusion($list){
498                foreach($list as $circ){               
499                        $expl_id=$circ['expl_id'];
500                        $start_diff_id=$circ['start_diff_id'];
501
502                        $tpl.=$this->build_print_diffusion($expl_id,$start_diff_id);
503                }       
504                global $class_path;
505                require_once($class_path.'/html2pdf/html2pdf.class.php');       
506            $html2pdf = new HTML2PDF('P','A4','fr');
507            $html2pdf->WriteHTML($tpl);
508            $html2pdf->Output('diffusion.pdf');                         
509        }
510       
511        function build_print_diffusion($expl_id,$start_diff_id){
512                global $serialcirc_circ_pdf_diffusion,$charset,$serialcirc_circ_pdf_diffusion_destinataire;
513                global $msg;
514                if(!$start_diff_id){
515                        foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
516                                $start_diff_id=$diff_id;
517                                break;
518                        }       
519                }
520                if (!$this->info_expl[$expl_id]) return false;
521                $req="UPDATE serialcirc_expl SET num_serialcirc_expl_serialcirc_diff=".$start_diff_id.",
522                serialcirc_expl_state_circ=1,
523                serialcirc_expl_start_date=CURDATE()
524                where num_serialcirc_expl_id= $expl_id";
525                pmb_mysql_query($req);
526               
527                $req="select date_format(CURDATE(), '".$msg["format_date"]."') as print_date"; 
528                $result = pmb_mysql_query($req);
529                $obj = pmb_mysql_fetch_object($result);
530                $print_date=$obj->print_date;
531               
532                $tpl = $serialcirc_circ_pdf_diffusion;
533                $tpl=str_replace("!!expl_cb!!", htmlentities($this->info_expl[$expl_id]['expl_cb'],ENT_QUOTES,$charset), $tpl);                 
534                $tpl=str_replace("!!date!!", htmlentities($this->info_expl[$expl_id]['mention_date'],ENT_QUOTES,$charset), $tpl);       
535                $tpl=str_replace("!!periodique!!", htmlentities($this->info_expl[$expl_id]['serial_title'],ENT_QUOTES,$charset), $tpl);
536                $tpl=str_replace("!!numero!!", htmlentities($this->info_expl[$expl_id]['numero'],ENT_QUOTES,$charset), $tpl);           
537                $tpl=str_replace("!!print_date!!", htmlentities($print_date,ENT_QUOTES,$charset), $tpl);       
538        //      $tpl=str_replace("!!abonnement!!", htmlentities($this->info_expl[$expl_id]['serialcirc_diff']->abt_name,ENT_QUOTES,$charset), $tpl);   
539               
540                if($start_diff_id) $found=0;else $found=1;
541                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
542                       
543                        if($start_diff_id && !$found){                         
544                                if($start_diff_id==$diff_id)$found=1;
545                        }
546                        if($found){
547                                $diff_list[]=$diff_id;
548                       
549                                if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){                                     
550                                        $name=$diffusion["empr_name"];
551                                       
552                                        foreach($diffusion['group'] as $empr_group){
553                                                $empr_list[$empr_group["num_empr"]]=$diff_id;
554                                                if($empr_group["duration"])
555                                                        $empr_days[$empr_group["num_empr"]]=$empr_group["duration"];
556                                                else
557                                                        $empr_days[$empr_group["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
558                                                       
559                                                if($diffusion['type_diff']==1 && !$empr_group["responsable"]){ 
560                                                        // groupe marguerite: on n'imprimera pas ce lecteur sauf le responsable
561                                                        //$empr_no_display[$empr_group["num_empr"]]=1;
562                                                }       
563                                        }
564                                }else  {
565                                        $name=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"];
566                                        $empr_list[$diffusion["num_empr"]]=$diff_id;
567                                        if($diffusion["duration"])      $empr_days[$diffusion["num_empr"]]=$diffusion["duration"]; // durée de consultation particulière
568                                        else $empr_days[$diffusion["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
569                                }       
570                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_star){
571                                        // on n'imprime que le suivant dans la liste
572                                        break;
573                                }                               
574                        }
575                        $last_empr=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]];
576                }               
577                $this->gen_circ($empr_list,$empr_days, $expl_id);
578               
579                $gen_tpl= new serialcirc_print_fields($this->info_expl[$expl_id]['num_serialcirc']);
580                $header_list=$gen_tpl->get_header_list();       
581                $nb_col=count($header_list);
582                $width_col=(int) (100/$nb_col);
583               
584                foreach($header_list as $titre){
585                        $th.="<th style='width: $width_col%; text-align: left'>".htmlentities($titre,ENT_QUOTES,$charset)."</th>";
586                }
587                $tpl=str_replace("!!th!!", $th, $tpl);
588                $tr_list="";
589                foreach($empr_list as $empr_id=>$diff_id){
590                        if($empr_no_display[$empr_id]) continue;
591                        $data['empr_id']=$empr_id;
592                        $data_fields=$gen_tpl->get_line($data);         
593                        $td_list="";
594                        foreach($data_fields as $field){
595                                $td_list.="<td style='width: $width_col%; text-align: left'>".htmlentities($field,ENT_QUOTES,$charset)."</td>"; 
596                        }
597                        $tr_list.="<tr>".$td_list."</tr>";     
598                }
599                $tpl=str_replace("!!table_contens!!", $tr_list, $tpl); 
600
601               
602               
603                if($gen_tpl->piedpage){ 
604                        $data=array();
605                        $data['expl']=$this->info_expl[$expl_id];
606                        $data['last_empr']=$last_empr;
607//                      printr($data['expl']);
608                        $tpl.=H2o::parseString($gen_tpl->piedpage)->render($data);
609                }
610               
611                if($this->info_expl[$expl_id]['serialcirc_diff']->no_ret_circ){
612                        //pas de retour sur site, suppression de la circulation.
613                        $this->delete_diffusion($expl_id);
614                }
615                if($charset!="utf-8"){
616                        $tpl=utf8_encode($tpl);
617                }
618                return $tpl;
619        }       
620       
621        function gen_circ($empr_list, $empr_days,$expl_id){
622                $order=0;
623                $nb_days=0;     
624                if($this->info_expl[$expl_id]['serialcirc_diff']->virtual_circ){
625                        foreach($empr_list as $empr_id=>$diff_id){
626                               
627                                $req=" update serialcirc_circ SET
628
629                                serialcirc_circ_expected_date=DATE_ADD(CURDATE(),INTERVAL $nb_days DAY)
630                                where
631                                num_serialcirc_circ_diff=".$diff_id ." and
632                                num_serialcirc_circ_expl=".$expl_id ." and
633                                num_serialcirc_circ_empr=". $empr_id." and
634                                serialcirc_circ_subscription=1 ";
635                                pmb_mysql_query($req);
636                                $order++;
637                                $nb_days+=$empr_days[$empr_id];
638                        }                       
639                }else{
640                        $req=" delete from serialcirc_circ where num_serialcirc_circ_expl=".$expl_id  ;
641                        pmb_mysql_query($req); 
642                       
643                        foreach($empr_list as $empr_id=>$diff_id){
644                               
645                                $req=" insert into serialcirc_circ SET
646                                num_serialcirc_circ_diff=".$diff_id .",
647                                num_serialcirc_circ_expl=".$expl_id .",
648                                num_serialcirc_circ_empr=". $empr_id.",
649                                serialcirc_circ_subscription=1,
650                                serialcirc_circ_order=". $order.",
651                                serialcirc_circ_expected_date=DATE_ADD(CURDATE(),INTERVAL $nb_days DAY),
652                                num_serialcirc_circ_serialcirc=".$this->info_expl[$expl_id]['num_serialcirc'];
653                                pmb_mysql_query($req);
654                                $order++;
655                                $nb_days+=$empr_days[$empr_id];
656                        }
657                }               
658                // on change le statut si demandé
659                if($this->info_expl[$expl_id]['serialcirc_diff']->expl_statut_circ){
660                        $req="update exemplaires set expl_statut=".$this->info_expl[$expl_id]['serialcirc_diff']->expl_statut_circ." where expl_id=".$expl_id;
661                        pmb_mysql_query($req); 
662                }       
663        }
664       
665        function send_mail($expl_id,$objet,$texte_mail){
666                global $biblio_name,$biblio_email,$PMBuseremailbcc;
667                if (!$this->info_expl[$expl_id]) return false;
668                // Si pas encore recu par l'emprunteur on ne fait rien...
669                if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
670                $empr_info=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info($empr_id);
671                $texte_mail=str_replace("!!issue!!", $this->info_expl[$expl_id]["serial_title"]." - ".$this->info_expl[$expl_id]['numero'], $texte_mail);                       
672                return mailpmb($empr_info["prenom"]." ".$empr_info["nom"], $empr_info["mail"], $objet,  $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
673        }
674       
675        function send_alert($expl_id){
676                global $serialcirc_send_alert_mail;
677                global $biblio_name,$biblio_email,$PMBuseremailbcc;
678               
679                $req=" delete from serialcirc_circ where num_serialcirc_circ_expl=".$expl_id  ;
680                pmb_mysql_query($req); 
681               
682                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
683
684                        $diff_list[]=$diff_id;
685               
686                        if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){                                     
687                                foreach($diffusion['group'] as $empr_group){
688                                        $empr_list[$empr_group["num_empr"]]=$diff_id;
689                                }
690                        }else  {
691                                $empr_list[$diffusion["num_empr"]]=$diff_id;
692                        }               
693                }
694
695                $req="UPDATE serialcirc_expl SET
696                serialcirc_expl_state_circ=0,
697                serialcirc_expl_start_date=CURDATE()
698                where num_serialcirc_expl_id= $expl_id";
699                pmb_mysql_query($req);
700               
701                $order=0;       
702                foreach($empr_list as $empr_id=>$diff_id){
703
704                        $req=" insert into serialcirc_circ SET
705                        num_serialcirc_circ_diff=".$diff_id .",
706                        num_serialcirc_circ_expl=".$expl_id .",
707                        num_serialcirc_circ_empr=". $empr_id.",
708                        serialcirc_circ_subscription=0,
709                        serialcirc_circ_order=". $order.",
710                        num_serialcirc_circ_serialcirc=".$this->info_expl[$expl_id]['num_serialcirc'];
711                        pmb_mysql_query($req);
712                        $order++;
713                       
714                        // envoit mail alert
715                        $texte_mail=$serialcirc_send_alert_mail;               
716                        $expl_info=$this->expl_info($expl_id);
717                        $empr_info=$this->empr_info($empr_id);
718                        $texte_mail=str_replace("!!issue!!", $expl_info['perio']."-".$expl_info['numero'], $texte_mail);                       
719                        mailpmb($empr_info["prenom"]." ".$empr_info["nom"], $empr_info["mail"], $objet, $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);   
720                       
721                       
722                }       
723
724        }       
725       
726        function call_expl($expl_id){
727                global $mail_, $serialcirc_call_mail,$msg;
728               
729                $req="UPDATE serialcirc_expl SET
730                serialcirc_expl_ret_asked=1
731                where num_serialcirc_expl_id= $expl_id";
732                pmb_mysql_query($req);
733               
734                if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
735               
736                $req="UPDATE serialcirc_circ SET
737                serialcirc_circ_ret_asked = serialcirc_circ_ret_asked+1
738                where num_serialcirc_circ_expl= $expl_id and num_serialcirc_circ_empr=$empr_id";
739                pmb_mysql_query($req);
740
741                $objet=$msg["serialcirc_circ_title"];
742                $texte_mail=$serialcirc_call_mail;
743                $status=$this->send_mail($expl_id,$objet,$texte_mail);
744                return $status;
745        }
746       
747        function call_insist($expl_id){
748                global $mail_ ,$serialcirc_call_mail,$msg,$serialcirc_transmission_mail;
749
750                $req="UPDATE serialcirc_expl SET
751                serialcirc_expl_trans_doc_asked=1
752                where num_serialcirc_expl_id= $expl_id";
753                pmb_mysql_query($req);
754               
755                if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
756               
757                $req="UPDATE serialcirc_circ SET
758                serialcirc_circ_trans_doc_asked = serialcirc_circ_trans_doc_asked+1
759                where num_serialcirc_circ_expl= $expl_id and num_serialcirc_circ_empr=$empr_id";
760                pmb_mysql_query($req);
761                               
762                $objet=$msg["serialcirc_circ_title"];
763                $texte_mail=$serialcirc_transmission_mail;
764                $status=$this->send_mail($expl_id,$objet,$texte_mail);
765                return $status;
766        }
767       
768        function do_trans($expl_id){
769                global $serialcirc_transmission_mail,$serialcirc_call_mail,$msg;
770                $req="UPDATE serialcirc_expl SET
771                serialcirc_expl_trans_doc_asked=2
772                where num_serialcirc_expl_id= $expl_id";
773                pmb_mysql_query($req);
774               
775                if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
776               
777                $req="UPDATE serialcirc_circ SET
778                serialcirc_circ_trans_doc_asked = serialcirc_circ_trans_doc_asked+1
779                where num_serialcirc_circ_expl= $expl_id and num_serialcirc_circ_empr=$empr_id";
780                pmb_mysql_query($req);                         
781                $objet=$msg["serialcirc_circ_title"];
782                $texte_mail=$serialcirc_transmission_mail;
783                $status=$this->send_mail($expl_id,$objet,$texte_mail);
784                return $status;
785        }
786
787        function build_diff_sel($expl_id){             
788                global $charset;
789                $tpl="
790                        <select name='!!zone!!_group_circ_select_$expl_id' id='!!zone!!_group_circ_select_$expl_id' >
791                                !!diff_select!!
792                        </select>"
793                ;
794                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diffusion){
795                        if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_empr && $this->info_expl[$expl_id]['serialcirc_diff']->virtual_circ ){
796                                if( !$this->info_circ[$expl_id][$diffusion["num_empr"]]['subscription'])        continue;                       
797                        }
798                        if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group )$name=$diffusion["empr_name"];
799                        else  $name=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"];
800                        if($this->info_expl[$expl_id]['num_diff'] == $diffusion['id']) $checked=" selected='selected' ";
801                        else $checked="";
802                        $list.="<option value='".$diffusion['id']."' $checked >".htmlentities($name, ENT_QUOTES, $charset)."</option>";
803                }
804                $tpl=str_replace("!!diff_select!!", $list, $tpl);       
805/*             
806                // on liste les empr réel et ceux du group
807                $name_list="";
808                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diffusion){
809                        if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){
810                                $group_name=$diffusion["empr_name"];
811                                foreach($diffusion['group'] as $empr_group){
812                                        $name.="<a href='".$empr_group['view_link']."'>".htmlentities("[".$group_name."]".$empr_group['empr'],ENT_QUOTES,$charset)."</a><br />";
813                                }               
814                        } else{                         
815                                $name="<a href='".$empr_group['view_link']."'>".htmlentities($this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"],ENT_QUOTES,$charset)."</a><br />";
816                        }
817                        if($this->info_expl[$expl_id]['num_diff'] == $diffusion['id'])   {
818                                $name="<span class='erreur'>". $name    ."</span>";
819                        }
820                        $name_list.=$name;     
821                }       
822                $tpl=str_replace("!!empr_list!!", $name_list, $tpl);   
823*/             
824                return $tpl;
825        }
826       
827        function build_empr_list($expl_id){             
828                global $charset;
829                // on liste les empr réel et ceux du group
830                $name_list="";
831                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diffusion){
832                        if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){
833                                $group_name=$diffusion["empr_name"];
834                                $name="";
835                                foreach($diffusion['group'] as $empr_group){
836                                        $name.= "<a href='".$empr_group['empr']['view_link']."'>".htmlentities("[".$group_name."]".$empr_group['empr']["empr_libelle"],ENT_QUOTES,$charset)."</a><br />";
837                                }               
838                        } else{                         
839                                $name="<a href='".$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]['view_link']."'>". htmlentities($this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"],ENT_QUOTES,$charset)."</a><br />";
840                        }                               
841                        if($this->info_expl[$expl_id]['num_diff'] == $diffusion['id'])   {
842                                $name="<span class='erreur'>". $name    ."</span>";
843                        }
844                        $name_list.=$name;                     
845                }                       
846                return $name_list;
847        }
848               
849        function build_expl_form($expl_id,$tpl,$zone=''){               
850                global $charset;
851                $tpl=str_replace("!!expl_id!!", $expl_id, $tpl);
852                $tpl=str_replace("!!bull_id!!", $this->info_expl[$expl_id]['bulletin_id'], $tpl);       
853                $tpl=str_replace("!!expl_cb!!", "<a href='".$this->info_expl[$expl_id]['expl_link']."'>".htmlentities($this->info_expl[$expl_id]['expl_cb'],ENT_QUOTES,$charset)."</a>", $tpl);                 
854                $tpl=str_replace("!!date!!", htmlentities($this->info_expl[$expl_id]['mention_date'],ENT_QUOTES,$charset)."</a>", $tpl);       
855                $tpl=str_replace("!!periodique!!","<a href='".$this->info_expl[$expl_id]['serial_link']."'>". htmlentities( $this->info_expl[$expl_id]['serial_title'],ENT_QUOTES,$charset), $tpl);     
856                $tpl=str_replace("!!numero!!","<a href='".$this->info_expl[$expl_id]['bull_link']."'>". htmlentities($this->info_expl[$expl_id]['numero'],ENT_QUOTES,$charset)."</a>", $tpl);   
857                $tpl=str_replace("!!abonnement!!",  "<a href='".$this->info_expl[$expl_id]['cirdiff_link']."'>".htmlentities( $this->info_expl[$expl_id]['serialcirc_diff']->abt_name,ENT_QUOTES,$charset)."</a>", $tpl);       
858                $tpl=str_replace("!!destinataire!!",$this->build_diff_sel($expl_id), $tpl);
859                $tpl=str_replace("!!empr_list!!", $this->build_empr_list($expl_id), $tpl);
860                $tpl=str_replace("!!zone!!", $zone, $tpl);                                                                                                     
861                return $tpl;           
862        }
863       
864        function gen_circ_form($cb="") {
865                global $charset, $serialcirc_circ_form,$serialcirc_circ_liste;
866                global $serialcirc_circ_liste_alerter,$serialcirc_circ_liste_alerter_tr,$serialcirc_circ_liste_is_alerted_tr;
867                global $serialcirc_circ_liste_circuler,$serialcirc_circ_liste_circuler_tr;
868                global $serialcirc_circ_liste_circulation,$serialcirc_circ_liste_circulation_rotative_tr,$serialcirc_circ_liste_circulation_star_tr;
869                global $serialcirc_circ_liste_retard,$serialcirc_circ_liste_retard_rotative_tr,$serialcirc_circ_liste_retard_star_tr;
870                global $serialcirc_copy,$serialcirc_copy_tr,$serialcirc_copy_ok_tr;
871                global $serialcirc_circ_liste_reservation,$serialcirc_circ_liste_reservation_tr;
872                global $deflt_docs_location, $msg,$pmb_lecteurs_localises;
873                       
874                $circ_form=$serialcirc_circ_form;
875                $circ_form = str_replace("!!message!!", "", $circ_form);               
876                $circ_form.=$serialcirc_circ_liste;
877               
878                // select "localisation"
879                if($pmb_lecteurs_localises)$circ_form = str_replace("!!localisation!!", gen_liste ("select distinct idlocation, location_libelle from docs_location, docsloc_section where num_location=idlocation order by 2 ", "idlocation", "location_libelle", 'location_id', "document.forms['form_pointage'].submit();", $this->id_location, "", "","","",0),     $circ_form);
880                else $circ_form=str_replace("!!localisation!!","",$circ_form);
881               
882                $liste_alerter=$tr_list="";
883                if($nb_liste_alerter=count($this->classement['alert'])){
884                        $liste_alerter=$serialcirc_circ_liste_alerter;
885                        foreach($this->classement['alert'] as $expl_id){
886                                if($this->is_alerted($expl_id))$tr=$serialcirc_circ_liste_is_alerted_tr;
887                                else $tr=$serialcirc_circ_liste_alerter_tr;
888                               
889                                $tr_list.=$this->build_expl_form($expl_id,$tr,"alert");
890                        }
891                        $liste_alerter=str_replace("!!liste_alerter!!", $tr_list, $liste_alerter);
892                }
893
894                $liste_circuler=$tr_list="";
895                if($nb_liste_circuler=count($this->classement['to_be_circ'])){
896                        $liste_circuler=$serialcirc_circ_liste_circuler;
897                        foreach($this->classement['to_be_circ'] as $expl_id){
898                                $tr=$serialcirc_circ_liste_circuler_tr;
899                               
900                                $tr_list.=$this->build_expl_form($expl_id,$tr,"to_be_circ");
901                        }
902                        $liste_circuler=str_replace("!!liste_circuler!!",$tr_list , $liste_circuler);           
903                }       
904                $liste_circulation=$tr_list="";
905                if($nb_liste_circulation=count($this->classement['in_circ'])){
906                        $liste_circulation=$serialcirc_circ_liste_circulation;
907                        foreach($this->classement['in_circ'] as $expl_id){
908                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
909                                        $tr=$serialcirc_circ_liste_circulation_rotative_tr;
910                                }else{                                 
911                                        $tr=$serialcirc_circ_liste_circulation_star_tr;
912                                }       
913                                if ($this->info_expl[$expl_id]['serialcirc_diff']->checked) {
914                                        $tr=str_replace("!!bt_rappel_perio!!","<input type=\"button\" class='bouton' value='".htmlentities($msg["serialcirc_circ_list_bull_circulation_call_bt"],ENT_QUOTES,$charset)."' onClick=\"my_serialcirc_call_expl('!!zone!!','!!expl_id!!'); return false;\"/>&nbsp;",$tr);
915                                        $tr=str_replace("!!bt_exige_transmission!!","<input type=\"button\" class='bouton' value='".htmlentities($msg["serialcirc_circ_list_bull_circulation_go_bt"],ENT_QUOTES,$charset)."' onClick=\"my_serialcirc_do_trans('!!zone!!','!!expl_id!!'); return false;\"/>&nbsp;",$tr);
916                                } else {
917                                        $tr=str_replace("!!bt_rappel_perio!!","",$tr);
918                                        $tr=str_replace("!!bt_exige_transmission!!","",$tr);
919                                }
920                                $tr_list.=$this->build_expl_form($expl_id,$tr,"in_circ");
921                        }
922                        $liste_circulation=str_replace("!!liste_circulation!!", $tr_list, $liste_circulation);         
923                }               
924               
925                $liste_retard=$tr_list="";
926                if($nb_liste_retard=count($this->classement['retard'])){
927                        $liste_retard=$serialcirc_circ_liste_retard;
928                        foreach($this->classement['retard'] as $expl_id){
929                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
930                                        $tr=$serialcirc_circ_liste_retard_rotative_tr;
931                                }else{                                 
932                                        $tr=$serialcirc_circ_liste_retard_star_tr;
933                                }                                                       
934                                $tr_list.=$this->build_expl_form($expl_id,$tr,"in_late");
935                        }
936                        $liste_retard=str_replace("!!liste_retard!!", $tr_list, $liste_retard);         
937                }
938               
939                $liste_reproduction=$tr_list="";
940                if($nb_liste_reproduction=count($this->info_copy)){
941                        $liste_reproduction=$serialcirc_copy;
942                        foreach($this->info_copy as $copy){
943                                if($copy['state'] == 1){
944                                        $tr=$serialcirc_copy_ok_tr;
945                                }else{                                 
946                                        $tr=$serialcirc_copy_tr;
947                                }                                               
948                                $tr=str_replace("!!date!!",htmlentities(format_date ($copy['date']),ENT_QUOTES,$charset),$tr);                 
949                                $tr=str_replace("!!periodique!!","<a href='".$copy['serial_link']."'>".htmlentities($copy['perio'],ENT_QUOTES,$charset)."</a>",$tr);
950                                $tr=str_replace("!!numero!!","<a href='".$copy['bull_link']."'>".htmlentities($copy['numero'],ENT_QUOTES,$charset)." ".$copy['mention_date']."</a>",$tr);
951                                $tr=str_replace("!!empr_name!!","<a href='".$copy['empr']['view_link']."'>".htmlentities($copy['empr']['empr_libelle'],ENT_QUOTES,$charset)."</a>",$tr);
952                                $tr=str_replace("!!empr_message!!",htmlentities($copy['comment'],ENT_QUOTES,$charset),$tr);
953                                $tpl=str_replace("!!zone!!", "copy", $tpl);                                                                     
954                               
955                                $tr=str_replace("!!id_copy!!",$copy['id'],$tr);
956                                $tr_list.=$tr;
957                        }
958                        $liste_reproduction=str_replace("!!liste_reproduction!!", $tr_list, $liste_reproduction);       
959                }               
960
961                $liste_resa=$tr_list="";
962                if($nb_liste_resa=count($this->info_resa)){
963                        $liste_resa=$serialcirc_circ_liste_reservation;
964                        foreach($this->info_resa as $resa){                             
965                                $tr=$serialcirc_circ_liste_reservation_tr;
966                                $tr=str_replace("!!periodique!!",htmlentities($resa['perio'],ENT_QUOTES,$charset),$tr);
967                                $tr=str_replace("!!numero!!",htmlentities($resa['numero'],ENT_QUOTES,$charset)." ".$resa['mention_date'],$tr);
968                                $tr=str_replace("!!empr_name!!","<a href='".$resa['empr']['view_link']."'>".htmlentities($resa['empr']['empr_libelle'],ENT_QUOTES,$charset)."</a>",$tr);
969                               
970                                $tpl=str_replace("!!zone!!", "resa", $tpl);                                                                     
971                                $tr=str_replace("!!empr_id!!",$resa['id_empr'],$tr);
972                                $tr=str_replace("!!expl_id!!",$resa['id_expl'],$tr);
973                                $tr=str_replace("!!id_serialcirc_circ!!",$resa['id'],$tr);
974                                $tr_list.=$tr;
975                        }
976                        $liste_resa=str_replace("!!liste_resa!!", $tr_list, $liste_resa);       
977                }                               
978                $liste_resa=str_replace("!!liste_resa!!", $liste_resa, $liste_resa);           
979               
980                if($nb_liste_alerter) $circ_form = str_replace("!!liste_alerter!!" , gen_plus("liste_alerter",$msg["serialcirc_circ_list_bull_alerter"]." ($nb_liste_alerter)",$liste_alerter), $circ_form);
981                else $circ_form = str_replace("!!liste_alerter!!" ,"" , $circ_form);
982                if($nb_liste_circuler) $circ_form = str_replace("!!liste_circuler!!" ,  gen_plus("liste_circuler",$msg["serialcirc_circ_list_bull_circuler"]." ($nb_liste_circuler)",$liste_circuler),  $circ_form);
983                else $circ_form = str_replace("!!liste_circuler!!" , "", $circ_form);
984                if($nb_liste_circulation)$circ_form = str_replace("!!liste_circulation!!" ,  gen_plus("liste_circulation",$msg["serialcirc_circ_list_bull_circulation"]." ($nb_liste_circulation)",$liste_circulation), $circ_form);           
985                else $circ_form = str_replace("!!liste_circulation!!", "", $circ_form);         
986                if($nb_liste_retard) $circ_form = str_replace("!!liste_retard!!" ,  gen_plus("liste_retard",$msg["serialcirc_circ_list_bull_retards"]." ($nb_liste_retard)",$liste_retard),     $circ_form);
987                else $circ_form = str_replace("!!liste_retard!!",  "", $circ_form);
988                if($nb_liste_reproduction)$circ_form = str_replace("!!liste_reproduction!!" ,  gen_plus("liste_reproduction",$msg["serialcirc_circ_list_bull_reproduction"]." ($nb_liste_reproduction)",$liste_reproduction),   $circ_form);
989                else $circ_form = str_replace("!!liste_reproduction!!", "", $circ_form);
990                if($nb_liste_resa)$circ_form = str_replace("!!liste_resa!!" ,  gen_plus("liste_resa",$msg["serialcirc_circ_list_bull_reservation"]." ($nb_liste_resa)",$liste_resa),    $circ_form);
991                else $circ_form = str_replace("!!liste_resa!!", "",     $circ_form);
992               
993                return $circ_form;
994        }
995
996               
997       
998        function gen_pointage_form($point_expl_id) {
999                global $charset, $serialcirc_pointage_form,$serialcirc_circ_liste;
1000                global $serialcirc_circ_liste_alerter,$serialcirc_circ_liste_alerter_tr,$serialcirc_circ_liste_is_alerted_tr;
1001                global $serialcirc_circ_liste_circuler,$serialcirc_circ_liste_circuler_tr;
1002                global $serialcirc_circ_liste_circulation,$serialcirc_circ_liste_circulation_rotative_tr,$serialcirc_circ_liste_circulation_star_tr;
1003                global $serialcirc_circ_liste_retard,$serialcirc_circ_liste_retard_rotative_tr,$serialcirc_circ_liste_retard_star_tr;
1004                global $serialcirc_copy,$serialcirc_copy_tr,$serialcirc_copy_ok_tr;
1005                global $serialcirc_circ_liste_reservation,$serialcirc_circ_liste_reservation_tr;
1006                global $deflt_docs_location, $msg,$pmb_lecteurs_localises;
1007                       
1008                $circ_form=$serialcirc_pointage_form;
1009       
1010                $liste_alerter=$tr_list="";
1011                foreach($this->classement['alert'] as $expl_id){
1012                        if($expl_id==$point_expl_id){
1013                                $nb_liste_alerter=1;
1014                                $liste_alerter=$serialcirc_circ_liste_alerter;
1015                                if($this->is_alerted($expl_id))$tr=$serialcirc_circ_liste_is_alerted_tr;
1016                                else $tr=$serialcirc_circ_liste_alerter_tr;
1017                                       
1018                                $tr_list.=$this->build_expl_form($expl_id,$tr,"alert");                         
1019                                $liste_alerter=str_replace("!!liste_alerter!!", $tr_list, $liste_alerter);
1020                                break;
1021                        }
1022                }
1023                $liste_circuler=$tr_list="";
1024                foreach($this->classement['to_be_circ'] as $expl_id){                   
1025                        if($expl_id==$point_expl_id){                           
1026                                $nb_liste_circuler=1;
1027                                $liste_circuler=$serialcirc_circ_liste_circuler;
1028                                foreach($this->classement['to_be_circ'] as $expl_id){
1029                                        $tr=$serialcirc_circ_liste_circuler_tr;
1030                                       
1031                                        $tr_list.=$this->build_expl_form($expl_id,$tr,"to_be_circ");
1032                                }
1033                                $liste_circuler=str_replace("!!liste_circuler!!",$tr_list , $liste_circuler);
1034                                break; 
1035                        }       
1036                }       
1037               
1038                $liste_circulation=$tr_list="";
1039                foreach($this->classement['in_circ'] as $expl_id){                     
1040                        if($expl_id==$point_expl_id){                           
1041                                $nb_liste_circulation=1;
1042                                $liste_circulation=$serialcirc_circ_liste_circulation;
1043                       
1044                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
1045                                        $tr=$serialcirc_circ_liste_circulation_rotative_tr;
1046                                }else{                                 
1047                                        $tr=$serialcirc_circ_liste_circulation_star_tr;
1048                                }
1049                                if ($this->info_expl[$expl_id]['serialcirc_diff']->checked) {
1050                                        $tr=str_replace("!!bt_rappel_perio!!","<input type=\"button\" class='bouton' value='".htmlentities($msg["serialcirc_circ_list_bull_circulation_call_bt"],ENT_QUOTES,$charset)."' onClick=\"my_serialcirc_call_expl('!!zone!!','!!expl_id!!'); return false;\"/>&nbsp;",$tr);
1051                                        $tr=str_replace("!!bt_exige_transmission!!","<input type=\"button\" class='bouton' value='".htmlentities($msg["serialcirc_circ_list_bull_circulation_go_bt"],ENT_QUOTES,$charset)."' onClick=\"my_serialcirc_do_trans('!!zone!!','!!expl_id!!'); return false;\"/>&nbsp;",$tr);
1052                                } else {
1053                                        $tr=str_replace("!!bt_rappel_perio!!","",$tr);
1054                                        $tr=str_replace("!!bt_exige_transmission!!","",$tr);
1055                                }                                               
1056                                $tr_list.=$this->build_expl_form($expl_id,$tr,"in_circ");                       
1057                                $liste_circulation=str_replace("!!liste_circulation!!", $tr_list, $liste_circulation);         
1058                               
1059                                $liste_alerter="";
1060                                $nb_liste_alerter=0;
1061                                break;
1062                        }
1063                }               
1064               
1065                $liste_retard=$tr_list="";
1066                foreach($this->classement['retard'] as $expl_id){               
1067                        if($expl_id==$point_expl_id){   
1068                                $nb_liste_retard=1;
1069                                $liste_retard=$serialcirc_circ_liste_retard;                   
1070                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
1071                                        $tr=$serialcirc_circ_liste_retard_rotative_tr;
1072                                }else{                                 
1073                                        $tr=$serialcirc_circ_liste_retard_star_tr;
1074                                }                                                       
1075                                $tr_list.=$this->build_expl_form($expl_id,$tr,"in_late");                               
1076                                $liste_retard=str_replace("!!liste_retard!!", $tr_list, $liste_retard);         
1077                                break;
1078                        }                                       
1079                }
1080                               
1081               
1082                if($nb_liste_alerter) $circ_form = str_replace("!!liste_alerter!!" ,"<span class='notice-heada'>".$msg["serialcirc_circ_list_bull_alerter"]."</span><br>".$liste_alerter,       $circ_form);
1083                else $circ_form = str_replace("!!liste_alerter!!" ,"" , $circ_form);
1084                if($nb_liste_circuler) $circ_form = str_replace("!!liste_circuler!!" ,"<span class='notice-heada'>".$msg["serialcirc_circ_list_bull_circuler"]."</span><br>".$liste_circuler,   $circ_form);
1085                else $circ_form = str_replace("!!liste_circuler!!" , "", $circ_form);
1086                if($nb_liste_circulation)$circ_form = str_replace("!!liste_circulation!!","<span class='notice-heada'>".$msg["serialcirc_circ_list_bull_circulation"]."</span><br>".$liste_circulation, $circ_form);           
1087                else $circ_form = str_replace("!!liste_circulation!!", "", $circ_form);         
1088                if($nb_liste_retard) $circ_form = str_replace("!!liste_retard!!" , "<span class='notice-heada'>".$msg["serialcirc_circ_list_bull_retards"]."</span><br>".$liste_retard, $circ_form);
1089                else $circ_form = str_replace("!!liste_retard!!",  "", $circ_form);
1090               
1091                return $circ_form;
1092        }
1093       
1094                       
1095        function gen_circ_cb($cb) {
1096                global $serialcirc_circ_cb_notfound, $serialcirc_circ_cb_info;
1097                $info="";
1098                $req="select * from serialcirc_expl,exemplaires where expl_cb='$cb' and expl_id=num_serialcirc_expl_id ";
1099                $resultat=pmb_mysql_query($req);
1100                if ($resultat) {
1101                        if (!pmb_mysql_num_rows($resultat)) {
1102                                $this->info_cb['cb']='';
1103                                return str_replace("!!cb!!", $cb, $serialcirc_circ_cb_notfound);
1104                        }
1105                        $r=pmb_mysql_fetch_object($resultat);
1106                        $info.=$this->gen_pointage_form($r->expl_id);
1107                }
1108                return $info;
1109        }               
1110
1111       
1112} //serialcirc class end
1113
1114/*
1115 *
1116 *
1117 *
1118 *
1119 * script perso d'impression de cote de périodique bulletiné dans la jounée et de liste de diffusion de circulation de périodique
1120 *  sur feuille d'étiquette autocollante
1121 * $pmb_serialcirc_subst indique le fichier perso ou tout se qui suit doit être copier
1122 *
1123 *
1124 *
1125 *
1126 *
1127 *
1128if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
1129
1130require_once($class_path."/parametres_perso.class.php");
1131require_once("$class_path/fpdf.class.php");
1132
1133class serialcirc_subst extends serialcirc {
1134       
1135        function gen_print_option($list){
1136                global $charset;
1137                global $std_header, $footer;
1138               
1139               
1140                $list_serialized=serialize($list);
1141                $sub="print_sel_diffusion";
1142                if($list[0]['type']=="cote")    $sub="print_sel_cote";
1143               
1144                $tpl="
1145                $std_header
1146                <h3>".htmlentities("Sélection de l'étiquette de départ", ENT_QUOTES, $charset)."</h3>   
1147                <form id='form_print_circ' name='form_print_circ' method='post' action='./ajax.php?module=circ&categ=periocirc&sub=$sub&print_action=1' >
1148                        <input type='hidden' id='list' name='list' value='$list_serialized' />
1149                        <table>
1150                                <tr>
1151                                        <td></td>
1152                                        <td valign='top'>Colonne 1</td>         
1153                                        <td valign='top'>Colonne 2</td>                                 
1154                                </tr>
1155                                <tr>   
1156                                        <td>1</td>
1157                                        <td valign='top'><input type='radio' name='index_start'   value='1' checked='checked' /></td>
1158                                        <td valign='top'><input type='radio' name='index_start'   value='2' /></td>
1159                                </tr>
1160                                <tr>   
1161                                        <td>2</td>
1162                                        <td valign='top'><input type='radio' name='index_start'   value='3'  /></td>
1163                                        <td valign='top'><input type='radio' name='index_start'   value='4' /></td>
1164                                </tr>
1165                                <tr>   
1166                                        <td>3</td>
1167                                        <td valign='top'><input type='radio' name='index_start'   value='5'  /></td>
1168                                        <td valign='top'><input type='radio' name='index_start'   value='6' /></td>
1169                                </tr>
1170                                <tr>   
1171                                        <td>4</td>
1172                                        <td valign='top'><input type='radio' name='index_start'   value='7'  /></td>
1173                                        <td valign='top'><input type='radio' name='index_start'   value='8' /></td>
1174                                </tr>
1175                                <tr>   
1176                                        <td>5</td>
1177                                        <td valign='top'><input type='radio' name='index_start'   value='9'  /></td>
1178                                        <td valign='top'><input type='radio' name='index_start'   value='10' /></td>
1179                                </tr>
1180                                <tr>   
1181                                        <td>6</td>
1182                                        <td valign='top'><input type='radio' name='index_start'   value='11'  /></td>
1183                                        <td valign='top'><input type='radio' name='index_start'   value='12' /></td>
1184                                </tr>
1185                                <tr>   
1186                                        <td>7</td>
1187                                        <td valign='top'><input type='radio' name='index_start'   value='13'  /></td>
1188                                        <td valign='top'><input type='radio' name='index_start'   value='14' /></td>
1189                                </tr>
1190                        </table>
1191                        <input type='submit' class='bouton' value='Imprimer'  />
1192               
1193                </form>
1194                $footer
1195                ";
1196                return $tpl;
1197        }
1198       
1199        function print_diffusion($expl_id,$start_diff_id){
1200                global $fpdf;
1201                global $print_action;
1202               
1203                $list=array();
1204                $list[0]['expl_id']=$expl_id;
1205                $list[0]['start_diff_id']=$start_diff_id;
1206                if(!$print_action){
1207                        print $this->gen_print_option($list);
1208                        return;
1209                }
1210               
1211        }
1212               
1213        function print_cote($expl_id=""){
1214                global $fpdf;
1215                global $print_action;
1216               
1217                $list=array();
1218                if(!$expl_id){                 
1219                        $req="select expl_id from  exemplaires  where expl_abt_num > 0 and create_date > concat(CURDATE(),' 00:00:00') and expl_id not in (
1220                        select num_serialcirc_expl_id from serialcirc_expl) order by create_date";
1221                        $i=0;
1222                        $resultat=pmb_mysql_query($req);
1223                        if (!pmb_mysql_num_rows($resultat)) return;
1224                        while($r=pmb_mysql_fetch_object($resultat)){
1225                                $list[$i]['expl_id']=$r->expl_id;
1226                                $list[$i]['type']="cote";
1227                                $i++;
1228                        }
1229                }else{                 
1230                        $list[0]['expl_id']=$expl_id;
1231                        $list[0]['type']="cote";
1232                }
1233                if(!$print_action){
1234                        print $this->gen_print_option($list);
1235                        return;
1236                }
1237       
1238        }
1239               
1240        function print_sel_diffusion($list){
1241                global $fpdf;
1242                global $print_action,$index_start;
1243                if(!$print_action){
1244                        print $this->gen_print_option($list);
1245                        return;
1246                }
1247                //printr($list);return ;
1248                if(!$index_start)$index_start=1;
1249               
1250                $this->count=0;
1251                $ourPDF = new $fpdf('P', 'mm', 'A4');
1252                $ourPDF->Open();
1253                $ourPDF->SetAutoPageBreak(0,0);
1254
1255
1256               
1257                for($i=0;$i<$index_start-1;$i++){
1258                       
1259                        $this->build($this->count++,$ourPDF,"");
1260                }
1261                foreach($list as $circ){
1262                        $expl_id=$circ['expl_id'];
1263                        $start_diff_id=$circ['start_diff_id'];
1264       
1265                        $tpl.=$this->build_print_diffusion($expl_id,$start_diff_id,$ourPDF);
1266                }
1267                //print                 $tpl;exit;
1268                header("Content-Type: application/pdf");
1269                $ourPDF->OutPut();             
1270        }
1271
1272        function build($num,$ourPDF,$data){
1273                global $pmb_pdf_font;
1274               
1275                if(!(($num)%14)) {
1276                        $ourPDF->addPage();
1277                        $ourPDF->SetLeftMargin(0);
1278                        $ourPDF->SetTopMargin(0);
1279       
1280                }
1281                if(!$data) return;
1282               
1283                $num=$num-((int)($num/14)*14);
1284       
1285                $hauteur=42;
1286                if($num%2){     
1287                        $x=110;
1288                }else{
1289                        $x=6;
1290                }
1291                $y=($hauteur * (int)(($num)/2))+10;
1292               
1293                //$info.=" num=$num; x=$x, y=$y " ;
1294                // titre perio
1295                $ourPDF->SetXY ($x,$y);
1296                $ourPDF->setFont($pmb_pdf_font, 'BI', 10);
1297                $ourPDF->multiCell(110, 3, $info.substr($data['titre'],0,52) , 0, 'L', 0);
1298               
1299                if($data['cb']){
1300                        // Code barre
1301                        $ourPDF->SetXY ($x,$y+4);
1302                        $ourPDF->setFont($pmb_pdf_font, '', 10);
1303                        $ourPDF->multiCell(110, 3, "Ex ".substr($data['cb'],0,20)."  Cote: ".substr($data['cote'],0,20) , 0, 'L', 0);           
1304                }
1305                // Numéro & Date
1306                $ourPDF->SetXY ($x,$y+7);
1307                $ourPDF->setFont($pmb_pdf_font, '', 8);
1308                $ourPDF->multiCell(110, 3, "".substr($data['numero_libelle'],0,20)."  Date n° : ".substr($data['date_libelle'],0,30) , 0, 'L', 0);
1309               
1310                // Date reception
1311                $ourPDF->SetXY ($x,$y+10);
1312                $ourPDF->setFont($pmb_pdf_font, '', 8);
1313                $ourPDF->multiCell(110, 3, "Reçu le : ".substr($data['date_reception'],0,20)."  ".substr($data['abt_name'],0,30) , 0, 'L', 0);
1314                $i=0;   
1315                // empr list
1316                if(is_array($data['empr'])){
1317                        foreach($data['empr']as $empr){
1318                                if($i==4){
1319                                        $x=$x+30;
1320                                        $i=0;
1321                                }                               
1322                                $ourPDF->SetXY ($x,$y+15+($i*3));
1323                                $ourPDF->setFont($pmb_pdf_font, '', 8);
1324                                $field=substr($empr['name'],0,5);
1325                                if($empr['pperso'])$field.="-".substr($empr['pperso'],0,5);
1326                                $ourPDF->multiCell(110, 3, $field , 0, 'L', 0);
1327                                $i++;           
1328                        }
1329                }
1330                if((!is_array($data['empr']) || !count($data['empr'])) && $data['abt_name1']){
1331                       
1332                        // aff abt
1333                        $ourPDF->SetXY ($x,$y+15);
1334                        $ourPDF->setFont($pmb_pdf_font, '', 10);
1335                        $ourPDF->multiCell(110, 3, substr($data['abt_name1'],0,30) , 0, 'L', 0);
1336                        $i=0;
1337                }
1338        }
1339
1340        function print_sel_cote($list){
1341                global $fpdf,$msg;
1342                global $print_action,$index_start;
1343       
1344                if(!$print_action){
1345                        print $this->gen_print_option($list);
1346                        return;
1347                }
1348                //printr($list);return ;
1349                if(!$index_start)$index_start=1;
1350               
1351                for($i=0;$i<$index_start-1;$i++){
1352                        $this->build($this->count++,$ourPDF,"");
1353                }
1354       
1355                $this->count=0;
1356                $ourPDF = new $fpdf('P', 'mm', 'A4');
1357                $ourPDF->Open();
1358                $ourPDF->SetAutoPageBreak(0,0);
1359       
1360                foreach($list as $expl){
1361                        $expl_id=$expl['expl_id'];
1362               
1363                        $req="select *, date_format(create_date, '".$msg["format_date"]."') as aff_create_date from exemplaires,bulletins where expl_bulletin=bulletin_id and expl_id='$expl_id' ";
1364                        $resultat=pmb_mysql_query($req);
1365                        if (!pmb_mysql_num_rows($resultat)) return;
1366                        $r=pmb_mysql_fetch_object($resultat);
1367                        $this->info_expl[$r->expl_id]['expl_cb']= $r->expl_cb;
1368                        $this->info_expl[$r->expl_id]['expl_id']= $r->expl_id;
1369                        $this->info_expl[$r->expl_id]['expl_statut']= $r->expl_statut;
1370                        $this->info_expl[$r->expl_id]['expl_location']= $r->expl_location;
1371                        $this->info_expl[$r->expl_id]['bulletine_date']= $r->serialcirc_expl_bulletine_date;
1372                        $this->info_expl[$r->expl_id]['numero']= $r->bulletin_numero;
1373                        $this->info_expl[$r->expl_id]['mention_date']= $r->mention_date;
1374                        $this->info_expl[$r->expl_id]['bulletin_notice']= $r->bulletin_notice;
1375                        $this->info_expl[$r->expl_id]['bulletin_id']= $r->bulletin_id;
1376                        $this->info_expl[$r->expl_id]['num_notice']= $r->num_notice;
1377                        $print_date=$r->aff_create_date;
1378               
1379                        $req_serial="select * from notices  where notice_id=".$r->bulletin_notice."";
1380                        $res_serial=pmb_mysql_query($req_serial);
1381                        if ($r_serial=pmb_mysql_fetch_object($res_serial)){
1382                                $this->info_expl[$r->expl_id]['serial_title']=$r_serial->tit1;
1383                        }
1384                        $data=array();
1385                        $data['titre']=$this->info_expl[$expl_id]['serial_title'];
1386                        $data['cb']=$this->info_expl[$expl_id]['expl_cb'];
1387                        $data['cote']=$this->info_expl[$expl_id]['expl_cote'];
1388                        $data['numero_libelle']=$this->info_expl[$expl_id]['numero'];
1389                        $data['date_libelle']=$this->info_expl[$expl_id]['mention_date'];
1390                        $data['date_reception']=$print_date;
1391               
1392               
1393                        $req="select  abt_name from abts_abts,exemplaires where expl_abt_num=abt_id and expl_id=". $r->expl_id;
1394                        $res_abt=pmb_mysql_query($req);
1395                        if (pmb_mysql_num_rows($res_abt)) {
1396                                $r_abt=pmb_mysql_fetch_object($res_abt);
1397                                $data['abt_name1']=$r_abt->abt_name;
1398                        }else $data['abt_name1']="";
1399               
1400                        $this->build($this->count++,$ourPDF,$data);
1401                }
1402                //print                 $tpl;exit;
1403                header("Content-Type: application/pdf");
1404                $ourPDF->OutPut();     
1405       
1406        }
1407       
1408        function build_print_diffusion($expl_id,$start_diff_id,$ourPDF){
1409                global $serialcirc_circ_pdf_diffusion,$charset,$serialcirc_circ_pdf_diffusion_destinataire;
1410                global $msg,$dbh;
1411               
1412                if(!$start_diff_id){
1413                        foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
1414                                $start_diff_id=$diff_id;
1415                                break;
1416                        }
1417                }
1418                if (!$this->info_expl[$expl_id]) return false;
1419                $req="UPDATE serialcirc_expl SET num_serialcirc_expl_serialcirc_diff=".$start_diff_id.",
1420                serialcirc_expl_state_circ=1,
1421                serialcirc_expl_start_date=CURDATE()
1422                where num_serialcirc_expl_id= $expl_id";
1423                pmb_mysql_query($req);
1424       
1425                $req="select date_format(CURDATE(), '".$msg["format_date"]."') as print_date";
1426                $result = pmb_mysql_query($req);
1427                $obj = pmb_mysql_fetch_object($result);
1428                $print_date=$obj->print_date;
1429       
1430                $tpl = $serialcirc_circ_pdf_diffusion;
1431                $tpl=str_replace("!!expl_cb!!", htmlentities($this->info_expl[$expl_id]['expl_cb'],ENT_QUOTES,$charset), $tpl);
1432                $tpl=str_replace("!!date!!", htmlentities($this->info_expl[$expl_id]['mention_date'],ENT_QUOTES,$charset), $tpl);
1433                $tpl=str_replace("!!periodique!!", htmlentities($this->info_expl[$expl_id]['serial_title'],ENT_QUOTES,$charset), $tpl);
1434                $tpl=str_replace("!!numero!!", htmlentities($this->info_expl[$expl_id]['numero'],ENT_QUOTES,$charset), $tpl);
1435                $tpl=str_replace("!!print_date!!", htmlentities($print_date,ENT_QUOTES,$charset), $tpl);
1436                //      $tpl=str_replace("!!abonnement!!", htmlentities($this->info_expl[$expl_id]['serialcirc_diff']->abt_name,ENT_QUOTES,$charset), $tpl);
1437       
1438                if($start_diff_id) $found=0;else $found=1;
1439                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
1440                               
1441                        if($start_diff_id && !$found){
1442                                if($start_diff_id==$diff_id)$found=1;
1443                        }
1444                        if($found){
1445                                $diff_list[]=$diff_id;
1446                                       
1447                                if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){
1448                                        $name=$diffusion["empr_name"];
1449                                               
1450                                        foreach($diffusion['group'] as $empr_group){
1451                                                $empr_list[$empr_group["num_empr"]]=$diff_id;
1452                                                if($empr_group["duration"])
1453                                                        $empr_days[$empr_group["num_empr"]]=$empr_group["duration"];
1454                                                else
1455                                                        $empr_days[$empr_group["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
1456                                                       
1457                                                if($diffusion['type_diff']==1 && !$empr_group["responsable"]){
1458                                                        // groupe marguerite: on n'imprimera pas ce lecteur sauf le responsable
1459                                                        //$empr_no_display[$empr_group["num_empr"]]=1;
1460                                                }
1461                                        }
1462                                }else  {
1463                                        $name=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"];
1464                                        $empr_list[$diffusion["num_empr"]]=$diff_id;
1465                                        if($diffusion["duration"])      $empr_days[$diffusion["num_empr"]]=$diffusion["duration"]; // durée de consultation particulière
1466                                        else $empr_days[$diffusion["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
1467                                }
1468                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_star){
1469                                        // on n'imprime que le suivant dans la liste
1470                                        break;
1471                                }
1472                        }
1473                }
1474                $this->gen_circ($empr_list,$empr_days, $expl_id);
1475       
1476               
1477                $data=array();
1478                $data['titre']=$this->info_expl[$expl_id]['serial_title'];
1479                if(!$this->info_expl[$expl_id]['serialcirc_diff']->no_ret_circ){//pas de retour sur site: on n'affiche pas cb et cote
1480                        $data['cb']=$this->info_expl[$expl_id]['expl_cb'];
1481                        $data['cote']=$this->info_expl[$expl_id]['expl_cote'];
1482                }       
1483                $data['numero_libelle']=$this->info_expl[$expl_id]['numero'];
1484                $data['date_libelle']=$this->info_expl[$expl_id]['mention_date'];
1485                $data['date_reception']=$print_date;
1486                $data['abt_name']=$this->info_expl[$expl_id]['serialcirc_diff']->abt_name;
1487               
1488               
1489                $i=0;                   
1490                $p_perso=new parametres_perso("empr");
1491                foreach($empr_list as $empr_id=>$diff_id){
1492                        $req="select * from empr where  id_empr=$empr_id";
1493                        $res = pmb_mysql_query($req, $dbh);
1494                        if (pmb_mysql_num_rows($res)) {
1495                                $row = pmb_mysql_fetch_object($res);           
1496                                $pp_values=$p_perso->read_base_fields_perso_values("pp_??????",$empr_id);       
1497                                $data['empr'][$i]['name']=$row->empr_nom;
1498                                $data['empr'][$i]['pperso']=$pp_values[0];
1499                                $i++;
1500                        }
1501                }
1502               
1503                $this->build($this->count++,$ourPDF,$data);
1504               
1505                if($this->info_expl[$expl_id]['serialcirc_diff']->no_ret_circ){
1506                        //pas de retour sur site, suppression de la circulation.
1507                        $this->delete_diffusion($expl_id);
1508                        if($empr_id){
1509                                $req="update exemplaires set expl_lastempr=$empr_id where expl_id=$expl_id";   
1510                                pmb_mysql_query($req, $dbh);
1511                        }
1512                }
1513        }
1514               
1515} //class end
1516*/
1517 
Note: See TracBrowser for help on using the repository browser.