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

Revision 3526, 4.7 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, Group-bezogene Funktionen                 |
5\**********************************************************************/
6
7
8function getGroup($id)
9{
10       
11        $name = $GLOBALS['phpgw']->accounts->id2name($id);
12       
13        return new Group($id, $name, '');
14}
15
16
17function getAllGroups()
18{
19       
20        $phpgw_groups = $GLOBALS['phpgw']->accounts->get_list('groups');
21       
22        $groups = array();
23       
24        for ($i = 0; $i < count($phpgw_groups); $i++)
25                $groups[$i] = new Group($phpgw_groups[$i]["account_id"], $phpgw_groups[$i]["account_lid"], '');
26       
27        return $groups;
28}
29
30
31function addGroup($name, $comment)
32{
33        GLOBAl $db;
34       
35        $queryStr = "INSERT INTO phpgw_mydms_Groups (name, comment) VALUES ('".$name."', '" . $comment . "')";
36        if (!$db->getResult($queryStr))
37                return false;
38       
39        return getGroup($db->getInsertID('phpgw_mydms_Groups','id'));
40}
41
42
43/**********************************************************************\
44|                           Group-Klasse                               |
45\**********************************************************************/
46
47class Group
48{
49        var $_id;
50        var $_name;
51
52        function Group($id, $name, $comment)
53        {
54                $this->_id = $id;
55                $this->_name = $name;
56                $this->_comment = $comment;
57        }
58
59        function getID() { return $this->_id; }
60
61        function getName() { return $this->_name; }
62
63        function setName($newName)
64        {
65                GLOBAL $db;
66               
67                $queryStr = "UPDATE phpgw_mydms_Groups SET name = '" . $newName . "' WHERE id = " . $this->_id;
68                if (!$db->getResult($queryStr))
69                        return false;
70               
71                $this->_name = $newName;
72                return true;
73        }
74
75        function getComment() { return $this->_comment; }
76
77        function setComment($newComment)
78        {
79                GLOBAL $db;
80               
81                $queryStr = "UPDATE phpgw_mydms_Groups SET comment = '" . $newComment . "' WHERE id = " . $this->_id;
82                if (!$db->getResult($queryStr))
83                        return false;
84               
85                $this->_comment = $newComment;
86                return true;
87        }
88
89        function getUsers()
90        {
91                $members = $GLOBALS['phpgw']->accounts->member($this->_id);     
92                $phpgw_group_member = array();
93
94                if (is_array($members))
95                {
96                        foreach($members as $member)
97                        {
98                                if(!in_array($member['account_id'],$phpgw_group_member))
99                                {
100                                        $phpgw_group_member[] = $member['account_id'];
101                                }
102                        }
103                }
104
105
106                $this->_users = array();
107
108                foreach($phpgw_group_member as $phpgw_member)
109                {
110                        $user = getUser($phpgw_member);
111                        array_push($this->_users, $user);
112                }
113       
114                return $this->_users;
115        }
116
117        function addUser($user)
118        {
119                GLOBAL $db;
120               
121                $queryStr = "INSERT INTO phpgw_mydms_GroupMembers (groupID, userID) VALUES (".$this->_id.", ".$user->getID().")";
122                $res = $db->getResult($queryStr);
123                if ($res)
124                        return false;
125               
126                unset($this->_users);
127                return true;
128        }
129
130        function removeUser($user)
131        {
132                GLOBAL $db;
133               
134                $queryStr = "DELETE FROM phpgw_mydms_GroupMembers WHERE  groupID = ".$this->_id." AND userID = ".$user->getID();
135                $res = $db->getResult($queryStr);
136                if ($res)
137                        return false;
138               
139                unset($this->_users);
140                return true;
141        }
142
143        function isMember($user)
144        {
145                //Wenn die User bereits abgefragt wurden, geht's so schneller:
146                if (isset($this->_users))
147                {
148                        foreach ($this->_users as $usr)
149                                if ($usr->getID() == $user->getID())
150                                        return true;
151                        return false;
152                }
153               
154               
155                $members = $GLOBALS['phpgw']->accounts->member((int)$this->_id);
156                $phpgw_group_member = array();
157
158                if (is_array($members))
159                {
160                        foreach($members as $member)
161                        {
162                                if(!in_array($member['account_id'],$phpgw_group_member))
163                                {
164                                        $phpgw_group_member[] = $member['account_id'];
165                                }
166                        }
167                }
168                                               
169                if(!in_array($user->getID(),$phpgw_group_member))
170                {
171                        return false;
172                }
173                else
174                {
175                        return true;
176                }
177
178        }
179
180        /**
181         * Entfernt die Gruppe aus dem System.
182         * Dies ist jedoch nicht mit einem Lï¿œschen des entsprechenden Eintrags aus phpgw_mydms_Groups geschehen - vielmehr
183         * muss dafï¿œr gesorgt werden, dass die Gruppe nirgendwo mehr auftaucht. D.h. auch die Tabellen phpgw_mydms_ACLs,
184         * phpgw_mydms_Notify und phpgw_mydms_GroupMembers mï¿œssen berï¿œcksichtigt werden.
185         */
186        function remove()
187        {
188                GLOBAl $db;
189               
190                $queryStr = "DELETE FROM phpgw_mydms_Groups WHERE id = " . $this->_id;
191                if (!$db->getResult($queryStr))
192                        return false;
193                $queryStr = "DELETE FROM phpgw_mydms_GroupMembers WHERE groupID = " . $this->_id;
194                if (!$db->getResult($queryStr))
195                        return false;
196                $queryStr = "DELETE FROM phpgw_mydms_ACLs WHERE groupID = " . $this->_id;
197                if (!$db->getResult($queryStr))
198                        return false;
199                $queryStr = "DELETE FROM phpgw_mydms_Notify WHERE groupID = " . $this->_id;
200                if (!$db->getResult($queryStr))
201                        return false;
202               
203                return true;
204        }
205}
206
207
208?>
Note: See TracBrowser for help on using the repository browser.