source: pmb4.2/trunk/fuentes/pmb/classes/serialcirc.class.php @ 838

Last change on this file since 838 was 838, checked in by jrpelegrina, 3 years ago

WIP in lliurex features and modifications 5

  • Property svn:executable set to *
File size: 63.0 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
489// ----------------------------LLIUREX 11/03/2016 ----------------------------------------
490// Se comentan estas funciones por dar problemas en maquinas de 64 bits
491               
492        /*function print_diffusion($expl_id,$start_diff_id){   
493                $tpl=$this->build_print_diffusion($expl_id,$start_diff_id);             
494                global $class_path;
495                require_once($class_path.'/html2pdf/html2pdf.class.php');       
496            $html2pdf = new HTML2PDF('P','A4','fr');
497            $html2pdf->WriteHTML($tpl);
498            $html2pdf->Output('diffusion.pdf');         
499        }
500       
501        function print_sel_diffusion($list){
502                foreach($list as $circ){               
503                        $expl_id=$circ['expl_id'];
504                        $start_diff_id=$circ['start_diff_id'];
505
506                        $tpl.=$this->build_print_diffusion($expl_id,$start_diff_id);
507                }       
508                global $class_path;
509                require_once($class_path.'/html2pdf/html2pdf.class.php');       
510            $html2pdf = new HTML2PDF('P','A4','fr');
511            $html2pdf->WriteHTML($tpl);
512            $html2pdf->Output('diffusion.pdf');                         
513        }*/
514       
515//------------------------------ FIN LLIUREX 11/03/2016-------------------------       
516        function build_print_diffusion($expl_id,$start_diff_id){
517                global $serialcirc_circ_pdf_diffusion,$charset,$serialcirc_circ_pdf_diffusion_destinataire;
518                global $msg;
519                if(!$start_diff_id){
520                        foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
521                                $start_diff_id=$diff_id;
522                                break;
523                        }       
524                }
525                if (!$this->info_expl[$expl_id]) return false;
526                $req="UPDATE serialcirc_expl SET num_serialcirc_expl_serialcirc_diff=".$start_diff_id.",
527                serialcirc_expl_state_circ=1,
528                serialcirc_expl_start_date=CURDATE()
529                where num_serialcirc_expl_id= $expl_id";
530                pmb_mysql_query($req);
531               
532                $req="select date_format(CURDATE(), '".$msg["format_date"]."') as print_date"; 
533                $result = pmb_mysql_query($req);
534                $obj = pmb_mysql_fetch_object($result);
535                $print_date=$obj->print_date;
536               
537                $tpl = $serialcirc_circ_pdf_diffusion;
538                $tpl=str_replace("!!expl_cb!!", htmlentities($this->info_expl[$expl_id]['expl_cb'],ENT_QUOTES,$charset), $tpl);                 
539                $tpl=str_replace("!!date!!", htmlentities($this->info_expl[$expl_id]['mention_date'],ENT_QUOTES,$charset), $tpl);       
540                $tpl=str_replace("!!periodique!!", htmlentities($this->info_expl[$expl_id]['serial_title'],ENT_QUOTES,$charset), $tpl);
541                $tpl=str_replace("!!numero!!", htmlentities($this->info_expl[$expl_id]['numero'],ENT_QUOTES,$charset), $tpl);           
542                $tpl=str_replace("!!print_date!!", htmlentities($print_date,ENT_QUOTES,$charset), $tpl);       
543        //      $tpl=str_replace("!!abonnement!!", htmlentities($this->info_expl[$expl_id]['serialcirc_diff']->abt_name,ENT_QUOTES,$charset), $tpl);   
544               
545                if($start_diff_id) $found=0;else $found=1;
546                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
547                       
548                        if($start_diff_id && !$found){                         
549                                if($start_diff_id==$diff_id)$found=1;
550                        }
551                        if($found){
552                                $diff_list[]=$diff_id;
553                       
554                                if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){                                     
555                                        $name=$diffusion["empr_name"];
556                                       
557                                        foreach($diffusion['group'] as $empr_group){
558                                                $empr_list[$empr_group["num_empr"]]=$diff_id;
559                                                if($empr_group["duration"])
560                                                        $empr_days[$empr_group["num_empr"]]=$empr_group["duration"];
561                                                else
562                                                        $empr_days[$empr_group["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
563                                                       
564                                                if($diffusion['type_diff']==1 && !$empr_group["responsable"]){ 
565                                                        // groupe marguerite: on n'imprimera pas ce lecteur sauf le responsable
566                                                        //$empr_no_display[$empr_group["num_empr"]]=1;
567                                                }       
568                                        }
569                                }else  {
570                                        $name=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"];
571                                        $empr_list[$diffusion["num_empr"]]=$diff_id;
572                                        if($diffusion["duration"])      $empr_days[$diffusion["num_empr"]]=$diffusion["duration"]; // durée de consultation particulière
573                                        else $empr_days[$diffusion["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
574                                }       
575                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_star){
576                                        // on n'imprime que le suivant dans la liste
577                                        break;
578                                }                               
579                        }
580                        $last_empr=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]];
581                }               
582                $this->gen_circ($empr_list,$empr_days, $expl_id);
583               
584                $gen_tpl= new serialcirc_print_fields($this->info_expl[$expl_id]['num_serialcirc']);
585                $header_list=$gen_tpl->get_header_list();       
586                $nb_col=count($header_list);
587                $width_col=(int) (100/$nb_col);
588               
589                foreach($header_list as $titre){
590                        $th.="<th style='width: $width_col%; text-align: left'>".htmlentities($titre,ENT_QUOTES,$charset)."</th>";
591                }
592                $tpl=str_replace("!!th!!", $th, $tpl);
593                $tr_list="";
594                foreach($empr_list as $empr_id=>$diff_id){
595                        if($empr_no_display[$empr_id]) continue;
596                        $data['empr_id']=$empr_id;
597                        $data_fields=$gen_tpl->get_line($data);         
598                        $td_list="";
599                        foreach($data_fields as $field){
600                                $td_list.="<td style='width: $width_col%; text-align: left'>".htmlentities($field,ENT_QUOTES,$charset)."</td>"; 
601                        }
602                        $tr_list.="<tr>".$td_list."</tr>";     
603                }
604                $tpl=str_replace("!!table_contens!!", $tr_list, $tpl); 
605
606               
607               
608                if($gen_tpl->piedpage){ 
609                        $data=array();
610                        $data['expl']=$this->info_expl[$expl_id];
611                        $data['last_empr']=$last_empr;
612//                      printr($data['expl']);
613                        $tpl.=H2o::parseString($gen_tpl->piedpage)->render($data);
614                }
615               
616                if($this->info_expl[$expl_id]['serialcirc_diff']->no_ret_circ){
617                        //pas de retour sur site, suppression de la circulation.
618                        $this->delete_diffusion($expl_id);
619                }
620                if($charset!="utf-8"){
621                        $tpl=utf8_encode($tpl);
622                }
623                return $tpl;
624        }       
625       
626        function gen_circ($empr_list, $empr_days,$expl_id){
627                $order=0;
628                $nb_days=0;     
629                if($this->info_expl[$expl_id]['serialcirc_diff']->virtual_circ){
630                        foreach($empr_list as $empr_id=>$diff_id){
631                               
632                                $req=" update serialcirc_circ SET
633
634                                serialcirc_circ_expected_date=DATE_ADD(CURDATE(),INTERVAL $nb_days DAY)
635                                where
636                                num_serialcirc_circ_diff=".$diff_id ." and
637                                num_serialcirc_circ_expl=".$expl_id ." and
638                                num_serialcirc_circ_empr=". $empr_id." and
639                                serialcirc_circ_subscription=1 ";
640                                pmb_mysql_query($req);
641                                $order++;
642                                $nb_days+=$empr_days[$empr_id];
643                        }                       
644                }else{
645                        $req=" delete from serialcirc_circ where num_serialcirc_circ_expl=".$expl_id  ;
646                        pmb_mysql_query($req); 
647                       
648                        foreach($empr_list as $empr_id=>$diff_id){
649                               
650                                $req=" insert into serialcirc_circ SET
651                                num_serialcirc_circ_diff=".$diff_id .",
652                                num_serialcirc_circ_expl=".$expl_id .",
653                                num_serialcirc_circ_empr=". $empr_id.",
654                                serialcirc_circ_subscription=1,
655                                serialcirc_circ_order=". $order.",
656                                serialcirc_circ_expected_date=DATE_ADD(CURDATE(),INTERVAL $nb_days DAY),
657                                num_serialcirc_circ_serialcirc=".$this->info_expl[$expl_id]['num_serialcirc'];
658                                pmb_mysql_query($req);
659                                $order++;
660                                $nb_days+=$empr_days[$empr_id];
661                        }
662                }               
663                // on change le statut si demandé
664                if($this->info_expl[$expl_id]['serialcirc_diff']->expl_statut_circ){
665                        $req="update exemplaires set expl_statut=".$this->info_expl[$expl_id]['serialcirc_diff']->expl_statut_circ." where expl_id=".$expl_id;
666                        pmb_mysql_query($req); 
667                }       
668        }
669       
670        function send_mail($expl_id,$objet,$texte_mail){
671                global $biblio_name,$biblio_email,$PMBuseremailbcc;
672                if (!$this->info_expl[$expl_id]) return false;
673                // Si pas encore recu par l'emprunteur on ne fait rien...
674                if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
675                $empr_info=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info($empr_id);
676                $texte_mail=str_replace("!!issue!!", $this->info_expl[$expl_id]["serial_title"]." - ".$this->info_expl[$expl_id]['numero'], $texte_mail);                       
677                return mailpmb($empr_info["prenom"]." ".$empr_info["nom"], $empr_info["mail"], $objet,  $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);
678        }
679       
680        function send_alert($expl_id){
681                global $serialcirc_send_alert_mail;
682                global $biblio_name,$biblio_email,$PMBuseremailbcc;
683               
684                $req=" delete from serialcirc_circ where num_serialcirc_circ_expl=".$expl_id  ;
685                pmb_mysql_query($req); 
686               
687                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
688
689                        $diff_list[]=$diff_id;
690               
691                        if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){                                     
692                                foreach($diffusion['group'] as $empr_group){
693                                        $empr_list[$empr_group["num_empr"]]=$diff_id;
694                                }
695                        }else  {
696                                $empr_list[$diffusion["num_empr"]]=$diff_id;
697                        }               
698                }
699
700                $req="UPDATE serialcirc_expl SET
701                serialcirc_expl_state_circ=0,
702                serialcirc_expl_start_date=CURDATE()
703                where num_serialcirc_expl_id= $expl_id";
704                pmb_mysql_query($req);
705               
706                $order=0;       
707                foreach($empr_list as $empr_id=>$diff_id){
708
709                        $req=" insert into serialcirc_circ SET
710                        num_serialcirc_circ_diff=".$diff_id .",
711                        num_serialcirc_circ_expl=".$expl_id .",
712                        num_serialcirc_circ_empr=". $empr_id.",
713                        serialcirc_circ_subscription=0,
714                        serialcirc_circ_order=". $order.",
715                        num_serialcirc_circ_serialcirc=".$this->info_expl[$expl_id]['num_serialcirc'];
716                        pmb_mysql_query($req);
717                        $order++;
718                       
719                        // envoit mail alert
720                        $texte_mail=$serialcirc_send_alert_mail;               
721                        $expl_info=$this->expl_info($expl_id);
722                        $empr_info=$this->empr_info($empr_id);
723                        $texte_mail=str_replace("!!issue!!", $expl_info['perio']."-".$expl_info['numero'], $texte_mail);                       
724                        mailpmb($empr_info["prenom"]." ".$empr_info["nom"], $empr_info["mail"], $objet, $texte_mail, $biblio_name, $biblio_email,"", "", $PMBuseremailbcc,1);   
725                       
726                       
727                }       
728
729        }       
730       
731        function call_expl($expl_id){
732                global $mail_, $serialcirc_call_mail,$msg;
733               
734                $req="UPDATE serialcirc_expl SET
735                serialcirc_expl_ret_asked=1
736                where num_serialcirc_expl_id= $expl_id";
737                pmb_mysql_query($req);
738               
739                if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
740               
741                $req="UPDATE serialcirc_circ SET
742                serialcirc_circ_ret_asked = serialcirc_circ_ret_asked+1
743                where num_serialcirc_circ_expl= $expl_id and num_serialcirc_circ_empr=$empr_id";
744                pmb_mysql_query($req);
745
746                $objet=$msg["serialcirc_circ_title"];
747                $texte_mail=$serialcirc_call_mail;
748                $status=$this->send_mail($expl_id,$objet,$texte_mail);
749                return $status;
750        }
751       
752        function call_insist($expl_id){
753                global $mail_ ,$serialcirc_call_mail,$msg,$serialcirc_transmission_mail;
754
755                $req="UPDATE serialcirc_expl SET
756                serialcirc_expl_trans_doc_asked=1
757                where num_serialcirc_expl_id= $expl_id";
758                pmb_mysql_query($req);
759               
760                if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
761               
762                $req="UPDATE serialcirc_circ SET
763                serialcirc_circ_trans_doc_asked = serialcirc_circ_trans_doc_asked+1
764                where num_serialcirc_circ_expl= $expl_id and num_serialcirc_circ_empr=$empr_id";
765                pmb_mysql_query($req);
766                               
767                $objet=$msg["serialcirc_circ_title"];
768                $texte_mail=$serialcirc_transmission_mail;
769                $status=$this->send_mail($expl_id,$objet,$texte_mail);
770                return $status;
771        }
772       
773        function do_trans($expl_id){
774                global $serialcirc_transmission_mail,$serialcirc_call_mail,$msg;
775                $req="UPDATE serialcirc_expl SET
776                serialcirc_expl_trans_doc_asked=2
777                where num_serialcirc_expl_id= $expl_id";
778                pmb_mysql_query($req);
779               
780                if(!$empr_id=$this->info_expl[$expl_id]['current_empr']) return false;
781               
782                $req="UPDATE serialcirc_circ SET
783                serialcirc_circ_trans_doc_asked = serialcirc_circ_trans_doc_asked+1
784                where num_serialcirc_circ_expl= $expl_id and num_serialcirc_circ_empr=$empr_id";
785                pmb_mysql_query($req);                         
786                $objet=$msg["serialcirc_circ_title"];
787                $texte_mail=$serialcirc_transmission_mail;
788                $status=$this->send_mail($expl_id,$objet,$texte_mail);
789                return $status;
790        }
791
792        function build_diff_sel($expl_id){             
793                global $charset;
794                $tpl="
795                        <select name='!!zone!!_group_circ_select_$expl_id' id='!!zone!!_group_circ_select_$expl_id' >
796                                !!diff_select!!
797                        </select>"
798                ;
799                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diffusion){
800                        if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_empr && $this->info_expl[$expl_id]['serialcirc_diff']->virtual_circ ){
801                                if( !$this->info_circ[$expl_id][$diffusion["num_empr"]]['subscription'])        continue;                       
802                        }
803                        if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group )$name=$diffusion["empr_name"];
804                        else  $name=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"];
805                        if($this->info_expl[$expl_id]['num_diff'] == $diffusion['id']) $checked=" selected='selected' ";
806                        else $checked="";
807                        $list.="<option value='".$diffusion['id']."' $checked >".htmlentities($name, ENT_QUOTES, $charset)."</option>";
808                }
809                $tpl=str_replace("!!diff_select!!", $list, $tpl);       
810/*             
811                // on liste les empr réel et ceux du group
812                $name_list="";
813                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diffusion){
814                        if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){
815                                $group_name=$diffusion["empr_name"];
816                                foreach($diffusion['group'] as $empr_group){
817                                        $name.="<a href='".$empr_group['view_link']."'>".htmlentities("[".$group_name."]".$empr_group['empr'],ENT_QUOTES,$charset)."</a><br />";
818                                }               
819                        } else{                         
820                                $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 />";
821                        }
822                        if($this->info_expl[$expl_id]['num_diff'] == $diffusion['id'])   {
823                                $name="<span class='erreur'>". $name    ."</span>";
824                        }
825                        $name_list.=$name;     
826                }       
827                $tpl=str_replace("!!empr_list!!", $name_list, $tpl);   
828*/             
829                return $tpl;
830        }
831       
832        function build_empr_list($expl_id){             
833                global $charset;
834                // on liste les empr réel et ceux du group
835                $name_list="";
836                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diffusion){
837                        if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){
838                                $group_name=$diffusion["empr_name"];
839                                $name="";
840                                foreach($diffusion['group'] as $empr_group){
841                                        $name.= "<a href='".$empr_group['empr']['view_link']."'>".htmlentities("[".$group_name."]".$empr_group['empr']["empr_libelle"],ENT_QUOTES,$charset)."</a><br />";
842                                }               
843                        } else{                         
844                                $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 />";
845                        }                               
846                        if($this->info_expl[$expl_id]['num_diff'] == $diffusion['id'])   {
847                                $name="<span class='erreur'>". $name    ."</span>";
848                        }
849                        $name_list.=$name;                     
850                }                       
851                return $name_list;
852        }
853               
854        function build_expl_form($expl_id,$tpl,$zone=''){               
855                global $charset;
856                $tpl=str_replace("!!expl_id!!", $expl_id, $tpl);
857                $tpl=str_replace("!!bull_id!!", $this->info_expl[$expl_id]['bulletin_id'], $tpl);       
858                $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);                 
859                $tpl=str_replace("!!date!!", htmlentities($this->info_expl[$expl_id]['mention_date'],ENT_QUOTES,$charset)."</a>", $tpl);       
860                $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);     
861                $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);   
862                $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);       
863                $tpl=str_replace("!!destinataire!!",$this->build_diff_sel($expl_id), $tpl);
864                $tpl=str_replace("!!empr_list!!", $this->build_empr_list($expl_id), $tpl);
865                $tpl=str_replace("!!zone!!", $zone, $tpl);                                                                                                     
866                return $tpl;           
867        }
868       
869        function gen_circ_form($cb="") {
870                global $charset, $serialcirc_circ_form,$serialcirc_circ_liste;
871                global $serialcirc_circ_liste_alerter,$serialcirc_circ_liste_alerter_tr,$serialcirc_circ_liste_is_alerted_tr;
872                global $serialcirc_circ_liste_circuler,$serialcirc_circ_liste_circuler_tr;
873                global $serialcirc_circ_liste_circulation,$serialcirc_circ_liste_circulation_rotative_tr,$serialcirc_circ_liste_circulation_star_tr;
874                global $serialcirc_circ_liste_retard,$serialcirc_circ_liste_retard_rotative_tr,$serialcirc_circ_liste_retard_star_tr;
875                global $serialcirc_copy,$serialcirc_copy_tr,$serialcirc_copy_ok_tr;
876                global $serialcirc_circ_liste_reservation,$serialcirc_circ_liste_reservation_tr;
877                global $deflt_docs_location, $msg,$pmb_lecteurs_localises;
878                       
879                $circ_form=$serialcirc_circ_form;
880                $circ_form = str_replace("!!message!!", "", $circ_form);               
881                $circ_form.=$serialcirc_circ_liste;
882               
883                // select "localisation"
884                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);
885                else $circ_form=str_replace("!!localisation!!","",$circ_form);
886               
887                $liste_alerter=$tr_list="";
888                if($nb_liste_alerter=count($this->classement['alert'])){
889                        $liste_alerter=$serialcirc_circ_liste_alerter;
890                        foreach($this->classement['alert'] as $expl_id){
891                                if($this->is_alerted($expl_id))$tr=$serialcirc_circ_liste_is_alerted_tr;
892                                else $tr=$serialcirc_circ_liste_alerter_tr;
893                               
894                                $tr_list.=$this->build_expl_form($expl_id,$tr,"alert");
895                        }
896                        $liste_alerter=str_replace("!!liste_alerter!!", $tr_list, $liste_alerter);
897                }
898
899                $liste_circuler=$tr_list="";
900                if($nb_liste_circuler=count($this->classement['to_be_circ'])){
901                        $liste_circuler=$serialcirc_circ_liste_circuler;
902                        foreach($this->classement['to_be_circ'] as $expl_id){
903                                $tr=$serialcirc_circ_liste_circuler_tr;
904                               
905                                $tr_list.=$this->build_expl_form($expl_id,$tr,"to_be_circ");
906                        }
907                        $liste_circuler=str_replace("!!liste_circuler!!",$tr_list , $liste_circuler);           
908                }       
909                $liste_circulation=$tr_list="";
910                if($nb_liste_circulation=count($this->classement['in_circ'])){
911                        $liste_circulation=$serialcirc_circ_liste_circulation;
912                        foreach($this->classement['in_circ'] as $expl_id){
913                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
914                                        $tr=$serialcirc_circ_liste_circulation_rotative_tr;
915                                }else{                                 
916                                        $tr=$serialcirc_circ_liste_circulation_star_tr;
917                                }       
918                                if ($this->info_expl[$expl_id]['serialcirc_diff']->checked) {
919                                        $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);
920                                        $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);
921                                } else {
922                                        $tr=str_replace("!!bt_rappel_perio!!","",$tr);
923                                        $tr=str_replace("!!bt_exige_transmission!!","",$tr);
924                                }
925                                $tr_list.=$this->build_expl_form($expl_id,$tr,"in_circ");
926                        }
927                        $liste_circulation=str_replace("!!liste_circulation!!", $tr_list, $liste_circulation);         
928                }               
929               
930                $liste_retard=$tr_list="";
931                if($nb_liste_retard=count($this->classement['retard'])){
932                        $liste_retard=$serialcirc_circ_liste_retard;
933                        foreach($this->classement['retard'] as $expl_id){
934                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
935                                        $tr=$serialcirc_circ_liste_retard_rotative_tr;
936                                }else{                                 
937                                        $tr=$serialcirc_circ_liste_retard_star_tr;
938                                }                                                       
939                                $tr_list.=$this->build_expl_form($expl_id,$tr,"in_late");
940                        }
941                        $liste_retard=str_replace("!!liste_retard!!", $tr_list, $liste_retard);         
942                }
943               
944                $liste_reproduction=$tr_list="";
945                if($nb_liste_reproduction=count($this->info_copy)){
946                        $liste_reproduction=$serialcirc_copy;
947                        foreach($this->info_copy as $copy){
948                                if($copy['state'] == 1){
949                                        $tr=$serialcirc_copy_ok_tr;
950                                }else{                                 
951                                        $tr=$serialcirc_copy_tr;
952                                }                                               
953                                $tr=str_replace("!!date!!",htmlentities(format_date ($copy['date']),ENT_QUOTES,$charset),$tr);                 
954                                $tr=str_replace("!!periodique!!","<a href='".$copy['serial_link']."'>".htmlentities($copy['perio'],ENT_QUOTES,$charset)."</a>",$tr);
955                                $tr=str_replace("!!numero!!","<a href='".$copy['bull_link']."'>".htmlentities($copy['numero'],ENT_QUOTES,$charset)." ".$copy['mention_date']."</a>",$tr);
956                                $tr=str_replace("!!empr_name!!","<a href='".$copy['empr']['view_link']."'>".htmlentities($copy['empr']['empr_libelle'],ENT_QUOTES,$charset)."</a>",$tr);
957                                $tr=str_replace("!!empr_message!!",htmlentities($copy['comment'],ENT_QUOTES,$charset),$tr);
958                                $tpl=str_replace("!!zone!!", "copy", $tpl);                                                                     
959                               
960                                $tr=str_replace("!!id_copy!!",$copy['id'],$tr);
961                                $tr_list.=$tr;
962                        }
963                        $liste_reproduction=str_replace("!!liste_reproduction!!", $tr_list, $liste_reproduction);       
964                }               
965
966                $liste_resa=$tr_list="";
967                if($nb_liste_resa=count($this->info_resa)){
968                        $liste_resa=$serialcirc_circ_liste_reservation;
969                        foreach($this->info_resa as $resa){                             
970                                $tr=$serialcirc_circ_liste_reservation_tr;
971                                $tr=str_replace("!!periodique!!",htmlentities($resa['perio'],ENT_QUOTES,$charset),$tr);
972                                $tr=str_replace("!!numero!!",htmlentities($resa['numero'],ENT_QUOTES,$charset)." ".$resa['mention_date'],$tr);
973                                $tr=str_replace("!!empr_name!!","<a href='".$resa['empr']['view_link']."'>".htmlentities($resa['empr']['empr_libelle'],ENT_QUOTES,$charset)."</a>",$tr);
974                               
975                                $tpl=str_replace("!!zone!!", "resa", $tpl);                                                                     
976                                $tr=str_replace("!!empr_id!!",$resa['id_empr'],$tr);
977                                $tr=str_replace("!!expl_id!!",$resa['id_expl'],$tr);
978                                $tr=str_replace("!!id_serialcirc_circ!!",$resa['id'],$tr);
979                                $tr_list.=$tr;
980                        }
981                        $liste_resa=str_replace("!!liste_resa!!", $tr_list, $liste_resa);       
982                }                               
983                $liste_resa=str_replace("!!liste_resa!!", $liste_resa, $liste_resa);           
984               
985                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);
986                else $circ_form = str_replace("!!liste_alerter!!" ,"" , $circ_form);
987                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);
988                else $circ_form = str_replace("!!liste_circuler!!" , "", $circ_form);
989                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);           
990                else $circ_form = str_replace("!!liste_circulation!!", "", $circ_form);         
991                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);
992                else $circ_form = str_replace("!!liste_retard!!",  "", $circ_form);
993                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);
994                else $circ_form = str_replace("!!liste_reproduction!!", "", $circ_form);
995                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);
996                else $circ_form = str_replace("!!liste_resa!!", "",     $circ_form);
997               
998                return $circ_form;
999        }
1000
1001               
1002       
1003        function gen_pointage_form($point_expl_id) {
1004                global $charset, $serialcirc_pointage_form,$serialcirc_circ_liste;
1005                global $serialcirc_circ_liste_alerter,$serialcirc_circ_liste_alerter_tr,$serialcirc_circ_liste_is_alerted_tr;
1006                global $serialcirc_circ_liste_circuler,$serialcirc_circ_liste_circuler_tr;
1007                global $serialcirc_circ_liste_circulation,$serialcirc_circ_liste_circulation_rotative_tr,$serialcirc_circ_liste_circulation_star_tr;
1008                global $serialcirc_circ_liste_retard,$serialcirc_circ_liste_retard_rotative_tr,$serialcirc_circ_liste_retard_star_tr;
1009                global $serialcirc_copy,$serialcirc_copy_tr,$serialcirc_copy_ok_tr;
1010                global $serialcirc_circ_liste_reservation,$serialcirc_circ_liste_reservation_tr;
1011                global $deflt_docs_location, $msg,$pmb_lecteurs_localises;
1012                       
1013                $circ_form=$serialcirc_pointage_form;
1014       
1015                $liste_alerter=$tr_list="";
1016                foreach($this->classement['alert'] as $expl_id){
1017                        if($expl_id==$point_expl_id){
1018                                $nb_liste_alerter=1;
1019                                $liste_alerter=$serialcirc_circ_liste_alerter;
1020                                if($this->is_alerted($expl_id))$tr=$serialcirc_circ_liste_is_alerted_tr;
1021                                else $tr=$serialcirc_circ_liste_alerter_tr;
1022                                       
1023                                $tr_list.=$this->build_expl_form($expl_id,$tr,"alert");                         
1024                                $liste_alerter=str_replace("!!liste_alerter!!", $tr_list, $liste_alerter);
1025                                break;
1026                        }
1027                }
1028                $liste_circuler=$tr_list="";
1029                foreach($this->classement['to_be_circ'] as $expl_id){                   
1030                        if($expl_id==$point_expl_id){                           
1031                                $nb_liste_circuler=1;
1032                                $liste_circuler=$serialcirc_circ_liste_circuler;
1033                                foreach($this->classement['to_be_circ'] as $expl_id){
1034                                        $tr=$serialcirc_circ_liste_circuler_tr;
1035                                       
1036                                        $tr_list.=$this->build_expl_form($expl_id,$tr,"to_be_circ");
1037                                }
1038                                $liste_circuler=str_replace("!!liste_circuler!!",$tr_list , $liste_circuler);
1039                                break; 
1040                        }       
1041                }       
1042               
1043                $liste_circulation=$tr_list="";
1044                foreach($this->classement['in_circ'] as $expl_id){                     
1045                        if($expl_id==$point_expl_id){                           
1046                                $nb_liste_circulation=1;
1047                                $liste_circulation=$serialcirc_circ_liste_circulation;
1048                       
1049                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
1050                                        $tr=$serialcirc_circ_liste_circulation_rotative_tr;
1051                                }else{                                 
1052                                        $tr=$serialcirc_circ_liste_circulation_star_tr;
1053                                }
1054                                if ($this->info_expl[$expl_id]['serialcirc_diff']->checked) {
1055                                        $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);
1056                                        $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);
1057                                } else {
1058                                        $tr=str_replace("!!bt_rappel_perio!!","",$tr);
1059                                        $tr=str_replace("!!bt_exige_transmission!!","",$tr);
1060                                }                                               
1061                                $tr_list.=$this->build_expl_form($expl_id,$tr,"in_circ");                       
1062                                $liste_circulation=str_replace("!!liste_circulation!!", $tr_list, $liste_circulation);         
1063                               
1064                                $liste_alerter="";
1065                                $nb_liste_alerter=0;
1066                                break;
1067                        }
1068                }               
1069               
1070                $liste_retard=$tr_list="";
1071                foreach($this->classement['retard'] as $expl_id){               
1072                        if($expl_id==$point_expl_id){   
1073                                $nb_liste_retard=1;
1074                                $liste_retard=$serialcirc_circ_liste_retard;                   
1075                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_rotative){
1076                                        $tr=$serialcirc_circ_liste_retard_rotative_tr;
1077                                }else{                                 
1078                                        $tr=$serialcirc_circ_liste_retard_star_tr;
1079                                }                                                       
1080                                $tr_list.=$this->build_expl_form($expl_id,$tr,"in_late");                               
1081                                $liste_retard=str_replace("!!liste_retard!!", $tr_list, $liste_retard);         
1082                                break;
1083                        }                                       
1084                }
1085                               
1086               
1087                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);
1088                else $circ_form = str_replace("!!liste_alerter!!" ,"" , $circ_form);
1089                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);
1090                else $circ_form = str_replace("!!liste_circuler!!" , "", $circ_form);
1091                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);           
1092                else $circ_form = str_replace("!!liste_circulation!!", "", $circ_form);         
1093                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);
1094                else $circ_form = str_replace("!!liste_retard!!",  "", $circ_form);
1095               
1096                return $circ_form;
1097        }
1098       
1099                       
1100        function gen_circ_cb($cb) {
1101                global $serialcirc_circ_cb_notfound, $serialcirc_circ_cb_info;
1102                $info="";
1103                $req="select * from serialcirc_expl,exemplaires where expl_cb='$cb' and expl_id=num_serialcirc_expl_id ";
1104                $resultat=pmb_mysql_query($req);
1105                if ($resultat) {
1106                        if (!pmb_mysql_num_rows($resultat)) {
1107                                $this->info_cb['cb']='';
1108                                return str_replace("!!cb!!", $cb, $serialcirc_circ_cb_notfound);
1109                        }
1110                        $r=pmb_mysql_fetch_object($resultat);
1111                        $info.=$this->gen_pointage_form($r->expl_id);
1112                }
1113                return $info;
1114        }               
1115
1116       
1117} //serialcirc class end
1118
1119/*
1120 *
1121 *
1122 *
1123 *
1124 * script perso d'impression de cote de périodique bulletiné dans la jounée et de liste de diffusion de circulation de périodique
1125 *  sur feuille d'étiquette autocollante
1126 * $pmb_serialcirc_subst indique le fichier perso ou tout se qui suit doit être copier
1127 *
1128 *
1129 *
1130 *
1131 *
1132 *
1133if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
1134
1135require_once($class_path."/parametres_perso.class.php");
1136require_once("$class_path/fpdf.class.php");
1137
1138class serialcirc_subst extends serialcirc {
1139       
1140        function gen_print_option($list){
1141                global $charset;
1142                global $std_header, $footer;
1143               
1144               
1145                $list_serialized=serialize($list);
1146                $sub="print_sel_diffusion";
1147                if($list[0]['type']=="cote")    $sub="print_sel_cote";
1148               
1149                $tpl="
1150                $std_header
1151                <h3>".htmlentities("Sélection de l'étiquette de départ", ENT_QUOTES, $charset)."</h3>   
1152                <form id='form_print_circ' name='form_print_circ' method='post' action='./ajax.php?module=circ&categ=periocirc&sub=$sub&print_action=1' >
1153                        <input type='hidden' id='list' name='list' value='$list_serialized' />
1154                        <table>
1155                                <tr>
1156                                        <td></td>
1157                                        <td valign='top'>Colonne 1</td>         
1158                                        <td valign='top'>Colonne 2</td>                                 
1159                                </tr>
1160                                <tr>   
1161                                        <td>1</td>
1162                                        <td valign='top'><input type='radio' name='index_start'   value='1' checked='checked' /></td>
1163                                        <td valign='top'><input type='radio' name='index_start'   value='2' /></td>
1164                                </tr>
1165                                <tr>   
1166                                        <td>2</td>
1167                                        <td valign='top'><input type='radio' name='index_start'   value='3'  /></td>
1168                                        <td valign='top'><input type='radio' name='index_start'   value='4' /></td>
1169                                </tr>
1170                                <tr>   
1171                                        <td>3</td>
1172                                        <td valign='top'><input type='radio' name='index_start'   value='5'  /></td>
1173                                        <td valign='top'><input type='radio' name='index_start'   value='6' /></td>
1174                                </tr>
1175                                <tr>   
1176                                        <td>4</td>
1177                                        <td valign='top'><input type='radio' name='index_start'   value='7'  /></td>
1178                                        <td valign='top'><input type='radio' name='index_start'   value='8' /></td>
1179                                </tr>
1180                                <tr>   
1181                                        <td>5</td>
1182                                        <td valign='top'><input type='radio' name='index_start'   value='9'  /></td>
1183                                        <td valign='top'><input type='radio' name='index_start'   value='10' /></td>
1184                                </tr>
1185                                <tr>   
1186                                        <td>6</td>
1187                                        <td valign='top'><input type='radio' name='index_start'   value='11'  /></td>
1188                                        <td valign='top'><input type='radio' name='index_start'   value='12' /></td>
1189                                </tr>
1190                                <tr>   
1191                                        <td>7</td>
1192                                        <td valign='top'><input type='radio' name='index_start'   value='13'  /></td>
1193                                        <td valign='top'><input type='radio' name='index_start'   value='14' /></td>
1194                                </tr>
1195                        </table>
1196                        <input type='submit' class='bouton' value='Imprimer'  />
1197               
1198                </form>
1199                $footer
1200                ";
1201                return $tpl;
1202        }
1203       
1204        function print_diffusion($expl_id,$start_diff_id){
1205                global $fpdf;
1206                global $print_action;
1207               
1208                $list=array();
1209                $list[0]['expl_id']=$expl_id;
1210                $list[0]['start_diff_id']=$start_diff_id;
1211                if(!$print_action){
1212                        print $this->gen_print_option($list);
1213                        return;
1214                }
1215               
1216        }
1217               
1218        function print_cote($expl_id=""){
1219                global $fpdf;
1220                global $print_action;
1221               
1222                $list=array();
1223                if(!$expl_id){                 
1224                        $req="select expl_id from  exemplaires  where expl_abt_num > 0 and create_date > concat(CURDATE(),' 00:00:00') and expl_id not in (
1225                        select num_serialcirc_expl_id from serialcirc_expl) order by create_date";
1226                        $i=0;
1227                        $resultat=pmb_mysql_query($req);
1228                        if (!pmb_mysql_num_rows($resultat)) return;
1229                        while($r=pmb_mysql_fetch_object($resultat)){
1230                                $list[$i]['expl_id']=$r->expl_id;
1231                                $list[$i]['type']="cote";
1232                                $i++;
1233                        }
1234                }else{                 
1235                        $list[0]['expl_id']=$expl_id;
1236                        $list[0]['type']="cote";
1237                }
1238                if(!$print_action){
1239                        print $this->gen_print_option($list);
1240                        return;
1241                }
1242       
1243        }
1244               
1245        function print_sel_diffusion($list){
1246                global $fpdf;
1247                global $print_action,$index_start;
1248                if(!$print_action){
1249                        print $this->gen_print_option($list);
1250                        return;
1251                }
1252                //printr($list);return ;
1253                if(!$index_start)$index_start=1;
1254               
1255                $this->count=0;
1256                $ourPDF = new $fpdf('P', 'mm', 'A4');
1257                $ourPDF->Open();
1258                $ourPDF->SetAutoPageBreak(0,0);
1259
1260
1261               
1262                for($i=0;$i<$index_start-1;$i++){
1263                       
1264                        $this->build($this->count++,$ourPDF,"");
1265                }
1266                foreach($list as $circ){
1267                        $expl_id=$circ['expl_id'];
1268                        $start_diff_id=$circ['start_diff_id'];
1269       
1270                        $tpl.=$this->build_print_diffusion($expl_id,$start_diff_id,$ourPDF);
1271                }
1272                //print                 $tpl;exit;
1273                header("Content-Type: application/pdf");
1274                $ourPDF->OutPut();             
1275        }
1276
1277        function build($num,$ourPDF,$data){
1278                global $pmb_pdf_font;
1279               
1280                if(!(($num)%14)) {
1281                        $ourPDF->addPage();
1282                        $ourPDF->SetLeftMargin(0);
1283                        $ourPDF->SetTopMargin(0);
1284       
1285                }
1286                if(!$data) return;
1287               
1288                $num=$num-((int)($num/14)*14);
1289       
1290                $hauteur=42;
1291                if($num%2){     
1292                        $x=110;
1293                }else{
1294                        $x=6;
1295                }
1296                $y=($hauteur * (int)(($num)/2))+10;
1297               
1298                //$info.=" num=$num; x=$x, y=$y " ;
1299                // titre perio
1300                $ourPDF->SetXY ($x,$y);
1301                $ourPDF->setFont($pmb_pdf_font, 'BI', 10);
1302                $ourPDF->multiCell(110, 3, $info.substr($data['titre'],0,52) , 0, 'L', 0);
1303               
1304                if($data['cb']){
1305                        // Code barre
1306                        $ourPDF->SetXY ($x,$y+4);
1307                        $ourPDF->setFont($pmb_pdf_font, '', 10);
1308                        $ourPDF->multiCell(110, 3, "Ex ".substr($data['cb'],0,20)."  Cote: ".substr($data['cote'],0,20) , 0, 'L', 0);           
1309                }
1310                // Numéro & Date
1311                $ourPDF->SetXY ($x,$y+7);
1312                $ourPDF->setFont($pmb_pdf_font, '', 8);
1313                $ourPDF->multiCell(110, 3, "".substr($data['numero_libelle'],0,20)."  Date n° : ".substr($data['date_libelle'],0,30) , 0, 'L', 0);
1314               
1315                // Date reception
1316                $ourPDF->SetXY ($x,$y+10);
1317                $ourPDF->setFont($pmb_pdf_font, '', 8);
1318                $ourPDF->multiCell(110, 3, "Reçu le : ".substr($data['date_reception'],0,20)."  ".substr($data['abt_name'],0,30) , 0, 'L', 0);
1319                $i=0;   
1320                // empr list
1321                if(is_array($data['empr'])){
1322                        foreach($data['empr']as $empr){
1323                                if($i==4){
1324                                        $x=$x+30;
1325                                        $i=0;
1326                                }                               
1327                                $ourPDF->SetXY ($x,$y+15+($i*3));
1328                                $ourPDF->setFont($pmb_pdf_font, '', 8);
1329                                $field=substr($empr['name'],0,5);
1330                                if($empr['pperso'])$field.="-".substr($empr['pperso'],0,5);
1331                                $ourPDF->multiCell(110, 3, $field , 0, 'L', 0);
1332                                $i++;           
1333                        }
1334                }
1335                if((!is_array($data['empr']) || !count($data['empr'])) && $data['abt_name1']){
1336                       
1337                        // aff abt
1338                        $ourPDF->SetXY ($x,$y+15);
1339                        $ourPDF->setFont($pmb_pdf_font, '', 10);
1340                        $ourPDF->multiCell(110, 3, substr($data['abt_name1'],0,30) , 0, 'L', 0);
1341                        $i=0;
1342                }
1343        }
1344
1345        function print_sel_cote($list){
1346                global $fpdf,$msg;
1347                global $print_action,$index_start;
1348       
1349                if(!$print_action){
1350                        print $this->gen_print_option($list);
1351                        return;
1352                }
1353                //printr($list);return ;
1354                if(!$index_start)$index_start=1;
1355               
1356                for($i=0;$i<$index_start-1;$i++){
1357                        $this->build($this->count++,$ourPDF,"");
1358                }
1359       
1360                $this->count=0;
1361                $ourPDF = new $fpdf('P', 'mm', 'A4');
1362                $ourPDF->Open();
1363                $ourPDF->SetAutoPageBreak(0,0);
1364       
1365                foreach($list as $expl){
1366                        $expl_id=$expl['expl_id'];
1367               
1368                        $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' ";
1369                        $resultat=pmb_mysql_query($req);
1370                        if (!pmb_mysql_num_rows($resultat)) return;
1371                        $r=pmb_mysql_fetch_object($resultat);
1372                        $this->info_expl[$r->expl_id]['expl_cb']= $r->expl_cb;
1373                        $this->info_expl[$r->expl_id]['expl_id']= $r->expl_id;
1374                        $this->info_expl[$r->expl_id]['expl_statut']= $r->expl_statut;
1375                        $this->info_expl[$r->expl_id]['expl_location']= $r->expl_location;
1376                        $this->info_expl[$r->expl_id]['bulletine_date']= $r->serialcirc_expl_bulletine_date;
1377                        $this->info_expl[$r->expl_id]['numero']= $r->bulletin_numero;
1378                        $this->info_expl[$r->expl_id]['mention_date']= $r->mention_date;
1379                        $this->info_expl[$r->expl_id]['bulletin_notice']= $r->bulletin_notice;
1380                        $this->info_expl[$r->expl_id]['bulletin_id']= $r->bulletin_id;
1381                        $this->info_expl[$r->expl_id]['num_notice']= $r->num_notice;
1382                        $print_date=$r->aff_create_date;
1383               
1384                        $req_serial="select * from notices  where notice_id=".$r->bulletin_notice."";
1385                        $res_serial=pmb_mysql_query($req_serial);
1386                        if ($r_serial=pmb_mysql_fetch_object($res_serial)){
1387                                $this->info_expl[$r->expl_id]['serial_title']=$r_serial->tit1;
1388                        }
1389                        $data=array();
1390                        $data['titre']=$this->info_expl[$expl_id]['serial_title'];
1391                        $data['cb']=$this->info_expl[$expl_id]['expl_cb'];
1392                        $data['cote']=$this->info_expl[$expl_id]['expl_cote'];
1393                        $data['numero_libelle']=$this->info_expl[$expl_id]['numero'];
1394                        $data['date_libelle']=$this->info_expl[$expl_id]['mention_date'];
1395                        $data['date_reception']=$print_date;
1396               
1397               
1398                        $req="select  abt_name from abts_abts,exemplaires where expl_abt_num=abt_id and expl_id=". $r->expl_id;
1399                        $res_abt=pmb_mysql_query($req);
1400                        if (pmb_mysql_num_rows($res_abt)) {
1401                                $r_abt=pmb_mysql_fetch_object($res_abt);
1402                                $data['abt_name1']=$r_abt->abt_name;
1403                        }else $data['abt_name1']="";
1404               
1405                        $this->build($this->count++,$ourPDF,$data);
1406                }
1407                //print                 $tpl;exit;
1408                header("Content-Type: application/pdf");
1409                $ourPDF->OutPut();     
1410       
1411        }
1412       
1413        function build_print_diffusion($expl_id,$start_diff_id,$ourPDF){
1414                global $serialcirc_circ_pdf_diffusion,$charset,$serialcirc_circ_pdf_diffusion_destinataire;
1415                global $msg,$dbh;
1416               
1417                if(!$start_diff_id){
1418                        foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
1419                                $start_diff_id=$diff_id;
1420                                break;
1421                        }
1422                }
1423                if (!$this->info_expl[$expl_id]) return false;
1424                $req="UPDATE serialcirc_expl SET num_serialcirc_expl_serialcirc_diff=".$start_diff_id.",
1425                serialcirc_expl_state_circ=1,
1426                serialcirc_expl_start_date=CURDATE()
1427                where num_serialcirc_expl_id= $expl_id";
1428                pmb_mysql_query($req);
1429       
1430                $req="select date_format(CURDATE(), '".$msg["format_date"]."') as print_date";
1431                $result = pmb_mysql_query($req);
1432                $obj = pmb_mysql_fetch_object($result);
1433                $print_date=$obj->print_date;
1434       
1435                $tpl = $serialcirc_circ_pdf_diffusion;
1436                $tpl=str_replace("!!expl_cb!!", htmlentities($this->info_expl[$expl_id]['expl_cb'],ENT_QUOTES,$charset), $tpl);
1437                $tpl=str_replace("!!date!!", htmlentities($this->info_expl[$expl_id]['mention_date'],ENT_QUOTES,$charset), $tpl);
1438                $tpl=str_replace("!!periodique!!", htmlentities($this->info_expl[$expl_id]['serial_title'],ENT_QUOTES,$charset), $tpl);
1439                $tpl=str_replace("!!numero!!", htmlentities($this->info_expl[$expl_id]['numero'],ENT_QUOTES,$charset), $tpl);
1440                $tpl=str_replace("!!print_date!!", htmlentities($print_date,ENT_QUOTES,$charset), $tpl);
1441                //      $tpl=str_replace("!!abonnement!!", htmlentities($this->info_expl[$expl_id]['serialcirc_diff']->abt_name,ENT_QUOTES,$charset), $tpl);
1442       
1443                if($start_diff_id) $found=0;else $found=1;
1444                foreach($this->info_expl[$expl_id]['serialcirc_diff']->diffusion as $diff_id => $diffusion){
1445                               
1446                        if($start_diff_id && !$found){
1447                                if($start_diff_id==$diff_id)$found=1;
1448                        }
1449                        if($found){
1450                                $diff_list[]=$diff_id;
1451                                       
1452                                if($diffusion["empr_type"]== SERIALCIRC_EMPR_TYPE_group ){
1453                                        $name=$diffusion["empr_name"];
1454                                               
1455                                        foreach($diffusion['group'] as $empr_group){
1456                                                $empr_list[$empr_group["num_empr"]]=$diff_id;
1457                                                if($empr_group["duration"])
1458                                                        $empr_days[$empr_group["num_empr"]]=$empr_group["duration"];
1459                                                else
1460                                                        $empr_days[$empr_group["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
1461                                                       
1462                                                if($diffusion['type_diff']==1 && !$empr_group["responsable"]){
1463                                                        // groupe marguerite: on n'imprimera pas ce lecteur sauf le responsable
1464                                                        //$empr_no_display[$empr_group["num_empr"]]=1;
1465                                                }
1466                                        }
1467                                }else  {
1468                                        $name=$this->info_expl[$expl_id]['serialcirc_diff']->empr_info[$diffusion["num_empr"]]["empr_libelle"];
1469                                        $empr_list[$diffusion["num_empr"]]=$diff_id;
1470                                        if($diffusion["duration"])      $empr_days[$diffusion["num_empr"]]=$diffusion["duration"]; // durée de consultation particulière
1471                                        else $empr_days[$diffusion["num_empr"]]=$this->info_expl[$expl_id]['serialcirc_diff']->duration;
1472                                }
1473                                if($this->info_expl[$expl_id]['serialcirc_diff']->circ_type == SERIALCIRC_TYPE_star){
1474                                        // on n'imprime que le suivant dans la liste
1475                                        break;
1476                                }
1477                        }
1478                }
1479                $this->gen_circ($empr_list,$empr_days, $expl_id);
1480       
1481               
1482                $data=array();
1483                $data['titre']=$this->info_expl[$expl_id]['serial_title'];
1484                if(!$this->info_expl[$expl_id]['serialcirc_diff']->no_ret_circ){//pas de retour sur site: on n'affiche pas cb et cote
1485                        $data['cb']=$this->info_expl[$expl_id]['expl_cb'];
1486                        $data['cote']=$this->info_expl[$expl_id]['expl_cote'];
1487                }       
1488                $data['numero_libelle']=$this->info_expl[$expl_id]['numero'];
1489                $data['date_libelle']=$this->info_expl[$expl_id]['mention_date'];
1490                $data['date_reception']=$print_date;
1491                $data['abt_name']=$this->info_expl[$expl_id]['serialcirc_diff']->abt_name;
1492               
1493               
1494                $i=0;                   
1495                $p_perso=new parametres_perso("empr");
1496                foreach($empr_list as $empr_id=>$diff_id){
1497                        $req="select * from empr where  id_empr=$empr_id";
1498                        $res = pmb_mysql_query($req, $dbh);
1499                        if (pmb_mysql_num_rows($res)) {
1500                                $row = pmb_mysql_fetch_object($res);           
1501                                $pp_values=$p_perso->read_base_fields_perso_values("pp_??????",$empr_id);       
1502                                $data['empr'][$i]['name']=$row->empr_nom;
1503                                $data['empr'][$i]['pperso']=$pp_values[0];
1504                                $i++;
1505                        }
1506                }
1507               
1508                $this->build($this->count++,$ourPDF,$data);
1509               
1510                if($this->info_expl[$expl_id]['serialcirc_diff']->no_ret_circ){
1511                        //pas de retour sur site, suppression de la circulation.
1512                        $this->delete_diffusion($expl_id);
1513                        if($empr_id){
1514                                $req="update exemplaires set expl_lastempr=$empr_id where expl_id=$expl_id";   
1515                                pmb_mysql_query($req, $dbh);
1516                        }
1517                }
1518        }
1519               
1520} //class end
1521*/
1522 
Note: See TracBrowser for help on using the repository browser.