source: pmb4.2/trunk/fuentes/pmb/classes/serialcirc_empr.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 10.9 KB
Line 
1<?php
2// +-------------------------------------------------+
3// | 2002-2011 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: serialcirc_empr.class.php,v 1.5 2015-04-03 11:16:20 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9require_once($include_path."/templates/serialcirc_empr.tpl.php");
10require_once($class_path."/serialcirc_diff.class.php");
11
12class serialcirc_empr{
13        var $empr_id;   // identifiant de l'emprunteur
14        var $serialcirc_list;   // tableau des abonnement de l'emprunteur
15        var $info;      // info des listes de circulation de l'emprunteur
16        var $serialcirc_circ_list =array(); //tableau des circulations en cours..
17
18        public function __construct($empr_id){
19                $this->empr_id = $empr_id+0;
20                $this->fetch_data();
21        }
22
23        protected function fetch_data(){
24                $this->serialcirc_list = array();
25       
26                $alone = "select distinct id_serialcirc from serialcirc_diff join serialcirc on num_serialcirc_diff_serialcirc = id_serialcirc where num_serialcirc_diff_empr = ".$this->empr_id;
27                $group = "select distinct id_serialcirc from serialcirc_diff join serialcirc on num_serialcirc_diff_serialcirc = id_serialcirc join serialcirc_group on num_serialcirc_group_diff = id_serialcirc_diff where num_serialcirc_group_empr = ".$this->empr_id;
28                $query = $alone." union ".$group;
29                $result = pmb_mysql_query($query);
30                if(pmb_mysql_num_rows($result)){
31                        while($row = pmb_mysql_fetch_object($result)){
32                                $this->serialcirc_list[] = $row->id_serialcirc;
33                                $diff = new serialcirc_diff($row->id_serialcirc);
34                                $this->info[$row->id_serialcirc] = $diff->serial_info;
35                        }
36                }
37                $already_start = "select distinct num_serialcirc_circ_serialcirc as id_serialcirc, num_serialcirc_circ_expl as expl_id from serialcirc_circ where num_serialcirc_circ_empr = ".$this->empr_id;
38                $result = pmb_mysql_query($already_start);
39                if(pmb_mysql_num_rows($result)){
40                        while($row = pmb_mysql_fetch_object($result)){
41                                if(!in_array($row->id_serialcirc,$this->serialcirc_circ_list)){
42                                        $this->serialcirc_circ_list[] = $row->id_serialcirc;
43                                }
44                                if(!$this->info[$row->id_serialcirc]){
45                                        $diff = new serialcirc_diff($row->id_serialcirc);
46                                        $this->info[$row->id_serialcirc] = $diff->serial_info;
47                                }
48                                $this->info[$row->id_serialcirc]['expls'][] = $row->expl_id;
49                        }
50                }
51        }
52
53        public function get_list(){
54                global $msg,$charset,$dbh;
55                global $empr_serialcirc_tmpl,$empr_serialcirc_tmpl_item;       
56                global $empr_serialcirc_circ_tmpl,$empr_serialcirc_circ_tmpl_item;
57               
58                $tpl = "";
59                if(count($this->serialcirc_list) || count($this->serialcirc_circ_list)){
60                        $tpl=$empr_serialcirc_tmpl;
61                        $items="";
62                       
63                        $query = "select empr_cb from empr where id_empr = ".$this->empr_id;
64                        $result = pmb_mysql_query($query,$dbh);
65                        $cb = pmb_mysql_result($result,0,0);
66                       
67                        $circ_list = $this->serialcirc_circ_list;
68                       
69                        $seriallist_ids="";
70                        for($i=0; $i<count($this->serialcirc_list) ; $i++){
71                                $diff_id=$this->serialcirc_list[$i];
72                                if($seriallist_ids) $seriallist_ids.="|";
73                                $expls = "";
74                                $seriallist_ids.=$diff_id;
75                                foreach($circ_list as $j => $id){
76                                        if ($id == $diff_id){
77                                                $expls = "";
78                                                foreach($this->info[$diff_id]['expls'] as $expl){
79                                                        $query = "select expl_cb,expl_notice, expl_bulletin from exemplaires where expl_id = ".$expl;
80                                                        $result =pmb_mysql_query($query,$dbh);
81                                                        if(pmb_mysql_num_rows($result)){
82                                                                $row  = pmb_mysql_fetch_object($result);
83                                                                if($row->notice_id){
84                                                                        $notice = new mono_display($row->expl_notice);
85                                                                        $libelle = $notice->header;
86                                                                }else{
87                                                                        $bulletin = new bulletinage_display($row->expl_bulletin);
88                                                                        $libelle = $bulletin->display;
89                                                                }
90                                                                if($expls)$expls.="</br>";
91                                                                $expls.= "<a href='./circ.php?categ=serialcirc&cb=".$row->expl_cb."'>".$libelle."</a>";
92                                                        }
93                                                }
94                                                unset($circ_list[$j]);
95                                        }
96                                }
97                                                               
98                                $item=$empr_serialcirc_tmpl_item;
99                                $css_class = ($i%2 == 0 ? "odd" :"even"); 
100                                $item = str_replace("!!periodique!!","<a href='".$this->info[$diff_id]['serial_link']."'>".htmlentities($this->info[$diff_id]['serial_name'],ENT_QUOTES,$charset)."</a>",$item);
101                                $item=str_replace('!!abt!!',   "<a href='".$this->info[$diff_id]['serialcirc_link']."'>".htmlentities($this->info[$diff_id]['abt_name'],ENT_QUOTES,$charset)."</a>" , $item);   
102                                $item=str_replace('!!bulletinage_see!!',   "<a href='".$this->info[$diff_id]['bulletinage_link']."'>".htmlentities($msg['link_notice_to_bulletinage'],ENT_QUOTES,$charset)."</a>" , $item);     
103                                $item=str_replace('!!exemplaire_see!!',   $expls , $item);
104                                $item=str_replace('!!id!!',$diff_id,$item);
105                                $items.=$item;
106                        }
107                       
108                        if(count($circ_list)){
109                                for($i=0; $i<count($circ_list) ; $i++){
110                                        $expls = "";
111                                        $diff_id=$circ_list[$i];
112                                        foreach($this->info[$diff_id]['expls'] as $expl){
113                                                $query = "select expl_cb,expl_notice, expl_bulletin from exemplaires where expl_id = ".$expl;
114                                                        $result =pmb_mysql_query($query,$dbh);
115                                                        if(pmb_mysql_num_rows($result)){
116                                                                $row  = pmb_mysql_fetch_object($result);
117                                                                if($row->notice_id){
118                                                                        $notice = new mono_display($row->expl_notice);
119                                                                        $libelle = $notice->header;
120                                                                }else{
121                                                                        $bulletin = new bulletinage_display($row->expl_bulletin);
122                                                                        $libelle = $bulletin->display;
123                                                                }
124                                                                if($expls)$expls.="</br>";
125                                                                $expls.= "<a href='./circ.php?categ=serialcirc&cb=".$row->expl_cb."'>".$libelle."</a>";
126                                                        }
127                                        }
128                                        $item=$empr_serialcirc_circ_tmpl_item;
129                                        $css_class = ($i%2 == 0 ? "odd" :"even");
130                                        $item = str_replace("!!periodique!!","<a href='".$this->info[$diff_id]['serial_link']."'>".htmlentities($this->info[$diff_id]['serial_name'],ENT_QUOTES,$charset)."</a>",$item);
131                                        $item=str_replace('!!abt!!',   "<a href='".$this->info[$diff_id]['serialcirc_link']."'>".htmlentities($this->info[$diff_id]['abt_name'],ENT_QUOTES,$charset)."</a>" , $item);
132                                        $item=str_replace('!!bulletinage_see!!',   "<a href='".$this->info[$diff_id]['bulletinage_link']."'>".htmlentities($msg['link_notice_to_bulletinage'],ENT_QUOTES,$charset)."</a>" , $item);
133                                        $item=str_replace('!!exemplaire_see!!',   $expls , $item);
134                                        $item=str_replace('!!id!!',$diff_id,$item);
135                                        $items.=$item;
136                                }
137                        }
138                       
139                       
140                        $tpl = str_replace("!!empr_cb!!",$cb,$tpl);
141                        $tpl = str_replace("!!serialcirc_empr_ids_list!!",$seriallist_ids,$tpl);
142                        $tpl = str_replace("!!serialcirc_empr_list!!",$items,$tpl);
143                }       
144                return $tpl;
145        }
146       
147        public function unsbuscribe($serialscirc=array()){
148                global $dbh,$msg;
149                $error_message = array();
150                for($i=0 ; $i<count($serialscirc) ; $i++){
151                        //suppression simple...
152                        $query = "delete from serialcirc_diff where num_serialcirc_diff_serialcirc = ".($serialscirc[$i]+0)." and serialcirc_diff_empr_type=0 and num_serialcirc_diff_empr = ".$this->empr_id;
153                        pmb_mysql_query($query,$dbh);
154                        //dans le cas d'un groupe, on évite de supprimer le responsable
155                        $query = "select serialcirc_group.serialcirc_group_responsable,serialcirc_diff_group_name,abt_name from serialcirc_diff join serialcirc_group on num_serialcirc_group_diff = id_serialcirc_diff join serialcirc on id_serialcirc = num_serialcirc_diff_serialcirc join abts_abts on abt_id = num_serialcirc_abt  where num_serialcirc_diff_serialcirc = ".($serialscirc[$i]+0)." and serialcirc_diff_empr_type=1  and num_serialcirc_group_empr = ".$this->empr_id;
156                        $result = pmb_mysql_query($query,$dbh);
157                        if(pmb_mysql_num_rows($result)){
158                                $row = pmb_mysql_fetch_object($result);
159                                if(!$row->serialcirc_group_responsable){
160                                        $query = "delete serialcirc_group.* from serialcirc_diff join serialcirc_group on num_serialcirc_group_diff = id_serialcirc_diff where num_serialcirc_diff_serialcirc = ".($serialscirc[$i]+0)." and serialcirc_diff_empr_type=1  and num_serialcirc_group_empr = ".$this->empr_id;
161                                        pmb_mysql_query($query,$dbh);
162                                }else{
163                                        $error_message[] = sprintf($msg['serialcirc_unsubscribe_group_resp'],$row->abt_name,$row->serialcirc_diff_group_name);
164                                }
165                        }
166                }
167                return $error_message;
168        }
169       
170        public function forward($serialscirc=array(),$new_empr_id=0){
171                global $dbh,$msg;
172                $error_message = array();
173                $message = array();
174                $fowarded =false;
175                if($new_empr_id){
176                        for($i=0 ; $i<count($serialscirc) ; $i++){
177                                //on commence par regarder si le nouveau lecteur n'est pas déjà abonné à la liste...
178                                $query = "select num_serialcirc_diff_empr, abt_name,concat(empr_nom,' ',empr_prenom) as name from serialcirc_diff join serialcirc on num_serialcirc_diff_serialcirc = id_serialcirc join abts_abts on num_serialcirc_abt = abt_id join empr on id_empr=num_serialcirc_diff_empr where num_serialcirc_diff_serialcirc = ".($serialscirc[$i]+0)." and serialcirc_diff_empr_type=0 and num_serialcirc_diff_empr = ".($new_empr_id+0);
179                                $result = pmb_mysql_query($query,$dbh);
180                                if(!pmb_mysql_num_rows($result)){
181                                        $query = "select serialcirc_group.num_serialcirc_group_empr,abt_name, concat(empr_nom,' ',empr_prenom) as name from serialcirc_diff join serialcirc_group on num_serialcirc_group_diff = id_serialcirc_diff join serialcirc on id_serialcirc = num_serialcirc_diff_serialcirc join abts_abts on abt_id = num_serialcirc_abt join empr on id_empr=num_serialcirc_group_empr where num_serialcirc_diff_serialcirc = ".($serialscirc[$i]+0)." and serialcirc_diff_empr_type=1  and num_serialcirc_group_empr = ".($new_empr_id+0);
182                                        $result = pmb_mysql_query($query,$dbh);
183                                        if(!pmb_mysql_num_rows($result)){
184                                                $query = "update serialcirc_diff set num_serialcirc_diff_empr = ".($new_empr_id+0)." where num_serialcirc_diff_serialcirc = ".($serialscirc[$i]+0)." and num_serialcirc_diff_empr = ".$this->empr_id;
185                                                pmb_mysql_query($query,$dbh);
186                                                $query = "update serialcirc_group join serialcirc_diff on num_serialcirc_group_diff = id_serialcirc_diff join serialcirc on id_serialcirc = num_serialcirc_diff_serialcirc join abts_abts on abt_id = num_serialcirc_abt set num_serialcirc_group_empr = ".($new_empr_id+0)." where num_serialcirc_diff_serialcirc = ".($serialscirc[$i]+0)." and serialcirc_diff_empr_type=1  and num_serialcirc_group_empr = ".$this->empr_id;
187                                                pmb_mysql_query($query,$dbh);
188                                                $forwarded = true;
189                                        }else{
190                                                $row = pmb_mysql_fetch_object($result);
191                                                $error_message[] = sprintf($msg['serialcirc_forward_already_subcribed'],$row->abt_name,$row->name);
192                                        }
193                                }else{
194                                        $row = pmb_mysql_fetch_object($result);
195                                        $error_message[] = sprintf($msg['serialcirc_forward_already_subcribed'],$row->abt_name,$row->name);
196                                }
197                        }
198                }
199                if($forwarded){
200                        $query = "select empr_cb, concat(empr_nom,' ',empr_prenom) as name from empr where id_empr = ".($new_empr_id+0);
201                        $result = pmb_mysql_query($query,$dbh);
202                        if(pmb_mysql_num_rows($result)){
203                                $row = pmb_mysql_fetch_object($result);
204                                $message[] = sprintf($msg['serialcirc_empr_forwarded'],"<a href='./circ.php?categ=pret&form_cb=".$row->empr_cb."'>".htmlentities($row->name,ENT_QUOTES,$charsset)."</a>");
205                        }
206                }
207                return array('messages'=>$message,'errors'=>$error_message);
208        }
209} // class end
Note: See TracBrowser for help on using the repository browser.