source: pmb4.2/trunk/fuentes/pmb/classes/group.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: 8.8 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: group.class.php,v 1.14 2015-04-03 11:16:20 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9// définition de la classe de gestion des groupes emprunteurs
10
11class group {
12        var $id=0;
13        var $libelle = '';
14        var $id_resp = 0;
15        var $libelle_resp = '';
16        var $cb_resp = '';
17        var $mail_resp = '';
18        var $members;
19        var $nb_members = 0;
20        var $lettre_rappel = 0 ;
21        var $mail_rappel = 0 ;
22        var $lettre_rappel_show_nomgroup = 0 ;
23
24        // constructeur
25        function group($id=0) {
26                // si id; récupération des données du groupe
27                if($id) {
28                        $this->id = $id;
29                        $this->members = array();
30                        $this->get_data();
31                        }
32                // si id = 0; création d'une instance vide
33                return;
34        }
35
36        // récupération des données du groupe
37        function get_data() {
38                global $dbh;
39                $requete = "SELECT * FROM groupe";
40                $requete .= " WHERE id_groupe='".$this->id."' ";
41                $res = pmb_mysql_query($requete, $dbh);
42                if(pmb_mysql_num_rows($res)) {
43                        $row = pmb_mysql_fetch_object($res);
44                        $this->libelle = $row->libelle_groupe;
45                        $this->lettre_rappel=$row->lettre_rappel;
46                        $this->mail_rappel=$row->mail_rappel;
47                        $this->lettre_rappel_show_nomgroup=$row->lettre_rappel_show_nomgroup;
48                        // récupération id et libelle du responsable
49                        if($row->resp_groupe) {
50                                $this->id_resp = $row->resp_groupe;
51                                $requete = "SELECT empr_nom, empr_prenom, empr_cb, empr_mail FROM empr";
52                                $requete .= " WHERE id_empr=".$this->id_resp." LIMIT 1";
53                                $res = pmb_mysql_query($requete, $dbh);
54                                if(pmb_mysql_num_rows($res)) {
55                                        $row = pmb_mysql_fetch_object($res);
56                                        $this->libelle_resp = $row->empr_nom;
57                                        if($row->empr_prenom) $this->libelle_resp .= ', '.$row->empr_prenom;
58                                        $this->libelle_resp .= ' ('.$row->empr_cb.')';
59                                        $this->cb_resp = $row->empr_cb;
60                                        $this->mail_resp = $row->empr_mail;
61                                }
62                        }
63                        $this->get_members();
64                }
65                return;
66        }
67
68        // génération du form de group
69        function form() {
70                global $group_form;
71                global $msg;
72                global $charset;
73                if($this->id) $titre = $msg[912]; // modification
74                        else $titre = $msg[910]; // création
75                $group_form = str_replace('!!titre!!', $titre, $group_form);
76                if ($this->lettre_rappel) $group_form = str_replace('!!lettre_rappel!!', "checked", $group_form);
77                else $group_form = str_replace('!!lettre_rappel!!', "", $group_form);
78                if ($this->mail_rappel) $group_form = str_replace('!!mail_rappel!!', "checked", $group_form);
79                else $group_form = str_replace('!!mail_rappel!!', "", $group_form);
80                if ($this->lettre_rappel_show_nomgroup) $group_form = str_replace('!!lettre_rappel_show_nomgroup!!', "checked", $group_form);
81                else $group_form = str_replace('!!lettre_rappel_show_nomgroup!!', "", $group_form);
82                $group_form = str_replace('!!group_name!!', htmlentities($this->libelle,ENT_QUOTES, $charset), $group_form);
83                $group_form = str_replace('!!nom_resp!!', $this->libelle_resp, $group_form);
84                $group_form = str_replace('!!groupID!!', $this->id, $group_form);
85                $group_form = str_replace('!!respID!!', $this->id_resp, $group_form);
86                if($this->id) {
87                        $link_annul = './circ.php?categ=groups&action=showgroup&groupID='.$this->id;
88                        $link_suppr = "<input type='button' class='bouton' value='$msg[63]' onClick=\"confirm_delete();\" />";
89                } else {
90                        $link_annul = './circ.php?categ=groups';
91                        $link_suppr = "";
92                }
93                $group_form = str_replace('!!link_annul!!', $link_annul, $group_form);
94                $group_form = str_replace('<!-- bouton_suppression -->', $link_suppr, $group_form);
95                return $group_form;
96        }
97     
98        // affectation de nouvelles valeurs
99        function set($group_name, $respID=0, $lettre_rappel=0, $mail_rappel=0, $lettre_rappel_show_nomgroup=0) {
100                if ($group_name) $this->libelle = $group_name;
101                $this->id_resp = $respID;
102                $this->lettre_rappel=$lettre_rappel;
103                $this->mail_rappel=$mail_rappel;
104                $this->lettre_rappel_show_nomgroup=$lettre_rappel_show_nomgroup;
105                return;
106        }
107
108        // récupération des membres du groupe (feed : array members)
109        function get_members() {
110                if(!$this->id) return;
111                global $dbh;
112       
113                $requete = "select EMPR.id_empr AS id, EMPR.empr_nom AS nom , EMPR.empr_prenom AS prenom, EMPR.empr_cb AS cb, EMPR.empr_categ AS id_categ, EMPR.type_abt AS id_abt";
114                $requete .= " FROM empr EMPR, empr_groupe MEMBERS";
115                $requete .= " WHERE MEMBERS.empr_id=EMPR.id_empr";
116                $requete .= " AND MEMBERS.groupe_id=".$this->id;
117                $requete .= " ORDER BY EMPR.empr_nom, EMPR.empr_prenom";
118                $result = pmb_mysql_query($requete, $dbh);
119                $this->nb_members = pmb_mysql_num_rows($result);
120                if($this->nb_members) {
121                        while($mb = pmb_mysql_fetch_object($result)) {
122                                $this->members[] = array( 'nom' => $mb->nom,
123                                                        'prenom' => $mb->prenom,
124                                                        'cb' => $mb->cb,
125                                                        'id' => $mb->id,
126                                                        'id_categ' => $mb->id_categ,
127                                                        'id_abt' => $mb->id_abt);
128                        }
129                }
130                $this->nb_members = sizeof($this->members);
131                return;
132        }
133
134        // ajout d'un membre
135        function add_member($member) {
136                global $dbh;
137                if(!$member) return 0;
138               
139                // checke si ce membre n'est pas déjà dans le groupe
140                $requete = "SELECT count(1) FROM empr_groupe";
141                $requete .= " WHERE empr_id=$member AND groupe_id=".$this->id;
142                $res = pmb_mysql_query($requete, $dbh);
143                if(pmb_mysql_result($res, 0, 0)) return $member;
144               
145                // OK. insertion 'pour de vrai'
146                $requete = "INSERT INTO empr_groupe";
147                $requete .= " SET empr_id='$member', groupe_id='".$this->id."'";
148                $res = pmb_mysql_query($requete, $dbh);
149                if($res) return $member;
150                        else return 0;
151        }
152     
153        // suppression du groupe
154        function delete() {
155                global $dbh;
156                $requete = "DELETE FROM groupe WHERE id_groupe=".$this->id;
157                $res = pmb_mysql_query($requete, $dbh);
158                $nb = pmb_mysql_affected_rows($dbh);
159                $requete = "DELETE FROM empr_groupe WHERE groupe_id=".$this->id;
160                $res = pmb_mysql_query($requete, $dbh);
161                return $nb;
162        }
163
164        // suppression d'un membre
165        function del_member($member) {
166                global $dbh;
167                if(!$member) return 0;
168                $requete = "DELETE FROM empr_groupe";
169                $requete .= " WHERE empr_id=$member AND groupe_id=".$this->id;
170                $res = pmb_mysql_query($requete, $dbh);
171                return $res;
172        }
173
174        // mise à jour dans la table
175        function update() {
176                global $dbh;
177                global $msg;
178               
179                if($this->id) {
180                        // mise à jour
181                        $requete = "UPDATE groupe";
182                        $requete .= " SET libelle_groupe='".$this->libelle."'";
183                        $requete .= ", resp_groupe='".$this->id_resp."'";
184                        $requete .= ", lettre_rappel='".$this->lettre_rappel."'";
185                        $requete .= ", mail_rappel='".$this->mail_rappel."'";
186                        $requete .= ", lettre_rappel_show_nomgroup='".$this->lettre_rappel_show_nomgroup."'";
187                        $requete .= " WHERE id_groupe=".$this->id." LIMIT 1";
188                        $res = pmb_mysql_query($requete, $dbh);
189                } else {
190                        // on voit si ça n'existe pas
191                        if($this->exists($this->libelle)) return $this->id;
192                       
193                        // création
194                        $requete = "INSERT INTO groupe SET id_groupe=''";
195                        $requete .= ", libelle_groupe='".$this->libelle."'";
196                        $requete .= ", resp_groupe='".$this->id_resp."'";
197                        $requete .= ", lettre_rappel='".$this->lettre_rappel."'";
198                        $requete .= ", mail_rappel='".$this->mail_rappel."'";
199                        $requete .= ", lettre_rappel_show_nomgroup='".$this->lettre_rappel_show_nomgroup."'";
200                        $result = pmb_mysql_query($requete, $dbh);
201                        $this->id = pmb_mysql_insert_id();
202                }
203                return $this->id;
204        }
205
206        function exists($name) {
207                global $dbh;
208                if(!$name) return;
209                $requete = "SELECT count(1) FROM groupe";
210                $requete .= " WHERE libelle_groupe='$name'";
211                $result = pmb_mysql_query($requete, $dbh);
212                return pmb_mysql_result($result, 0, 0);
213        }
214       
215        // prolongation d'adhésion des membres en fin d'abonnement ou en abonnement dépassé
216        function update_members() {
217                global $dbh;
218                global $msg;
219       
220                if($this->id) {
221                        if($this->nb_members) {
222                                while(list($cle, $membre) = each($this->members)) {
223                                        $date_prolong = "form_expiration_".$membre['id'];
224                                        global $$date_prolong;
225                                        if ($$date_prolong != "") {
226                                                //Ne pas débiter l'abonnement deux fois..
227                                                $requete = "SELECT empr_date_expiration FROM empr WHERE id_empr=".$membre['id'];
228                                                $resultat = pmb_mysql_query($requete,$dbh);
229                                                if ($resultat) {
230                                                        if (str_replace("-","",pmb_mysql_result($resultat,0,0)) != str_replace("-","",$$date_prolong)) {
231                                                                // mise à jour
232                                                                $requete = "UPDATE empr";
233                                                                $requete .= " SET empr_date_expiration='".$$date_prolong."'";
234                                                                $requete .= " WHERE id_empr=".$membre['id']." LIMIT 1";
235                                                                @pmb_mysql_query($requete, $dbh);
236                                                                if(!pmb_mysql_errno($dbh)) {
237                                                                        global $debit;
238                                                                        if ($debit) {
239                                                                                if ($debit==2) $rec_caution=true; else $rec_caution=false;
240                                                                                emprunteur::rec_abonnement($membre['id'],$membre['id_abt'],$membre['id_categ'],$rec_caution);
241                                                                        }
242                                                                } else {
243                                                                        error_message($msg[540], "erreur modification emprunteur", 1, './circ.php?categ=groups&action=showgroup&groupID=".$this->id."');
244                                                                }
245                                                        }
246                                                }
247                                        }
248                                }
249                        }
250                }
251        }
252
253}
Note: See TracBrowser for help on using the repository browser.