source: branches/1.2/workflow/inc/class.bo_adminaccess.inc.php @ 1349

Revision 1349, 12.3 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

  • Property svn:executable set to *
Line 
1<?php
2/**************************************************************************\
3* eGroupWare                                                               *
4* http://www.egroupware.org                                                *
5* --------------------------------------------                             *
6*  This program is free software; you can redistribute it and/or modify it *
7*  under the terms of the GNU General Public License as published by the   *
8*  Free Software Foundation; either version 2 of the License, or (at your  *
9*  option) any later version.                                              *
10\**************************************************************************/
11
12require_once('class.bo_ajaxinterface.inc.php');
13require_once('class.so_adminaccess.inc.php');
14require_once(GALAXIA_LIBRARY . SEP . 'src' . SEP . 'ProcessManager' . SEP . 'ProcessManager.php');
15require_once(PHPGW_API_INC . SEP . 'common_functions.inc.php');
16require_once(PHPGW_API_INC . SEP . 'class.acl.inc.php');
17
18/**
19 * Implementa métodos para administração do controle de acesso ao workflow.
20 * Controla administradores de processos e administradores de organograma
21 *
22 * @package Workflow
23 * @license http://www.gnu.org/copyleft/gpl.html GPL
24 * @author Rodrigo Daniel C de Lira - rodrigo.lira@gmail.com
25 * @author Sidnei Augusto Drovetto Jr. - drovetto@gmail.com
26 */
27class bo_adminaccess extends bo_ajaxinterface
28{
29        /**
30        * @var object $so Objeto para acesso à camada de dados
31        * @access public
32        */
33        var $so;
34
35        /**
36        * Construtor
37        *
38        * @return object
39        * @access public
40        */
41        function bo_adminaccess()
42        {
43                parent::bo_ajaxinterface();
44
45                if (!$GLOBALS['workflow']['factory']->getInstance('workflow_acl')->checkWorkflowAdmin($_SESSION['phpgw_info']['workflow']['account_id']))
46                        exit(serialize(array('error' => 'Você não tem permissão para executar esta operação.')));
47
48                $this->so = new so_adminaccess($GLOBALS['workflow']['workflowObjects']->getDBGalaxia()->Link_ID);
49        }
50
51        /**
52        * Obtém a lista de processos (consulta ao engine)
53        *
54        * @return array process data
55        * @access public
56        */
57        function get_all_processes()
58        {
59                $proc_mng = new ProcessManager($GLOBALS['workflow']['workflowObjects']->getDBGalaxia()->Link_ID);
60                $proc_list = $proc_mng->list_processes(0,-1,'wf_name__ASC');
61
62                $proc_data = array();
63
64                foreach($proc_list['data'] as $p)
65                {
66                        $proc_data[] = array(
67                                'proc_st_name' => $p['wf_name'] . ' ' . $p['wf_version'],
68                                'proc_in_id'   => $p['wf_p_id']
69                        );
70                }
71
72                @sort($proc_data);
73                @reset($proc_data);
74
75                return $proc_data;
76        }
77
78        /**
79        * Obtém a lista de administradores de um organograma
80        *
81        * @param array $p processo
82        * @return array ids dos admins do organograma
83        * @access public
84        */
85        function get_organogram_admins($p)
86        {
87                $admins_id = $this->so->get_organogram_admins_id($p['org_id']);
88                return $this->so->getUserNames($admins_id);
89        }
90
91        /**
92        * Obtém a lista de administradores de um processo
93        *
94        * @param array $p processo
95        * @return array lista de administradores de um processo
96        * @access public
97        */
98        function get_process_admins($p)
99        {
100                $admins_id = $this->so->get_process_admins_id($p['proc_id']);
101                return $this->so->getUserNames($admins_id);
102        }
103
104        /**
105        * Remove um administrador de organograma
106        *
107        * @param array $p processo
108        * @return array lista de administradores de um organograma
109        * @access public
110        */
111        function del_organogram_admin($p)
112        {
113                $this->so->del_organogram_admin($p['org_id'],$p['admin_id']);
114        return $this->get_organogram_admins($p);
115        }
116
117        /**
118        * Remove um administrador de um processo
119        *
120        * @param array $p processo
121        * @return array lista de administradores de um processo
122        * @access public
123        */
124        function del_process_admin($p)
125        {
126                $this->so->del_process_admin($p['proc_id'],$p['admin_id']);
127        return $this->get_process_admins($p);
128        }
129
130        /**
131        * Insere administradores de organograma
132        *
133        * @param array $p processo
134        * @return array administradores do organograma
135        * @access public
136        */
137        function add_organogram_admins($p)
138        {
139                $ids = explode('.', str_replace('u','',$p['user_ids'] ) );
140                $this->so->add_organogram_admins($p['org_id'],$ids);
141                return $this->get_organogram_admins($p);
142        }
143
144        /**
145        * Insere administradores de processo
146        *
147        * @param array $p processo
148        * @return array administradores do processo
149        * @access public
150        */
151        function add_process_admins($p)
152        {
153                $ids = explode('.', str_replace('g', '', str_replace('u','',$p['user_ids'])));
154                $this->so->add_process_admins($p['proc_id'],$ids);
155                return $this->get_process_admins($p);
156        }
157    /**
158        * Retorna os monitores do processo
159        *
160        * @param array $p processo
161        * @return array monitores do processo
162        * @access public
163        */
164        function get_monitor_admins($p)
165        {
166                $admins_id = $this->so->getResourceAdmins('MON', $p['proc_id']);
167                return $this->so->getUserNames($admins_id);
168        }
169    /**
170        * Adiciona monitores do processo
171        *
172        * @param array $p processo
173        * @return array monitores do processo
174        * @access public
175        */
176        function add_monitor_admins($p)
177        {
178                $ids = explode('.', str_replace('u','',$p['user_ids'] ) );
179                $this->so->addAdmin('MON', $ids, $p['proc_id']);
180                return $this->get_monitor_admins($p);
181        }
182        /**
183        * Remove monitores do processo
184        *
185        * @param array $p
186        * @return array monitores do processo
187        * @access public
188        */
189        function del_monitor_admin($p)
190        {
191                $this->so->removeAdmin('MON', $p['admin_id'], $p['proc_id']);
192        return $this->get_monitor_admins($p);
193        }
194
195        /**
196        * Retorna o nivel administrativo do monitor do processo
197        *
198        * @param array $p processo
199        * @return array o nivel administrativo do monitor do processo
200        * @access public
201        */
202        function get_monitor_admin_level($p)
203        {
204                return $this->so->getUserAdminLevel('MON', $p['uid'], $p['pid']);
205        }
206        /**
207        * Seta o nivel administrativo do monitor
208        *
209        * @param array $p processo
210        * @return arraym
211        * @access public
212        */
213        function set_monitor_admin_level($p)
214        {
215                $np = explode('_', $p['np']);
216                $levels = array();
217                foreach ($np as $pair)
218                {
219                        list($key, $value) = explode('=', $pair, 2);
220                        $levels[$key] = ($value == '1') ? true : false;
221                }
222
223                $this->so->setAdminLevel('MON', $p['uid'], $p['pid'], $levels);
224                return null;
225        }
226
227        /**
228        * Busca os usuários/grupos que possuem acesso a uma determinada aplicação externa
229        *
230        * @param array $params Lista de parâmetros vindas do Ajax
231        * @return array lista dos usuarios com direito de accesso
232        * @access public
233        */
234        function getExternalApplicationAdmins($params)
235        {
236                $admins_id = $this->so->getResourceAdmins('APX', $params['external_application_id']);
237                return $this->so->getUserNames($admins_id);
238        }
239
240        /**
241        * Remove o acesso de um usuário/grupo a uma aplicação externa
242        *
243        * @param array $params Lista de parâmetros vindas do Ajax
244        * @return array lista de administradores de uma aplicacao externa
245        * @access public
246        */
247        function deleteExternalApplicationAdmin($params)
248        {
249                $this->so->removeAdmin('APX', $params['admin_id'], $params['external_application_id']);
250        return $this->getExternalApplicationAdmins($params);
251        }
252
253        /**
254        * Dá acesso para um usuário/grupo a uma aplicação externa
255        *
256        * @param array $params Lista de parâmetros vindas do Ajax
257        * @return array lista de administradores de uma aplicacao externa
258        * @access public
259        */
260        function addExternalApplicationAdmins($params)
261        {
262                $ids = explode('.', str_replace('g', '', str_replace('u', '', $params['user_ids'])));
263                $this->so->addAdmin('APX', $ids, $params['external_application_id']);
264                return $this->getExternalApplicationAdmins($params);
265        }
266
267        /**
268        * Busca os usuários/grupos que podem administrar o módulo Workflow
269        *
270        * @param array $params Lista de parâmetros advindos do Ajax
271        * @return array Lista dos usuários com direito de administrar o módulo Workflow
272        * @access public
273        */
274        function getWorkflowAdministrators()
275        {
276                $admins_id = $this->so->getResourceAdmins('ADM', 0);
277                return $this->so->getUserNames($admins_id);
278        }
279
280        /**
281        * Dá privilégio de administrar o módulo Workflow para um usuário/grupo
282        *
283        * @param array $params Lista de parâmetros advindos do Ajax
284        * @return array Lista dos usuários com direito de administrar o módulo Workflow
285        * @access public
286        */
287        function addWorkflowAdministrators($params)
288        {
289                $ids = explode('.', str_replace('g', '', str_replace('u', '', $params['user_ids'])));
290                $this->so->addAdmin('ADM', $ids, 0);
291                return $this->getWorkflowAdministrators($params);
292        }
293
294        /**
295        * Remove o privilégio de administrar o módulo Workflow de um usuário/grupo
296        *
297        * @param array $params Lista de parâmetros advindos do Ajax
298        * @return array Lista dos usuários com direito de administrar o módulo Workflow
299        * @access public
300        */
301        function deleteWorkflowAdministrators($params)
302        {
303                $this->so->removeAdmin('ADM', $params['admin_id'], 0);
304        return $this->getWorkflowAdministrators($params);
305        }
306
307        /**
308        * Busca os usuários/grupos que podem criar/administrar processos de Workflow
309        *
310        * @param array $params Lista de parâmetros vindas do Ajax
311        * @return array Lista dos usuarios com direito de criar/administrar processos
312        * @access public
313        */
314        function getDevelopmentAdministrators()
315        {
316                $GLOBALS['phpgw']->db = $GLOBALS['ajax']->db;
317                $acl = new ACL();
318                $output = $this->so->getUserNames($acl->get_ids_for_location('admin_workflow', 1, 'workflow'));
319                unset($GLOBALS['phpgw']->db);
320                return $output;
321        }
322
323        /**
324        * Dá privilégio de criar/administrar processos de Workflow para um usuário/grupo
325        *
326        * @param array $params Lista de parâmetros vindas do Ajax
327        * @return array lista dos usuarios com direito de criar/administrar processos
328        * @access public
329        */
330        function addDevelopmentAdministrators($params)
331        {
332                $ids = explode('.', str_replace('g', '', str_replace('u', '', $params['user_ids'])));
333                $GLOBALS['phpgw']->db = $GLOBALS['ajax']->db;
334                $acl = new ACL();
335                foreach ($ids as $id)
336                        $acl->add_repository('workflow', 'admin_workflow', $id, 1);
337
338                unset($GLOBALS['phpgw']->db);
339                return $this->getDevelopmentAdministrators($params);
340        }
341
342        /**
343        * Remove o privilégio de criar/administrar processos de Workflow de um usuário/grupo
344        *
345        * @param array $params Lista de parâmetros vindas do Ajax
346        * @return array Lista dos usuarios com direito de criar/administrar processos
347        * @access public
348        */
349        function deleteDevelopmentAdministrators($params)
350        {
351                $GLOBALS['phpgw']->db = $GLOBALS['ajax']->db;
352                $acl = new ACL();
353                $acl->delete_repository('workflow', 'admin_workflow', (int) $params['admin_id']);
354                unset($GLOBALS['phpgw']->db);
355
356                return $this->getDevelopmentAdministrators($params);
357        }
358
359        /**
360        * Retorna os recursos disponiveis ao Administrador
361        *
362        * @param string $type type of resource
363        * @param integer $rid resource id
364        * @return array array de recursos permitidos
365        * @access public
366        */
367        function getResourceAdmins($type, $rid)
368        {
369                return $this->so->getResourceAdmins($type, $rid);
370        }
371
372        /**
373        * Verifica se o usuario tem acesso a um tipo de recurso
374        *
375        * @param string $type type of resource
376        * @param integer $uid user id
377        * @return bool accesso permitido false nao
378        * @access public
379        */
380        function checkUserAccessToType($type, $uid)
381        {
382                return $this->so->checkUserAccessToType($type, $uid);
383        }
384
385        /**
386        * Verifica se o usuário tem direito de acesso a um recurso
387        *
388        * @param string $type tipo de recurso
389        * @param integer $uid id do usuário
390        * @param integer $rid id do recurso
391        * @return bool true accesso permitido false nao
392        * @access public
393        */
394        function checkUserAccessToResource($type, $uid, $rid, $requiredLevel = null)
395        {
396                return $this->so->checkUserAccessToResource($type, $uid, $rid, $requiredLevel);
397        }
398
399        /**
400        * Retorna as permissoes do usúario
401        *
402        * @param string $type tipo do usuario
403        * @param integer $uid id do usuário
404        * @param integer $rid id do recurso
405        * @return array array com as permissoes do usuario
406        * @access public
407        */
408        function getUserPermissions($type, $uid)
409        {
410                return $this->so->getUserPermissions($type, $uid);
411        }
412
413        /**
414        * Informa o nível de administração do usuário
415        * @param string $type O tipo do recurso
416        * @param int $uid O ID do usuário
417        * @param int $numvalue O ID do recurso
418        * @return array As permissões do usuário (em forma de número e de bits)
419        * @access public
420        */
421        function getUserAdminLevel($type, $uid, $rid)
422        {
423                return $this->so->getUserAdminLevel($type, $uid, $rid);
424        }
425
426        /**
427        * Informa o nível de administração do usuário (incluindo herança por grupo)
428        * @param string $type O tipo do recurso
429        * @param int $uid O ID do usuário
430        * @param int $numvalue O ID do recurso
431        * @return array As permissões do usuário, inclusive herança por grupo. As permissões são retornadas em forma de número e de bits
432        * @access public
433        */
434        function getUserGroupAdminLevel($type, $uid, $numvalue)
435        {
436                return $this->so->getUserGroupAdminLevel($type, $uid, $rid);
437        }
438}
439
440?>
Note: See TracBrowser for help on using the repository browser.