source: contrib/Dms/inc/inc.ClassUser.php @ 3526

Revision 3526, 10.4 KB checked in by afernandes, 13 years ago (diff)

Ticket #1416 - Disponibilizado modulos Timesheet e DMS para a comunidade.

  • Property svn:executable set to *
Line 
1<?php
2
3/**********************************************************************\
4|                  statische, User-bezogene Funktionen                 |
5\**********************************************************************/
6//added by dawnlinux to port mydms user management to egroupware
7function phpgw_name2id($login)
8{
9        $id = $GLOBALS['phpgw']->accounts->name2id($login);
10        return $id;
11}
12
13function phpgw_id2name($id)
14{
15        $login = $GLOBALS['phpgw']->accounts->id2name($id);
16        return $login;
17
18}
19
20function phpgw_get_accname($id)
21{
22        $GLOBALS['phpgw']->accounts->get_account_name($id,$lid,$fname,$lname);
23        $fullname = $fname.' '.$lname;
24        return $fullname;
25}
26
27function phpgw_get_accemail($id)
28{
29        $email = $GLOBALS['phpgw']->accounts->id2name($id, 'account_email');
30        return $email;
31}
32
33function phpgw_is_admin($id)
34{
35        if($id == 0)
36        {
37                $id = $GLOBALS['phpgw_info']['user']['account_id'];
38        }
39
40        $acl = CreateObject('phpgwapi.acl',$id);
41        if ($acl->check('run',1,'admin'))
42        {
43                return true;
44        }
45        else
46        {
47                return false;
48        }
49}
50
51function getUser($id)
52{
53        $resArr["id"] = $id;
54        $resArr["login"] = phpgw_id2name($id);
55        $resArr["fullName"] = phpgw_get_accname($id);
56        $resArr["email"] = phpgw_get_accemail($id);
57        $resArr["isAdmin"] = phpgw_is_admin($id);
58
59        $resArr["pwd"] = '';
60        $resArr["comment"] = '';
61        return new User($resArr["id"], $resArr["login"], $resArr["pwd"], $resArr["fullName"], $resArr["email"], $resArr["comment"], $resArr["isAdmin"]);
62}
63
64function getUserByLogin($login)
65{
66        $id = $this->phpgw_name2id($login);
67        $resArr["id"] = $id;
68        $resArr["login"] = $login;
69        $resArr["fullName"] = $this->phpgw_get_accname($id);
70        $resArr["email"] = $this->phpgw_get_accemail($id);
71        $resArr["isAdmin"] = $this->phpgw_is_admin($id);
72
73        $resArr["pwd"] = '';
74        $resArr["comment"] = '';
75               
76        return new User($resArr["id"], $resArr["login"], $resArr["pwd"], $resArr["fullName"], $resArr["email"], $resArr["comment"], $resArr["isAdmin"]);
77}
78
79
80function getAllUsers()
81{
82
83        $accounts = $GLOBALS['phpgw']->accounts->get_list('accounts');
84       
85        for ($i = 0; $i < count($accounts); $i++)
86        {
87                $id = $accounts[$i]["account_id"];
88                $login = $accounts[$i]["account_lid"];
89                $fullName = $accounts[$i]['account_firstname'].' '.$accounts[$i]['account_lastname'];
90                $email = $accounts[$i]["account_email"];
91                $isAdmin = phpgw_is_admin($id);
92                $pwd = '';
93                $comment = '';
94                $users[$i] = new User($id, $login, $pwd, $fullName, $email, $comment, $isAdmin);
95        }
96       
97        return $users;
98}
99
100
101function addUser($login, $pwd, $fullName, $email, $comment)
102{
103        echo "add user is disabled \n";
104        /*GLOBAl $db;
105       
106        $queryStr = "INSERT INTO phpgw_mydms_Users (login, pwd, fullName, email, comment, isAdmin) VALUES ('".$login."', '".$pwd."', '".$fullName."', '".$email."', '".$comment."', false)";
107        $res = $db->getResult($queryStr);
108        if (!$res)
109                return false;
110       
111        return getUser($db->getInsertID('phpgw_mydms_Users','id'));*/
112}
113
114
115/**********************************************************************\
116|                            User-Klasse                               |
117\**********************************************************************/
118
119class User
120{
121        var $_id;
122        var $_login;
123        var $_pwd;
124        var $_fullName;
125        var $_email;
126        var $_comment;
127        var $_isAdmin;
128
129        function User($id, $login, $pwd, $fullName, $email, $comment, $isAdmin)
130        {
131                $this->_id = $id;
132                $this->_login = $login;
133                $this->_pwd = $pwd;
134                $this->_fullName = $fullName;
135                $this->_email = $email;
136                $this->_comment = $comment;
137                $this->_isAdmin = $isAdmin;
138        }
139
140        function getID() { return $this->_id; }
141
142        function getLogin() { return $this->_login; }
143
144        function setLogin($newLogin)
145        {
146                GLOBAL $db;
147               
148                $queryStr = "UPDATE phpgw_mydms_Users SET login ='" . $newLogin . "' WHERE id = " . $this->_id;
149                $res = $db->getResult($queryStr);
150                if (!$res)
151                        return false;
152               
153                $this->_login = $newLogin;
154                return true;
155        }
156
157        function getFullName() { return $this->_fullName; }
158
159        function setFullName($newFullName)
160        {
161                GLOBAL $db;
162               
163                $queryStr = "UPDATE phpgw_mydms_Users SET fullname = '" . $newFullName . "' WHERE id = " . $this->_id;
164                $res = $db->getResult($queryStr);
165                if (!$res)
166                        return false;
167               
168                $this->_fullName = $newFullName;
169                return true;
170        }
171
172        function getPwd() { return $this->_pwd; }
173
174        function setPwd($newPwd)
175        {
176                GLOBAL $db;
177               
178                $queryStr = "UPDATE phpgw_mydms_Users SET pwd ='" . $newPwd . "' WHERE id = " . $this->_id;
179                $res = $db->getResult($queryStr);
180                if (!$res)
181                        return false;
182               
183                $this->_pwd = $newPwd;
184                return true;
185        }
186
187        function getEmail() { return $this->_email; }
188
189        function setEmail($newEmail)
190        {
191                GLOBAL $db;
192               
193                $queryStr = "UPDATE phpgw_mydms_Users SET email ='" . $newEmail . "' WHERE id = " . $this->_id;
194                $res = $db->getResult($queryStr);
195                if (!$res)
196                        return false;
197               
198                $this->_email = $newEmail;
199                return true;
200        }
201
202        function getComment() { return $this->_comment; }
203
204        function setComment($newComment)
205        {
206                GLOBAL $db;
207               
208                $queryStr = "UPDATE phpgw_mydms_Users SET comment ='" . $newComment . "' WHERE id = " . $this->_id;
209                $res = $db->getResult($queryStr);
210                if (!$res)
211                        return false;
212               
213                $this->_comment = $newComment;
214                return true;
215        }
216
217        function isAdmin() { return $this->_isAdmin; }
218
219        function setAdmin($isAdmin)
220        {
221                GLOBAL $db;
222               
223                $isAdmin = $isAdmin ? "1" : "0";
224                $queryStr = "UPDATE phpgw_mydms_Users SET isAdmin = " . $GLOBALS['phpgw']->db->quote($isAdmin) . " WHERE id = " . $this->_id;
225                if (!$db->getResult($queryStr))
226                        return false;
227               
228                $this->_isAdmin = $isAdmin;
229                return true;
230        }
231
232        /**
233         * Entfernt den Benutzer aus dem System.
234         * Dies ist jedoch nicht mit einem Lï¿œschen des entsprechenden Eintrags aus phpgw_mydms_Users geschehen - vielmehr
235         * muss dafï¿œr gesorgt werden, dass der Benutzer nirgendwo mehr auftaucht. D.h. auch die Tabellen phpgw_mydms_ACLs,
236         * phpgw_mydms_Notify, phpgw_mydms_GroupMembers, phpgw_mydms_Folders, phpgw_mydms_Documents und phpgw_mydms_DocumentContent mï¿œssen berï¿œcksichtigt werden.
237         */
238        function remove()
239        {
240                GLOBAL $db, $settings;
241               
242                //Private Stichwortlisten lï¿œschen
243                $queryStr = "SELECT phpgw_mydms_Keywords.id FROM phpgw_mydms_Keywords, phpgw_mydms_KeywordCategories WHERE phpgw_mydms_Keywords.category = phpgw_mydms_KeywordCategories.id AND phpgw_mydms_KeywordCategories.owner = " . $this->_id;
244                $resultArr = $db->getResultArray($queryStr);
245                if (count($resultArr) > 0) {
246                        $queryStr = "DELETE FROM phpgw_mydms_Keywords WHERE ";
247                        for ($i = 0; $i < count($resultArr); $i++) {
248                                $queryStr .= "id = " . $resultArr[$i]["id"];
249                                if ($i + 1 < count($resultArr))
250                                        $queryStr .= " OR ";
251                        }
252                        if (!$db->getResult($queryStr))
253                                return false;
254                }
255                $queryStr = "DELETE FROM phpgw_mydms_KeywordCategories WHERE owner = " . $this->_id;
256                if (!$db->getResult($queryStr))
257                        return false;
258               
259                //Benachrichtigungen entfernen
260                $queryStr = "DELETE FROM phpgw_mydms_Notify WHERE userID = " . $this->_id;
261                if (!$db->getResult($queryStr))
262                        return false;
263                //Der Besitz von Dokumenten oder Ordnern, deren bisheriger Besitzer der zu lï¿œschende war, geht an den Admin ï¿œber
264                $queryStr = "UPDATE phpgw_mydms_Folders SET owner = " . $settings->_adminID . " WHERE owner = " . $this->_id;
265                if (!$db->getResult($queryStr))
266                        return false;
267                $queryStr = "UPDATE phpgw_mydms_Documents SET owner = " . $settings->_adminID . " WHERE owner = " . $this->_id;
268                if (!$db->getResult($queryStr))
269                        return false;
270                $queryStr = "UPDATE phpgw_mydms_DocumentContent SET createdBy = " . $settings->_adminID . " WHERE createdBy = " . $this->_id;
271                if (!$db->getResult($queryStr))
272                        return false;
273                //Verweise auf Dokumente: Private lï¿œschen...
274                $queryStr = "DELETE FROM phpgw_mydms_DocumentLinks WHERE userID = " . $this->_id . " AND public = 0";
275                if (!$db->getResult($queryStr))
276                        return false;
277                //... und ï¿œffentliche an Admin ï¿œbergeben
278                $queryStr = "UPDATE phpgw_mydms_DocumentLinks SET userID = " . $settings->_adminID . " WHERE userID = " . $this->_id;
279                if (!$db->getResult($queryStr))
280                        return false;
281                //Evtl. von diesem Benutzer gelockte Dokumente werden freigegeben
282                $queryStr = "UPDATE phpgw_mydms_Documents SET locked = -1 WHERE locked = " . $this->_id;
283                if (!$db->getResult($queryStr))
284                        return false;
285                //User aus allen Gruppen lï¿œschen
286                $queryStr = "DELETE FROM phpgw_mydms_GroupMembers WHERE userID = " . $this->_id;
287                if (!$db->getResult($queryStr))
288                        return false;
289                //User aus allen ACLs streichen
290                $queryStr = "DELETE FROM phpgw_mydms_ACLs WHERE userID = " . $this->_id;
291                if (!$db->getResult($queryStr))
292                        return false;
293                //Eintrag aus phpgw_mydms_Users lï¿œschen
294                $queryStr = "DELETE FROM phpgw_mydms_Users WHERE id = " . $this->_id;
295                if (!$db->getResult($queryStr))
296                        return false;
297               
298               
299//              unset($this);
300                return true;
301        }
302
303        function joinGroup($group)
304        {
305                if ($group->isMember($this))
306                        return false;
307               
308                if (!$group->addUser($this))
309                        return false;
310               
311                unset($this->_groups);
312                return true;
313        }
314
315        function leaveGroup($group)
316        {
317                if (!$group->isMember($this))
318                        return false;
319               
320                if (!$group->removeUser($this))
321                        return false;
322               
323                unset($this->_groups);
324                return true;
325        }
326
327        function getGroups()
328        {
329                $usergroups = $GLOBALS['phpgw']->accounts->membership($this->_id);
330                $this->_groups = array();
331                foreach($usergroups as $phpgw_group)
332                {
333                        $group = getGroup($phpgw_group['account_id']);
334                        array_push($this->_groups, $group);
335                }               
336                return $this->_groups;
337        }
338
339        function isMemberOfGroup($group)
340        {
341                return $group->isMember($this);
342        }
343
344        function hasImage()
345        {
346                if (!isset($this->_hasImage))
347                {
348                        GLOBAL $db;
349                       
350                        $queryStr = "SELECT COUNT(*) AS num FROM phpgw_mydms_UserImages WHERE userID = " . $this->_id;
351                        $resArr = $db->getResultArray($queryStr);
352                        if (is_bool($resArr) && $resArr == false)
353                                return false;
354                       
355                        if ($resArr[0]["num"] == 0)     $this->_hasImage = false;
356                        else $this->_hasImage = true;
357                }
358               
359                return $this->_hasImage;
360        }
361
362        function getImageURL()
363        {
364                GLOBAL $settings;
365               
366//              if (!$this->hasImage())
367//                      return false;
368                return $settings->_httpRoot . "out/out.UserImage.php?userid=" . $this->_id;
369        }
370
371        function setImage($tmpfile, $mimeType)
372        {
373                GLOBAL $db;
374               
375                $fp = fopen($tmpfile, "rb");
376                if (!$fp) return false;
377                $content = fread($fp, filesize($tmpfile));
378                fclose($fp);
379               
380                if ($this->hasImage())
381                        $queryStr = "UPDATE phpgw_mydms_UserImages SET image = '".base64_encode($content)."', mimeType = '". $mimeType."' WHERE userID = " . $this->_id;
382                else
383                        $queryStr = "INSERT INTO phpgw_mydms_UserImages (userID, image, mimeType) VALUES (" . $this->_id . ", '".base64_encode($content)."', '".$mimeType."')";
384                if (!$db->getResult($queryStr))
385                        return false;
386               
387                $this->_hasImage = true;
388                return true;
389        }
390}
391
392
393?>
Note: See TracBrowser for help on using the repository browser.