source: pmb4.2/trunk/fuentes/pmb/classes/external_services_esusers.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: 9.2 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: external_services_esusers.class.php,v 1.3 2015-04-03 11:16:19 jpermanne Exp $
6
7//Gestion des utilisateurs et des groupes externes des services externes
8
9if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
10
11require_once("$class_path/external_services.class.php");
12
13/*
14======================================================================================
15Comment ça marche toutes ces classe?
16
17     ............................
18     .         es_base          .
19     ............................
20     . classe de base, contient .
21     . le mécanisme des erreurs .
22     ............................
23                   ^ hérite de
24                   |
25                   |
26    .----------------------------.              .--------------------.
27    |         es_esuser          |              |     es_esusers     |
28    |----------------------------| [all]        |--------------------|
29    | représente un utilisateur  |<-------------| contient tous les  |
30    | externe                    |              | utilisateurs       |
31    '----------------------------'              '--------------------'
32                   ^ [0..all]
33                   |
34                   |
35          .----------------.                   .----------------------.
36          |  es_esgroups   |                   |      es_esgroup      |
37          |----------------| [all]             |----------------------|
38          | contient tous  |<------------------| représente un groupe |
39          | les groupes    |                   | d'utilisateurs       |
40          '----------------'                   '----------------------'
41
42======================================================================================
43*/
44
45define("ES_USER_UNKNOWN_USERID",1);
46define("ES_GROUP_UNKNOWN_USERID",2);
47
48class es_esuser extends es_base {
49        var $esuser_id;
50        var $esuser_username;
51        var $esuser_fullname;
52        var $esuser_password;
53        var $esuser_group;
54
55        function es_esuser($userid) {
56                global $dbh;
57                $userid+=0; //Conversion en int
58                $sql = 'SELECT * from es_esusers WHERE esuser_id = '.$userid;
59                $res = pmb_mysql_query($sql, $dbh);
60                if (pmb_mysql_num_rows($res)) {
61                        $row = pmb_mysql_fetch_assoc($res);
62                        $this->esuser_id = $row["esuser_id"];
63                        $this->esuser_username = $row["esuser_username"];
64                        $this->esuser_fullname = $row["esuser_fullname"];
65                        $this->esuser_password = $row["esuser_password"];
66                        $this->esuser_group = $row["esuser_groupnum"];
67                }
68                else {
69                        $this->set_error(ES_USER_UNKNOWN_USERID,$msg["es_user_unknown_user"]);
70                }
71        }
72       
73        static function username_exists($username) {
74                global $dbh;
75                $sql = "SELECT esuser_id FROM es_esusers WHERE esuser_username = '".addslashes($username)."'";
76                $res = pmb_mysql_query($sql, $dbh);
77                return pmb_mysql_num_rows($res) > 0 ? pmb_mysql_result($res, 0, 0) : 0;
78        }
79       
80        static function add_new() {
81                global $dbh;
82                $sql = "INSERT INTO es_esusers () VALUES ()";
83                $res = pmb_mysql_query($sql, $dbh);
84                $new_esuser_id = pmb_mysql_insert_id($dbh);
85                return new es_esuser($new_esuser_id);
86        }
87       
88        static function create_from_credentials($user_name, $password) {
89                global $dbh;
90                $sql = "SELECT esuser_id FROM es_esusers WHERE esuser_username = '".addslashes($user_name)."' AND esuser_password = '".addslashes($password)."'";
91                $res = pmb_mysql_query($sql, $dbh);
92                if (!pmb_mysql_num_rows($res))
93                        return false;
94                $id = pmb_mysql_result($res, 0, 0);
95                return new es_esuser($id);
96        }
97       
98        function commit_to_db() {
99                global $dbh;
100                //on oublie pas que includes/global_vars.inc.php s'amuse à tout addslasher tout seul donc on le fait pas ici
101                $sql = "UPDATE es_esusers SET esuser_username = '".$this->esuser_username."', esuser_password = '".$this->esuser_password."', esuser_fullname = '".$this->esuser_fullname."', esuser_groupnum = ".$this->esuser_group." WHERE esuser_id = ".$this->esuser_id."";
102                pmb_mysql_query($sql, $dbh);
103        }
104       
105        function delete() {
106                global $dbh;
107                //Deletons l'user
108                $sql = "DELETE FROM es_esusers WHERE esuser_id = ".$this->esuser_id;
109                pmb_mysql_query($sql, $dbh);
110
111                //Enlevons l'user de tout les groupes dans lesquels il était.
112                $sql = "DELETE FROM es_esgroup_esusers WHERE esgroupuser_usertype=1 AND esgroupuser_usernum = ".$this->esuser_id;
113                pmb_mysql_query($sql, $dbh);
114        }
115       
116}
117
118class es_esusers extends es_base {
119        var $users=array();//Array of es_esuser
120       
121        function es_esusers() {
122                global $dbh;
123                $sql = 'SELECT esuser_id from es_esusers';
124                $res = pmb_mysql_query($sql, $dbh);
125                while ($row=pmb_mysql_fetch_assoc($res)) {
126                        $aesuser = new es_esuser($row["esuser_id"]);
127                        $this->users[] = clone $aesuser;
128                }
129        }
130}
131
132class es_esgroup extends es_base {
133        var $esgroup_id;
134        var $esgroup_name;
135        var $esgroup_fullname;
136        var $esgroup_pmbuserid;
137        var $esgroup_pmbuser_username;
138        var $esgroup_pmbuser_lastname;
139        var $esgroup_pmbuser_firstname;
140        var $esgroup_esusers=array();
141        var $esgroup_emprgroups=array();
142       
143        function es_esgroup ($group_id){
144                global $dbh;
145                $group_id+=0; //Conversion en int
146                $sql = 'SELECT esgroup_id, esgroup_name, esgroup_fullname, esgroup_pmbusernum, users.username, users.nom, users.prenom FROM es_esgroups LEFT JOIN users ON (users.userid = es_esgroups.esgroup_pmbusernum) WHERE esgroup_id = '.$group_id;
147                $res = pmb_mysql_query($sql, $dbh);
148                if (pmb_mysql_num_rows($res)) {
149                        $row = pmb_mysql_fetch_assoc($res);
150                        $this->esgroup_id = $row["esgroup_id"];
151                        $this->esgroup_name = $row["esgroup_name"];
152                        $this->esgroup_fullname = $row["esgroup_fullname"];
153                        $this->esgroup_pmbuserid = $row["esgroup_pmbusernum"];
154                        $this->esgroup_pmbuser_username = $row["username"];
155                        $this->esgroup_pmbuser_lastname = $row["nom"];
156                        $this->esgroup_pmbuser_firstname = $row["prenom"];
157                }
158                else {
159                        $this->set_error(ES_GROUP_UNKNOWN_USERID,$msg["es_user_unknown_group"]);
160                        return;
161                }
162               
163                $sql = "SELECT esuser_id FROM es_esusers WHERE esuser_groupnum = ".$group_id;
164                $res = pmb_mysql_query($sql, $dbh);
165                while($row = pmb_mysql_fetch_assoc($res)) {
166                        $this->esgroup_esusers[] = $row["esuser_id"];
167                }
168               
169                $sql = "SELECT * FROM es_esgroup_esusers WHERE esgroupuser_groupnum = ".$group_id;
170                $res = pmb_mysql_query($sql, $dbh);
171                while($row = pmb_mysql_fetch_assoc($res)) {
172                        /*if ($row["esgroupuser_usertype"] == 1)
173                                $this->esgroup_esusers[] = $row["esgroupuser_usernum"];
174                        else*/ 
175                        if ($row["esgroupuser_usertype"] == 2)
176                                $this->esgroup_emprgroups[] = $row["esgroupuser_usernum"];
177                }
178        }
179       
180        static function name_exists($name) {
181                global $dbh;
182                $sql = "SELECT esgroup_id FROM es_esgroups WHERE esgroup_name = '".addslashes($name)."'";
183                $res = pmb_mysql_query($sql, $dbh);
184                return pmb_mysql_num_rows($res) > 0 ? pmb_mysql_result($res, 0, 0) : 0;
185        }
186       
187        static function id_exists($id) {
188                global $dbh;
189                $sql = "SELECT esgroup_id FROM es_esgroups WHERE esgroup_id = ".($id+0)."";
190                $res = pmb_mysql_query($sql, $dbh);
191                return pmb_mysql_num_rows($res) > 0 ? pmb_mysql_result($res, 0, 0) : 0;         
192        }
193       
194        static function add_new() {
195                global $dbh;
196                $sql = "INSERT INTO es_esgroups () VALUES ()";
197                $res = pmb_mysql_query($sql, $dbh);
198                $new_esgroup_id = pmb_mysql_insert_id($dbh);
199                return clone new es_esgroup($new_esgroup_id);
200        }
201       
202        function commit_to_db() {
203                global $dbh;
204                //on oublie pas que includes/global_vars.inc.php s'amuse à tout addslasher tout seul donc on le fait pas ici
205                $sql = "UPDATE es_esgroups SET esgroup_name = '".$this->esgroup_name."', esgroup_fullname = '".$this->esgroup_fullname."', esgroup_pmbusernum = '".$this->esgroup_pmbuserid."' WHERE esgroup_id = '".$this->esgroup_id."'";
206                pmb_mysql_query($sql, $dbh);
207               
208                //Vidage du groupe
209                $sql = "DELETE FROM es_esgroup_esusers WHERE esgroupuser_groupnum = ".$this->esgroup_id;
210                pmb_mysql_query($sql, $dbh);
211               
212                //Remplissage du groupe (es_users)
213                $sql = "INSERT INTO es_esgroup_esusers (esgroupuser_groupnum ,esgroupuser_usertype ,esgroupuser_usernum) VALUES ";
214                $values=array();
215                foreach ($this->esgroup_esusers as $aesuser_id) {
216                        if (!$aesuser_id) continue;
217                        $values[] = '('.$this->esgroup_id.', 1, '.$aesuser_id.')';
218                }
219                $sql .= implode(",", $values);
220                pmb_mysql_query($sql, $dbh);
221
222                //Remplissage du groupe (groupes de lecteurs)
223                $sql = "INSERT INTO es_esgroup_esusers (esgroupuser_groupnum ,esgroupuser_usertype ,esgroupuser_usernum) VALUES ";
224                $values=array();
225                foreach ($this->esgroup_emprgroups as $aemprgroup_id) {
226                        if (!$aemprgroup_id) continue;
227                        $values[] = '('.$this->esgroup_id.', 2, '.$aemprgroup_id.')';
228                }
229                $sql .= implode(",", $values);
230                pmb_mysql_query($sql, $dbh);
231        }
232       
233        function delete() {
234                global $dbh;
235                //Suppression du groupe
236                $sql = "DELETE FROM es_esgroups WHERE esgroup_id = ".$this->esgroup_id;
237                pmb_mysql_query($sql, $dbh);
238                //Vidage du groupe
239                $sql = "DELETE FROM es_esgroup_esusers WHERE esgroupuser_groupnum = ".$this->esgroup_id;
240                pmb_mysql_query($sql, $dbh);
241        }
242       
243}
244
245class es_esgroups extends es_base {
246        var $groups=array();//Array of es_group
247       
248        function es_esgroups() {
249                global $dbh;
250                $sql = 'SELECT esgroup_id from es_esgroups WHERE esgroup_id <> -1';
251                $res = pmb_mysql_query($sql, $dbh);
252                while ($row=pmb_mysql_fetch_assoc($res)) {
253                        $aesgroup = new es_esgroup($row["esgroup_id"]);
254                        $this->groups[] = clone $aesgroup;
255                }
256        }
257}
258
259?>
Note: See TracBrowser for help on using the repository browser.