'. t("Este modulo se encarga de mostrar los mensajes generados por los cambios de estados") .'
';
break;
}
return $output;
} // function gestion_mensajes_help
/*
* Implementation of hook_menu()
*/
function gestion_mensajes_menu() {
$items = array();
$items['ver_lista_de_mensajes_recibidos/%identif_usuario'] = array(
'title' => 'Mis Mensajes',
'type' => MENU_CALLBACK,
'access callback' => '_bandeja_entrada_access',
'access arguments' => array(1),
'page callback' => 'mis_mensajes_sipp_page',
'page arguments' => array(1),
'weight' => 2,
);
$items['ver_mensaje/%identif_msj'] = array(
'title' => 'Mensaje',
'type' => MENU_CALLBACK,
'access callback' => '_gestion_mensajes_access',
'page callback' => 'ver_el_mensaje_sipp_page',
'page arguments' => array(1),
'weight' => 2,
);
return $items;
}
//**************************************************************************************************************************************************
//permisos de acceso a las paginas
/**
* verificar ...
*/
function _gestion_mensajes_access() {
return true;
} // function _gestion_mensajes_access
/**
* verificar ...
*/
function _bandeja_entrada_access($id_usuario) {
global $user;
if(($user->uid ==1) || ($user->uid == $id_usuario)){
return true;
}
return false;
} // function _gestion_mensajes_access
//carga de campos en las urls
/**
* Implementation of identif_msj_load().
* Menu loader callback. Load a mes.
*/
function identif_msj_load($idmsj = 0) {
settype($idmsj, "integer");
if ($idmsj >= 0) {
return $idmsj;
}
return FALSE;
}
function identif_usuario_load($id_usuario = 0) {
settype($id_usuario, "integer");
if ($id_usuario >= 0) {
return $id_usuario;
}
return FALSE;
}
//**************************************************************************************************************************************************
//pagina de mensajes del usuario
/**
* Función que crea y envia el msj segun el cambio de estadolos estados
*/
function _crear_y_enviar_msj_en_db($mensaje) {
//segun usuarios relacionados con el ente planificador asociado al nodo
$lista_de_usuarios = _obtener_posibles_destinatarios_del_msj($mensaje['nid']);
//crear mensaje
$id_msj = _crear_mensaje_en_bd($mensaje);
//obtener los roles que deben recibir mensaje, segun el cambio de estado
$roles_receptores_de_msj = _obtener_roles_que_recibiran_mensaje_segun_cambio_estado($mensaje);
//realizar envío
if($roles_receptores_de_msj['enlace']==1){
foreach($lista_de_usuarios['tipo_enlace'] as $usuario_ente){
_enviar_mensaje_en_bd($usuario_ente['id_usuario'], $id_msj);
}
}
if($roles_receptores_de_msj['supervisor']==1){
foreach($lista_de_usuarios['tipo_supervisor'] as $usuario_ente){
_enviar_mensaje_en_bd($usuario_ente['id_usuario'], $id_msj);
}
}
if($roles_receptores_de_msj['control']==1){
foreach($lista_de_usuarios['tipo_control'] as $usuario_ente){
_enviar_mensaje_en_bd($usuario_ente['id_usuario'], $id_msj);
}
}
return true;
}
/**
* Función que obtiene la lista de posibles destinatarios segun el nodo asociado
*/
function _obtener_posibles_destinatarios_del_msj($id_nodo_asociado) {
//function _enviar_msj_por_cambio_de_estado($mensaje) {
//obtener nodo asociado
if(isset($id_nodo_asociado)){
$node = node_load($id_nodo_asociado);
}
//identificar tipo de nodo, para buscar el ente planificador
if($node->type == 'proyectos_operativos'){
$ente_planificador = node_load($node->field_proyecto_ente[0]['nid']);
}elseif($node->type == 'accion_especifica'){
$nodo_proyecto = node_load($node->field_accion_esp_proyecto[0]['nid']);
$ente_planificador = node_load($nodo_proyecto->field_proyecto_ente[0]['nid']);
}elseif($node->type == 'accion_centralizada'){
$ente_planificador = node_load($node->field_acciones_ente[0]['nid']);
}else{
$ente_planificador = NULL;
}
//cargar usuarios del ente planificador asociado al nodo
$usuarios_enlace = array();
$usuarios_supervisor = array();
if($ente_planificador != NULL){
if ($ente_planificador->nid && $ente_planificador->type == 'ente_planificador') {
$sql = "SELECT * FROM {ente_user_planificador} WHERE nid = %d";
$queryResult = db_query ( $sql, $ente_planificador->nid);
while ($usuarios_del_ente = db_fetch_array ( $queryResult ) ){
$usuario_ente = array(
'id_usuario' => $usuarios_del_ente['usuario'],
'id_ente' => $ente_planificador->nid,
);
$sql1 = "SELECT r.name FROM {users_roles} ur, {role} r WHERE ur.uid = %d AND ur.rid = r.rid";
$queryResult1 = db_query ( $sql1, $usuarios_del_ente['usuario']);
while ($roles = db_fetch_array ( $queryResult1 ) ){
if($roles['name']=='Enlace'){
$usuarios_enlace[] = $usuario_ente;
break;
}elseif($roles['name']=='Supervisor'){
$usuarios_supervisor[] = $usuario_ente;
break;
}
}
}
}
}
//cargar usuario control
$usuarios_control = array();
$sql2 = "SELECT ep.nid as idnodo_ente, eup.usuario as uid_usuariocontrol FROM {ente_planificador} ep, {ente_user_planificador} eup WHERE ep.tipo = 1 AND ep.nid = eup.nid";
$queryResult2 = db_query ( $sql2);
while ($usuarios_del_ente_macro = db_fetch_array ( $queryResult2 ) ){
$usuario_ente = array(
'id_usuario' => $usuarios_del_ente_macro['uid_usuariocontrol'],
'id_ente' => $usuarios_del_ente_macro['idnodo_ente'],
);
$usuarios_control[] = $usuario_ente;
}
//lista de usuarios: posibles destinatarios
$lista_de_usuarios = array(
'tipo_enlace' => $usuarios_enlace,
'tipo_supervisor' => $usuarios_supervisor,
'tipo_control' => $usuarios_control,
);
return $lista_de_usuarios;
}
/**
* Función que crea el mensaje en base de datos
*/
function _crear_mensaje_en_bd($mensaje) {
db_query("INSERT INTO {bandejaentrada_usuario_mensajes} (fecha, nid, tipo_proceso, euid, estado, mensaje) VALUES (%d, %d, %d, %d, %d, '%s')", $mensaje['fecha'], $mensaje['nid'], $mensaje['tipo_proceso'], $mensaje['euid'], $mensaje['estado'], check_plain($mensaje['mensaje']));
$ultimo_mensaje_creado = db_query("SELECT max(a.id_msj) AS id FROM {bandejaentrada_usuario_mensajes} AS a WHERE a.nid = %d AND a.tipo_proceso = %d", $mensaje['nid'], $mensaje['tipo_proceso']);
$id_mensaje_creado = db_fetch_object($ultimo_mensaje_creado) ;
$id_msj = $id_mensaje_creado->id;
return $id_msj;
}
/**
* Función que obtiene la lista de posibles destinatarios segun el nodo asociado
*/
function _obtener_roles_que_recibiran_mensaje_segun_cambio_estado($mensaje) {
$roles_receptores_de_msj = array(
'enlace' => 0,
'supervisor' => 0,
'control' => 0,
);
//obtener nombres de estados
$estados = _obtener_estados_seguimiento_mes();
$estados_2 = _obtener_estados_seguimiento_mes_2();
if(isset($mensaje['estado_ant'])){
$nombre_estado_anterior = $estados['states'][$mensaje['estado_ant']];
if(!isset($nombre_estado_anterior)){
$nombre_estado_anterior = $estados_2['states'][$mensaje['estado_ant']];
}
}
if(isset($mensaje['estado'])){
$nombre_estado_actual = $estados['states'][$mensaje['estado']];
if(!isset($nombre_estado_actual)){
$nombre_estado_actual = $estados_2['states'][$mensaje['estado']];
}
}
//enviar mensaje a los respectivos usuarios segun cambio de estados
if (preg_match('/(nviad)(([a-z]|[_])*)(upervisor)/i',$nombre_estado_actual)){//estado 'Enviado_a_Supervisor';
//Enviar msj a Supervisor
$roles_receptores_de_msj['supervisor'] = 1;
}
if (preg_match('/(nviad)(([a-z]|[_])*)(ontrol)/i',$nombre_estado_actual)){//estado 'Enviado_a_Control';
//Enviar msj a Control
$roles_receptores_de_msj['control'] = 1;
}
if (preg_match('/(probad)/i',$nombre_estado_actual)){//estado 'Aprobado';
//Enviar msj a Enlace
$roles_receptores_de_msj['enlace'] = 1;
//Enviar msj a Supervisor
$roles_receptores_de_msj['supervisor'] = 1;
}
if (preg_match('/(evuelt)(([a-z]|[_])*)(ontrol)/i',$nombre_estado_actual)){//estado 'Devuelto_a_Control';
//Enviar msj a Control (proyecto desaprobado)
$roles_receptores_de_msj['control'] = 1;
//Enviar msj a Enlace (proyecto desaprobado)
$roles_receptores_de_msj['enlace'] = 1;
//Enviar msj a Supervisor (proyecto desaprobado)
$roles_receptores_de_msj['supervisor'] = 1;
}
if (preg_match('/(evuelt)(([a-z]|[_])*)(nlace)/i',$nombre_estado_actual)){//estado 'Devuelto_a_Enlace';
//Enviar msj a Enlace
$roles_receptores_de_msj['enlace'] = 1;
if (preg_match('/(nviad|evuelt)(([a-z]|[_])*)(ontrol)/i',$nombre_estado_anterior)){
//Enviar msj a Supervisor
$roles_receptores_de_msj['supervisor'] = 1;
}
}
if (preg_match('/(nulad)/i',$nombre_estado_actual)){//estado 'Anulado';
if (!preg_match('/(ngresad)/i',$nombre_estado_anterior)){//si se anula, y el estado anterior no es ingresado
//Enviar msj a Enlace
$roles_receptores_de_msj['enlace'] = 1;
//Enviar msj a Supervisor
$roles_receptores_de_msj['supervisor'] = 1;
}
}
return $roles_receptores_de_msj;
}
/**
* Función que envia el mensaje en base de datos
*/
function _enviar_mensaje_en_bd($id_usuario_destinatario, $id_msj) {
db_query("INSERT INTO {bandejaentrada_usuario} (buid, id_msj) VALUES (%d, %d)", $id_usuario_destinatario, $id_msj);
return true;
}
//**************************************************************************************************************************************
//consulta de los mensajes
/**
* Pagina que muestra los mensajes
*/
function mis_mensajes_sipp_page($id_usuario = 0) {
drupal_set_title(t('Mis Mensajes'));
$tipos_de_nodo = array(
1 => 'Acción Específica de Proyecto',
2 => 'Proyecto Operativo',
3 => 'Acciones Centralizadas',
);
$tipos_de_proceso = array(
1 => 'Formulación',
2 => 'Reformulación',
3 => 'Seguimiento',
);
$output = '';
$output .= '
';
$tablas = array();
$header = array();
$header[] = array('data' => t('Fecha'));
$header[] = array('data' => t('Tipo de Proceso'));
$header[] = array('data' => t('Tipo de Nodo'));
$header[] = array('data' => t('Acción Ejecutada'));
$header[] = array('data' => t('Usuario Ejecutor'));
$header[] = array('data' => t('Opciones Disponibles'));
global $user;
if($id_usuario > 1){//para un usuario
$consulta_sql0 = "SELECT count(id_bandeja_msj) as total from {bandejaentrada_usuario} as bandeja, {bandejaentrada_usuario_mensajes} as mensaje where bandeja.id_msj=mensaje.id_msj and bandeja.buid=%d and bandeja.visto_por_destinatario=0 ";//consulta mensajes
$Resultado_consulta0 = db_query ($consulta_sql0, $id_usuario);
$mensajes_usuario = db_fetch_array ( $Resultado_consulta0 );
$cant_mensajes_usuario = $mensajes_usuario['total'];
$consulta_sql = "SELECT * from {bandejaentrada_usuario} as bandeja, {bandejaentrada_usuario_mensajes} as mensaje where bandeja.id_msj=mensaje.id_msj and bandeja.buid=%d order by id_bandeja_msj desc ";//consulta mensajes
$Resultado_consulta = db_query ($consulta_sql, $id_usuario);
}elseif($id_usuario == 1){//usuario administrador (todos los mensajes)
$consulta_sql0 = "SELECT count(id_msj) as total from {bandejaentrada_usuario_mensajes} as mensaje where mensaje.visto_por_admin=0 ";//consulta mensajes
$Resultado_consulta0 = db_query ($consulta_sql0, $id_usuario);
$mensajes_usuario = db_fetch_array ( $Resultado_consulta0 );
$cant_mensajes_usuario = $mensajes_usuario['total'];
$consulta_sql = "SELECT * from {bandejaentrada_usuario_mensajes} as mensaje order by id_msj desc ";//consulta mensajes
$Resultado_consulta = db_query ($consulta_sql);
}
if($user->uid == $id_usuario){
if($cant_mensajes_usuario > 0){
$output .= $cant_mensajes_usuario > 1? 'Hay ('.$cant_mensajes_usuario.') mensajes nuevos
' : 'Hay (1) mensaje nuevo
';
}else{
$output .= 'No hay mensajes nuevos
';
}
}else{
drupal_set_title(t('Mensajes para usuario ').$id_usuario);
}
$rows = array();
while($mensajes_usuario = db_fetch_array ( $Resultado_consulta )){
$row = array();
//verificar si es admin
$mensajes_usuario_visto = $user->uid == 1? $mensajes_usuario['visto_por_admin']: $mensajes_usuario['visto_por_destinatario'];
//fecha
$fecha_formato_cambio_estado = format_date($mensajes_usuario['fecha']);
$row[] = array('data' => $fecha_formato_cambio_estado, );
//tipo de proceso
$t_proc = $mensajes_usuario['tipo_proceso'];
$tipo_proceso = $tipos_de_proceso[$t_proc];
$row[] = array('data' => $tipo_proceso, );
//tipo de nodo
$nodo_asociado = node_load($mensajes_usuario['nid']);
if($nodo_asociado->type == 'accion_especifica'){
$tipo_nodo = $tipos_de_nodo[1];
}elseif($nodo_asociado->type == 'proyectos_operativos'){
$tipo_nodo = $tipos_de_nodo[2];
}elseif($nodo_asociado->type == 'accion_centralizada'){
$tipo_nodo = $tipos_de_nodo[3];
}else{
$tipo_nodo = '';
}
$row[] = array('data' => $tipo_nodo, );
//accion ejecutada
$estados = _obtener_estados_seguimiento_mes();
$estados_2 = _obtener_estados_seguimiento_mes_2();
$nombre_estado = $estados['states'][$mensajes_usuario['estado']];
if(!isset($nombre_estado)){
$nombre_estado = $estados_2['states'][$mensajes_usuario['estado']];
}
$accion_realizada = _nombre_accion_segun_estado($nombre_estado);
$row[] = array('data' => $accion_realizada, );
//usuario que realizo la acción
$nodo_usuario_ejec = user_load($mensajes_usuario['euid']);
$row[] = array('data' => $nodo_usuario_ejec->name, );
$links = array();
$enlace_ver_nuevo = l(t('Leer mensaje (**nuevo**)'), 'ver_mensaje/' . $mensajes_usuario['id_msj']);
$enlace_ver = l(t('Leer mensaje'), 'ver_mensaje/' . $mensajes_usuario['id_msj']);
$links[] = $mensajes_usuario_visto == 0 ? array('data' => $enlace_ver_nuevo, 'style' => 'font-weight: bold;',) : array('data' => $enlace_ver, );
$row[] = array('data' => theme('item_list', $links),);
$rows[] = $row;
}
$tablas[]= theme('table', $header, $rows);
if (count($tablas)) {
$output .= '';
}
return $output;
}
//*************************************************************************************************************************
//un mensaje particular
/**
* Pagina que muestra un mensaje
*/
function ver_el_mensaje_sipp_page($idmsj = 0) {
$tipos_de_nodo = array(
1 => 'Acción Específica de Proyecto',
2 => 'Proyecto Operativo',
3 => 'Acciones Centralizadas',
);
$tipos_de_proceso = array(
1 => 'Formulación',
2 => 'Reformulación',
3 => 'Seguimiento',
);
$output='';
global $user;
$consulta_sql = "SELECT * from {bandejaentrada_usuario_mensajes} WHERE id_msj=%d ";//consulta mensajes
$Resultado_consulta = db_query ($consulta_sql, $idmsj);
$mensajes_usuario = db_fetch_array ( $Resultado_consulta );
$consulta_sql1 = "SELECT * from {bandejaentrada_usuario} WHERE id_msj=%d AND buid=%d ";//consulta mensajes en bandeja de entrada
$Resultado_consulta1 = db_query ($consulta_sql1, $idmsj, $user->uid);
$mensajes_usuario_bandeja = db_fetch_array ( $Resultado_consulta1 );
if(($user->uid==1)&&($mensajes_usuario['visto_por_admin']==0)){
$exe_query = db_query("UPDATE {bandejaentrada_usuario_mensajes} SET visto_por_admin = %d WHERE id_msj = %d", 1, $mensajes_usuario['id_msj'] );
}elseif(($user->uid > 1) && ($mensajes_usuario_bandeja['visto_por_destinatario']==0)){
$exe_query = db_query("UPDATE {bandejaentrada_usuario} SET visto_por_destinatario = %d WHERE id_bandeja_msj = %d ", 1, $mensajes_usuario_bandeja['id_bandeja_msj']);
}else{
if(($user->uid!=1) && !isset($mensajes_usuario_bandeja['id_bandeja_msj']) ){
//un usuario al que no se le envio el msj
return $output;
}
}
$tablas = array();
$header = array();
$rows = array();
//fecha
$row = array();
$row[] = array('data' => 'Fecha: ', 'style' => 'font-weight: bold;',);
$fecha_formato_cambio_estado = format_date($mensajes_usuario['fecha']);
$row[] = array('data' => $fecha_formato_cambio_estado, );
$rows[] = $row;
//tipo de nodo
$nodo_asociado = node_load($mensajes_usuario['nid']);
if($nodo_asociado->type == 'accion_especifica'){
$tipo_nodo = $tipos_de_nodo[1];
}elseif($nodo_asociado->type == 'proyectos_operativos'){
$tipo_nodo = $tipos_de_nodo[2];
}elseif($nodo_asociado->type == 'accion_centralizada'){
$tipo_nodo = $tipos_de_nodo[3];
}else{
$tipo_nodo = '';
}
//tipo de proceso
$row = array();
$row[] = array('data' => 'Tipo de Proceso - Nodo: ', 'style' => 'font-weight: bold;',);
$t_proc = $mensajes_usuario['tipo_proceso'];
$tipo_proceso = $tipos_de_proceso[$t_proc];
$row[] = array('data' => $tipo_proceso.' - '.$tipo_nodo, );
$rows[] = $row;
//accion ejecutada
$row = array();
$row[] = array('data' => 'Acción Ejecutada: ', 'style' => 'font-weight: bold;',);
$estados = _obtener_estados_seguimiento_mes();
$estados_2 = _obtener_estados_seguimiento_mes_2();
$nombre_estado = $estados['states'][$mensajes_usuario['estado']];
if(!isset($nombre_estado)){
$nombre_estado = $estados_2['states'][$mensajes_usuario['estado']];
}
$accion_realizada = _nombre_accion_segun_estado($nombre_estado);
$row[] = array('data' => $accion_realizada, );
$rows[] = $row;
//usuario que realizo la acción
$row = array();
$row[] = array('data' => 'Usuario Ejecutor: ', 'style' => 'font-weight: bold;',);
$nodo_usuario_ejec = user_load($mensajes_usuario['euid']);
$row[] = array('data' => $nodo_usuario_ejec->name, );
$rows[] = $row;
//Mensaje
$row = array();
$row[] = array('data' => 'Contenido Mensaje: ', 'style' => 'font-weight: bold;',);
$row[] = array('data' => $mensajes_usuario['mensaje'], );
$rows[] = $row;
//enlaces
$row = array();
$row[] = array('data' => 'Enlaces Relacionados: ', 'style' => 'font-weight: bold;',);
$links = _obtener_enlaces_relacionados_segun_tiponodo_y_proceso($mensajes_usuario['nid'], $t_proc);
$row[] = array('data' => theme('item_list', $links),);
$rows[] = $row;
$tablas[]= theme('table', $header, $rows);
if (count($tablas)) {
$output .= '';
}
return $output;
}
//----------------------------------------------------------------------------------------------------------------------------
function _nombre_accion_segun_estado($nombre_estado='') {
if (preg_match('/(ngresad)/i',$nombre_estado)){
$expresion_titulo = t('Ingresado');
}elseif (preg_match('/(nviad|evuelt)(([a-z]|[_])*)(nlace)/i',$nombre_estado)){
$expresion_titulo = t('Enviado a Enlace');
}elseif (preg_match('/(nviad|evuelt)(([a-z]|[_])*)(upervisor)/i',$nombre_estado)){
$expresion_titulo = t('Enviado a Supervisor');
}elseif (preg_match('/(nviad)(([a-z]|[_])*)(ontrol)/i',$nombre_estado)){
$expresion_titulo = t('Enviado a Control');
}elseif (preg_match('/(evuelt)(([a-z]|[_])*)(ontrol)/i',$nombre_estado)){
$expresion_titulo = t('Enviado a Control (Desaprobado)');
}elseif (preg_match('/(probad)/i',$nombre_estado)){
$expresion_titulo = t('Aprobado');
}elseif (preg_match('/(nulad)/i',$nombre_estado)){
$expresion_titulo = t('Anulado');
}else{
$expresion_titulo = $nombre_estado;
}
return $expresion_titulo;
}
function _obtener_enlaces_relacionados_segun_tiponodo_y_proceso($id_nodo = 0, $tipo_de_proc = 1) {
//tipo de nodo
$tipos_de_nodo = array(
1 => 'Acción Específica de Proyecto',
2 => 'Proyecto Operativo',
3 => 'Acciones Centralizadas',
);
$nodo_asociado = node_load($id_nodo);
if($nodo_asociado->type == 'accion_especifica'){
$tipo_nodo = $tipos_de_nodo[1];
}elseif($nodo_asociado->type == 'proyectos_operativos'){
$tipo_nodo = $tipos_de_nodo[2];
}elseif($nodo_asociado->type == 'accion_centralizada'){
$tipo_nodo = $tipos_de_nodo[3];
}else{
$tipo_nodo = '';
}
//tipo de proceso
$tipos_de_proceso = array(
1 => 'Formulación',
2 => 'Reformulación',
3 => 'Seguimiento',
);
$tipo_proc = $tipos_de_proceso[$tipo_de_proc];
$links = array();
if(($tipo_proc == 'Formulación')&&($tipo_nodo == 'Proyecto Operativo')){
//(1) Formulación de Proyecto Operativo (definición)
$enlace = l(t('Consultar Proyecto'), 'proyectosop/' . $id_nodo);
$links[] = array('data' => $enlace, );
$enlace = l(t('Flujo de trabajo del proyecto'), 'proyectosop/' . $id_nodo . '/workflow');
$links[] = array('data' => $enlace, );
}elseif(($tipo_proc == 'Formulación')&&($tipo_nodo == 'Acciones Centralizadas')){
//(2) Formulación de Acciones Centralizadas (definición)
$enlace = l(t('Consultar Acciones Centralizadas'), 'node/' . $id_nodo );
$links[] = array('data' => $enlace, );
$enlace = l(t('Flujo de trabajo de las Acciones Centralizadas'), 'node/' . $id_nodo . '/workflow');
$links[] = array('data' => $enlace, );
}elseif(($tipo_proc == 'Seguimiento')&&($tipo_nodo == 'Proyecto Operativo')){
//(3) Seguimiento de Proyecto Operativo
$enlace = l(t('Consultar Proyecto'), 'proyectosop/' . $id_nodo);
$links[] = array('data' => $enlace, );
$enlace = l(t('Consultar seguimiento del proyecto'), 'node/' . $id_nodo . '/seguimiento_proyecto');
$links[] = array('data' => $enlace, );
}elseif(($tipo_proc == 'Seguimiento')&&($tipo_nodo == 'Acción Específica de Proyecto')){
//(4) Seguimiento de Acción Específica de Proyecto
$nodo_proyecto = node_load($nodo_asociado->field_accion_esp_proyecto[0]['nid']);
$enlace = l(t('Consultar Acción Específica de Proyecto'), 'proyectosop/' . $nodo_proyecto->nid . '/ae/' . $id_nodo . '/ver');
$links[] = array('data' => $enlace, );
$enlace = l(t('Consultar seguimiento de la acción específica de proyecto'), 'node/' . $id_nodo . '/seguimiento_aeproyecto');
$links[] = array('data' => $enlace, );
}elseif(($tipo_proc == 'Seguimiento')&&($tipo_nodo == 'Acciones Centralizadas')){
//(5) Seguimiento de Acciones Centralizadas
$enlace = l(t('Consultar Acciones Centralizadas'), 'node/' . $id_nodo->nid );
$links[] = array('data' => $enlace, );
$enlace = l(t('Consultar seguimiento de las acciones centralizadas'), 'node/' . $id_nodo . '/seguimiento');
$links[] = array('data' => $enlace, );
}elseif(($tipo_proc == 'Reformulación')&&($tipo_nodo == 'Proyecto Operativo')){
//(6) Reformulación de Proyecto Operativo
$enlace = l(t('Consultar Proyecto'), 'proyectosop/' . $id_nodo);
$links[] = array('data' => $enlace, );
$enlace = l(t('Ver lista de reformulaciones del proyecto'), 'proyectosop/' . $id_nodo . '/reformular');
$links[] = array('data' => $enlace, );
}elseif(($tipo_proc == 'Reformulación')&&($tipo_nodo == 'Acciones Centralizadas')){
//(7) Reformulación de Acciones Centralizadas
$enlace = l(t('Consultar Acciones Centralizadas'), 'node/' . $id_nodo);
$links[] = array('data' => $enlace, );
$enlace = l(t('Ver lista de reformulaciones de las acciones centralizadas'), 'node/' . $id_nodo . '/reformular');
$links[] = array('data' => $enlace, );
}
return $links;
}
/*
* hook_form_alter()
* funcion que sirve para identificar el formulario (y luego el proceso) en el que se ejecuto el cambio de estado
*/
function gestion_mensajes_form_alter(&$form, $form_state, $form_id) {
//(1) Formulación de Proyecto Operativo (definición)
if ($form_id == 'workflow_tab_form') {
if ($form['node']['#value']->type == 'proyectos_operativos') {
$form['#datos_formulario']= array(
'numero_proceso' => 1,
'ident_formulario' => $form_id,
);
$form['#submit'][] = 'creacion_mensaje_luego_de_realizar_cambio_de_estado';
}
}
//(2) Formulación de Acciones Centralizadas (definición)
if ($form_id == 'workflow_tab_form') {
if ($form['node']['#value']->type == 'accion_centralizada') {
$form['#datos_formulario']= array(
'numero_proceso' => 2,
'ident_formulario' => $form_id,
);
$form['#submit'][] = 'creacion_mensaje_luego_de_realizar_cambio_de_estado';
}
}
//(3) Seguimiento de Proyecto Operativo
if ($form_id == 'cambiodeestado_seg_proyecto_paginaconfirmacion_form') {
$form['#datos_formulario']= array(
'numero_proceso' => 3,
'ident_formulario' => $form_id,
);
$form['#submit'][] = 'creacion_mensaje_luego_de_realizar_cambio_de_estado';
}
//(4) Seguimiento de Acción Específica de Proyecto
if ($form_id == 'cambiodeestado_seg_ae_proyecto_paginaconfirmacion_form') {
$form['#datos_formulario']= array(
'numero_proceso' => 4,
'ident_formulario' => $form_id,
);
$form['#submit'][] = 'creacion_mensaje_luego_de_realizar_cambio_de_estado';
}
//(5) Seguimiento de Acciones Centralizadas
if ($form_id == 'acciones_centralizadas_seguimiento_wk_tab_page_form') {
$form['#datos_formulario']= array(
'numero_proceso' => 5,
'ident_formulario' => $form_id,
);
$form['#submit'][] = 'creacion_mensaje_luego_de_realizar_cambio_de_estado';
}
//(6) Reformulación de Proyecto Operativo
if ($form_id == 'proyectos_reformulacion_reformula_wk_tab_page_form') {
$form['#datos_formulario']= array(
'numero_proceso' => 6,
'ident_formulario' => $form_id,
);
$form['#submit'][] = 'creacion_mensaje_luego_de_realizar_cambio_de_estado';
}
//(7) Reformulación de Acciones Centralizadas
if ($form_id == 'acciones_centralizadas_reformula_wk_tab_page_form') {
$form['#datos_formulario']= array(
'numero_proceso' => 7,
'ident_formulario' => $form_id,
);
$form['#submit'][] = 'creacion_mensaje_luego_de_realizar_cambio_de_estado';
}
}
/**
* función que crea el mensaje y lo envia.
* Luego de tener identificado el formulario (proceso) que ejecuto el cambio de estado en workflow, se contruye el mensaje con los campos específicos
*/
function creacion_mensaje_luego_de_realizar_cambio_de_estado($form, &$form_state) {
global $user;
$enviar_msj = 0;
if(($form['#datos_formulario']['numero_proceso']==1)||($form['#datos_formulario']['numero_proceso']==2)){
$tipo_proceso_i = 1;//formulacion
$id_nodo = $form['node']['#value']->nid;
if($form['#datos_formulario']['numero_proceso']==1){
$estado_ant = $form['workflow']['Proyectos_Operativos']['#default_value'];
}else{
$estado_ant = $form['workflow']['Acciones_Centralizadas']['#default_value'];
}
$estado_nuevo = $form['#post']['workflow'];
$contenido_comentario = $form['#post']['workflow_comment'];
$enviar_msj = 1;
}elseif(($form['#datos_formulario']['numero_proceso']==6)||($form['#datos_formulario']['numero_proceso']==7)){
$tipo_proceso_i = 2;//reformulacion
$id_nodo = $form['#node']->nid;
$estado_ant = $form['#reformulacion']->estado;
$estado_nuevo = $form['#nuevo_estado'];
$contenido_comentario = $form['#post']['comentario'];
$enviar_msj = 1;
}elseif(($form['#datos_formulario']['numero_proceso']==3)||($form['#datos_formulario']['numero_proceso']==4)||($form['#datos_formulario']['numero_proceso']==5)){
$tipo_proceso_i = 3;//seguimiento
$id_nodo = $form['#node']->nid;
if($form['#datos_formulario']['numero_proceso']==5){
$estado_ant = $form['#actual']['estado'];
}else{
$estado_ant = $form['#segmes']['estado'];
}
$estado_nuevo = $form['#nuevo_estado'];
$contenido_comentario = $form['#post']['comentario'];
$enviar_msj = 1;
}
if($enviar_msj == 1){
$mensaje = array(
'fecha' => time(),
'nid' => $id_nodo,
'tipo_proceso' => $tipo_proceso_i,
'euid' => $user->uid,
'estado_ant' => $estado_ant,
'estado' => $estado_nuevo,
'mensaje' => $contenido_comentario,
);
$output .= _crear_y_enviar_msj_en_db($mensaje);
}
}