source: contrib/Dms/inc/class.bomydms.inc.php @ 3526

Revision 3526, 10.0 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        * eGroupWare - mydms                                                        *
4        * http://www.linux-at-work.de                                               *
5        * http://www.egroupware.org                                                 *
6        * Written by : Lars Kneschke [lkneschke@linux-at-work.de]                   *
7        * -------------------------------------------------                         *
8        * This program is free software; you can redistribute it and/or modify it   *
9        * under the terms of the GNU General Public License as published by the     *
10        * Free Software Foundation; either version 2 of the License.                *
11        \***************************************************************************/
12       
13        /* $Id: class.bomydms.inc.php 22717 2006-10-24 10:12:31Z lkneschke $ */
14
15        require_once(PHPGW_SERVER_ROOT.'/mydms/inc/inc.DBAccess.php');
16        require_once(PHPGW_SERVER_ROOT.'/mydms/inc/inc.AccessUtils.php');
17        require_once(PHPGW_SERVER_ROOT.'/mydms/inc/inc.ClassUser.php');
18        require_once(PHPGW_SERVER_ROOT.'/mydms/inc/inc.ClassFolder.php');
19        require_once(PHPGW_SERVER_ROOT.'/mydms/inc/inc.ClassDocument.php');
20        require_once(PHPGW_SERVER_ROOT.'/mydms/inc/inc.FileUtils.php');
21
22        class bomydms
23        {
24                function addACL($_documentID, $_userID, $_groupID, $_access)
25                {
26                        if(!$_documentID)       return false;
27
28                        $document       = getDocument($_documentID);
29                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
30                       
31                        if($accessMode < M_ALL) return false;
32                       
33                        if($_userID !== false)
34                        {
35                                $document->addAccess($_access, $_userID, true);
36                        }
37
38                        if($_groupID !== false)
39                        {
40                                $document->addAccess($_access, $_groupID, false);
41                        }
42                }
43       
44                function addNotification($_documentID, $_userID, $_groupID)
45                {
46                        if(!$_documentID)       return false;
47
48                        $document       = getDocument($_documentID);
49                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
50                       
51                        if($accessMode < M_READWRITE)   return false;
52                       
53                        if($_userID !== false)
54                        {
55                                $document->addNotify($_userID, true);
56                        }
57
58                        if($_groupID !== false)
59                        {
60                                $document->addNotify($_groupID, false);
61                        }
62                }
63       
64                function deleteACL($_documentID, $_userID, $_groupID)
65                {
66                        if(!$_documentID)       return false;
67
68                        $document       = getDocument($_documentID);
69                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
70                       
71                        if($accessMode < M_ALL) return false;
72                       
73                        if($_userID !== false)
74                        {
75                                $document->removeAccess($_userID, true);
76                        }
77
78                        if($_groupID !== false)
79                        {
80                                $document->removeAccess($_groupID, false);
81                        }
82                }
83
84                function deleteDocument($_documentID)
85                {
86                        if(!$_documentID)       return false;
87                       
88                        $document       = getDocument($_documentID);
89                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
90                       
91                        if($accessMode < M_ALL) return false;
92                       
93                        if (!$document->remove())
94                        {
95                                return false;
96                        }
97                       
98                        return true;
99                }
100
101                function deleteFile($_documentID, $_version)
102                {
103                        if(!$_documentID || !$_version) return false;
104                       
105                        $document       = getDocument($_documentID);
106                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
107                       
108                        if($accessMode < M_ALL) return false;
109                       
110                        if(!$version  = $document->getContentByVersion($_version))
111                        {
112                                return false;
113                        }
114                       
115                        if (!$version->remove())
116                        {
117                                return false;
118                        }
119                       
120                        return true;
121                }
122
123                function deleteNotification($_documentID, $_userID, $_groupID)
124                {
125                        if(!$_documentID)       return false;
126
127                        $document       = getDocument($_documentID);
128                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
129                       
130                        if($accessMode < M_READWRITE)   return false;
131                       
132                        if($_userID !== false)
133                        {
134                                $document->removeNotify($_userID, true);
135                        }
136
137                        if($_groupID !== false)
138                        {
139                                $document->removeNotify($_groupID, false);
140                        }
141                }
142               
143                function inheritACL($_documentID, $_action, $_mode)
144                {
145                        if(!$_documentID)       return false;
146
147                        $document       = getDocument($_documentID);
148                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
149                       
150                        if($accessMode < M_ALL) return false;
151                       
152                        switch($_action)
153                        {
154                                case 'notinherit':
155                                        switch($_mode)
156                                        {
157                                                case 'copy':
158                                                        $defAccess = $document->getDefaultAccess();
159                                                        $document->setInheritAccess(false);
160                                                        $document->setDefaultAccess($defAccess);
161                                                       
162                                                        $folder = $document->getFolder();
163                                                        $accessList = $folder->getAccessList();
164                                                       
165                                                        foreach ($accessList["users"] as $userAccess)
166                                                                $document->addAccess($userAccess->getMode(), $userAccess->getUserID(), true);
167                                                               
168                                                        foreach ($accessList["groups"] as $groupAccess)
169                                                                $document->addAccess($groupAccess->getMode(), $groupAccess->getGroupID(), false);
170                                                                                       
171                                                        return true;
172                                                       
173                                                        break;
174                                                       
175                                                case 'empty':
176                                                        $defAccess = $document->getDefaultAccess();
177                                                        $document->setInheritAccess(false);
178                                                        $document->setDefaultAccess($defAccess);
179                                                                                       
180                                                        return true;
181                                                       
182                                                        break;
183                                        }
184                                        break;
185
186                                case 'inherit':
187                                        $document->clearAccessList();
188                                        $document->setInheritAccess(true);
189                                       
190                                        return true;
191                                               
192                                        break;
193                        }
194                       
195                        return false;
196                }
197               
198                function moveDocument($_documentID, $_targetID)
199                {
200                        if(!$_documentID || !$_targetID)        return false;
201                       
202                        $document       = getDocument($_documentID);
203                       
204                        $oldFolder      = $document->getFolder();
205                        $targetFolder   = getFolder($_targetID);
206
207
208                        $accessModeDocument     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
209                        $accessModeFolder       = $targetFolder->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
210                       
211                        if (($accessModeDocument < M_READWRITE) || ($accessModeFolder < M_READWRITE))
212                                return false;
213                       
214                        if ($document->setFolder($targetFolder))
215                        {
216                                return true;
217                        }
218                       
219                        return false;
220                }
221
222                function setDefaultAccess($_documentID, $_mode)
223                {
224                        if(!$_documentID)       return false;
225
226                        $document       = getDocument($_documentID);
227                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
228                       
229                        if($accessMode < M_ALL) return false;
230
231                        $document->setDefaultAccess($_mode);
232                       
233                        return true;
234                }
235       
236                function setOwner($_documentID, $_owner)
237                {
238                        if(!$_documentID)       return false;
239
240                        $document       = getDocument($_documentID);
241                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
242                       
243                        if($accessMode < M_ALL) return false;
244
245                        $document->setOwner(getUser($_owner));
246                       
247                        return true;
248                }
249       
250                function updateACL($_documentID, $_userID, $_groupID, $_access)
251                {
252                        if(!$_documentID)       return false;
253
254                        $document       = getDocument($_documentID);
255                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
256                       
257                        if($accessMode < M_ALL) return false;
258                       
259                        if($_userID !== false)
260                        {
261                                $document->changeAccess($_access, $_userID, true);
262                        }
263
264                        if($_groupID !== false)
265                        {
266                                $document->changeAccess($_access, $_groupID, false);
267                        }
268                }
269
270                function updateDocument($_documentID, $_fileName, $_comment, $_keywords, $_expireDate)
271                {
272                        if(!$_documentID)               return false;
273                       
274                        $document       = getDocument($_documentID);
275                        $accessMode     = $document->getAccessMode(getUser($GLOBALS['phpgw_info']['user']['account_id']));
276
277                        if($accessMode < M_READWRITE)   return false;
278                       
279                        if ( (($document->getName() == $_fileName) || $document->setName($_fileName))
280                                && (($document->getComment() == $_comment) || $document->setComment($_comment))
281                                && (($document->getKeywords() == $_keywords) || $document->setKeywords($_keywords))
282                                && (($document->getExpires() == $_expireDate) || $document->setExpires($_expireDate))
283                        #       && (($sequence == "keep") || $document->setSequence($sequence))
284                        )
285                        {
286                                return true;
287                        }
288                       
289                        return false;
290                }
291
292                function updateFile($_documentID, $_userfile, $_comment, $_expireDate)
293                {
294                        if(!$_documentID)               return false;
295                       
296                        $user           = getUser($GLOBALS['phpgw_info']['user']['account_id']);
297                        $document       = getDocument($_documentID);
298                        $accessMode     = $document->getAccessMode($user);
299
300                        if($accessMode < M_READWRITE)   return false;
301                       
302                        if ($document->isLocked())
303                        {
304                                $lockingUser = $document->getLockingUser();
305                               
306                                if (($lockingUser->getID() != $user->getID()) && ($document->getAccessMode($user) != M_ALL))
307                                {
308                                        return false;
309                                }
310                                else
311                                {
312                                        $document->setLocked(false);
313                                }
314                        }
315                       
316                        if(is_uploaded_file($_userfile['tmp_name']))
317                        {
318                                $lastDotIndex = strrpos(basename($_userfile['name']), ".");
319                                if (is_bool($lastDotIndex) && !$lastDotIndex)
320                                        $fileType = ".";
321                                else
322                                        $fileType = substr($_userfile['name'], $lastDotIndex);
323
324                                if (!$document->addContent($_comment, $user, $_userfile['tmp_name'], basename($_userfile['name']), $fileType, $_userfile['type']))
325                                {
326                                        return false;
327                                }
328
329                                if(!$document->setExpires($_expireDate))
330                                {
331                                        return false;
332                                }
333
334                                return true;
335                        }
336                       
337                        return false;
338                }
339               
340                function updateLockStatus($_documentID, $_lockStatus)
341                {
342                        if(!$_documentID)       return false;
343                       
344                        $user           = getUser($GLOBALS['phpgw_info']['user']['account_id']);
345                        $document       = getDocument($_documentID);
346                        $accessMode     = $document->getAccessMode($user);
347
348                        if($accessMode < M_READWRITE)   return false;
349                       
350                        if($_lockStatus == 'locked')
351                        {
352                                if ($document->isLocked())
353                                {
354                                        // take over lock
355                                        if (($lockingUser->getID() == $user->getID()) || ($accessMode == M_ALL))
356                                        {
357                                                if ($document->setLocked($user))
358                                                {
359                                                        return true;
360                                                }
361                                        }
362                                }
363                                else
364                                {
365                                        if ($document->setLocked($user))
366                                        {
367                                                return true;
368                                        }
369                                }
370                        }
371                        elseif($_lockStatus == 'unlocked')
372                        {
373                                $lockingUser = $document->getLockingUser();
374                               
375                                if (($lockingUser->getID() == $user->getID()) || ($accessMode == M_ALL))
376                                {
377                                        if ($document->setLocked("false"))
378                                        {
379                                                return true;
380                                        }
381                                }
382                        }
383                       
384                        return false;
385                }
386        }
387?>
Note: See TracBrowser for help on using the repository browser.