source: sipes/0.3-modules/ente_planificador_sipp_mcti/ente_planificador_sipp_mcti.install @ dc8ba62

stableversion-3.0
Last change on this file since dc8ba62 was 303fae2, checked in by José Gregorio Puentes <jpuentes@…>, 9 años ago

se agregaron los modulos

  • Propiedad mode establecida a 100755
File size: 20.1 KB
Línea 
1<?php
2  /**
3  * Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana
4  * @file entes_planificadores_toolbar.install
5  * Drupal part Module to code ente planificador module
6  * Copyright 2011 Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana (CENDITEL)
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
21  *
22  * @author Cenditel Merida - Ing. Jose Puentes
23  * @date 2013-01-31 // (a&#241;o-mes-dia)
24  * @version 0.1 // (0.1)
25  *
26  */
27
28module_load_include('module', 'workflow', 'workflow');
29
30/*
31 * Implementación del hook_install
32 */
33function ente_planificador_sipp_mcti_install() {
34  //colocar el modulo ente planificador sipp mcti de los ultimos a leer
35  db_query("UPDATE {system} SET weight = 6 WHERE name = 'ente_planificador_sipp_mcti'");
36 
37  //Nombre del Flujo de trabajo, estados y transición de Proyectos Operativos   
38  $name_wf_po = "Proyectos_Operativos"; 
39  $states_wf_po = array(
40                'PreIngresado',
41    'Ingresado',
42    'Enviado_a_supervisor_del_primer_nivel',
43    'Enviado_a_supervisor_del_segundo_nivel',
44    'Enviado_a_supervisor_del_tercer_nivel',
45    'Enviado_a_supervisor_del_cuarto_nivel',
46    'Devuelto_a_supervisor_del_primer_nivel',
47    'Devuelto_a_supervisor_del_segundo_nivel',
48    'Devuelto_a_supervisor_del_tercer_nivel',
49    'Devuelto_a_supervisor_del_cuarto_nivel',
50    'Enviado_a_enlace_revisor_del_primer_nivel',
51    'Enviado_a_enlace_revisor_del_segundo_nivel',
52    'Enviado_a_enlace_revisor_del_tercer_nivel',
53    'Enviado_a_enlace_revisor_del_cuarto_nivel',
54    'Devuelto_a_enlace_revisor_del_primer_nivel',
55    'Devuelto_a_enlace_revisor_del_segundo_nivel',
56    'Devuelto_a_enlace_revisor_del_tercer_nivel',
57    'Devuelto_a_enlace_revisor_del_cuarto_nivel',
58    'Enviado_a_enlace_formulador_del_primer_nivel',
59    'Enviado_a_enlace_formulador_del_segundo_nivel',
60    'Enviado_a_enlace_formulador_del_tercer_nivel',
61    'Enviado_a_enlace_formulador_del_cuarto_nivel',
62    'Devuelto_a_enlace_formulador_del_primer_nivel',
63    'Devuelto_a_enlace_formulador_del_segundo_nivel',
64    'Devuelto_a_enlace_formulador_del_tercer_nivel',
65    'Devuelto_a_enlace_formulador_del_cuarto_nivel',
66    'Enviado_a_control',
67    'Devuelto_a_control',
68    'Aprobado',
69    'Anulado'
70  );
71
72  $tab_roles_po = array(
73    'Administrador',
74    'Enlace_Formulador',
75    'Enlace_Revisor',
76    'Supervisor',
77    'Control',   
78  );
79  ente_planificador_sipp_mcti_create_roles($tab_roles_po);
80  ente_planificador_sipp_mcti_create_permisos($tab_roles_po);
81
82  //Definición de las reglas de trasnsición Proyectos Operativos
83  $reglas_transicion_po[t('(creation)')]['PreIngresado']['author'] = 1;
84  $reglas_transicion_po[t('(creation)')]['PreIngresado']['Enlace_Formulador'] = 1;
85  $reglas_transicion_po['Ingresado']['Anulado']['Enlace_Formulador'] = 1;
86  $reglas_transicion_po['Ingresado']['Enviado_a_supervisor_del_primer_nivel']['Enlace_Formulador'] = 1;
87  $reglas_transicion_po['Ingresado']['Enviado_a_supervisor_del_segundo_nivel']['Enlace_Formulador'] = 1;
88  $reglas_transicion_po['Ingresado']['Enviado_a_supervisor_del_tercer_nivel']['Enlace_Formulador'] = 1;
89  $reglas_transicion_po['Ingresado']['Enviado_a_supervisor_del_cuarto_nivel']['Enlace_Formulador'] = 1;
90
91  $reglas_transicion_po['Enviado_a_enlace_formulador_del_primer_nivel']['Enviado_a_supervisor_del_primer_nivel']['Enlace_Formulador'] = 1;
92  $reglas_transicion_po['Enviado_a_enlace_formulador_del_segundo_nivel']['Enviado_a_supervisor_del_segundo_nivel']['Enlace_Formulador'] = 1;
93  $reglas_transicion_po['Enviado_a_enlace_formulador_del_tercer_nivel']['Enviado_a_supervisor_del_tercer_nivel']['Enlace_Formulador'] = 1;
94  $reglas_transicion_po['Enviado_a_enlace_formulador_del_cuarto_nivel']['Enviado_a_supervisor_del_cuarto_nivel']['Enlace_Formulador'] = 1;
95 
96  $reglas_transicion_po['Enviado_a_enlace_revisor_del_primer_nivel']['Enviado_a_supervisor_del_primer_nivel']['Enlace_Revisor'] = 1;
97  $reglas_transicion_po['Enviado_a_enlace_revisor_del_tercer_nivel']['Enviado_a_supervisor_del_tercer_nivel']['Enlace_Revisor'] = 1;
98  $reglas_transicion_po['Enviado_a_enlace_revisor_del_segundo_nivel']['Enviado_a_supervisor_del_segundo_nivel']['Enlace_Revisor'] = 1;
99  $reglas_transicion_po['Enviado_a_enlace_revisor_del_primer_nivel']['Devuelto_a_supervisor_del_segundo_nivel']['Enlace_Revisor'] = 1;
100  $reglas_transicion_po['Enviado_a_enlace_revisor_del_segundo_nivel']['Devuelto_a_supervisor_del_tercer_nivel']['Enlace_Revisor'] = 1;
101  $reglas_transicion_po['Enviado_a_enlace_revisor_del_tercer_nivel']['Devuelto_a_supervisor_del_cuarto_nivel']['Enlace_Revisor'] = 1;
102
103  $reglas_transicion_po['Enviado_a_supervisor_del_primer_nivel']['Enviado_a_control']['Control'] = 1;
104  $reglas_transicion_po['Enviado_a_supervisor_del_segundo_nivel']['Enviado_a_enlace_revisor_del_primer_nivel']['Supervisor'] = 1;
105  $reglas_transicion_po['Enviado_a_supervisor_del_tercer_nivel']['Enviado_a_enlace_revisor_del_segundo_nivel']['Supervisor'] = 1;
106  $reglas_transicion_po['Enviado_a_supervisor_del_cuarto_nivel']['Enviado_a_enlace_revisor_del_tercer_nivel']['Supervisor'] = 1;
107
108  $reglas_transicion_po['Enviado_a_supervisor_del_primer_nivel']['Enviado_a_control']['Control'] = 1;
109  $reglas_transicion_po['Enviado_a_supervisor_del_segundo_nivel']['Enviado_a_enlace_revisor_del_primer_nivel']['Supervisor'] = 1;
110  $reglas_transicion_po['Enviado_a_supervisor_del_tercer_nivel']['Enviado_a_enlace_revisor_del_segundo_nivel']['Supervisor'] = 1;
111  $reglas_transicion_po['Enviado_a_supervisor_del_cuarto_nivel']['Devuelto_a_enlace_formulador_del_cuarto_nivel']['Supervisor'] = 1;
112
113  $reglas_transicion_po['Enviado_a_supervisor_del_tercer_nivel']['Devuelto_a_enlace_formulador_del_tercer_nivel']['Supervisor'] = 1;
114  $reglas_transicion_po['Enviado_a_supervisor_del_tercer_nivel']['Devuelto_a_enlace_revisor_del_tercer_nivel']['Supervisor'] = 1;
115
116  $reglas_transicion_po['Enviado_a_supervisor_del_tercer_nivel']['Devuelto_a_enlace_revisor_del_segundo_nivel']['Supervisor'] = 1;
117  $reglas_transicion_po['Enviado_a_supervisor_del_tercer_nivel']['Devuelto_a_enlace_formulador_del_segundo_nivel']['Supervisor'] = 1;
118
119  $reglas_transicion_po['Enviado_a_supervisor_del_primer_nivel']['Devuelto_a_enlace_revisor_del_primer_nivel']['Supervisor'] = 1;
120  $reglas_transicion_po['Enviado_a_supervisor_del_primer_nivel']['Devuelto_a_enlace_formulador_del_primer_nivel']['Supervisor'] = 1;
121
122  $reglas_transicion_po['Enviado_a_control']['Devuelto_a_enlace']['Control'] = 1; //Hacer envio de mensaje a supervisor (notificación)
123  $reglas_transicion_po['Aprobado']['Devuelto_a_control']['Administrador'] = 1; //Solo Administrador puede des-aprobar un proyecto operativo
124  $reglas_transicion_po['Anulado']['PreIngresado']['Administrador'] = 1;
125
126  $reglas_transicion_po['Enviado_a_control']['Anulado']['Control'] = 1;
127  $reglas_transicion_po['Enviado_a_control']['Aprobado']['Control'] = 1;
128  $reglas_transicion_po['Enviado_a_control']['Devuelto_a_supervisor_del_primer_nivel']['Control'] = 1;
129
130  //Creando el Workflow de Proyectos Operativos del proyecto SIPP 
131  $wid_po = create_workflow_sipp_mcti($name_wf_po, $states_wf_po);
132  //Generando las transiciones del Workflow
133  workflow_transition_for_sipp_mcti($wid_po,$reglas_transicion_po);
134  update_tab_roles_workflow_sipp_mcti($wid_po, $tab_roles_po);
135
136  //asignando el tipo de contenido al flujo de trabajo
137  $wid = get_wid_workflow_sipp_mcti($name_wf_po);
138  $result = db_query("SELECT wid FROM {workflow_type_map} WHERE type =  '%s'", 'proyectos_operativos');
139  $result = db_fetch_object($result);
140        if(empty($result->wid)) {
141                        db_query("INSERT INTO {workflow_type_map} (wid, type) VALUES(%d, '%s')", $wid, 'proyectos_operativos');
142        }
143        else {
144                if ($wid != $result->wid) {
145                        db_query("update {workflow_type_map} set wid = %d WHERE type = '%s'", $wid, 'proyectos_operativos');
146                }
147  }
148  //Nombre del Flujo de trabajo, estados y transición de Acciones Centralizadas
149  $name_wf_ac = "Acciones_Centralizadas";
150
151  $states_wf_ac = array(
152    'PreIngresado',
153    'Ingresado',
154    'Enviado_a_supervisor_del_primer_nivel',
155    'Enviado_a_supervisor_del_segundo_nivel',
156    'Enviado_a_supervisor_del_tercer_nivel',
157    'Enviado_a_supervisor_del_cuarto_nivel',
158    'Devuelto_a_supervisor_del_primer_nivel',
159    'Devuelto_a_supervisor_del_segundo_nivel',
160    'Devuelto_a_supervisor_del_tercer_nivel',
161    'Devuelto_a_supervisor_del_cuarto_nivel',
162    'Enviado_a_enlace_revisor_del_primer_nivel',
163    'Enviado_a_enlace_revisor_del_segundo_nivel',
164    'Enviado_a_enlace_revisor_del_tercer_nivel',
165    'Enviado_a_enlace_revisor_del_cuarto_nivel',
166    'Devuelto_a_enlace_revisor_del_primer_nivel',
167    'Devuelto_a_enlace_revisor_del_segundo_nivel',
168    'Devuelto_a_enlace_revisor_del_tercer_nivel',
169    'Devuelto_a_enlace_revisor_del_cuarto_nivel',
170    'Enviado_a_enlace_formulador_del_primer_nivel',
171    'Enviado_a_enlace_formulador_del_segundo_nivel',
172    'Enviado_a_enlace_formulador_del_tercer_nivel',
173    'Enviado_a_enlace_formulador_del_cuarto_nivel',
174    'Devuelto_a_enlace_formulador_del_primer_nivel',
175    'Devuelto_a_enlace_formulador_del_segundo_nivel',
176    'Devuelto_a_enlace_formulador_del_tercer_nivel',
177    'Devuelto_a_enlace_formulador_del_cuarto_nivel',
178    'Enviado_a_control',
179    'Devuelto_a_control',
180    'Aprobado',
181    'Anulado'
182  );
183  //Definición de las reglas de trasnsición Acciones Centralizadas
184  $reglas_transicion_ac[t('(creation)')]['PreIngresado']['author'] = 1;
185  $reglas_transicion_ac[t('(creation)')]['PreIngresado']['Enlace_Formulador'] = 1;
186  $reglas_transicion_ac['Ingresado']['Anulado']['Enlace_Formulador'] = 1;
187  $reglas_transicion_ac['Ingresado']['Enviado_a_supervisor_del_primer_nivel']['Enlace_Formulador'] = 1;
188  $reglas_transicion_ac['Ingresado']['Enviado_a_supervisor_del_segundo_nivel']['Enlace_Formulador'] = 1;
189  $reglas_transicion_ac['Ingresado']['Enviado_a_supervisor_del_tercer_nivel']['Enlace_Formulador'] = 1;
190  $reglas_transicion_ac['Ingresado']['Enviado_a_supervisor_del_cuarto_nivel']['Enlace_Formulador'] = 1;
191
192  $reglas_transicion_ac['Enviado_a_enlace_formulador_del_primer_nivel']['Enviado_a_supervisor_del_primer_nivel']['Enlace_Formulador'] = 1;
193  $reglas_transicion_ac['Enviado_a_enlace_formulador_del_segundo_nivel']['Enviado_a_supervisor_del_segundo_nivel']['Enlace_Formulador'] = 1;
194  $reglas_transicion_ac['Enviado_a_enlace_formulador_del_tercer_nivel']['Enviado_a_supervisor_del_tercer_nivel']['Enlace_Formulador'] = 1;
195  $reglas_transicion_ac['Enviado_a_enlace_formulador_del_cuarto_nivel']['Enviado_a_supervisor_del_cuarto_nivel']['Enlace_Formulador'] = 1;
196 
197  $reglas_transicion_ac['Enviado_a_enlace_revisor_del_primer_nivel']['Enviado_a_supervisor_del_primer_nivel']['Enlace_Revisor'] = 1;
198  $reglas_transicion_ac['Enviado_a_enlace_revisor_del_tercer_nivel']['Enviado_a_supervisor_del_tercer_nivel']['Enlace_Revisor'] = 1;
199  $reglas_transicion_ac['Enviado_a_enlace_revisor_del_segundo_nivel']['Enviado_a_supervisor_del_segundo_nivel']['Enlace_Revisor'] = 1;
200  $reglas_transicion_ac['Enviado_a_enlace_revisor_del_primer_nivel']['Devuelto_a_supervisor_del_segundo_nivel']['Enlace_Revisor'] = 1;
201  $reglas_transicion_ac['Enviado_a_enlace_revisor_del_segundo_nivel']['Devuelto_a_supervisor_del_tercer_nivel']['Enlace_Revisor'] = 1;
202  $reglas_transicion_ac['Enviado_a_enlace_revisor_del_tercer_nivel']['Devuelto_a_supervisor_del_cuarto_nivel']['Enlace_Revisor'] = 1;
203
204  $reglas_transicion_ac['Enviado_a_supervisor_del_primer_nivel']['Enviado_a_control']['Control'] = 1;
205  $reglas_transicion_ac['Enviado_a_supervisor_del_segundo_nivel']['Enviado_a_enlace_revisor_del_primer_nivel']['Supervisor'] = 1;
206  $reglas_transicion_ac['Enviado_a_supervisor_del_tercer_nivel']['Enviado_a_enlace_revisor_del_segundo_nivel']['Supervisor'] = 1;
207  $reglas_transicion_ac['Enviado_a_supervisor_del_cuarto_nivel']['Enviado_a_enlace_revisor_del_tercer_nivel']['Supervisor'] = 1;
208
209  $reglas_transicion_ac['Enviado_a_supervisor_del_primer_nivel']['Enviado_a_control']['Control'] = 1;
210  $reglas_transicion_ac['Enviado_a_supervisor_del_segundo_nivel']['Enviado_a_enlace_revisor_del_primer_nivel']['Supervisor'] = 1;
211  $reglas_transicion_ac['Enviado_a_supervisor_del_tercer_nivel']['Enviado_a_enlace_revisor_del_segundo_nivel']['Supervisor'] = 1;
212  $reglas_transicion_ac['Enviado_a_supervisor_del_cuarto_nivel']['Devuelto_a_enlace_formulador_del_cuarto_nivel']['Supervisor'] = 1;
213
214  $reglas_transicion_ac['Enviado_a_supervisor_del_tercer_nivel']['Devuelto_a_enlace_formulador_del_tercer_nivel']['Supervisor'] = 1;
215  $reglas_transicion_ac['Enviado_a_supervisor_del_tercer_nivel']['Devuelto_a_enlace_revisor_del_tercer_nivel']['Supervisor'] = 1;
216
217  $reglas_transicion_ac['Enviado_a_supervisor_del_tercer_nivel']['Devuelto_a_enlace_revisor_del_segundo_nivel']['Supervisor'] = 1;
218  $reglas_transicion_ac['Enviado_a_supervisor_del_tercer_nivel']['Devuelto_a_enlace_formulador_del_segundo_nivel']['Supervisor'] = 1;
219
220  $reglas_transicion_ac['Enviado_a_supervisor_del_primer_nivel']['Devuelto_a_enlace_revisor_del_primer_nivel']['Supervisor'] = 1;
221  $reglas_transicion_ac['Enviado_a_supervisor_del_primer_nivel']['Devuelto_a_enlace_formulador_del_primer_nivel']['Supervisor'] = 1;
222
223  $reglas_transicion_ac['Enviado_a_control']['Devuelto_a_enlace']['Control'] = 1; //Hacer envio de mensaje a supervisor (notificación)
224  $reglas_transicion_ac['Aprobado']['Devuelto_a_control']['Administrador'] = 1; //Solo Administrador puede des-aprobar un proyecto operativo
225  $reglas_transicion_ac['Anulado']['PreIngresado']['Administrador'] = 1;
226
227  $reglas_transicion_ac['Enviado_a_control']['Anulado']['Control'] = 1;
228  $reglas_transicion_ac['Enviado_a_control']['Aprobado']['Control'] = 1;
229  $reglas_transicion_ac['Enviado_a_control']['Devuelto_a_supervisor_del_primer_nivel']['Control'] = 1;
230
231  $tab_roles_ac = array(
232    'Administrador',
233    'Enlace_Formulador',
234    'Enlace_Revisor',
235    'Supervisor',
236    'Control'   
237  );
238 
239  ente_planificador_sipp_mcti_create_roles($tab_roles_ac);
240  ente_planificador_sipp_mcti_create_permisos($tab_roles_ac);
241  //Creando el Workflow de Acciones Centralizadas del proyecto SIPP 
242  $wid_ac = create_workflow_sipp_mcti($name_wf_ac, $states_wf_ac);
243  //Generando las transiciones del Workflow
244  workflow_transition_for_sipp_mcti($wid_ac,$reglas_transicion_ac);
245  update_tab_roles_workflow_sipp_mcti($wid_ac, $tab_roles_ac);
246
247  //asignando el tipo de contenido al flujo de trabajo
248  $wid = get_wid_workflow_sipp_mcti($name_wf_ac);
249  $result = db_query("SELECT wid FROM {workflow_type_map} WHERE type =  '%s'", 'accion_centralizada');
250  $result = db_fetch_object($result);
251        if(empty($result->wid)) {
252                        db_query("INSERT INTO {workflow_type_map} (wid, type) VALUES(%d, '%s')", $wid, 'accion_centralizada');
253        }
254        else {
255                if ($wid != $result->wid) {
256                        db_query("update {workflow_type_map} set wid = %d WHERE type = '%s'", $wid, 'accion_centralizada');
257                }
258  }
259  //notificando la instalacion del modulo
260  content_notify('install', 'ente_planificador_sipp_mcti');
261
262
263/*
264 * Implementacion del hook_uninstall()
265 */
266function ente_planificador_sipp_mcti_uninstall() {
267        db_query("DELETE FROM {variable} WHERE name LIKE '%s'", 'ente_planificador_sipp_%'); 
268        content_notify('uninstall', 'ente_planificador_sipp_mcti');
269        //Eliminando permisos y roles del SIPP
270        $roles = array(
271    'Administrador',
272    'Enlace_Formulador',
273    'Enlace_Revisor',
274    'Supervisor',
275    'Control'
276  );
277
278        //Eliminado Workflow del SIPP
279        $workflow_sipp = array("Proyectos_Operativos", "Acciones_Centralizadas");
280        foreach ($workflow_sipp as $name_wf){
281                $wid_workflow = get_wid_workflow_sipp_mcti($name_wf);
282      if (!is_null($wid_workflow)){
283                   workflow_deletewf($wid_workflow);
284                   drupal_set_message(t('Se elimino el Workflow @wf con workflow id(wid): @wid', array('@wf' => $name_wf, '@wid' => $wid_workflow ),'status'));         
285               
286                }
287        };
288}
289
290/**
291 * crea las variables y guarda los estados del workflow
292 */
293function create_workflow_sipp_mcti($name_wf, $states_wf) {
294  $wid = workflow_create($name_wf); 
295  foreach ($states_wf as $i => $value) {
296    $state_wf = array('wid' => $wid, 'state' => $value, 'weight' => $i+1);
297    $sid = workflow_state_save($state_wf);   
298  }
299  variable_set('ente_planificador_sipp_wf_' . $name_wf, $wid); 
300  return $wid;
301}
302
303/*
304 * Crea las transiciones del workflow
305 */
306function workflow_transition_for_sipp_mcti($wid,$reglas_transicion) {
307  $transition = array();
308  $roles = workflow_get_roles();
309  $states = workflow_get_states($wid);
310  foreach ($states as $state_id => $name) {   
311    foreach ($states as $nested_state_id => $nested_name) {   
312      if ($nested_name == t('(creation)')) {
313        // Don't allow transition TO (creation).
314        continue;
315      }     
316      if ($nested_state_id != $state_id) {
317        // Need to generate checkboxes for transition from $state to $nested_state.
318        $from = $state_id;
319        $to = $nested_state_id;
320        foreach ($roles as $rid => $role_name) {                   
321                if ($reglas_transicion[$name][$nested_name][$role_name] == 1) {     
322                            $transition[$from][$to][$rid] = TRUE;
323                          }
324                else
325                  $transition[$from][$to][$rid] = 0;     
326        }
327      }
328    }
329  } 
330  workflow_update_transitions($transition); 
331}
332
333/**
334 * Actualiza los roles de del workflow
335 */
336function update_tab_roles_workflow_sipp_mcti($wid, $tab_roles_wf) {
337  $tab_roles = array(); 
338  $roles = workflow_get_roles();
339  foreach ($tab_roles_wf as $id_role_wf => $name_role_wf) {
340    foreach ($roles as $rid => $role_name){     
341      if ($name_role_wf == $role_name){
342        $tab_roles[$id_role_wf] = $rid;
343      }     
344    }   
345  }
346  db_query("UPDATE {workflows} SET tab_roles = '%s' WHERE wid = %d", implode(',', $tab_roles), $wid); 
347}
348
349/**
350 * obtien el wid de workflows
351 */
352function get_wid_workflow_sipp_mcti($name_wf) {
353        $result = db_query("SELECT wid FROM {workflows} WHERE name = '%s'", $name_wf); 
354        $wid = null;
355  if ($obj_wid = db_fetch_object($result)) {
356    $wid = $obj_wid->wid;
357  }
358  return $wid;
359}
360
361/*
362 * Crea los roles
363 */
364function ente_planificador_sipp_mcti_create_roles($roles) {
365  foreach ($roles as $rol) {
366    $role = ente_planificador_sipp_mcti_get_role($rol);
367    if (!$role) {
368      db_query("INSERT INTO {role} (name) VALUES('%s')", $rol);
369    }
370  }
371}
372
373/*
374 * Crea los permisos por rol
375 */
376function ente_planificador_sipp_mcti_create_permisos($roles) {
377  $permissions_planificador = array(
378    0 => 'edit own planificador',
379    1 => 'ver planificador',
380    2 => 'access user profiles',
381    3 => 'change own username',
382  );
383  $permissions_control = array(
384    0 => 'admin planificador',
385    1 => 'edit own planificador',
386    2 => 'ver planificador',
387    3 => 'access user profiles',
388    4 => 'change own username',
389  );
390  foreach ($roles as $rol) {
391    $role = ente_planificador_sipp_mcti_get_role($rol);
392    if ($role)  {
393      $permissions = $permissions_planificador;
394      if ($rol == 'Control') {
395        $permissions = $permissions_control;
396      }
397      // Check to see if there are existing permissions
398      db_query("INSERT INTO {permission} (rid, perm, tid) VALUES (%d, '%s', 0)", $role->rid, implode(', ', $permissions), 0);
399    }
400  }
401}
402
403/*
404 * Elimina un rol y sus permisos
405 *
406function ente_planificador_sipp_mcti_delete_role($role_name) {
407  // Look up the role to see if it exists already
408  $role = ente_planificador_sipp_mcti_get_role($role_name);
409  if ($role) {
410    db_query('DELETE FROM {role} WHERE rid = %d', $role->rid);
411    db_query('DELETE FROM {permission} WHERE rid = %d', $role->rid);
412    // Update the users who have this role set:
413    db_query('DELETE FROM {users_roles} WHERE rid = %d', $role->rid);
414    return $role;
415  }
416  return FALSE;
417}*/
418
419/*
420 * Consulta un rol
421 */
422function ente_planificador_sipp_mcti_get_role($role_name) {
423  $role = db_fetch_object(db_query("SELECT * FROM {role} r WHERE r.name = '%s'", $role_name));
424  return $role;
425}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.