'. 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 .= '
Mensajes Recibidos'; $output .= implode('', $tablas).'
'; } 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 .= '
Mensaje'; $output .= implode('', $tablas); $output .= '
'.l(t('Regresar (Mis Mensajes)'), 'ver_lista_de_mensajes_recibidos/' . $user->uid).'
'; $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); } }