enviadas a control (supervisor) $reglas_transicion_ac['Enviadas_a_supervisor']['Devueltas_a_enlace']['Supervisor'] = 1; $reglas_transicion_ac['Enviadas_a_control']['Aprobadas']['Control'] = 1; //enviadas a control -> aprobadas (control) $reglas_transicion_ac['Enviadas_a_control']['Devueltas_a_enlace']['Control'] = 1; //enviadas a control -> devueltas a enlace (control) $reglas_transicion_ac['Devueltas_a_enlace']['Enviadas_a_supervisor']['Enlace'] = 1; $reglas_transicion_ac['Aprobadas']['Devueltas_a_control']['Administrador'] = 1; $reglas_transicion_ac['Devueltas_a_control']['Devueltas_a_enlace']['Control'] = 1; //Devueltas_a_control -> devueltas a enlace (control) $reglas_transicion_ac['Devueltas_a_control']['Aprobadas']['Control'] = 1; $tab_roles_ac=array( Administrador, Enlace, Supervisor, Control ); //Creando el Workflow de Proyectos Operativos del proyecto SIPP $wid_po=create_workflow_sipp($name_wf_po, $states_wf_po); //Generando las transiciones del Workflow workflow_transition_for_sipp($wid_po,$reglas_transicion_po); update_tab_roles_workflow($wid_po, $tab_roles_po); //Creando el Workflow de Acciones Centralizadas del proyecto SIPP $wid_ac=create_workflow_sipp($name_wf_ac, $states_wf_ac); //Generando las transiciones del Workflow workflow_transition_for_sipp($wid_ac,$reglas_transicion_ac); update_tab_roles_workflow($wid_ac, $tab_roles_ac); content_notify('install', 'ente_planificador_sipp'); } /* * Implementacion del hook_uninstall() del ente_planificador_sipp */ function ente_planificador_sipp_uninstall() { db_query("DELETE FROM {variable} WHERE name LIKE '%s'", 'ente_planificador_sipp_%'); content_notify('uninstall', 'ente_planificador_sipp'); //Eliminando permisos y roles del SIPP $roles = array("Administrador", "Enlace", "Supervisor", "Control"); foreach ($roles as $rol) { $rid_role = get_rid_role_sipp($rol); if (!is_null($rid_role)){ db_query('DELETE FROM {permission} WHERE rid = %d', $rid_role); db_query("DELETE FROM {role} WHERE rid = %d", $rid_role); drupal_set_message(t('Se elimino el rol @name_rol y sus permisos asignados en el sistema SIPP', array('@name_rol' => $rol),'status')); } }; //Eliminado Workflow del SIPP $workflow_sipp = array("Proyectos_Operativos", "Acciones_Centralizadas"); foreach ($workflow_sipp as $name_wf){ $wid_workflow = get_wid_workflow_sipp($name_wf); if (!is_null($wid_workflow)){ workflow_deletewf($wid_workflow); drupal_set_message(t('Se elimino el Workflow @wf con workflow id(wid): @wid', array('@wf' => $name_wf, '@wid' => $wid_workflow ),'status')); } //$wid_workflow = db_result(db_query("SELECT wid FROM {workflows} WHERE name = '%s'", $name_wf)); }; } function create_workflow_sipp($name_wf, $states_wf){ $wid = workflow_create($name_wf); foreach($states_wf as $i => $value) { $state_wf = array('wid' => $wid, 'state' => $value, 'weight' => $i+1); $sid = workflow_state_save($state_wf); } variable_set('ente_planificador_sipp_wf_' . $name_wf, $wid); return $wid; } function workflow_transition_for_sipp($wid,$reglas_transicion){ $transition = array(); $roles = workflow_get_roles(); $states = workflow_get_states($wid); foreach ($states as $state_id => $name) { foreach ($states as $nested_state_id => $nested_name) { if ($nested_name == t('(creation)')) { // Don't allow transition TO (creation). continue; } if ($nested_state_id != $state_id) { // Need to generate checkboxes for transition from $state to $nested_state. $from = $state_id; $to = $nested_state_id; foreach ($roles as $rid => $role_name) { if($reglas_transicion[$name][$nested_name][$role_name] == 1){ $transition[$from][$to][$rid]=TRUE; } else $transition[$from][$to][$rid]=0; } } } } workflow_update_transitions($transition); } function update_tab_roles_workflow($wid, $tab_roles_wf){ $tab_roles = array(); $roles = workflow_get_roles(); foreach ($tab_roles_wf as $id_role_wf => $name_role_wf){ foreach ($roles as $rid => $role_name){ if($name_role_wf == $role_name){ $tab_roles[$id_role_wf]=$rid; } } } db_query("UPDATE {workflows} SET tab_roles = '%s' WHERE wid = %d", implode(',', $tab_roles), $wid); } function create_roles_sipp(){ db_query("INSERT INTO {role} (rid, name) VALUES (3, '%s')", 'Administrador'); db_query("INSERT INTO {role} (rid, name) VALUES (4, '%s')", 'Enlace'); db_query("INSERT INTO {role} (rid, name) VALUES (5, '%s')", 'Supervisor'); db_query("INSERT INTO {role} (rid, name) VALUES (6, '%s')", 'Control'); } function create_permission_roles_sipp(){ db_query("INSERT INTO {permission} (rid, perm, tid) VALUES (4, 'edit own planificador, ver planificador, access user profiles, change own username', 0)"); db_query("INSERT INTO {permission} (rid, perm, tid) VALUES (5, 'edit own planificador, ver planificador, access user profiles, change own username', 0)"); db_query("INSERT INTO {permission} (rid, perm, tid) VALUES (6, 'admin planificador, edit own planificador, ver planificador, access user profiles, change own username', 0)"); } function get_rid_role_sipp($role) { $result = db_query("SELECT rid FROM {role} WHERE name = '%s'",$role); $rid = NULL; if ($obj_role = db_fetch_object($result)) { $rid = $obj_role->rid; }; return $rid; } function get_wid_workflow_sipp($name_wf) { $wid_workflow = db_query("SELECT wid FROM {workflows} WHERE name = '%s'", $name_wf); $wid = NULL; if ($obj_wid = db_fetch_object($wid_workflow)) { $wid = $obj_wid->wid; }; return $wid; }