source: branches/2.2/workflow/inc/class.bo_adminaccess.inc.php @ 3167

Revision 3167, 12.2 KB checked in by viani, 14 years ago (diff)

Ticket #1135 - Merged r1990:3166 from /trunk/workflow into /branches/2.2/workflow

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