0) {
// If jquery_update's preprocess function is there already, remove it.
if ($key = array_search('politicas_direccionales_preprocess_page', $theme_registry['page']['preprocess functions'])) {
unset($theme_registry['page']['preprocess functions'][$key]);
}
}
// Now tack it on at the end so it runs after everything else.
$theme_registry['page']['preprocess functions'][] = 'politicas_direccionales_preprocess_page';
}
}
/**
* Implementation of moduleName_preprocess_hook().
*
* Replace Drupal core's jquery.js with the new one from jQuery Update.
*/
function politicas_direccionales_preprocess_page(&$variables) {
if (!empty($variables['scripts'])) {
//cambiar el archivo ahah.js para que funcione correctamente los nuevos botones
$scripts = drupal_add_js();
$ahah_path = 'misc/ahah.js';
if (isset($scripts['module'][$ahah_path])) {
$politicas_direccionales_path = drupal_get_path('module', 'politicas_direccionales') .'/replace/ahah.js';
$scripts['module'][$politicas_direccionales_path] = $scripts['module'][$ahah_path];
unset($scripts['module'][$ahah_path]);
$variables['scripts'] = drupal_get_js('header', $scripts);
}
}
}
/*
* Implementation of hook_ente_procesos_alter()
*/
function politicas_direccionales_ente_procesos_alter(&$procesos, $type) {
if ($type == 'status') {
//SE DEFINE EL STATUS DE POLITICAS DIRECCIONALES
$procesos['politicas_direccionales'] = array(
'title' => t('Definición de Póliticas Direccionales'),
'description' => t('Definición de Póliticas Direccionales'),
'weight' => -9,
);
}
else {
// PROCESO DE DEFINIR POSIBLES POLITICAS DIRECCIONALES
$procesos['posibles'] = array(
'title' => t('Planteamiento de posibles Póliticas Direccionales'),
'description' => t('Permite agregar, modificar y eliminar posibles póliticas direccionales'),
'message' => 'Se podrá registrar y/o modificar los posibles póliticas direccionales desde %fecha hasta la fecha %fecha1',
'message_expire' => 'Registrar y/o modificar los posibles póliticas direccionales no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
'weight' => 3,
'proceso' => 'politicas_direccionales',
);
// PROCESO DE IDENTIFICAR INVIABILIDAD POSIBLES POLITICAS DIRECCIONALES
$procesos['inviabilidad'] = array(
'title' => t('Identificar inviabilidad de Póliticas Direccionales'),
'description' => t('Permite Identificar inviabilidad de Póliticas Direccionales'),
'message' => 'Se podrá registrar y/o modificar Identificar inviabilidad de Póliticas Direccionales desde %fecha hasta la fecha %fecha1',
'message_expire' => 'Registrar y/o modificar Identificar inviabilidad de Póliticas Direccionales no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
'weight' => 3,
'proceso' => 'politicas_direccionales',
);
// PROCESO DE CONSTRUIR VIABILIDAD POSIBLES POLITICAS DIRECCIONALES
$procesos['viabilidad'] = array(
'title' => t('Construir viabilidad de Póliticas Direccionales'),
'description' => t('Permite Construir viabilidad de Póliticas Direccionales'),
'message' => 'Se podrá registrar y/o modificar Construir viabilidad de Póliticas Direccionales desde %fecha hasta la fecha %fecha1',
'message_expire' => 'Registrar y/o modificar Construir viabilidad de Póliticas Direccionales no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
'weight' => 3,
'proceso' => 'politicas_direccionales',
);
// PROCESO DE SELECCIONAR POLITICAS DIRECCIONALES
$procesos['posibles_seleccionar'] = array(
'title' => t('Seleccionar Póliticas Direccionales'),
'description' => t('Permite seleccionar Póliticas Direccionales'),
'message' => 'Se podrá registrar y/o modificar la selección de los Póliticas Direccionales desde %fecha hasta la fecha %fecha1',
'message_expire' => 'Registrar y/o modificar la selección de los Póliticas Direccionales no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
'weight' => 3,
'proceso' => 'politicas_direccionales',
);
// PROCESO DE DEFINIR ESTRATEGIAS
$procesos['estrategias'] = array(
'title' => t('Definición de Estrategias'),
'description' => t('Permite describir Estrategias'),
'message' => 'Se podrá registrar y/o modificar la Definición de Estrategias desde %fecha hasta la fecha %fecha1',
'message_expire' => 'Registrar y/o modificar Definición de Estrategias no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
'weight' => 3,
'proceso' => 'politicas_direccionales',
);
// PROCESO DE DEFINIR ARTICULACION DE ACTORES MICRO EN BASE A ESTRATEGIAS
$procesos['articulacion_estrategias'] = array(
'title' => t('Articulación de actores por estrategias'),
'description' => t('Permite articulación de actores por estrategias'),
'message' => 'Se podrá registrar y/o modificar la articulación de actores por estrategias desde %fecha hasta la fecha %fecha1',
'message_expire' => 'Registrar y/o modificar la articulación de actores por estrategias no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
'weight' => 3,
'proceso' => 'politicas_direccionales',
);
/*
// PROCESO DE REFORMULACION ESTRATEGIAS
$procesos['reformulacion_estrategias'] = array(
'title' => t('Reformulación de Estrategias'),
'description' => t('Permite Reformulación Estrategias'),
'message' => 'Se podrá registrar y/o modificar la Reformulación de Estrategias desde %fecha hasta la fecha %fecha1',
'message_expire' => 'Registrar y/o modificar la Reformulación de Estrategias no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
'weight' => 3,
'proceso' => 'politicas_direccionales',
);
*/
// PROCESO DE SELECCIONAR ESTRATEGIAS
$procesos['seleccionar_estrategias'] = array(
'title' => t('Seleccionar estrategias'),
'description' => t('Permite seleccionar estrategias'),
'message' => 'Se podrá registrar y/o modificar la selección estrategias desde %fecha hasta la fecha %fecha1',
'message_expire' => 'Registrar y/o modificar la selección estrategias no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
'weight' => 3,
'proceso' => 'politicas_direccionales',
);
}
}
/*
* Implementation of hook_menu()
*/
function politicas_direccionales_menu() {
$items = array();
// PROCESO DE POSIBLES POLITICAS DIRECCIONALES
$items['planificacion/%ente_planificador_menu/politicas'] = array(
'title' => t('Definición de Políticas Direccionales'),
'page callback' => 'ente_planificador_definir_politicas',
'page arguments' => array(1),
'access arguments' => array('ver planificador'),
'weight' => -7,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/posibles'] = array(
'title' => t('Posibles Políticas Direccionales'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10
);
$items['planificacion/%ente_planificador_menu/politicas/posibles/registrar'] = array(
'title' => t('Registrar Políticas Direccionales'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_agregar_form', 1),
'access callback' => 'ente_planificador_usuario_tiene_politicas_registrar',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/posibles/%posible_politica/editar'] = array(
'title' => t('Modificar Políticas Direccionales'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_agregar_form', 1, 4),
'access callback' => 'ente_planificador_usuario_tiene_politicas_registrar',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/posibles/%posible_politica/remove'] = array(
'title' => t('Eliminar Políticas Direccionales'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_remove_posible_politica_form', 1, 4),
'access callback' => 'ente_planificador_usuario_tiene_politicas_registrar',
'access arguments' => array(1),
'weight' => -4,
'type' => MENU_CALLBACK,
);
$items['planificacion/%ente_planificador_menu/politicas/posibles/buscar'] = array(
'title' => t('Buscar Posibles Políticas Direccionales'),
'page callback' => 'politicas_direccionales_buscar_posibles',
'access callback' => 'ente_planificador_usuario_es_macro',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/posibles/listar'] = array(
'title' => t('Consultar Políticas Direccionales'),
'page callback' => 'ente_planificador_definir_politicas_listar',
'page arguments' => array(1),
'access arguments' => array('ver planificador'),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
// PROCESO DE SELECCIONAR POLITICAS DIRECCIONALES
$items['planificacion/%ente_planificador_menu/politicas/seleccionar'] = array(
'title' => t('Políticas Direccionales'),
'page callback' => 'ente_planificador_seleccionar_politicas',
'page arguments' => array(1),
'access arguments' => array('ver planificador'),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/seleccionar/ver'] = array(
'title' => t('Políticas Direccionales'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => -10
);
$items['planificacion/%ente_planificador_menu/politicas/seleccionar/viabilidad'] = array(
'title' => t('Identificar inviabilidad de posibles políticas'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_indentificar_viabilidad_form', 1),
'access callback' => 'ente_planificador_usuario_tiene_identificar_politicas',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/seleccionar/inviables'] = array(
'title' => t('Consultar posibles políticas inviables'),
'page callback' => 'ente_planificador_definir_politicas_listar_inviables',
'page arguments' => array(1),
'access arguments' => array('ver planificador'),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/seleccionar/politicas'] = array(
'title' => t('Seleccionar políticas direccionales'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_seleccionar_politicas_form', 1),
'access callback' => 'ente_planificador_usuario_tiene_seleccionar_politicas',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/seleccionar/consultar'] = array(
'title' => t('Consultar posibles políticas inviables'),
'page callback' => 'politicas_direccionales_seleccionar_politicas_listar',
'page arguments' => array(1),
'access arguments' => array('ver planificador'),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/seleccionar/buscar'] = array(
'title' => t('Consultar posibles políticas inviables'),
'page callback' => 'politicas_direccionales_buscar_seleccion',
'page arguments' => array(1),
'access callback' => 'ente_planificador_usuario_es_macro',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/seleccionar/%posible_politica/editar_accion'] = array(
'title' => t('Modificar Políticas Direccionales'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_agregar_accion_form', 1, 4),
'access callback' => 'ente_planificador_usuario_tiene_politicas_viabilidad',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/seleccionar/%posible_politica/remove_accion'] = array(
'title' => t('Eliminar Políticas Direccionales'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_remove_accion_posible_politica_form', 1, 4),
'access callback' => 'ente_planificador_usuario_tiene_politicas_viabilidad',
'access arguments' => array(1),
'weight' => -4,
'type' => MENU_CALLBACK,
);
// PROCESO DE ESTRATEGIAS
$items['planificacion/%ente_planificador_menu/politicas/estrategias'] = array(
'title' => t('Estrategias'),
'page callback' => 'ente_planificador_estrategias_politicas',
'page arguments' => array(1),
'access arguments' => array('ver planificador'),
'weight' => -7,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/estrategias/registrar'] = array(
'title' => t('Registrar Estrategia'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_agregar_estrategia_form', 1),
'access callback' => 'ente_planificador_usuario_tiene_estrategias_politicas_registrar',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/estrategias/listar'] = array(
'title' => t('Posibles Estrategias'),
'page callback' => 'politicas_direccionales_estrategias_posibles_listar',
'page arguments' => array(1),
'access arguments' => array('ver planificador'),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
/*
$items['planificacion/%ente_planificador_menu/politicas/estrategias/reformular'] = array(
'title' => t('Posibles Estrategias'),
'page callback' => 'politicas_direccionales_estrategias_posibles_listar_reformular',
'page arguments' => array(1),
'access callback' => 'ente_planificador_usuario_tiene_estrategias_politicas_reformular',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/estrategias/%posible_estrategia/reformular'] = array(
'title' => t('Modificar estrategia'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_agregar_estrategia_form', 1, 4),
'access callback' => 'ente_planificador_usuario_tiene_estrategias_puede_reformular',
'access arguments' => array(1, 4),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
*/
/*
$items['planificacion/%ente_planificador_menu/politicas/estrategias/identificar'] = array(
'title' => t('Identificar posible articulación'),
'page callback' => 'politicas_direccionales_estrategias_posibles_identificar',
'page arguments' => array(1),
'access callback' => 'ente_planificador_usuario_tiene_estrategias_politicas_puede_articular',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/estrategias/consultar_articulacion'] = array(
'title' => t('Identificar posible articulación'),
'page callback' => 'politicas_direccionales_estrategias_consultar_articulaciones',
'page arguments' => array(1),
'access arguments' => array('ver planificador'),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/estrategias/consultar_articulacion_micro'] = array(
'title' => t('Identificar posible articulación'),
'page callback' => 'politicas_direccionales_estrategias_consultar_articulaciones_actores_micro',
'page arguments' => array(1),
'access callback' => 'ente_planificador_tiene_articulacion',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
*/
$items['planificacion/%ente_planificador_menu/politicas/estrategias/seleccionar'] = array(
'title' => t('Identificar posible articulación'),
'page callback' => 'politicas_direccionales_estrategias_seleccionar_estrategias',
'page arguments' => array(1),
'access callback' => 'ente_planificador_usuario_puede_estrategias_seleccionar',
'access arguments' => array(1),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/estrategias/pol_estr'] = array(
'title' => t('Identificar posible articulación'),
'page callback' => 'politicas_direccionales_mostrar_estrategias_por_politicas',
'page arguments' => array(1),
'access arguments' => array('ver planificador'),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/estrategias/%politica_seleccionada/seleccionar'] = array(
'title' => t('Seleccionar estrategias para la política'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_seleccionar_estrategias_form', 1, 4),
'access callback' => 'ente_planificador_usuario_puede_estrategias_seleccionar_politicas',
'access arguments' => array(1, 4),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/estrategias/%posible_estrategia/editar'] = array(
'title' => t('Modificar estrategia'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_agregar_estrategia_form', 1, 4),
'access callback' => 'ente_planificador_usuario_tiene_estrategias_puede_editar',
'access arguments' => array(1, 4),
'weight' => -8,
'type' => MENU_LOCAL_TASK,
);
$items['planificacion/%ente_planificador_menu/politicas/estrategias/%posible_estrategia/remove'] = array(
'title' => t('Eliminar estrategia'),
'page callback' => 'drupal_get_form',
'page arguments' => array('politicas_direccionales_remove_estrategia_posible_politica_form', 1, 4),
'access callback' => 'ente_planificador_usuario_tiene_estrategias_puede_editar',
'access arguments' => array(1, 4),
'weight' => -4,
'type' => MENU_CALLBACK,
);
//MI PLANIFICACION
$items['mi_ente_planificador/planificacion/politicas'] = array(
'title' => t('Politicas Direccionales'),
'page callback' => 'mis_entes_planificadores_planificacion_politicas',
'access callback' => 'ente_planificador_usuario_ve_ente',
'type' => MENU_LOCAL_TASK,
);
$items['politicas_direccionales_agregar_js'] = array(
'title' => 'JS utilities',
'page callback' => 'politicas_direccionales_agregar_js',
'access arguments' => array('ver planificador'),
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Implementation of posible_politica_load().
* Leer una posible politica direccional.
*/
function posible_politica_load($nid = 0) {
if ($nid && is_numeric($nid)) {
$node_load = node_load($nid);
if ($node_load && $node_load->type == 'politicas_direccionales') {
return $node_load;
}
}
return FALSE;
}
/**
* Implementation of politica_seleccionada_load().
* Leer una politica direccional.
*/
function politica_seleccionada_load($nid = 0) {
if ($nid && is_numeric($nid)) {
$node_load = node_load($nid);
if ($node_load && $node_load->type == 'politicas_direccionales' && $node_load->field_politicas_seleccionada[0]['value'] = 'SÍ') {
return $node_load;
}
}
return FALSE;
}
/**
* Implementation of posible_estrategia_load().
* Leer una posible estrategia.
*/
function posible_estrategia_load($nid = 0) {
if ($nid && is_numeric($nid)) {
$node_load = node_load($nid);
if ($node_load && $node_load->type == 'estrategia') {
return $node_load;
}
}
return FALSE;
}
/**
* Implementation of politicas_direccionales_buscar_posibles().
* Cargar la vista de buscar posibles politicas direccionales.
*/
function politicas_direccionales_buscar_posibles() {
$output = '';
$name = 'posibles_politicas';
$display_id = 'default';
if ($view = views_get_view($name)) {
if ($view->access($display_id)) {
$output = $view->execute_display($display_id);
$view->destroy();
}
$view->destroy();
}
return $output;
}
/**
* Implementation of politicas_direccionales_buscar_seleccion().
* Cargar la vista de buscar politicas direccionales.
*/
function politicas_direccionales_buscar_seleccion() {
$output = '';
$name = 'politicas_direccionales';
$display_id = 'default';
if ($view = views_get_view($name)) {
if ($view->access($display_id)) {
$output = $view->execute_display($display_id);
$view->destroy();
}
$view->destroy();
}
return $output;
}
/*
* politicas_direccionales_agregar_js
* Generates AJAX responses of politicas direccionales
*/
function politicas_direccionales_agregar_js($tipo = '', $requ = 0) {
if ($tipo == 'ente' && is_numeric($requ)) {
$form_state = array('submitted' => FALSE);
$form_build_id = $_POST['form_build_id'];
// Add the new element to the stored form. Without adding the element to the
// form, Drupal is not aware of this new elements existence and will not
// process it. We retreive the cached form, add the element, and resave.
$form = form_get_cache($form_build_id, $form_state);
$cantidad = intval($_POST['cantidad_ente_' . $requ]) > 0 ? intval($_POST['cantidad_ente_' . $requ]) : 0;
$cantidad++;
$new_form = array();
for ($j = 0; $j < $cantidad; $j++) {
$valor = intval($_POST['entes_' . $requ . '_' . $j]) > 0 ? intval($_POST['entes_' . $requ . '_' . $j]) : 0;
$new_form['entes_' . $requ . '_' . $j] = array(
'#type' => 'select',
'#default_value' => $valor,
'#options' => $form['#entes'],
'#multiple' => FALSE,
'#title' => t('Actor'),
'#prefix' => '',
'#attributes' => array('class' => 'ente-actores ente-actores-' . $requ . '_' . $j . ' actores-requerimientos actores-requerimiento-' . $requ, 'requerimiento' => $requ, 'cant_actor' => $j),
);
$valor = intval($_POST['otro_' . $requ . '_' . $j]) > 0 ? intval($_POST['entes_' . $requ . '_' . $j]) : '';
$new_form['otro_' . $requ . '_' . $j] = array(
'#type' => 'textfield',
'#title' => t('Nombre del Actor'),
'#required' => FALSE,
'#size' => 10,
'#default_value' => $valor,
'#attributes' => array('class' => 'ente-otros ente-otros-' . $requ . '_' . $j . ' otros-requerimientos otros-requerimiento-' . $requ, 'requerimiento' => $requ, 'cant_actor' => $j),
);
$valor = floatval($_POST['grado_' . $requ . '_' . $j]) > 0 ? floatval($_POST['grado_' . $requ . '_' . $j]) : 0;
$new_form['grado_' . $requ . '_' . $j] = array(
'#type' => 'textfield',
'#title' => t('Grado de Control'),
'#required' => FALSE,
'#size' => 10,
'#default_value' => 'texto',
'#suffix' => '',
'#element_validate' => array('politicas_direccionales_number_float_validate',),
);
}
$new_form['cantidad_ente_' . $requ] = array('#type' => 'hidden', '#value' => $cantidad);
$form['campo_requerimiento']['politica_' . $requ]['actores'] = $new_form;
form_set_cache($form_build_id, $form, $form_state);
$form += array(
'#post' => $_POST,
'#programmed' => FALSE,
);
// Rebuild the form.
$form = form_builder($_POST['form_id'], $form, $form_state);
// Render the new output.
$new_form = $form['campo_requerimiento']['politica_' . $requ]['actores'];
unset($new_form['#prefix'], $new_form['#suffix']); // Prevent duplicate wrappers.
$output = drupal_render($new_form);
$output .= '';
print drupal_to_js(array('data' => $output, 'status' => true));
exit();
}
elseif ($tipo == 'requerimiento'){
$form_state = array('submitted' => FALSE);
$form_build_id = $_POST['form_build_id'];
// Add the new element to the stored form. Without adding the element to the
// form, Drupal is not aware of this new elements existence and will not
// process it. We retreive the cached form, add the element, and resave.
$form = form_get_cache($form_build_id, $form_state);
$cantidad_requerimientos = intval($_POST['cantidad_requerimientos']) > 0 ? intval($_POST['cantidad_requerimientos']) : 0;
$cantidad_requerimientos++;
$new_form = array();
for ($i = 0; $i < $cantidad_requerimientos; $i++) {
$new_form['politica_' . $i] = array(
'#type' => 'fieldset',
'#title' => t('Requerimiento %numero', array('%numero' => ($i + 1))),
);
$new_form['politica_' . $i]['req_' . $i] = array(
'#type' => 'textfield',
'#title' => t('Requerimiento'),
'#required' => TRUE,
'#default_value' => '',
'#prefix' => '',
);
$new_form['politica_' . $i]['tipo_' . $i] = array(
'#type' => 'select',
'#default_value' => 0,
'#options' => $form['#grados'],
'#multiple' => FALSE,
'#title' => t('Tipo'),
);
$new_form['politica_' . $i]['actores'] = array(
'#type' => 'fieldset',
'#title' => t('Actores'),
);
$cantidad_entes = intval($_POST['cantidad_ente_' . $i]) > 0 ? intval($_POST['cantidad_ente_' . $i]) : 1;
for ($j = 0; $j < $cantidad_entes; $j++) {
$new_form['politica_' . $i]['actores']['entes_' . $i . '_' . $j] = array(
'#type' => 'select',
'#default_value' => 0,
'#options' => $form['#entes'],
'#multiple' => FALSE,
'#title' => t('Actor'),
'#prefix' => '',
'#attributes' => array('class' => 'ente-actores ente-actores-' . $i . '_' . $j . ' actores-requerimientos actores-requerimiento-' . $i, 'requerimiento' => $i, 'cant_actor' => $j),
);
if ($j == 0) {
$new_form['politica_' . $i]['actores']['entes_' . $i . '_' . $j]['#prefix'] .= '
';
}
$new_form['politica_' . $i]['actores']['otro_' . $i . '_' . $j] = array(
'#type' => 'textfield',
'#title' => t('Nombre del Actor'),
'#required' => FALSE,
'#size' => 10,
'#default_value' => '',
'#attributes' => array('class' => 'ente-otros ente-otros-' . $i . '_' . $j . ' otros-requerimientos otros-requerimiento-' . $i, 'requerimiento' => $i, 'cant_actor' => $j),
);
$new_form['politica_' . $i]['actores']['grado_' . $i . '_' . $j] = array(
'#type' => 'textfield',
'#title' => t('Grado de Control'),
'#required' => FALSE,
'#size' => 10,
'#default_value' => 0,
'#suffix' => '',
'#element_validate' => array('politicas_direccionales_number_float_validate',),
);
}
$new_form['politica_' . $i]['actores']['cantidad_ente_' . $i] = array('#type' => 'hidden', '#value' => $cantidad_entes, '#suffix' => '
');
$new_form['politica_' . $i]['actores']['agrega_' . $i] = array(
'#type' => 'submit',
'#default_value' => t('Agregar otro ente'),
'#ahah' => array(
'path' => 'politicas_direccionales_agregar_js/ente/' . $i,
'wrapper' => 'nuevoente_' . $i,
'method' => 'replace',
'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
),
);
}
$new_form['cantidad_requerimientos'] = array('#type' => 'hidden', '#value' => $cantidad_requerimientos);
$form['campo_requerimiento'] = $new_form;
form_set_cache($form_build_id, $form, $form_state);
$form += array(
'#post' => $_POST,
'#programmed' => FALSE,
);
// Rebuild the form.
$form = form_builder($_POST['form_id'], $form, $form_state);
// Render the new output.
$new_form = $form['campo_requerimiento'];
unset($new_form['#prefix'], $new_form['#suffix']); // Prevent duplicate wrappers.
$output = drupal_render($new_form);
$javascript = drupal_add_js(NULL, NULL, 'header');
$settings = call_user_func_array('array_merge_recursive', $javascript['setting']);
// we bind form elements using a new Drupal.settings for AHAH fields
$output .= '';
print drupal_to_js(array('data' => $output, 'status' => true, 'settings' => array('ahah' => $settings['ahah'])));
exit();
}
print '';
exit();
}
/**
* Implementation of politicas_direccionales_indentificar_viabilidad_form().
* Formulario para identificar viabilidad de posibles politicas direccionales
*/
function politicas_direccionales_indentificar_viabilidad_form($form_state, $ente_planificador) {
global $user;
drupal_set_title(t('Identificar inviabilidad de posibles políticas'));
$ente = usuario_tiene_ente($user->uid);
$mi_fecha1 = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$mi_fecha = ente_planificador_user_acceso_proceso("viabilidad", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("viabilidad", $ente_planificador->tipo);
}
else {
if ($ente->nid == $ente_planificador->nid) {
muestra_mensaje("viabilidad", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $ente->nid == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_planificador = node_load($macro);
}
}
$sql_query = "SELECT c.nid, n.title FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c.field_politicas_ente_nid = %d AND n.created >= %d AND n.created <= %d AND n.status > 0";
$sql_variables = array();
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha1[0];
$sql_variables[] = $mi_fecha1[1] + 86399;
$result = db_query($sql_query, $sql_variables);
$politicas = array();
while($politica = db_fetch_object($result)) {
$politica_Load = node_load($politica->nid);
$politicas[$politica->nid] = $politica_Load->nid? $politica_Load->body: $politica->title;
}
$form = array();
$form['#ente_planificador'] = $ente_planificador;
$output_politicas = count($politicas) ? theme('item_list', $politicas) : t('No existen políticas registradas.');
$form['politicas'] = array(
'#value' => $output_politicas,
);
$form['#politicas'] = $politicas;
if ($ente_has_acceso && count($politicas)) {
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
'#weight' => 100,
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#weight' => 100,
);
$form['buttons']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#weight' => 100,
);
}
$form['#after_build'] = array();
$form['#after_build'][] = 'politicas_direccionales_skip_validation_form_after_build';
return $form;
}
/**
* Implementation of politicas_direccionales_indentificar_viabilidad_form_submit().
* Procesar el formulario para identificar viabilidad de posibles politicas direccionales
*/
function politicas_direccionales_indentificar_viabilidad_form_submit($form, &$form_state) {
$export_users = array();
if (!$_REQUEST['destination']) {
$form_state['redirect'] = 'planificacion/' . $form['#ente_planificador']->nid . '/politicas/seleccionar/inviables';
}
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Cancel')) {
return;
}
if (count($form['#politicas'])) {
batch_politicas_direccionales_indentificar_viabilidad($form['#ente_planificador'], $form['#politicas'], $form_state['redirect']);
}
}
/**
* Implementation of batch_politicas_direccionales_indentificar_viabilidad().
* batch init identificar viabilidad
*/
function batch_politicas_direccionales_indentificar_viabilidad($ente_planificador = 0, $politicas = array(), $redirect = ''){
if (!is_array($politicas) || !count($politicas)) {
return FALSE;
}
if ($ente_planificador) {
$step = 1;
$batch = array(
'title' => t('Calculando políticas inviables ...'),
'operations' => array(),
'init_message' => t('Comenzando'),
'progress_message' => t('Processed @current out of @total.'),
'error_message' => t('An error occurred during processing'),
'finished' => '_direct_politicas_direccionales_indentificar_viabilidad_finished',
);
$count_politicas = count($politicas);
foreach ($politicas as $nid => $politica_title) {
$batch['operations'][] = array('_politicas_direccionales_indentificar_viabilidad', array($ente_planificador, $nid, $count_politicas));
}
batch_set($batch);
batch_process($redirect);
}
}
/**
* Implementation of _politicas_direccionales_indentificar_viabilidad().
* Batch callback to identificar viabilidad
*/
function _politicas_direccionales_indentificar_viabilidad($ente_planificador, $nid, $max, &$context) {
if ($nid && is_numeric($nid)) {
$politica = node_load($nid);
if ($politica->type = 'politicas_direccionales') {
module_load_include('inc', 'node', 'node.pages');
//calcular que la suma de los porcentajes de cada necesidad sume 100
politicas_direccionales_load_requerimientos($politica);
$cantidad_requerimientos = count($politica->requerimientos);
$req_band = $cantidad_requerimientos ? TRUE : FALSE;
for ($i = 0; $i < $cantidad_requerimientos; $i++) {
$suma = 0;
$cantidad_entes = count($politica->requerimientos[$i]['entes']);
$cantidad_entes = $cantidad_entes ? $cantidad_entes : 1;
for ($j = 0; $j < $cantidad_entes; $j++) {
$suma += $politica->requerimientos[$i]['entes'][$j]['grado'];
}
if ($suma < 100) {
$req_band = FALSE;
break;
}
}
$politica->field_politicas_viable = array();
$politica->field_politicas_viable[] = array('value' => $req_band ? 'SÍ' : 'NO');
$politica->field_politicas_seleccionada = array();
$politica->field_politicas_seleccionada[] = array('value' => 'NO');
node_object_prepare($politica);
$politica->revision = 1;
$politica->log = t('Calculo de viabilidad');
node_save($politica);
//se agregan los requerimientos a la nueva version del nodo
db_query("UPDATE {politicas_ente} SET vid = %d WHERE nid = %d", $politica->vid, $politica->nid);
db_query("UPDATE {politicas_ente_actor} SET vid = %d WHERE nid = %d", $politica->vid, $politica->nid);
$context['results'][] = t('La Política direccional "@title" se ha calculado su viabilidad (Viable: @calc_viab).', array('@title' => $politica->body, '@calc_viab' => $politica->field_politicas_viable[0]['value']));
$context['message'] = t('La Política direccional "@title" se ha calculado su viabilidad (Viable: @calc_viab).', array('@title' => $politica->body, '@calc_viab' => $politica->field_politicas_viable[0]['value']));
}
else {
$context['results'][] = t('El nodo "@title" no es una Política direccional (No se ha calculado su viabilidad).', array('@title' => $politica->body));
$context['message'] = t('El nodo "@title" no es una Política direccional (No se ha calculado su viabilidad).', array('@title' => $politica->body));
}
}
else {
$context['results'][] = t('La Política direccional @nid no existe (No se ha calculado su viabilidad).', array('@nid' => $nid));
$context['message'] = t('La Política direccional @nid no existe (No se ha calculado su viabilidad).', array('@nid' => $nid));
}
}
/**
* Implementation of _direct_politicas_direccionales_indentificar_viabilidad_finished().
* Batch 'finished' callback
*/
function _direct_politicas_direccionales_indentificar_viabilidad_finished($success, $results, $operations) {
if ($success) {
// Here we do something meaningful with the results.
$message = t('%count políticas direccionales han sido procesadas: !items', array('%count' => count($results), '!items' => theme('item_list', $results)));
}
else {
// An error occurred.
// $operations contains the operations that remained unprocessed.
$error_operation = reset($operations);
$message = t('An error occurred while processing %error_operation with arguments: @arguments', array('%error_operation' => $error_operation[0], '@arguments' => print_r($error_operation[1], TRUE)));
}
drupal_set_message(filter_xss($message));
}
/**
* Implementation of politicas_direccionales_seleccionar_politicas_form().
* Formulario para seleccionar politicas direccionales
*/
function politicas_direccionales_seleccionar_politicas_form($form_state, $ente_planificador) {
drupal_set_title(t('Seleccionar políticas direccionales'));
global $user;
$ente = usuario_tiene_ente($user->uid);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles_seleccionar", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("posibles", $ente_planificador->tipo);
}
else {
if ($user->entes == $ente_planificador->nid) {
muestra_mensaje("posibles", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $fecha && $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_planificador = node_load($macro);
}
}
$sql_query = "SELECT c.nid, n.title FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND n.created >= %d AND n.created <= %d ";
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$sql_variables = array();
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = db_query($sql_query, $sql_variables);
$politicas = array();
$politicas_loads = array();
$politicas_no_viables = array();
$default = array();
while($politica = db_fetch_object($result)) {
$politica_load = node_load($politica->nid);
if ($politica_load->field_politicas_viable[0]['value'] == 'SÍ' || trim($politica_load->field_politicas_acciones_viab[0]['value']) != '') {
$politicas_loads[$politica_load->nid] = $politica_load;
$politicas[$politica_load->nid] = $politica_load->body;
$default[$politica_load->nid] = $politica_load->politicas_seleccionada[0]['value'] == 'SÍ' ? 1 : 0;
}
else {
$politicas_no_viables[$politica_load->nid] = $politica_load;
}
}
$form = array();
$form['#ente'] = $ente_planificador;
$form['#politicas_loads'] = $politicas_loads;
$form['#politicas_no_viables'] = $politicas_no_viables;
if ($ente_has_acceso && count($politicas)) {
$form['politicas_seleccionar'] = array(
'#type' => 'checkboxes',
'#title' => t('Seleccionar políticas'),
'#default_value' => $default,
'#options' => $politicas,
'#description' => t('Seleccionar las políticas direccionales.'),
);
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
'#weight' => 100,
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#weight' => 100,
);
$form['buttons']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#weight' => 100,
);
}
$form['#after_build'] = array();
$form['#after_build'][] = 'politicas_direccionales_skip_validation_form_after_build';
return $form;
}
/**
* Implementation of politicas_direccionales_seleccionar_politicas_form_submit().
* Procesar el formulario para seleccionar politicas direccionales
*/
function politicas_direccionales_seleccionar_politicas_form_submit($form, &$form_state) {
$politicas = array();
if (!$_REQUEST['destination']) {
$form_state['redirect'] = 'planificacion/' . $form['#ente']->nid . '/politicas/seleccionar/consultar';
}
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Cancel')) {
return;
}
if (is_array($form_state['values']['politicas_seleccionar']) && count($form_state['values']['politicas_seleccionar'])) {
foreach($form_state['values']['politicas_seleccionar'] as $id => $value) {
$politicas[$id] = array(
'node' => $form['#politicas_loads'][$id],
'seleccion' => $value,
);
}
}
//se colocan el resto de politicas como no seleccionada
if (count($form['#politicas_no_viables'])) {
foreach($form['#politicas_no_viables'] as $id => $value) {
$politicas[$id] = array(
'node' => $value,
'seleccion' => 0,
);
}
}
if (count($politicas)) {
batch_politicas_direccionales_seleccionar_politicas($form['#ente'], $politicas, $form_state['redirect']);
}
}
/**
* Implementation of batch_politicas_direccionales_seleccionar_politicas().
* batch init
*/
function batch_politicas_direccionales_seleccionar_politicas($ente_planificador = 0, $politicas = array(), $redirect = ''){
if (!is_array($politicas) || !count($politicas)) {
return FALSE;
}
if ($ente_planificador) {
$step = 1;
$batch = array(
'title' => t('Seleccionando políticas direccionales ...'),
'operations' => array(),
'init_message' => t('Comenzando'),
'progress_message' => t('Processed @current out of @total.'),
'error_message' => t('An error occurred during processing'),
'finished' => '_politicas_direccionales_seleccionar_politicas_finished',
);
$count_politicas = count($politicas);
foreach ($politicas as $politica) {
$batch['operations'][] = array('_politicas_direccionales_seleccionar_politicas', array($ente_planificador, $politica, $count_politicas));
}
batch_set($batch);
batch_process($redirect);
}
}
/**
* Implementation of _politicas_direccionales_seleccionar_politicas().
* Batch callback to seleccionar politicas
*/
function _politicas_direccionales_seleccionar_politicas($ente_planificador, $politica_load, $max, &$context) {
if ($politica_load['node'] && $politica_load['node']->nid && $politica_load['node']->type = 'politicas_direccionales') {
$politica = node_load($politica_load['node']->nid);
if ($politica && $politica->type = 'politicas_direccionales') {
module_load_include('inc', 'node', 'node.pages');
$politica->field_politicas_seleccionada = array();
$politica->field_politicas_seleccionada[] = array('value' => $politica_load['seleccion'] ? 'SÍ' : 'NO');
node_object_prepare($politica);
$politica->revision = 1;
$politica->log = t('Política seleccionada');
node_save($politica);
//se agregan los requerimientos a la nueva version del nodo
db_query("UPDATE {politicas_ente} SET vid = %d WHERE nid = %d", $politica->vid, $politica->nid);
db_query("UPDATE {politicas_ente_actor} SET vid = %d WHERE nid = %d", $politica->vid, $politica->nid);
$context['results'][] = t('La Política direccional "@title" (ha sido seleccionada: %seleccion).', array('@title' => $politica->body, '%seleccion' => $politica->field_politicas_seleccionada[0]['value']));
$context['message'] = t('La Política direccional "@title" (ha sido seleccionada: %seleccion).', array('@title' => $politica->body, '%seleccion' => $politica->field_politicas_seleccionada[0]['value']));
}
else {
$context['results'][] = t('El nodo "@title" no es una Política direccional (No ha sido seleccionada).', array('@title' => $politica->body));
$context['message'] = t('El nodo "@title" no es una Política direccional (No ha sido seleccionada).', array('@title' => $politica->body));
}
}
else {
$context['results'][] = t('La Política direccional @nid no existe (No ha sido seleccionada).', array('@nid' => $nid));
$context['message'] = t('La Política direccional @nid no existe (No ha sido seleccionada).', array('@nid' => $nid));
}
}
/**
* Implementation of _politicas_direccionales_seleccionar_politicas_finished().
* Batch 'finished' callback
*/
function _politicas_direccionales_seleccionar_politicas_finished($success, $results, $operations) {
if ($success) {
// Here we do something meaningful with the results.
$message = t('%count políticas direccionales han sido procesadas: !items', array('%count' => count($results), '!items' => theme('item_list', $results)));
}
else {
// An error occurred.
// $operations contains the operations that remained unprocessed.
$error_operation = reset($operations);
$message = t('An error occurred while processing %error_operation with arguments: @arguments', array('%error_operation' => $error_operation[0], '@arguments' => print_r($error_operation[1], TRUE)));
}
drupal_set_message(filter_xss($message));
}
/**
* Implementation of politicas_direccionales_remove_posible_politica_form()
* Eliminar politica direccional
*/
function politicas_direccionales_remove_posible_politica_form($form_state, $ente = 0, $politica = 0) {
$form = array();
$form['#ente'] = $ente;
$form['#politica'] = $politica;
$message = t('Esta seguro de eliminar la posible política @nombre?', array('@nombre' => $form['#politica']->body));
$caption = ''. t('This action cannot be undone.') .'
';
$return_path = $_REQUEST['destination'] ? $_REQUEST['destination'] : 'planificacion/' . $form['#ente']->nid . '/politicas/posibles/listar';
return confirm_form($form, $message, $return_path, $caption, t('Eliminar'));
}
/**
* Implementation of politicas_direccionales_remove_posible_politica_form_submit().
* Procesar funcion eliminar politica direccional.
*/
function politicas_direccionales_remove_posible_politica_form_submit($form, &$form_state) {
global $user;
$titulo = $form['#politica']->body;
node_delete($form['#politica']->nid);
$texto = t('Se elimino la posible política "@nombre"', array('@nombre' => $form['#politica']->body));
drupal_set_message($texto);
if (!$_REQUEST['destination']) {
// add redirect
$form_state['redirect'] = 'planificacion/' . $form['#ente']->nid . '/politicas/posibles/listar';
}
}
/**
* Implementation of politicas_direccionales_remove_accion_posible_politica_form()
* Eliminar accion posible de politica
*/
function politicas_direccionales_remove_accion_posible_politica_form($form_state, $ente = 0, $politica = 0) {
$form = array();
$form['#ente'] = $ente;
$form['#politica'] = $politica;
$message = t('Esta seguro de eliminar las acciones de la política "@nombre"?', array('@nombre' => $form['#politica']->body));
$caption = ''. t('Acciones para Construir Viabilidad:') .'
';
$viabilidades = array();
foreach($politica->field_politicas_acciones_viab as $viabilidad) {
$viabilidades[] = $viabilidad['value'];
}
$caption .= theme('item_list', $viabilidades);
$return_path = $_REQUEST['destination'] ? $_REQUEST['destination'] : 'planificacion/' . $form['#ente']->nid . '/politicas/seleccionar/inviables';
return confirm_form($form, $message, $return_path, $caption, t('Eliminar'));
}
/**
* Implementation of politicas_direccionales_remove_accion_posible_politica_form_submit().
* Procesar funcion eliminar accion posible de politica.
*/
function politicas_direccionales_remove_accion_posible_politica_form_submit($form, &$form_state) {
global $user;
$politica = $form['#politica'];
$titulo = $form['#politica']->body;
module_load_include('inc', 'node', 'node.pages');
node_object_prepare($politica);
$politica->revision = 1;
$texto = t('Se eliminarón las acciones para construir la viabilidad de la política "@politica"', array('@politica' => $titulo));
$politica->log = $texto;
$politica->field_politicas_acciones_viab = array();
$politica->field_politicas_acciones_viab[0] = array('value' => '');
node_save($politica);
//se agregan los requerimientos a la nueva version del nodo
db_query("UPDATE {politicas_ente} SET vid = %d WHERE nid = %d", $politica->vid, $politica->nid);
db_query("UPDATE {politicas_ente_actor} SET vid = %d WHERE nid = %d", $politica->vid, $politica->nid);
drupal_set_message($texto);
if (!$_REQUEST['destination']) {
// add redirect
$form_state['redirect'] = 'planificacion/' . $form['#ente']->nid . '/politicas/posibles/listar';
}
}
/**
* Implementation of ente_planificador_usuario_tiene_identificar_politicas().
* Usuario puede identificar politicas.
*/
function ente_planificador_usuario_tiene_identificar_politicas($ente_planificador) {
if($ente_planificador->tipo > 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso("inviabilidad", $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if ($fecha && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
//se verifica que exista al menos una politica
$mi_fecha1 = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$sql_query = "SELECT count(c.nid) as numero FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c.field_politicas_ente_nid = %d AND n.created >= %d AND n.created <= %d AND n.status > 0";
$sql_variables = array();
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha1[0];
$sql_variables[] = $mi_fecha1[1] + 86399;
$result = db_query($sql_query, $sql_variables);
$cuenta = db_fetch_object($result);
if ($cuenta->numero) {
$ente_has_acceso = TRUE;
}
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_usuario_tiene_seleccionar_politicas().
* Usuario puede seleccionar politicas.
*/
function ente_planificador_usuario_tiene_seleccionar_politicas($ente_planificador) {
if($ente_planificador->tipo > 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso("posibles_seleccionar", $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if ($fecha && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
//se verifica que exista al menos una politica
$mi_fecha1 = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$sql_query = "SELECT count(c.nid) AS numero FROM content_type_politicas_direccionales AS c INNER JOIN node AS n ON n.nid = c.nid AND n.vid = c.vid LEFT JOIN content_field_politicas_acciones_viab AS v ON v.nid = c.nid AND v.vid = c.vid WHERE c.field_politicas_ente_nid = %d AND (c.field_politicas_viable_value = 'SÍ' OR c.field_politicas_seleccionada_value = 'SÍ' OR v.field_politicas_acciones_viab_value <> '') AND n.created >= %d AND n.created <= %d AND n.status > 0";
$sql_variables = array();
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha1[0];
$sql_variables[] = $mi_fecha1[1] + 86399;
$result = db_query($sql_query, $sql_variables);
$cuenta = db_fetch_object($result);
if ($cuenta->numero) {
$ente_has_acceso = TRUE;
}
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_usuario_tiene_politicas_viabilidad().
* Usuario puede construir viabilidad politicas.
*/
function ente_planificador_usuario_tiene_politicas_viabilidad($ente_planificador) {
if($ente_planificador->tipo > 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso("viabilidad", $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if ($fecha && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_usuario_es_macro().
* Ente planificador es macro.
*/
function ente_planificador_usuario_es_macro($ente_planificador) {
return $ente_planificador->tipo == 1 ? TRUE : FALSE;
}
/**
* Implementation of ente_planificador_usuario_tiene_politicas_registrar().
* Usuario puede registrar politicas.
*/
function ente_planificador_usuario_tiene_politicas_registrar($ente_planificador) {
if($ente_planificador->tipo > 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if ($fecha && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_usuario_tiene_estrategias_politicas_registrar().
* Usuario puede registrar estrategias.
*/
function ente_planificador_usuario_tiene_estrategias_politicas_registrar($ente_planificador) {
if($ente_planificador->tipo == 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso("estrategias", $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if ($fecha && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_usuario_tiene_estrategias_politicas_puede_articular().
* Usuario puede articular estrategias.
*/
function ente_planificador_usuario_tiene_estrategias_politicas_puede_articular($ente_planificador) {
if($ente_planificador->tipo == 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso("estrategias", $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
//SE VERIFICA QUE EL ENTE TENGA AL MENOS UNA ESTRATEGIA
$numero = 0;
if ($fecha) {
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_estrategia} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid WHERE pd.field_estrategia_ente_nid = %d AND n.created >= %d AND n.created <= %d", $ente_planificador->nid, $mi_fecha[0], $mi_fecha[1] + 86399);
$cantidad_estrategias = db_fetch_object($result);
$numero = $cantidad_estrategias->numero;
}
if ($fecha && $numero && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_tiene_articulacion().
* Ente tiene articulación.
*/
function ente_planificador_tiene_articulacion($ente_planificador){
if($ente_planificador->tipo == 1) {
return FALSE;
}
$mi_fecha = ente_planificador_user_acceso_proceso('articulacion_estrategias', $ente_planificador->tipo);
$result = db_query('SELECT count(ente) AS numero FROM {politicas_direccionales_estrategias} WHERE ente_art = %d AND creacion >= %d AND creacion <= %d', $ente_planificador->nid, $mi_fecha[0], $mi_fecha[1] + 86399);
$cantidad_estrategias = db_fetch_object($result);
$ente_has_acceso = FALSE;
if ($cantidad_estrategias->numero && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_usuario_tiene_estrategias_politicas_reformular().
* Ente puede reformular estrategias.
*/
function ente_planificador_usuario_tiene_estrategias_politicas_reformular($ente_planificador) {
if($ente_planificador->tipo == 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso("reformulacion_estrategias", $ente_planificador->tipo);
$mi_fecha1 = ente_planificador_user_acceso_proceso("estrategias", $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
//SE VERIFICA QUE EL ENTE TENGA AL MENOS UNA ESTRATEGIA
$numero = 0;
if ($fecha) {
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_estrategia} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid WHERE pd.field_estrategia_ente_nid = %d AND n.created >= %d AND n.created <= %d", $ente_planificador->nid, $mi_fecha1[0], $mi_fecha1[1] + 86399);
$cantidad_estrategias = db_fetch_object($result);
$numero = $cantidad_estrategias->numero;
}
if ($fecha && $numero && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_usuario_tiene_estrategias_puede_editar().
* Ente puede editar estrategias.
*/
function ente_planificador_usuario_tiene_estrategias_puede_editar($ente_planificador, $estrategia) {
if($ente_planificador->tipo == 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso('estrategias', $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
//SE VERIFICA QUE EL ENTE TENGA AL MENOS UNA ESTRATEGIA
$numero = 0;
if ($fecha) {
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_estrategia} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid WHERE n.nid = %d AND pd.field_estrategia_ente_nid = %d AND n.created >= %d AND n.created <= %d", $estrategia->nid, $ente_planificador->nid, $mi_fecha[0], $mi_fecha[1] + 86399);
$cantidad_estrategias = db_fetch_object($result);
$numero = $cantidad_estrategias->numero;
}
if ($fecha && $numero && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_usuario_tiene_estrategias_puede_reformular().
* Ente puede reformular una estrategia estrategias.
*/
function ente_planificador_usuario_tiene_estrategias_puede_reformular($ente_planificador, $estrategia) {
if($ente_planificador->tipo == 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso("reformulacion_estrategias", $ente_planificador->tipo);
$mi_fecha1 = ente_planificador_user_acceso_proceso("estrategias", $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
//SE VERIFICA QUE EL ENTE TENGA AL MENOS UNA ESTRATEGIA
$numero = 0;
if ($fecha) {
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_estrategia} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid WHERE n.nid = %d AND pd.field_estrategia_ente_nid = %d AND n.created >= %d AND n.created <= %d", $estrategia->nid, $ente_planificador->nid, $mi_fecha1[0], $mi_fecha1[1] + 86399);
$cantidad_estrategias = db_fetch_object($result);
$numero = $cantidad_estrategias->numero;
}
if ($fecha && $numero && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_usuario_puede_estrategias_seleccionar().
* Ente puede seleccionar estrategias.
*/
function ente_planificador_usuario_puede_estrategias_seleccionar($ente_planificador) {
if($ente_planificador->tipo > 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso("seleccionar_estrategias", $ente_planificador->tipo);
$mi_fecha1 = ente_planificador_user_acceso_proceso("estrategias", $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
//SE VERIFICA QUE EL ENTE TENGA AL MENOS UNA ESTRATEGIA
$numero = 0;
if ($fecha) {
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_estrategia} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid WHERE n.created >= %d AND n.created <= %d", $mi_fecha1[0], $mi_fecha1[1] + 86399);
$cantidad_estrategias = db_fetch_object($result);
$numero = $cantidad_estrategias->numero;
}
if ($fecha && $numero && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
return $ente_has_acceso;
}
/**
* Implementation of ente_planificador_usuario_puede_estrategias_seleccionar_politicas().
* Ente puede asociar estrategias a politicas.
*/
function ente_planificador_usuario_puede_estrategias_seleccionar_politicas($ente_planificador, $politica) {
if($ente_planificador->tipo > 1) {
return FALSE;
}
global $user;
$fecha = FALSE;
$ente_has_acceso = FALSE;
$current_time = time();
$mi_fecha = ente_planificador_user_acceso_proceso("seleccionar_estrategias", $ente_planificador->tipo);
$mi_fecha1 = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time && $politica->created >= $mi_fecha1[0] && $politica->created <= $mi_fecha1[1] + 86399) {
$fecha = TRUE;
}
$estrategias = leer_estrategias_por_politica($ente_planificador, $politica);
if (!count($estrategias)) {
return FALSE;
}
if ($fecha && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
return $ente_has_acceso;
}
/*
* Implementation of mis_entes_planificadores_planificacion_politicas()
*/
function mis_entes_planificadores_planificacion_politicas() {
global $user;
$output = '';
$ente = usuario_tiene_ente($user->uid);
if ($ente->nid) {
$adicional = array();
for($i = 3; $i < 7; $i++) {
if (arg($i) != '') {
$adicional[] = arg($i);
}
}
drupal_goto('planificacion/' . $ente->nid . '/politicas/' . implode('/', $adicional));
}
drupal_goto('mi_ente_planificador/planificacion');
return $output;
}
/*
* Implementation of politicas_direccionales_status_planificacion_politicas_direccionales()
*/
function politicas_direccionales_status_planificacion_politicas_direccionales($ente_planificador, $tipo = 2) {
if ($tipo == 1) {
//SE CALCULA SI SE ALMACENO AL MENOS UNA POLITICA
$mi_fecha_posible = ente_planificador_user_acceso_proceso("posibles", $tipo);
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_politicas_direccionales} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid WHERE pd.field_politicas_ente_nid = %d AND n.created >= %d AND n.created <= %d", $ente_planificador, $mi_fecha_posible[0], $mi_fecha_posible[1] + 86399);
$cantidad_politicas = db_fetch_object($result);
$politicas_direccionales['posibles']['value'] = $cantidad_politicas->numero ? 1 : 0;
$politicas_direccionales['posibles']['title'] = t('Posibles Políticas Direccionales');
$politicas_direccionales['posibles']['link'] = 'planificacion/' . $ente_planificador . '/politicas/posibles/listar';
$politicas_direccionales['posibles']['mylink'] = 'mi_ente_planificador/planificacion/politicas/posibles/listar';
$politicas_direccionales['posibles']['weight'] = 1;
//SE CALCULA SI SE EXISTE AL MENOS UNA POLITICA VIABLE
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_politicas_direccionales} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid WHERE pd.field_politicas_ente_nid = %d AND pd.field_politicas_viable_value = 'SÍ' AND n.created >= %d AND n.created <= %d", $ente_planificador, $mi_fecha_posible[0], $mi_fecha_posible[1] + 86399);
$cantidad_politicas = db_fetch_object($result);
$politicas_direccionales['inviabilidad']['value'] = $cantidad_politicas->numero ? 1 : 0;
$politicas_direccionales['inviabilidad']['title'] = t('Consultar posibles Políticas inviables');
$politicas_direccionales['inviabilidad']['link'] = 'planificacion/' . $ente_planificador . '/politicas/seleccionar/inviables';
$politicas_direccionales['inviabilidad']['mylink'] = 'mi_ente_planificador/planificacion/politicas/seleccionar/inviables';
$politicas_direccionales['inviabilidad']['weight'] = 2;
//SE CALCULA SI SE EXISTE AL MENOS UNA ACCION PARA CONSTRUIR VIABILIDAD EN UNA POLITICA INVIABLE
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_politicas_direccionales} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid INNER JOIN {content_field_politicas_acciones_viab} AS v ON v.nid = pd.nid AND v.vid = pd.vid WHERE pd.field_politicas_ente_nid = %d AND n.created >= %d AND n.created <= %d AND (v.field_politicas_acciones_viab_value <> NULL OR v.field_politicas_acciones_viab_value <> '')", $ente_planificador, $mi_fecha_posible[0], $mi_fecha_posible[1] + 86399);
$cantidad_politicas = db_fetch_object($result);
$politicas_direccionales['viabilidad']['value'] = $cantidad_politicas->numero ? 1 : 0;
$politicas_direccionales['viabilidad']['title'] = t('Acciones para construir viabilidad de Políticas inviables');
$politicas_direccionales['viabilidad']['link'] = 'planificacion/' . $ente_planificador . '/politicas/seleccionar/inviables';
$politicas_direccionales['viabilidad']['mylink'] = 'mi_ente_planificador/planificacion/politicas/seleccionar/inviables';
$politicas_direccionales['viabilidad']['weight'] = 3;
//SE CALCULA SI SE EXISTE AL MENOS EXISTE UNA POLITICA SELECCIONADA
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_politicas_direccionales} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid WHERE pd.field_politicas_ente_nid = %d AND pd.field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d", $ente_planificador, $mi_fecha_posible[0], $mi_fecha_posible[1] + 86399);
$cantidad_politicas = db_fetch_object($result);
$politicas_direccionales['posibles_seleccionar']['value'] = $cantidad_politicas->numero ? 1 : 0;
$politicas_direccionales['posibles_seleccionar']['title'] = t('Seleccionar Políticas Direccionales');
$politicas_direccionales['posibles_seleccionar']['link'] = 'planificacion/' . $ente_planificador . '/politicas/seleccionar/consultar';
$politicas_direccionales['posibles_seleccionar']['mylink'] = 'mi_ente_planificador/planificacion/politicas/seleccionar/consultar';
$politicas_direccionales['posibles_seleccionar']['weight'] = 4;
//SE CALCULA QUE EXISTA AL MENOS UNA ESTRATEGIA
$mi_fecha_estrategia = ente_planificador_user_acceso_proceso("estrategias", $tipo);
$result = db_query("SELECT count(nid) AS numero FROM {node} WHERE type = 'estrategia' AND created >= %d AND created <= %d", $mi_fecha_estrategia[0], $mi_fecha_estrategia[1] + 86399);
$cantidad_estrategias = db_fetch_object($result);
$politicas_direccionales['estrategias']['value'] = $cantidad_estrategias->numero ? 1 : 0;
$politicas_direccionales['estrategias']['title'] = t('Definición de Estrategias');
$politicas_direccionales['estrategias']['link'] = 'planificacion/' . $ente_planificador . '/politicas/estrategias/listar';
$politicas_direccionales['estrategias']['mylink'] = 'mi_ente_planificador/planificacion/politicas/estrategias/listar';
$politicas_direccionales['estrategias']['weight'] = 5;
/*
//SE CALCULA LA ARTICULACION DE LOS ACTORES MICROS
$mi_fecha_articulacion = ente_planificador_user_acceso_proceso("articulacion_estrategias", $tipo);
$result = db_query("SELECT count(estrategia) AS numero FROM {politicas_direccionales_estrategias} WHERE creacion >= %d AND creacion <= %d", $mi_fecha_articulacion[0], $mi_fecha_articulacion[1] + 86399);
$cantidad_articulacion = db_fetch_object($result);
$politicas_direccionales['articulacion_estrategias']['value'] = $cantidad_articulacion->numero ? 1 : 0;
$politicas_direccionales['articulacion_estrategias']['title'] = t('Articulación de actores por estrategias');
$politicas_direccionales['articulacion_estrategias']['link'] = 'planificacion/' . $ente_planificador . '/politicas/estrategias/consultar_articulacion_micro';
$politicas_direccionales['articulacion_estrategias']['mylink'] = 'mi_ente_planificador/planificacion/politicas/estrategias/consultar_articulacion_micro';
$politicas_direccionales['articulacion_estrategias']['weight'] = 6;
*/
/*
//SE CALCULA QUE EXISTA AL MENOS UNA ESTRATEGIA REFORMULADA
$mi_fecha_reformulacion = ente_planificador_user_acceso_proceso("reformulacion_estrategias", $tipo);
$result = db_query("SELECT count(nid) AS numero FROM {node} WHERE type = 'estrategia' AND changed >= %d AND changed <= %d", $mi_fecha_reformulacion[0], $mi_fecha_reformulacion[1] + 86399);
$cantidad_estrategias = db_fetch_object($result);
$politicas_direccionales['reformulacion_estrategias']['value'] = $cantidad_estrategias->numero ? 1 : 0;
$politicas_direccionales['reformulacion_estrategias']['title'] = t('Reformulación de Estrategias');
$politicas_direccionales['reformulacion_estrategias']['link'] = 'planificacion/' . $ente_planificador . '/politicas/estrategias/listar';
$politicas_direccionales['reformulacion_estrategias']['mylink'] = 'mi_ente_planificador/planificacion/politicas/estrategias/listar';
$politicas_direccionales['reformulacion_estrategias']['weight'] = 5;
*/
//SE CALCULA QUE AL MENOS UNA ESTRATEGIA ESTE SELECCIONADA EN ALGUNA POLITICA
$result = db_query("SELECT COUNT(pd.nid) AS numero from {content_type_politicas_direccionales} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid INNER JOIN {content_field_politicas_estrategias} AS v ON v.nid = pd.nid AND v.vid = pd.vid WHERE pd.field_politicas_ente_nid = %d AND n.created >= %d AND n.created <= %d AND (v.field_politicas_estrategias_nid <> NULL OR v.field_politicas_estrategias_nid <> 0)", $ente_planificador, $mi_fecha_posible[0], $mi_fecha_posible[1] + 86399);
$cantidad_politicas = db_fetch_object($result);
$politicas_direccionales['seleccionar_estrategias']['value'] = $cantidad_politicas->numero ? 1 : 0;
$politicas_direccionales['seleccionar_estrategias']['title'] = t('Seleccionar estrategias');
$politicas_direccionales['seleccionar_estrategias']['link'] = 'planificacion/' . $ente_planificador . '/politicas/estrategias/pol_estr';
$politicas_direccionales['seleccionar_estrategias']['mylink'] = 'mi_ente_planificador/planificacion/politicas/estrategias/pol_estr';
$politicas_direccionales['seleccionar_estrategias']['weight'] = 6;
}
else {
//SE CALCULA QUE EXISTA AL MENOS UNA ESTRATEGIA
$mi_fecha_estrategia = ente_planificador_user_acceso_proceso("estrategias", $tipo);
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_estrategia} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid WHERE pd.field_estrategia_ente_nid = %d AND n.created >= %d AND n.created <= %d", $ente_planificador, $mi_fecha_estrategia[0], $mi_fecha_estrategia[1] + 86399);
$cantidad_estrategias = db_fetch_object($result);
$politicas_direccionales['estrategias']['value'] = $cantidad_estrategias->numero ? 1 : 0;
$politicas_direccionales['estrategias']['title'] = t('Definición de Estrategias');
$politicas_direccionales['estrategias']['link'] = 'planificacion/' . $ente_planificador . '/politicas/estrategias/listar';
$politicas_direccionales['estrategias']['mylink'] = 'mi_ente_planificador/planificacion/politicas/estrategias/listar';
$politicas_direccionales['estrategias']['weight'] = 1;/*
//SE CALCULA LA ARTICULACION DE LOS ACTORES MICROS
$mi_fecha_articulacion = ente_planificador_user_acceso_proceso("articulacion_estrategias", $tipo);
$result = db_query("SELECT count(estrategia) AS numero FROM {politicas_direccionales_estrategias} WHERE ente = %d AND creacion >= %d AND creacion <= %d", $ente_planificador, $mi_fecha_articulacion[0], $mi_fecha_articulacion[1] + 86399);
$cantidad_articulacion = db_fetch_object($result);
$politicas_direccionales['articulacion_estrategias']['value'] = $cantidad_articulacion->numero ? 1 : 0;
$politicas_direccionales['articulacion_estrategias']['title'] = t('Articulación de actores por estrategias');
$politicas_direccionales['articulacion_estrategias']['link'] = 'planificacion/' . $ente_planificador . '/politicas/estrategias/identificar';
$politicas_direccionales['articulacion_estrategias']['mylink'] = 'mi_ente_planificador/planificacion/politicas/estrategias/identificar';
$politicas_direccionales['articulacion_estrategias']['weight'] = 2;
*/
/*
//SE CALCULA QUE EXISTA AL MENOS UNA ESTRATEGIA REFORMULADA
$mi_fecha_reformulacion = ente_planificador_user_acceso_proceso("reformulacion_estrategias", $tipo);
$result = db_query("SELECT COUNT(pd.nid) AS numero FROM {content_type_estrategia} AS pd INNER JOIN {node} AS n On n.nid = pd.nid AND n.vid = pd.vid WHERE pd.field_estrategia_ente_nid = %d AND n.changed >= %d AND n.changed <= %d", $ente_planificador, $mi_fecha_reformulacion[0], $mi_fecha_reformulacion[1] + 86399);
$cantidad_estrategias = db_fetch_object($result);
$politicas_direccionales['reformulacion_estrategias']['value'] = $cantidad_estrategias->numero ? 1 : 0;
$politicas_direccionales['reformulacion_estrategias']['title'] = t('Reformulación de Estrategias');
$politicas_direccionales['reformulacion_estrategias']['link'] = 'planificacion/' . $ente_planificador . '/politicas/estrategias/listar';
$politicas_direccionales['reformulacion_estrategias']['mylink'] = 'mi_ente_planificador/planificacion/politicas/estrategias/listar';
$politicas_direccionales['reformulacion_estrategias']['weight'] = 5;
*/
}
return $politicas_direccionales;
}
/*
* Implementation of politicas_direccionales_submenu_interfaz
* Add menu items politicas
*/
function politicas_direccionales_submenu_interfaz($ente_planificador) {
$submenu = array();
$smenu = array();
$i = 0;
$submenu[$i] = array(
'name'=> t("Posibles Políticas"),
'description' => t("Posibles Políticas Direccionales"),
'call' => "posibles_politicas"
);
$aux_menu = array();
foreach (module_list() as $module) {
if ($data = module_invoke($module, 'items_menu_politicas_' . $submenu[$i]['call'], $ente_planificador)) {
$aux_menu = array_merge_recursive($data, $aux_menu);
}
}
$smenu[$i] = $aux_menu;
return theme('planificacion_submenu_interfaz', $submenu, $smenu);
}
/*
* Implementation of hook_items_menu_politicas_posibles_politicas()
* Add menus items in politicas
*/
function politicas_direccionales_items_menu_politicas_posibles_politicas($ente_planificador) {
global $user;
$resultado = array();
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if ($ente_planificador->tipo == 1 && $fecha && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$resultado[] = array(
'name' => t('Registrar Posibles Políticas Direccionales'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/posibles/registrar',
'description' => t('Registrar Políticas Direccionales')
);
}
$resultado[] = array(
'name' => t('Consultar Posibles Políticas Direccionales'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/posibles/listar',
'description' => t('Consultar Políticas Direccionales')
);
if ($ente_planificador->tipo == 1) {
$resultado[] = array(
'name' => t('Buscar Posibles Políticas Direccionales'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/posibles/buscar',
'description' => t('Buscar Políticas Direccionales')
);
}
return $resultado;
}
/*
* Implementation of hook_items_menu_politicas_seleccionar_politicas()
* Add menus items in politicas
*/
function politicas_direccionales_items_menu_politicas_seleccionar_politicas($ente_planificador) {
global $user;
$resultado = array();
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (ente_planificador_usuario_tiene_identificar_politicas($ente_planificador)) {
$resultado[] = array(
'name' => t('Identificar inviabilidad de posibles políticas '),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/viabilidad',
'description' => t('Identificar Políticas Direccionales')
);
}
$resultado[] = array(
'name' => t('Consultar Políticas Inviables'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/inviables',
'description' => t('Consultar posibles Políticas inviables')
);
if (ente_planificador_usuario_tiene_seleccionar_politicas($ente_planificador)) {
$resultado[] = array(
'name' => t('Seleccionar Políticas Direccionales'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/politicas',
'description' => t('Seleccionar Políticas Direccionales')
);
}
$resultado[] = array(
'name' => t('Consultar Políticas Direccionales'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/consultar',
'description' => t('Consultar Políticas Direccionales')
);
if (ente_planificador_usuario_es_macro($ente_planificador)) {
$resultado[] = array(
'name' => t('Buscar Políticas Direccionales'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/buscar',
'description' => t('Buscar Políticas Direccionales')
);
}
return $resultado;
}
/*
* Implementation of ente_planificador_definir_politicas()
* Display default definir politicas
*/
function ente_planificador_definir_politicas($ente_planificador) {
drupal_set_title(t('Definición de posibles Políticas Direccionales'));
return politicas_direccionales_submenu_interfaz($ente_planificador);
}
/*
* Implementation of ente_planificador_seleccionar_politicas()
*/
function ente_planificador_seleccionar_politicas($ente_planificador) {
drupal_set_title(t('Definición de Políticas Direccionales'));
return politicas_direccionales_submenu_interfaz2($ente_planificador);
}
/*
* Implementation of politicas_direccionales_submenu_interfaz2
* Add menu items politicas
*/
function politicas_direccionales_submenu_interfaz2($ente_planificador) {
$submenu = array();
$smenu = array();
$i = 0;
$submenu[$i] = array(
'name'=> t("Políticas Direccionales"),
'description' => t("Gestionar Políticas Direccionales"),
'call' => "seleccionar_politicas"
);
$aux_menu = array();
foreach (module_list() as $module) {
if ($data = module_invoke($module, 'items_menu_politicas_' . $submenu[$i]['call'], $ente_planificador)) {
$aux_menu = array_merge_recursive($data, $aux_menu);
}
}
$smenu[$i] = $aux_menu;
return theme('planificacion_submenu_interfaz', $submenu, $smenu);
}
/*
* Implementation of ente_planificador_seleccionar_politicas()
*/
function ente_planificador_estrategias_politicas($ente_planificador) {
drupal_set_title(t('Definición de estrategias'));
return politicas_direccionales_submenu_interfaz3($ente_planificador);
}
/*
* Implementation of politicas_direccionales_submenu_interfaz2
* Add menu items politicas
*/
function politicas_direccionales_submenu_interfaz3($ente_planificador) {
$submenu = array();
$smenu = array();
$i = 0;
$submenu[$i] = array(
'name'=> t("Estrategias de Materialización"),
'description' => t("Gestionar Estrategias de Materialización de Políticas Direccionales"),
'call' => "estrategias_politicas"
);
$aux_menu = array();
foreach (module_list() as $module) {
if ($data = module_invoke($module, 'items_menu_politicas_' . $submenu[$i]['call'], $ente_planificador)) {
$aux_menu = array_merge_recursive($data, $aux_menu);
}
}
$smenu[$i] = $aux_menu;
return theme('planificacion_submenu_interfaz', $submenu, $smenu);
}
/*
* Implementation of hook_items_menu_politicas_estrategias_politicas()
* Add menus items in seleccionar politicas
*/
function politicas_direccionales_items_menu_politicas_estrategias_politicas($ente_planificador) {
global $user;
$resultado = array();
if (ente_planificador_usuario_tiene_estrategias_politicas_registrar($ente_planificador)) {
$resultado[] = array(
'name' => t('Registrar estrategias'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/registrar',
'description' => t('Agregar estrategias de materialización de políticas direccionales')
);
}
$resultado[] = array(
'name' => t('Consultar posibles estrategias'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/listar',
'description' => t('Consultar posibles estrategias de materialización de políticas direccionales')
);
/*
if (ente_planificador_usuario_tiene_estrategias_politicas_puede_articular($ente_planificador)) {
$resultado[] = array(
'name' => t('Identificar posible articulación'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/identificar',
'description' => t('Identificar posible articulación entre actores micro')
);
}
if (ente_planificador_usuario_es_macro($ente_planificador)) {
$resultado[] = array(
'name' => t('Consultar solicitudes de articulación'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/consultar_articulacion',
'description' => t('Consultar solicitudes de articulación')
);
}
if (ente_planificador_tiene_articulacion($ente_planificador)) {
$resultado[] = array(
'name' => t('Consultar solicitudes de articulación con Actores Micro'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/consultar_articulacion_micro',
'description' => t('Consultar solicitudes de articulación de los Actores Micro')
);
}
*/
/*
if (ente_planificador_usuario_tiene_estrategias_politicas_reformular($ente_planificador)) {
$resultado[] = array(
'name' => t('Reformulación de posibles estrategias'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/reformular',
'description' => t('Reformulación de posibles estrategias')
);
}
*/
if (ente_planificador_usuario_puede_estrategias_seleccionar($ente_planificador)) {
$resultado[] = array(
'name' => t('Seleccionar políticas direccionales'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/seleccionar',
'description' => t('Seleccionar estrategias para materializar políticas direccionales.')
);
}
$resultado[] = array(
'name' => t('Estrategias para materializar políticas direccionales'),
'path' => 'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/pol_estr',
'description' => t('Consultar estrategias para materializar políticas direccionales.')
);
return $resultado;
}
/*
* Implementation of politicas_direccionales_load_requerimientos()
* Leer requerimientos de una politica
*/
function politicas_direccionales_load_requerimientos(&$node){
$sql_query = "SELECT * FROM {politicas_ente} WHERE nid = %d AND vid = %d";
$result = db_query($sql_query, $node->nid, $node->vid);
$requerimientos = array();
while($requerimiento = db_fetch_object($result)) {
$requerimientos[$requerimiento->delta] = array(
'requerimiento' => $requerimiento->requerimiento,
'tipo' => $requerimiento->tipo,
);
}
$sql_query = "SELECT * FROM {politicas_ente_actor} WHERE nid = %d AND vid = %d";
$result = db_query($sql_query, $node->nid, $node->vid);
while($ente = db_fetch_object($result)) {
$requerimientos[$ente->delta]['entes'][$ente->delta1] = array(
'otro_ente' => $ente->otro_ente,
'ente' => $ente->ente,
'grado' => $ente->grado,
);
}
$node->requerimientos = $requerimientos;
}
/*
* Implementation of politicas_direccionales_agregar_form()
* Agregar o editar una politica
*/
function politicas_direccionales_agregar_form($form_state, $ente_planificador, $politica = 0) {
global $user;
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("posibles", $ente_planificador->tipo);
}
else {
if ($ente->nid == $ente_planificador->nid) {
muestra_mensaje("posibles", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
if (!$ente_has_acceso) {
drupal_goto('planificacion/' . $ente_planificador->nid . '/politicas/posibles');
}
$politicas_direccionales_path = drupal_get_path('module', 'politicas_direccionales');
drupal_add_js($politicas_direccionales_path . '/js/politicas_direccionales.js');
$politica_leido = new stdClass();
$politica_leido->type = 'politicas_direccionales';
$politica_leido->title = '';
$politica_leido->body = '';
$politica_leido->nid = 0;
$form = array();
if ($politica) {
$politica_load = $politica;
if($politica_load->nid && $politica_load->type == 'politicas_direccionales' && $politica_load->field_politicas_ente[0]['nid'] == $ente_planificador->nid && $mi_fecha[1] + 86399 > $politica_load->created && $mi_fecha[0] < $politica_load->created) {
$politica_leido = $politica_load;
$form['#titulo_pagina'] = t('Modificar posible política direccional');
}
}
if (!isset($form['#titulo_pagina'])) {
$form['#titulo_pagina'] = t('Agregar política direccional');
}
drupal_set_title($form['#titulo_pagina']);
politicas_direccionales_load_requerimientos($politica_leido);
$form['#node'] = $politica_leido;
$form['#ente_planificador'] = $ente_planificador;
$form['#politica'] = $politica_leido;
$form['body'] = array(
'#type' => 'textarea',
'#title' => t('Nombre de la política'),
'#default_value' => $politica_leido->body,
);
$mi_fecha = ente_planificador_user_acceso_proceso("causas", $ente_planificador->tipo);
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$sql_query = "SELECT c.nid FROM {content_type_causas} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c.field_ente_planifiador_nid = %d AND c.field_causa_critica_value = '1' AND n.created >= %d AND n.created <= %d ";
$result = db_query($sql_query, $sql_variables);
$causas = array();
$causas_arreglo = array();
$causas_id = array();
$vector = array();
while($causa = db_fetch_object($result)) {
$causas_id[$causa->nid] = $causa->nid;
$causa_load = node_load($causa->nid);
$causas[$causa->nid] = $causa_load->title;
if (is_array($causa_load->field_causa_solucion) && count($causa_load->field_causa_solucion)) {
$vector[$causa_load->nid] = array();
foreach ($causa_load->field_causa_solucion as $valor) {
$vector[$causa_load->nid][] = $valor['value'];
}
}
}
$form['#causas'] = $causas_id;
drupal_add_js(array('causas' => $form['#causas']), 'setting');
$form['#vector_descriptores'] = $vector;
if (!count($causas)) {
drupal_set_message(t('El ente @planificador aun no ha definido las causas críticas', array('@planificador' => check_plain($ente_planificador->title))));
drupal_goto('planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/listar');
}
$default_values = array();
if (count($politica_load->field_politicas_causas)) {
foreach($politica_load->field_politicas_causas as $causa) {
$default_values[] = $causa['nid'];
}
}
$form['causas_politica'] = array(
'#type' => 'select',
'#default_value' => $default_values,
'#options' => $causas,
'#multiple' => '1',
'#title' => t('Causas que aborda la política'),
);
$node_type = content_types('politicas_direccionales');
$fields = $node_type['fields'];
$field_form = array();
$arreglo = array(
'field_politicas_objetivog' => 'field_politicas_objetivog',
'field_politicas_objetivoe' => 'field_politicas_objetivoe',
'field_politicas_areasimp' => 'field_politicas_areasimp',
);
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('politicas_direccionales_ac_di_' . $field_id, FALSE)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'politicas_direccionales');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
$form['#politicas_direccionales_fields'] = $fields_form;
$sql = "SELECT n.nid as nid, n.title as title from {node} n, {node_revisions} rv where n.vid = rv.vid AND (n.type in ('ente_planificador')) AND (n.status <> 0)";
$entes = array();
$result = db_query($sql);
$entes['otro'] = t('Otro actor planificador');
while($ente = db_fetch_object($result)) {
$entes[$ente->nid] = $ente->title;
}
$grados = array();
$grados['p'] = t('Politico');
$grados['c'] = t('Cognitivo');
$grados['t'] = t('Tecnológico');
$form['#arreglo'] = $arreglo;
$form['#grados'] = $grados;
$form['#entes'] = $entes;
$cantidad_requerimientos = count($form['#node']->requerimientos);
$cantidad_requerimientos = $cantidad_requerimientos ? $cantidad_requerimientos : 1;
$form['campo_requerimiento'] = array(
'#type' => 'fieldset',
'#title' => t('Requerimientos'),
);
for ($i = 0; $i < $cantidad_requerimientos; $i++) {
$form['campo_requerimiento']['politica_' . $i] = array(
'#type' => 'fieldset',
'#title' => t('Requerimiento %numero', array('%numero' => ($i + 1))),
);
if ($i == 0) {
$form['campo_requerimiento']['politica_' . $i]['#prefix'] .= '';
}
$valor = $form['#node']->requerimientos[$i]['requerimiento'] ? $form['#node']->requerimientos[$i]['requerimiento'] : '';
$form['campo_requerimiento']['politica_' . $i]['req_' . $i] = array(
'#type' => 'textfield',
'#title' => t('Requerimiento'),
'#required' => FALSE,
'#default_value' => $valor,
'#prefix' => '',
);
$valor = $form['#node']->requerimientos[$i]['tipo'] ? $form['#node']->requerimientos[$i]['tipo'] : '';
$form['campo_requerimiento']['politica_' . $i]['tipo_' . $i] = array(
'#type' => 'select',
'#default_value' => $valor,
'#options' => $form['#grados'],
'#multiple' => FALSE,
'#title' => t('Tipo'),
);
$form['campo_requerimiento']['politica_' . $i]['actores'] = array(
'#type' => 'fieldset',
'#title' => t('Actores'),
);
$cantidad_entes = count($form['#node']->requerimientos[$i]['entes']);
$cantidad_entes = $cantidad_entes ? $cantidad_entes : 1;
for ($j = 0; $j < $cantidad_entes; $j++) {
$valor = $form['#node']->requerimientos[$i]['entes'][$j]['ente'] ? $form['#node']->requerimientos[$i]['entes'][$j]['ente'] : 'otro';
$form['campo_requerimiento']['politica_' . $i]['actores']['entes_' . $i . '_' . $j] = array(
'#type' => 'select',
'#default_value' => $valor,
'#options' => $form['#entes'],
'#multiple' => FALSE,
'#title' => t('Actor'),
'#prefix' => $valor,
'#attributes' => array('class' => 'ente-actores ente-actores-' . $i . '_' . $j . ' actores-requerimientos actores-requerimiento-' . $i, 'requerimiento' => $i, 'cant_actor' => $j),
);
if ($j == 0) {
$form['campo_requerimiento']['politica_' . $i]['actores']['entes_' . $i . '_' . $j]['#prefix'] .= '
';
}
$valor = $form['#node']->requerimientos[$i]['entes'][$j]['ente'] ? '' : $form['#node']->requerimientos[$i]['entes'][$j]['otro_ente'];
$form['campo_requerimiento']['politica_' . $i]['actores']['otro_' . $i . '_' . $j] = array(
'#type' => 'textfield',
'#title' => t('Nombre del Actor'),
'#required' => FALSE,
'#size' => 10,
'#default_value' => $valor,
'#attributes' => array('class' => 'ente-otros ente-otros-' . $i . '_' . $j . ' otros-requerimientos otros-requerimiento-' . $i, 'requerimiento' => $i, 'cant_actor' => $j),
);
$valor = $form['#node']->requerimientos[$i]['entes'][$j]['grado'] ? $form['#node']->requerimientos[$i]['entes'][$j]['grado'] : 0;
$form['campo_requerimiento']['politica_' . $i]['actores']['grado_' . $i . '_' . $j] = array(
'#type' => 'textfield',
'#title' => t('Grado de Control'),
'#required' => FALSE,
'#size' => 10,
'#default_value' => $valor,
'#suffix' => '',
'#element_validate' => array('politicas_direccionales_number_float_validate',),
);
}
$form['campo_requerimiento']['politica_' . $i]['actores']['cantidad_ente_' . $i] = array('#type' => 'hidden', '#value' => $cantidad_entes, '#suffix' => '
');
$form['campo_requerimiento']['politica_' . $i]['actores']['agrega_' . $i] = array(
'#type' => 'submit',
'#default_value' => t('Agregar otro ente'),
'#ahah' => array(
'path' => 'politicas_direccionales_agregar_js/ente/' . $i,
'wrapper' => 'nuevoente_' . $i,
'method' => 'replace',
'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
),
);
}
$form['campo_requerimiento']['cantidad_requerimientos'] = array('#type' => 'hidden', '#value' => $cantidad_requerimientos, '#suffix' => '
');
$form['campo_requerimiento']['agregar_req'] = array(
'#type' => 'submit',
'#default_value' => t('Agregar otro requerimiento'),
'#ahah' => array(
'path' => 'politicas_direccionales_agregar_js/requerimiento',
'wrapper' => 'requerimientos',
'method' => 'replace',
'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
),
);
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
'#weight' => 100,
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#weight' => 100,
);
$form['buttons']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#weight' => 100,
);
$form['#after_build'] = array();
$form['#after_build'][] = 'politicas_direccionales_skip_validation_form_after_build';
return $form;
}
/*
* Implementation of politicas_direccionales_skip_validation_form_after_build()
* Agregar funcion para eliminar la validacion cuando se presiona el boton cancel
*/
function politicas_direccionales_skip_validation_form_after_build($form, &$form_state) {
if($form_state['clicked_button']['#value'] == t('Cancel')) {
_politicas_direccionales_disable_validation($form);
}
return $form;
}
/*
* Implementation of _politicas_direccionales_disable_validation()
* funcion para eliminar la validacion por defecto de un formulario
*/
function _politicas_direccionales_disable_validation(&$element) {
unset($element['#needs_validation']);
foreach(element_children($element) as $key) {
_politicas_direccionales_disable_validation($element[$key]);
}
}
/*
* Implementation of politicas_direccionales_number_float_validate()
* Validar que el texto introducido sea un float
*/
function politicas_direccionales_number_float_validate($element, &$form_state) {
$start = $element['#value'];
$value = preg_replace('@[^-0-9\.]@', '', $start);
if ($start != $value) {
form_set_error($element['#name'], t('Only numbers and decimals are allowed in %field.', array('%field' => $element['#title'])));
}
elseif ($value < 0) {
form_set_error($element['#name'], t('El valor minimo permitido in %field es 0.', array('%field' => $element['#title'])));
}
elseif ($value > 100) {
form_set_error($element['#name'], t('El valor maximo permitido in %field es 100.', array('%field' => $element['#title'])));
}
}
/*
* Implementation of politicas_direccionales_agregar_form_validate()
*/
function politicas_direccionales_agregar_form_validate($form, &$form_state){
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Cancel')) {
return;
}
drupal_set_title($form['#titulo_pagina']);
if (trim($form_state['values']['body']) == '') {
form_set_error('body', t('Debe agregar el titulo de la política direccional'));
}
//debe existir al menos un requerimiento
$requerimiento = trim(check_plain($form_state['values']['req_0']));
if ($requerimiento == '') {
form_set_error('req_0', t('Debe ingresar al menos un requerimiento'));
}
}
/*
* Implementation of politicas_direccionales_agregar_form_submit()
*/
function politicas_direccionales_agregar_form_submit($form, &$form_state){
global $user;
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
$ente_planificador = $form['#ente_planificador'];
if ($op == t('Cancel')) {
drupal_goto('planificacion/' . $ente_planificador->nid . '/politicas/posibles/listar');
return;
}
$politica = $form['#politica'];
module_load_include('inc', 'node', 'node.pages');
$nuevo = FALSE;
$field_form = $form['#politicas_direccionales_fields'];
$politica->title = 'POlitica ente ' . $ente_planificador->nid;
$politica->uid = $user->uid;
$politica->body = check_plain($form_state['values']['body']);
$form_values = $form_state['values'];
if (is_array($field_form) && count($field_form)) {
foreach ($field_form as $field_id) {
if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
foreach($form_values[$field_id] as $id => $value) {
if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
unset($form_values[$field_id][$id]['_error_element']);
}
}
$politica->{$field_id} = $form_values[$field_id];
}
}
}
if (!isset($politica->field_politicas_ente)) {
$politica->field_politicas_ente = array();
$politica->field_politicas_ente[] = array('nid' => $form['#ente_planificador']->nid);
}
$politica->field_politicas_seleccionada = array();
$politica->field_politicas_seleccionada[] = array('value' => 'NO');
$politica->field_politicas_viable = array();
$politica->field_politicas_viable[] = array('value' => 'NO');
node_object_prepare($politica);
$politica->revision = 1;
$politica->log = $politica->nid ? t('Se modificó la política') : t('Se agregó la política');
$politica->field_politicas_causas = array();
if (count($form_values['causas_politica'])) {
foreach($form_values['causas_politica'] as $causa) {
$politica->field_politicas_causas[] = array('nid' => $causa);
}
}
//se obtienen los requerimientos y se guardan los campos para facilitar la busqueda
$politica->field_politicas_requerimientos = array();
if ($form_values['cantidad_requerimientos']) {
for($i = 0; $i < $form_values['cantidad_requerimientos']; $i++) {
$requerimiento = trim(check_plain($form_values['req_' . $i]));
if ($form_values['cantidad_ente_' . $i] && $requerimiento != '') {
$form_values['req_' . $i] = $requerimiento;
$politica->field_politicas_requerimientos[] = array('value' => $form_values['req_' . $i]);
}
}
}
node_save($politica);
db_query('DELETE FROM {politicas_ente} WHERE nid = %d AND vid = %d', $politica->nid, $politica->vid);
db_query('DELETE FROM {politicas_ente_actor} WHERE nid = %d AND vid = %d', $politica->nid, $politica->vid);
if ($form_values['cantidad_requerimientos']) {
for($i = 0; $i < $form_values['cantidad_requerimientos']; $i++) {
if ($form_values['cantidad_ente_' . $i] && $form_values['req_' . $i] != '') {
$politica->politicas_ente[$i] = array(
'requerimiento' => $form_values['req_' . $i],
'tipo' => check_plain($form_values['tipo_' . $i]),
);
db_query("insert into {politicas_ente} (nid, vid, delta, requerimiento, tipo) values (%d, %d, %d, '%s', '%s')", $politica->nid, $politica->vid, $i, $politica->politicas_ente[$i]['requerimiento'], $politica->politicas_ente[$i]['tipo']);
for($j = 0; $j < $form_values['cantidad_ente_' . $i]; $j++) {
$politica->politicas_ente[$i]['entes'][$j] = array(
'otro_ente' => check_plain($form_values['otro_' . $i . '_' . $j]),
'ente' => $form_values['entes_' . $i . '_' . $j] == 'otro' ? 0 : $form_values['entes_' . $i . '_' . $j],
'grado' => $form_values['grado_' . $i . '_' . $j],
);
db_query("insert into {politicas_ente_actor} (nid, vid, delta, delta1, otro_ente, ente, grado) values (%d, %d, %d, %d, '%s', %d, %f)", $politica->nid, $politica->vid, $i, $j, $politica->politicas_ente[$i]['entes'][$j]['otro_ente'], $politica->politicas_ente[$i]['entes'][$j]['ente'], $politica->politicas_ente[$i]['entes'][$j]['grado']);
}
}
}
}
$form['#politica'] = $politica;
if ($nuevo) {
drupal_set_message(t('Se ha agregado la política direccional "@politica"', array('@politica' => $politica->title)));
}
else {
drupal_set_message(t('Se ha modificado la política direccional "@politica"', array('@politica' => $politica->title)));
}
if (!$form_state['redirect']){
$form_state['redirect'] = array(
'planificacion/' . $ente_planificador->nid . '/politicas/posibles/listar',
);
}
}
/*
* Implementation of politicas_direccionales_agregar_accion_form()
*/
function politicas_direccionales_agregar_accion_form($form_state, $ente_planificador, $politica = 0) {
global $user;
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("posibles", $ente_planificador->tipo);
}
else {
if ($ente->nid == $ente_planificador->nid) {
muestra_mensaje("posibles", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
if (!$ente_has_acceso || !$politica) {
drupal_goto('planificacion/' . $ente_planificador->nid . '/politicas/posibles');
}
$form = array();
if ($politica) {
$politica_load = $politica;
if($politica_load->nid && $politica_load->type == 'politicas_direccionales' && $politica_load->field_politicas_ente[0]['nid'] == $ente_planificador->nid && $mi_fecha[1] + 86399 > $politica_load->created && $mi_fecha[0] < $politica_load->created) {
$politica_leido = $politica_load;
$form['#titulo_pagina'] = t('Acciones para construir viabilidad para la posible política "@titulo"', array('@titulo' => $politica_leido->title));
}
}
if (!isset($form['#titulo_pagina'])) {
$form['#titulo_pagina'] = t('Agregar política direccional');
}
drupal_set_title($form['#titulo_pagina']);
politicas_direccionales_load_requerimientos($politica_leido);
$form['#node'] = $politica_leido;
$form['#ente_planificador'] = $ente_planificador;
$form['#politica'] = $politica_leido;
$node_type = content_types('politicas_direccionales');
$fields = $node_type['fields'];
$field_form = array();
$arreglo = array(
'field_politicas_acciones_viab' => 'field_politicas_acciones_viab',
);
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('politicas_direccionales_ac_di_' . $field_id, FALSE)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'politicas_direccionales');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
$form['#politicas_direccionales_fields'] = $fields_form;
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
'#weight' => 100,
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#weight' => 100,
);
$form['buttons']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#weight' => 100,
);
$form['#after_build'] = array();
$form['#after_build'][] = 'politicas_direccionales_skip_validation_form_after_build';
return $form;
}
/*
* Implementation of politicas_direccionales_agregar_accion_form_submit()
*/
function politicas_direccionales_agregar_accion_form_submit($form, &$form_state){
if (!$_REQUEST['destination']) {
$form_state['redirect'] = 'planificacion/' . $form['#ente_planificador']->nid . '/politicas/seleccionar/inviables';
}
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
$ente_planificador = $form['#ente_planificador'];
if ($op == t('Cancel')) {
return;
}
$politica = $form['#politica'];
module_load_include('inc', 'node', 'node.pages');
$nuevo = FALSE;
$field_form = $form['#politicas_direccionales_fields'];
$form_values = $form_state['values'];
if (is_array($field_form) && count($field_form)) {
foreach ($field_form as $field_id) {
if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
foreach($form_values[$field_id] as $id => $value) {
if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
unset($form_values[$field_id][$id]['_error_element']);
}
}
$politica->{$field_id} = $form_values[$field_id];
}
}
}
node_object_prepare($politica);
$politica->revision = 1;
$politica->log = t('Se agregarón las acciones para construir la viabilidad de la política "@politica"', array('@politica' => $politica->title));
node_save($politica);
//se agregan los requerimientos a la nueva version del nodo
db_query("UPDATE {politicas_ente} SET vid = %d WHERE nid = %d", $politica->vid, $politica->nid);
db_query("UPDATE {politicas_ente_actor} SET vid = %d WHERE nid = %d", $politica->vid, $politica->nid);
drupal_set_message(t('Se agregarón las acciones para construir la viabilidad de la política "@politica"', array('@politica' => $politica->title)));
}
/*
* Implementation of ente_planificador_definir_politicas_listar()
* Listar politicas
*/
function ente_planificador_definir_politicas_listar($ente_planificador) {
drupal_set_title(t('Posibles politicas direccionales'));
global $user;
$ente = usuario_tiene_ente($user->uid);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("posibles", $ente_planificador->tipo);
}
else {
if ($user->entes == $ente_planificador->nid) {
muestra_mensaje("posibles", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $fecha && $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_planificador = node_load($macro);
}
}
$step = 10;
$headers_table = array();
$headers_table[] = array(
'data' => t('Nombre de la política Direccional'),
'sort' => 'asc',
'field' => 'n.title'
);
$headers_table[] = array(
'data' => t('Causas Críticas'),
);
if ($ente_has_acceso) {
$headers_table[] = array(
'data' => t('Operación'),
);
}
$sqlcount = "select count(c.nid) FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND n.created >= %d AND n.created <= %d";
$sql_query = "SELECT c.nid, n.title FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND n.created >= %d AND n.created <= %d ";
$sql_query.= tablesort_sql($headers_table);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = pager_query($sql_query, $step, 0, $sqlcount, $sql_variables);
$mi_fecha_causas = ente_planificador_user_acceso_proceso("causas", $ente_planificador->tipo);
$sql_variables1[] = $ente_planificador->nid;
$sql_variables1[] = $mi_fecha_causas[0];
$sql_variables1[] = $mi_fecha_causas[1] + 86399;
$sql_query1 = "SELECT c.nid, n.title FROM {content_type_causas} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c.field_ente_planifiador_nid = %d AND c.field_causa_critica_value = '1' AND n.created >= %d AND n.created <= %d ";
$resultado = db_query($sql_query1, $sql_variables1);
$causas = array();
$causas_arreglo = array();
$vector = array();
$causas_array = array();;
while($causa = db_fetch_object($resultado)) {
$causas_array[$causa->nid] = check_plain($causa->title);
}
while($politica = db_fetch_object($result)) {
$politica_load = node_load($politica->nid);
$row = array();
$titulo = trim($politica_load->body) != ''? $politica_load->body : $politica_load->title;
$row[] = array('data' => $titulo, );
$causas = array();
foreach($politica_load->field_politicas_causas as $causa) {
if (isset($causas_array[$causa['nid']]) && $causas_array[$causa['nid']]) {
$causas[] = $causas_array[$causa['nid']];
}
}
$row[] = array('data' => theme('item_list', $causas), );
if ($ente_has_acceso) {
$links = array();
$links[] = l(t('Modificar'), 'planificacion/' . $ente_planificador->nid . '/politicas/posibles/' . $politica->nid . '/editar', array('query' => array('destination' => 'planificacion/' . $ente_planificador->nid . '/politicas/posibles/listar'),));
$links[] = l(t('Eliminar'), 'planificacion/' . $ente_planificador->nid . '/politicas/posibles/' . $politica->nid . '/remove', array('query' => array('destination' => 'planificacion/' . $ente_planificador->nid . '/politicas/posibles/listar'),));
$row[] = array('data' => theme('item_list', $links),);
}
$rows[] = $row;
}
if (!count($rows)) {
$row = array();
$row[] = array('data' => t('No se encontraron Políticas Direccionales para este ente'), 'colspan' => '4');
$rows[] = $row;
}
$output = theme('table', $headers_table, $rows);
if ($ente_has_acceso) {
$output .= l(t('Registrar Posible Política Direccional'), 'planificacion/' . $ente_planificador->nid . '/politicas/posibles/registrar');
}
$output .= theme('pager', NULL);
return $output;
}
/*
* Implementation of ente_planificador_definir_politicas_listar_inviables()
* Listar politicas inivables
*/
function ente_planificador_definir_politicas_listar_inviables($ente_planificador) {
drupal_set_title(t('Consultar posibles políticas inviables'));
global $user;
$ente = usuario_tiene_ente($user->uid);
$mi_fecha = ente_planificador_user_acceso_proceso("viabilidad", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("posibles", $ente_planificador->tipo);
}
else {
if ($user->entes == $ente_planificador->nid) {
muestra_mensaje("posibles", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $fecha && $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_planificador = node_load($macro);
}
}
$step = 10;
$headers_table = array();
$headers_table[] = array(
'data' => t('Nombre de la política Direccional'),
'sort' => 'asc',
'field' => 'n.title'
);
$headers_table[] = array(
'data' => t('Acciones para Construir Viabilidad'),
);
$puede_viabilidad = ente_planificador_usuario_tiene_politicas_viabilidad($ente_planificador);
if ($puede_viabilidad && $ente_has_acceso) {
$headers_table[] = array(
'data' => t('Operación'),
);
}
$sqlcount = "select count(c.nid) FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND c.field_politicas_viable_value = 'NO' AND n.created >= %d AND n.created <= %d";
$sql_query = "SELECT c.nid, n.title FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND c.field_politicas_viable_value = 'NO' AND n.created >= %d AND n.created <= %d ";
$sql_query.= tablesort_sql($headers_table);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = pager_query($sql_query, $step, 0, $sqlcount, $sql_variables);
while($politica = db_fetch_object($result)) {
$politica_load = node_load($politica->nid);
$row = array();
$row[] = array('data' => $politica_load->body, );
$viabilidades = array();
if ($politica_load->field_politicas_acciones_viab[0]['value']){
foreach($politica_load->field_politicas_acciones_viab as $viabilidad) {
if (trim($viabilidad['value']) != ''){
$viabilidades[] = $viabilidad['value'];
}
}
}
$cuenta = count($viabilidades);
$row[] = array('data' => theme('item_list', $viabilidades), );
if ($puede_viabilidad && $ente_has_acceso) {
$links = array();
$links[] = l(t('Modificar acciones para construir viabilidad'), 'planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/' . $politica->nid . '/editar_accion', array('query' => array('destination' => 'planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/inviables'),));
$links[] = l(t('Eliminar acciones para construir viabilidad'), 'planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/' . $politica->nid . '/remove_accion', array('query' => array('destination' => 'planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/inviables'),));
$row[] = array('data' => theme('item_list', $links),);
}
$rows[] = $row;
}
if (!count($rows)) {
$row = array();
$row[] = array('data' => t('No se encontraron Políticas Direccionales inviables para este ente'), 'colspan' => '4');
$rows[] = $row;
}
$output = theme('table', $headers_table, $rows);
$output .= theme('pager', NULL);
return $output;
}
/*
* Implementation of politicas_direccionales_seleccionar_politicas_listar()
* Listar politicas direccionales
*/
function politicas_direccionales_seleccionar_politicas_listar($ente_planificador) {
drupal_set_title(t('Consultar políticas direccionales'));
global $user;
$ente = usuario_tiene_ente($user->uid);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("posibles", $ente_planificador->tipo);
}
else {
if ($user->entes == $ente_planificador->nid) {
muestra_mensaje("posibles", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $fecha && $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_planificador = node_load($macro);
}
}
$step = 10;
$headers_table = array();
$headers_table[] = array(
'data' => t('Nombre de la política Direccional'),
'sort' => 'asc',
'field' => 'n.title'
);
$headers_table[] = array(
'data' => t('Acciones para Construir Viabilidad'),
);
$sqlcount = "select count(c.nid) FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND c.field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d";
$sql_query = "SELECT c.nid, n.title FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d ";
$sql_query.= tablesort_sql($headers_table);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = pager_query($sql_query, $step, 0, $sqlcount, $sql_variables);
while($politica = db_fetch_object($result)) {
$politica_load = node_load($politica->nid);
$row = array();
$row[] = array('data' => $politica_load->body, );
$viabilidades = array();
if ($politica_load->field_politicas_acciones_viab[0]['value']) {
foreach($politica_load->field_politicas_acciones_viab as $viabilidad) {
if (trim($viabilidad['value']) != ''){
$viabilidades[] = $viabilidad['value'];
}
}
}
$cuenta = count($viabilidades);
if ($cuenta) {
$row[] = array('data' => theme('item_list', $viabilidades), );
}
else {
$row[] = array('data' => t('No existen acciones para construir viabilidad para esta política'), );
}
$rows[] = $row;
}
if (!count($rows)) {
$row = array();
$row[] = array('data' => t('No se encontraron Políticas Direccionales para este ente'), 'colspan' => '3');
$rows[] = $row;
}
$output = theme('table', $headers_table, $rows);
$output .= theme('pager', NULL);
return $output;
}
/**
* Implementation of hook_theme().
*/
function politicas_direccionales_theme() {
$politicas_direccionales_path = drupal_get_path('module', 'politicas_direccionales') . '/templates';
return array(
'politicas_direccionales_agregar_form' => array(
'arguments' => array('form' => NULL),
),
'politicas_direccionales_agregar_estrategia_form' => array(
'arguments' => array('form' => NULL),
),
'politicas_direccionales_ver_articulacion' => array(
'arguments' => array(
'articulacion' => array(),
),
'template' => 'politicas-direccionales-ver-articulacion',
'path' => $politicas_direccionales_path,
),
'politicas_direccionales_ver_estrategia' => array(
'arguments' => array(
'politica' => array(),
'estrategia' => array(),
),
'template' => 'politicas-direccionales-ver-estrategia',
'path' => $politicas_direccionales_path,
),
);
}
/**
* Implementation of theme_politicas_direccionales_agregar_form().
* El tema para el formulario de agregar o editar politicas
*/
function theme_politicas_direccionales_agregar_form($form) {
$output = '';
$output .= drupal_render($form['body']);
$output .= drupal_render($form['causas_politica']);
if (count($form['#vector_descriptores'])) {
$output .= '';
}
$output .= '';
$output .= drupal_render($form['field_politicas_areasimp']);
$output .= drupal_render($form);
return $output;
}
/*
* Implementation of hook_node_info()
*/
function politicas_direccionales_node_info() {
return array(
'politicas_direccionales' => array(
'name' => t('Políticas Direcionales'),
'description' => t('Políticas Direcionales'),
'has_body' => TRUE,
'has_title' => TRUE,
'title_label' => 'Nombre de la Política',
'body_label' => 'Nombre de la Política',
'module' => 'politicas_direccionales',
),
'estrategia' => array(
'name' => t('estrategias'),
'description' => t('estrategias'),
'has_body' => TRUE,
'has_title' => TRUE,
'title_label' => 'estrategia',
'body_label' => 'estrategia',
'module' => 'politicas_direccionales',
),
);
}
/*
* Implementation of hook_form()
*/
function politicas_direccionales_form(&$node, $form_state) {
return node_content_form($node, $form_state);
}
/*
* Implementation of hook_access
*/
function politicas_direccionales_access($op, $node, $account) {
global $user;
if ($op == 'view') {
return user_access('ver planificador');
}
if ($node->type == 'estrategia' && $op == 'delete' && $account->uid == $node->uid && user_access('ver planificador')){
return TRUE;
}
if ($op == 'create' || $op == 'delete' || $op == 'edit') {
return (user_access('admin planificador'));
}
}
/*
* hook_form_alter()
*/
function politicas_direccionales_form_alter(&$form, $form_state, $form_id) {
//impedir que los campos sean borrados con la interfaz
if ($form_id == 'content_field_overview_form' && $form['#type_name'] == 'direccionales'){
$arreglo = array('field_direccional_causa', 'field_direccional_ente', 'field_direccional_seleccionado', 'field_direccional_requerimientos', 'field_direccional_actores');
foreach ($arreglo as $valor) {
if (isset($form[$valor]['remove']['#value'])) {
$form[$valor]['remove']['#value'] = '';
}
}
}
if ($form_id == 'content_field_remove_form' && $form['type_name']['#value'] == 'direccionales'){
$arreglo = array('field_direccional_causa', 'field_direccional_ente', 'field_direccional_seleccionado', 'field_direccional_requerimientos', 'field_direccional_actores');
foreach ($arreglo as $valor) {
if($form['field_name']['#value'] == $valor) {
$form['actions']['submit']['#access'] = FALSE;
$form['description']['#value'] = t('Acción no permitida este campo ha sido agregado por un modulo.');
}
}
}
}
/**
* Implementation of hook_form_FORM_ID_alter(): content_field_edit_form.
*/
function politicas_direccionales_form_content_field_edit_form_alter(&$form, $form_state) {
if ($form['#field']['type_name'] == 'direccionales') {
$form['widget']['ente_planificador'] = array(
'#title' => 'ente planificador',
'#type' => 'checkbox',
'#default_value' => variable_get('ente_planificador_' . $form['#field']['field_name'], FALSE),
'#return_value' => '1',
);
$form['#submit'][] = 'politicas_direccionales_content_field_edit_form_submit';
}
}
/*
* Implementation of politicas_direccionales_agregar_estrategia_form()
*/
function politicas_direccionales_content_field_edit_form_submit($form, &$form_state) {
variable_set('ente_planificador_' . $form_state['values']['field_name'], $form_state['values']['ente_planificador']);
}
//ESTRATEGIAS
/*
* Implementation of politicas_direccionales_agregar_estrategia_form()
*/
function politicas_direccionales_agregar_estrategia_form($form_state, $ente_planificador, $estrategia = 0) {
global $user;
$proceso = arg(5) == 'reformular' ? 'reformulacion_estrategias' : 'estrategias';
$mi_fecha = ente_planificador_user_acceso_proceso($proceso, $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje($proceso, $ente_planificador->tipo);
}
else {
if ($ente->nid == $ente_planificador->nid) {
muestra_mensaje($proceso, $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
$politicas_direccionales_path = drupal_get_path('module', 'politicas_direccionales');
drupal_add_js($politicas_direccionales_path . '/js/estrategias.js');
$estrategia_leido = new stdClass();
$estrategia_leido->type = 'estrategia';
$estrategia_leido->title = '';
$estrategia_leido->body = '';
$estrategia_leido->nid = 0;
$form = array();
if ($estrategia) {
$estrategia_load = $estrategia;
if($estrategia_load->nid && $estrategia_load->type == 'estrategia' && $estrategia_load->field_estrategia_ente[0]['nid'] == $ente_planificador->nid && $mi_fecha[1] + 86399 > $estrategia_load->created && $mi_fecha[0] < $estrategia_load->created) {
$estrategia_leido = $estrategia_load;
$form['#titulo_pagina'] = t('Modificar la estrategia');
}
}
if (!isset($form['#titulo_pagina'])) {
$form['#titulo_pagina'] = t('Agregar estrategia');
}
$ente_planificador1 = $ente_planificador;
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_has_acceso = TRUE;
$ente_planificador1 = node_load($macro);
}
}
drupal_set_title($form['#titulo_pagina']);
$form['#node'] = $estrategia_leido;
$form['#proceso'] = $proceso;
$form['#ente_planificador'] = $ente_planificador;
$form['#estrategia'] = $estrategia_leido;
$sql_query = "SELECT c.nid FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d ";
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador1->tipo);
$sql_variables[] = $ente_planificador1->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = db_query($sql_query, $sql_variables);
$politicas = array();
$politicas_arreglo = array();
$vector = array();
while($politica = db_fetch_object($result)) {
$politica_load = node_load($politica->nid);
$politicas[$politica_load->nid] = $politica_load->body;
if (is_array($politica_load->field_politicas_requerimientos) && count($politica_load->field_politicas_requerimientos)) {
$vector[$politica_load->nid] = array();
foreach ($politica_load->field_politicas_requerimientos as $valor) {
$vector[$politica_load->nid][] = $valor['value'];
}
}
}
$form['#politicas'] = $politicas;
drupal_add_js(array('politicas' => $form['#politicas']), 'setting');
$form['#vector_requerimientos'] = $vector;
if (!count($politicas)) {
drupal_set_message(t('El ente @planificador aun no ha definido las Políticas Direccionales', array('@planificador' => check_plain($ente_planificador->title))));
drupal_goto('planificacion/' . $ente_planificador->nid . '/politicas/seleccionar/listar');
}
$default_values = array();
if (count($estrategia_load->field_estrategia_politicas_d)) {
foreach($estrategia_load->field_estrategia_politicas_d as $politica) {
$default_values[] = $politica['nid'];
}
}
$form['estrategia_politica'] = array(
'#type' => 'select',
'#default_value' => $default_values,
'#options' => $politicas,
'#multiple' => '1',
'#title' => t('Política que aborda la estrategia'),
'#required' => TRUE,
);
$form['title'] = array(
'#type' => 'textfield',
'#title' => t('Nombre de la estrategia'),
'#required' => TRUE,
'#size' => 40,
'#default_value' => $estrategia_leido->title,
);
$node_type = content_types('estrategia');
$fields = $node_type['fields'];
$field_form = array();
$arreglo = array(
'field_estrategia_area' => 'field_estrategia_area',
'field_estrategia_actores' => 'field_estrategia_actores',
);
if (is_array($fields) && count($fields)) {
foreach($fields as $field_id => $field) {
if (array_key_exists($field_id, $arreglo)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
elseif (variable_get('politicas_direccionales_ac_di_' . $field_id, FALSE)) {
$field_form[] = $field_id;
$fields_form[] = $field_id;
}
}
}
if (is_array($field_form) && count($field_form)) {
module_load_include('inc', 'content', 'includes/content.node_form');
foreach ($field_form as $field_id) {
$field = content_fields($field_id, 'estrategia');
$form['#field_info'][$field_id] = $field;
$form += (array) content_field_form($form, $form_state, $field);
}
}
$form['#estrategias_fields'] = $fields_form;
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
'#weight' => 100,
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#weight' => 100,
);
$form['buttons']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#weight' => 100,
);
$form['#after_build'] = array();
$form['#after_build'][] = 'politicas_direccionales_skip_validation_form_after_build';
return $form;
}
/*
* Implementation of theme_politicas_direccionales_agregar_estrategia_form()
* Tema para el formulario de agregar o editar una estrategias
*/
function theme_politicas_direccionales_agregar_estrategia_form($form) {
$output = '';
$output .= drupal_render($form['estrategia_politica']);
if (count($form['#vector_requerimientos'])) {
$output .= '';
}
$output .= drupal_render($form['title']);
$output .= drupal_render($form);
return $output;
}
/*
* Implementation of politicas_direccionales_agregar_estrategia_form_validate()
*/
function politicas_direccionales_agregar_estrategia_form_validate($form, &$form_state){
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
if ($op == t('Cancel')) {
return;
}
drupal_set_title($form['#titulo_pagina']);
if (trim($form_state['values']['title']) == '') {
form_set_error('title', t('Debe agregar el nombre de la estrategia'));
}
}
/*
* Implementation of politicas_direccionales_agregar_estrategia_form_submit()
*/
function politicas_direccionales_agregar_estrategia_form_submit($form, &$form_state){
global $user;
$ente_planificador = $form['#ente_planificador'];
if (!$form_state['redirect']) {
$form_state['redirect'] = 'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/listar';
}
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
$ente_planificador = $form['#ente_planificador'];
if ($op == t('Cancel')) {
drupal_goto('planificacion/' . $ente_planificador->nid . '/politicas/estrategias/listar');
return;
}
$estrategia = $form['#estrategia'];
module_load_include('inc', 'node', 'node.pages');
$nuevo = FALSE;
$field_form = $form['#estrategias_fields'];
$estrategia->title = check_plain($form_state['values']['title']);
$estrategia->uid = $user->uid;
$form_values = $form_state['values'];
if (is_array($field_form) && count($field_form)) {
foreach ($field_form as $field_id) {
if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
foreach($form_values[$field_id] as $id => $value) {
if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
unset($form_values[$field_id][$id]['_error_element']);
}
}
$estrategia->{$field_id} = $form_values[$field_id];
}
}
}
if (!isset($estrategia->field_estrategia_ente)) {
$estrategia->field_estrategia_ente = array();
$estrategia->field_estrategia_ente[] = array('nid' => $form['#ente_planificador']->nid);
}
node_object_prepare($estrategia);
$estrategia->revision = 1;
$estrategia->log = $estrategia->nid ? t('Se modificó la estrategia') : t('Se agregó la estrategia');
$estrategia->field_estrategia_politicas_d = array();
if (count($form_values['estrategia_politica'])) {
foreach($form_values['estrategia_politica'] as $politica) {
$estrategia->field_estrategia_politicas_d[] = array('nid' => $politica);
}
}
node_save($estrategia);
$form['#estrategia'] = $estrategia;
if ($nuevo) {
drupal_set_message(t('Se ha agregado la estrategia @estrategia', array('@estrategia' => $estrategia->title)));
}
else {
drupal_set_message(t('Se ha modificado la estrategia @estrategia', array('@estrategia' => $estrategia->title)));
}
if (!$form_state['redirect']){
$form_state['redirect'] = array(
'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/listar',
);
}
}
/*
* Implementation of leer_estrategias_por_politica()
* Leer estrategias dada una politica
*/
function leer_estrategias_por_politica($ente_planificador, $politica){
$estrategias = array();
if ($ente_planificador && $ente_planificador->nid && $politica && $politica->nid) {
if ($ente_planificador->tipo == 1) {
$resultado = db_query("SELECT n.nid, n.title, n.uid, e.field_estrategia_ente_nid FROM {node} AS n INNER JOIN {content_field_estrategia_politicas_d} AS p ON p.nid = n.nid AND p.vid = n.vid INNER JOIN {content_type_estrategia} AS e ON e.nid = n.nid AND e.vid = n.vid WHERE p.field_estrategia_politicas_d_nid = %d ORDER BY n.title", $politica->nid);
}
else {
$resultado = db_query("SELECT n.nid, n.title, n.uid, e.field_estrategia_ente_nid FROM {node} AS n INNER JOIN {content_field_estrategia_politicas_d} AS p ON p.nid = n.nid AND p.vid = n.vid INNER JOIN {content_type_estrategia} AS e ON e.nid = n.nid AND e.vid = n.vid WHERE p.field_estrategia_politicas_d_nid = %d AND e.field_estrategia_ente_nid = %d ORDER BY n.title", $politica->nid, $ente_planificador->nid);
}
while($estrategia = db_fetch_object($resultado)) {
$estrategias[$estrategia->nid] = array(
'title' => $estrategia->title,
'ente' => $estrategia->field_estrategia_ente_nid,
'uid' => $estrategia->uid,
);
}
}
return $estrategias;
}
/*
* Implementation of politicas_direccionales_estrategias_posibles_listar()
* Listar posibles estrategias
*/
function politicas_direccionales_estrategias_posibles_listar($ente_planificador) {
drupal_set_title(t('Consultar estrategias'));
global $user;
$ente = usuario_tiene_ente($user->uid);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("posibles", $ente_planificador->tipo);
}
else {
if ($user->entes == $ente_planificador->nid) {
muestra_mensaje("posibles", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $fecha && $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
$ente_planificador_micro = $ente_planificador;
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_has_acceso = TRUE;
$ente_planificador = node_load($macro);
}
}
$step = 10;
$headers_table = array();
$headers_table[] = array(
'data' => t('Nombre de la política Direccional'),
'sort' => 'asc',
);
$headers_table[] = array(
'data' => t('estrategias'),
);
$sqlcount = "select count(c.nid) FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND c.field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d";
$sql_query = "SELECT c.nid, n.title FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d ";
$sql_query.= tablesort_sql($headers_table);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$sql_variables = array();
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = pager_query($sql_query, $step, 0, $sqlcount, $sql_variables);
while($politica = db_fetch_object($result)) {
$politica_load = node_load($politica->nid);
$row = array();
$row[] = array('data' => $politica_load->body, );
$estrategias = leer_estrategias_por_politica($ente_planificador_micro, $politica);
$estrategias_f = array();
if (count($estrategias)) {
foreach($estrategias as $id => $estrategia) {
if ($ente_has_acceso && $estrategia['ente'] == $ente_planificador_micro->nid && $user->uid == $estrategia['uid']) {
$links = array();
$links[] = l(t('Modificar'), 'planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/' . $id . '/editar');
$links[] = l(t('Eliminar'), 'planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/' . $id . '/remove');
$estrategias[$id]['title'] = $estrategia['title'] . ' ' . theme('item_list', $links);
}
$estrategias_f[] = $estrategias[$id]['title'];
}
}
$row[] = array('data' => theme('item_list', $estrategias_f), );
$rows[] = $row;
}
if (!count($rows)) {
$row = array();
$row[] = array('data' => t('No se encontraron Políticas Direccionales para este ente'), 'colspan' => '3');
$rows[] = $row;
}
$output = theme('table', $headers_table, $rows);
$output .= theme('pager', NULL);
return $output;
}
/**
* Implementation of politicas_direccionales_remove_estrategia_posible_politica_form()
* Eliminar estrategia
*/
function politicas_direccionales_remove_estrategia_posible_politica_form($form_state, $ente = 0, $estrategia = 0) {
$form = array();
$form['#ente'] = $ente;
$form['#estrategia'] = $estrategia;
$message = t('Esta seguro de eliminar la estrategia "@nombre"?', array('@nombre' => $form['#estrategia']->title));
$caption = '';
$return_path = $_REQUEST['destination'] ? $_REQUEST['destination'] : 'planificacion/' . $form['#ente']->nid . '/politicas/estrategias/listar';
return confirm_form($form, $message, $return_path, $caption, t('Eliminar'));
}
/**
* Implementation of politicas_direccionales_remove_estrategia_posible_politica_form_submit().
* Process funcion delete estrategia.
*/
function politicas_direccionales_remove_estrategia_posible_politica_form_submit($form, &$form_state) {
global $user;
$estrategia = $form['#estrategia'];
$titulo = $form['#estrategia']->title;
node_delete($estrategia->nid);
$texto = t('Se eliminó la estrategia "@estrategia"', array('@estrategia' => $titulo));
drupal_set_message($texto);
if (!$_REQUEST['destination']) {
// add redirect
$form_state['redirect'] = 'planificacion/' . $form['#ente']->nid . '/politicas/estrategias/listar';
}
}
/*
* Implementation of politicas_direccionales_estrategias_posibles_identificar()
* Identificar posible articulación
*/
function politicas_direccionales_estrategias_posibles_identificar($ente_planificador, $articular = 0, $nid = 0) {
drupal_set_title(t('Consultar estrategias'));
global $user;
$ente = usuario_tiene_ente($user->uid);
$mi_fecha = ente_planificador_user_acceso_proceso("articulacion_estrategias", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
$fecha = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("articulacion_estrategias", $ente_planificador->tipo);
}
else {
if ($user->entes == $ente_planificador->nid) {
muestra_mensaje("articulacion_estrategias", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $fecha && $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
$ente_planificador_micro = $ente_planificador;
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_has_acceso = TRUE;
$ente_planificador = node_load($macro);
}
}
$step = 1;
$headers_table = array();
$headers_table[] = array(
'data' => t('estrategia'),
'sort' => 'asc',
'field' => 'n.title'
);
$headers_table[] = array(
'data' => t('Posible Articulación'),
);
$column = 2;
if ($articular) {
$headers_table[] = array(
'data' => t('estrategia a articular'),
);
$column++;
}
$sqlcount = "select count(c.nid) FROM {content_type_estrategia} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_estrategia_ente_nid = %d AND n.created >= %d AND n.created <= %d";
$sql_query = "SELECT c.nid, n.title FROM {content_type_estrategia} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_estrategia_ente_nid = %d AND n.created >= %d AND n.created <= %d ";
$sql_query.= tablesort_sql($headers_table);
$mi_fecha = ente_planificador_user_acceso_proceso("estrategias", $ente_planificador_micro->tipo);
$sql_variables = array();
$sql_variables[] = $ente_planificador_micro->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = pager_query($sql_query, $step, 0, $sqlcount, $sql_variables);
$estrategias_f = array();
$articular_found = FALSE;
while($estrategia = db_fetch_object($result)) {
$estrategia_load = node_load($estrategia->nid);
$row = array();
$row[] = array('data' => $estrategia_load->title, );
$articulacion = array();
if ($estrategia_load->field_estrategia_politicas_d[0]['nid']) {
foreach($estrategia_load->field_estrategia_politicas_d as $value) {
if (!isset($estrategias_f[$value['nid']])) {
$estrategias = leer_todas_estrategias_por_politica($ente_planificador_micro, $value['nid']);
$estrategias_f[$value['nid']] = $estrategias['neighbour'];
}
if (count($estrategias_f[$value['nid']])) {
foreach($estrategias_f[$value['nid']] as $id => $valor) {
if ($ente_has_acceso) {
if ($articular && $id == $articular) {
$articular_found = TRUE;
}
$attributes = array();
if (isset($_GET['page'])) {
$attributes['query'] = 'page=' . $_GET['page'];
}
$articulacion[] = $valor['title'] . ' (' . l(t('Registrar solicitud de posible articulación'), 'planificacion/' . $ente_planificador_micro->nid .'/politicas/estrategias/identificar/' . $id . '/' . $estrategia_load->nid, $attributes) . ')';
}
else {
$articulacion[] = $valor['title'];
}
}
}
}
}
if (count($articulacion)) {
$row[] = array('data' => theme('item_list', $articulacion), );
}
else {
$row[] = array('data' => t('No existen estrategias que articular'), );
}
if ($articular_found && $nid == $estrategia_load->nid) {
$articular_load = node_load($articular);
$output1 = node_view($articular_load);
$output1 .= drupal_get_form('politicas_direccionales_agregar_articulacion_form', $ente_planificador_micro, $estrategia_load, $articular_load);
$row[] = array('data' => $output1, );
}
elseif($articular && is_numeric($articular)) {
$row[] = array('data' => '', );
}
$rows[] = $row;
}
if (!count($rows)) {
$row = array();
$row[] = array('data' => t('No se encontraron estrategias para este ente'), 'colspan' => $column);
$rows[] = $row;
}
$output = theme('table', $headers_table, $rows);
$output .= theme('pager', NULL);
return $output;
}
/*
* Implementation of leer_todas_estrategias_por_politica()
* Leer estrategias por politicas
*/
function leer_todas_estrategias_por_politica($ente_planificador, $politica){
$estrategias = array();
$estrategias['all'] = array();
$estrategias['own'] = array();
$estrategias['neighbour'] = array();
if ($ente_planificador && $ente_planificador->nid && $politica && is_numeric($politica)) {
$resultado = db_query("SELECT n.nid, n.title, e.field_estrategia_ente_nid FROM {node} AS n INNER JOIN {content_field_estrategia_politicas_d} AS p ON p.nid = n.nid AND p.vid = n.vid INNER JOIN {content_type_estrategia} AS e ON e.nid = n.nid AND e.vid = n.vid WHERE p.field_estrategia_politicas_d_nid = %d ORDER BY n.title", $politica);
while($estrategia = db_fetch_object($resultado)) {
if ($estrategia->field_estrategia_ente_nid == $ente_planificador->nid) {
$estrategias['own'][$estrategia->nid] = array(
'title' => $estrategia->title,
'ente' => $estrategia->field_estrategia_ente_nid,
);
}
else {
$estrategias['neighbour'][$estrategia->nid] = array(
'title' => $estrategia->title,
'ente' => $estrategia->field_estrategia_ente_nid,
);
}
$estrategias['all'][$estrategia->nid] = array(
'title' => $estrategia->title,
'ente' => $estrategia->field_estrategia_ente_nid,
);
}
}
return $estrategias;
}
/*
* Implementation of politicas_direccionales_agregar_articulacion_form()
* Formulario para agregar articulacion de actores en base a estrategias
*/
function politicas_direccionales_agregar_articulacion_form($form_state, $ente_planificador = 0, $estrategia = 0, $estrategia_art = 0) {
$form = array();
$form['#ente_plan'] = $ente_planificador;
$form['#estrategia'] = $estrategia;
$form['#estrategia_art'] = $estrategia_art;
$form['#estrategia_page'] = isset($_GET['page']) ? $_GET['page'] : 0;
$sql_query = "SELECT * FROM {politicas_direccionales_estrategias} WHERE estrategia = %d AND estrategia_art = %d";
$articulacion_load = db_fetch_object(db_query($sql_query, $estrategia->nid, $estrategia_art->nid));
$form['#articulacion_load'] = $articulacion_load;
$form['mensaje'] = array(
'#type' => 'textarea',
'#title' => t('Solicitar Articulación'),
'#default_value' => $articulacion_load ? $articulacion_load->mensaje : '',
);
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
'#weight' => 100,
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#weight' => 100,
);
if ($articulacion_load) {
$form['buttons']['remove'] = array(
'#type' => 'submit',
'#value' => t('Remove'),
'#weight' => 101,
);
}
$form['buttons']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#weight' => 102,
);
return $form;
}
/**
* Implementation of politicas_direccionales_agregar_articulacion_form_submit().
* Process funcion agregar articulacion.
*/
function politicas_direccionales_agregar_articulacion_form_submit($form, &$form_state) {
global $user;
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
$ente_planificador = $form['#ente_planificador'];
if ($op == t('Cancel')) {
drupal_goto('planificacion/' . $form['#ente_plan']->nid . '/politicas/estrategias/identificar/' . $form['#estrategia_art']->nid . '/' . $form['#estrategia']->nid);
return;
}
db_query("DELETE FROM {politicas_direccionales_estrategias} WHERE estrategia = %d AND estrategia_art = %d", $form['#estrategia']->nid, $form['#estrategia_art']->nid);
$mensaje = t('Se eliminó la articulación entre la estrategia "@estrategia" y "@estrate_art"', array('@estrategia' => $form['#estrategia']->title, '@estrate_art' => $form['#estrategia_art']->title));
$ente = $form['#ente_plan']->nid;
if ($op == t('Submit')) {
db_query("INSERT into {politicas_direccionales_estrategias} (ente, estrategia, ente_art, estrategia_art, mensaje, creacion) values (%d, %d, %d, %d, '%s', %d)", $form['#ente_plan']->nid, $form['#estrategia']->nid, $form['#estrategia_art']->field_estrategia_ente[0]['nid'], $form['#estrategia_art']->nid, check_plain($form_state['values']['mensaje']), time());
$mensaje = t('Se agregó la articulación entre la estrategia "@estrategia" y "@estrate_art"', array('@estrategia' => $form['#estrategia']->title, '@estrate_art' => $form['#estrategia_art']->title));
}
drupal_set_message($mensaje);
if (!$form_state['redirect']){
$query = array();
if (array_key_exists('page', $_GET) && $_GET['page']) {
$query['page'] = $_GET['page'];
}
$form_state['redirect'] = array(
'planificacion/' . $ente . '/politicas/estrategias/identificar/' . $form['#estrategia_art']->nid . '/' . $form['#estrategia']->nid,
$query,
);
}
}
/**
* Implementation of _politicas_direccionales_articulacion_estrategia().
* Obtener las articulaciones realizadas.
*/
function _politicas_direccionales_articulacion_estrategia($estrategia, $fecha){
$articulaciones = array();
if ($estrategia && $estrategia->nid && $estrategia->type == 'estrategia' && is_array($fecha) && count($fecha)) {
$resultado = db_query("SELECT e1.estrategia, e1.ente, n1.title AS estra_titulo, n1.nid AS estra_nid, n2.title AS ente_titulo, e1.mensaje FROM {politicas_direccionales_estrategias} AS e1 INNER JOIN {node} as n1 ON n1.nid = e1.estrategia INNER JOIN {node} AS n2 ON n2.nid = e1.ente WHERE e1.estrategia_art = %d AND creacion >= %d AND creacion <= %d", $estrategia->nid, $fecha[0], $fecha[1]);
while($articulacion = db_fetch_object($resultado)) {
$articulaciones[$articulacion->estra_nid] = $articulacion;
}
}
return $articulaciones;
}
/*
* Implementation of politicas_direccionales_estrategias_consultar_articulaciones()
* Consultar artioclaciones
*/
function politicas_direccionales_estrategias_consultar_articulaciones($ente_planificador) {
drupal_set_title(t('Consultar Articulación'));
global $user;
$ente = usuario_tiene_ente($user->uid);
$mi_fecha = ente_planificador_user_acceso_proceso("articulacion_estrategias", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
$fecha = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("articulacion_estrategias", $ente_planificador->tipo);
}
else {
if ($user->entes == $ente_planificador->nid) {
muestra_mensaje("articulacion_estrategias", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $fecha && $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
$ente_planificador_micro = $ente_planificador;
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_has_acceso = TRUE;
$ente_planificador = node_load($macro);
}
}
$step = 10;
$headers_table = array();
$headers_table[] = array(
'data' => t('estrategia'),
'sort' => 'asc',
'field' => 'n.title'
);
$headers_table[] = array(
'data' => t('Posible Articulación'),
);
$column = 2;
$sqlcount = "select count(c.nid) FROM {content_type_estrategia} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_estrategia_ente_nid = %d AND n.created >= %d AND n.created <= %d";
$sql_query = "SELECT c.nid, n.title, n.type FROM {content_type_estrategia} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_estrategia_ente_nid = %d AND n.created >= %d AND n.created <= %d ";
$sql_query.= tablesort_sql($headers_table);
$mi_fecha1 = ente_planificador_user_acceso_proceso("estrategias", $ente_planificador_micro->tipo);
$sql_variables = array();
$sql_variables[] = $ente_planificador_micro->nid;
$sql_variables[] = $mi_fecha1[0];
$sql_variables[] = $mi_fecha1[1] + 86399;
$result = pager_query($sql_query, $step, 0, $sqlcount, $sql_variables);
while($estrategia = db_fetch_object($result)) {
$estrategia_load = node_load($estrategia->nid);
$row = array();
$row[] = array('data' => $estrategia_load->title, );
$mi_fecha[1] += 86399;
$articulacion = _politicas_direccionales_articulacion_estrategia($estrategia, $mi_fecha);
$articulaciones = array();
if (count($articulacion)){
foreach($articulacion as $arti) {
$articulaciones[] = theme('politicas_direccionales_ver_articulacion', $arti);
}
}
if (count($articulaciones)) {
$row[] = array('data' => theme('item_list', $articulaciones), );
}
else {
$row[] = array('data' => t('No existe articulación para esta estrategia.'), );
}
$rows[] = $row;
}
if (!count($rows)) {
$row = array();
$row[] = array('data' => t('No se encontraron estrategias para este ente'), 'colspan' => $column);
$rows[] = $row;
}
$output = theme('table', $headers_table, $rows);
$output .= theme('pager', NULL);
return $output;
}
/*
* Implementation of politicas_direccionales_estrategias_consultar_articulaciones_actores_micro()
* Identificar posible articulación
*/
function politicas_direccionales_estrategias_consultar_articulaciones_actores_micro($ente_planificador, $articular = 0, $nid = 0) {
drupal_set_title(t('Consultar posibles articulaciones entre actores micro'));
global $user;
$ente = usuario_tiene_ente($user->uid);
$mi_fecha = ente_planificador_user_acceso_proceso("articulacion_estrategias", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
$fecha = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("articulacion_estrategias", $ente_planificador->tipo);
}
else {
if ($user->entes == $ente_planificador->nid) {
muestra_mensaje("articulacion_estrategias", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $fecha && $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
$ente_planificador_micro = $ente_planificador;
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_has_acceso = TRUE;
$ente_planificador = node_load($macro);
}
}
$step = 10;
$headers_table = array();
$headers_table[] = array(
'data' => t('Ente Planificador'),
'sort' => 'asc',
'field' => 'e1.title'
);
$headers_table[] = array(
'data' => t('estrategia'),
'field' => 'es2.title'
);
$headers_table[] = array(
'data' => t('Ente Articulador'),
'field' => 'ea.title'
);
$headers_table[] = array(
'data' => t('estrategia Articuladora'),
'field' => 'es1.title'
);
$headers_table[] = array(
'data' => t('Mensaje'),
);
$sqlcount = "select count(a.ente) FROM {politicas_direccionales_estrategias} AS a INNER JOIN {node} AS ea ON ea.nid = a.ente INNER JOIN {node} AS e1 ON e1.nid = a.ente_art INNER JOIN {node} AS es1 ON es1.nid = a.estrategia INNER JOIN {node} AS es2 ON es2.nid = a.estrategia_art AND a.creacion >= %d AND a.creacion <= %d";
$sql_query = "SELECT ea.title AS ente_articular, e1.title AS ente, es1.title AS estrategia_art, es2.title AS estrategia, a.mensaje FROM {politicas_direccionales_estrategias} AS a INNER JOIN {node} AS ea ON ea.nid = a.ente INNER JOIN {node} AS e1 ON e1.nid = a.ente_art INNER JOIN {node} AS es1 ON es1.nid = a.estrategia INNER JOIN {node} AS es2 ON es2.nid = a.estrategia_art AND a.creacion >= %d AND a.creacion <= %d";
$sql_query.= tablesort_sql($headers_table);
$sql_variables = array();
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = pager_query($sql_query, $step, 0, $sqlcount, $sql_variables);
while($estrategia = db_fetch_object($result)) {
$row = array();
$row[] = array('data' => $estrategia->ente, );
$row[] = array('data' => $estrategia->estrategia, );
$row[] = array('data' => $estrategia->ente_articular, );
$row[] = array('data' => $estrategia->estrategia_art, );
$row[] = array('data' => $estrategia->mensaje, );
$rows[] = $row;
}
if (!count($rows)) {
$row = array();
$row[] = array('data' => t('No se encontraron estrategias ha articular'), 'colspan' => 5);
$rows[] = $row;
}
$output = theme('table', $headers_table, $rows);
$output .= theme('pager', NULL);
return $output;
}
/*
* Implementation of politicas_direccionales_estrategias_posibles_listar_reformular()
* Listar posibles estrategias para reformular
*/
function politicas_direccionales_estrategias_posibles_listar_reformular($ente_planificador) {
drupal_set_title(t('Consultar estrategias'));
global $user;
$ente = usuario_tiene_ente($user->uid);
$mi_fecha = ente_planificador_user_acceso_proceso('reformulacion_estrategias', $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje('reformulacion_estrategias', $ente_planificador->tipo);
}
else {
if ($user->entes == $ente_planificador->nid) {
muestra_mensaje('reformulacion_estrategias', $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $fecha && $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
$ente_planificador_micro = $ente_planificador;
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_has_acceso = TRUE;
$ente_planificador = node_load($macro);
}
}
$step = 10;
$headers_table = array();
$headers_table[] = array(
'data' => t('Nombre de la política Direccional'),
'sort' => 'asc',
);
$headers_table[] = array(
'data' => t('estrategias'),
);
$sqlcount = "select count(c.nid) FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND c.field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d";
$sql_query = "SELECT c.nid, n.title FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d ";
$sql_query.= tablesort_sql($headers_table);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$sql_variables = array();
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = pager_query($sql_query, $step, 0, $sqlcount, $sql_variables);
while($politica = db_fetch_object($result)) {
$politica_load = node_load($politica->nid);
$row = array();
$row[] = array('data' => $politica_load->body, );
$estrategias = leer_estrategias_por_politica($ente_planificador_micro, $politica);
$estrategias_f = array();
if (count($estrategias)) {
foreach($estrategias as $id => $estrategia) {
if ($ente_has_acceso && $estrategia['ente'] == $ente_planificador_micro->nid) {
$links = array();
$links[] = l(t('Reformular'), 'planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/' . $id . '/reformular');
$estrategias[$id]['title'] = $estrategia['title'] . ' ' . theme('item_list', $links);
}
$estrategias_f[] = $estrategias[$id]['title'];
}
}
$row[] = array('data' => theme('item_list', $estrategias_f), );
$rows[] = $row;
}
if (!count($rows)) {
$row = array();
$row[] = array('data' => t('No se encontraron Políticas Direccionales para este ente'), 'colspan' => '3');
$rows[] = $row;
}
$output = theme('table', $headers_table, $rows);
$output .= theme('pager', NULL);
return $output;
}
/*
* Implementation of politicas_direccionales_estrategias_seleccionar_estrategias()
* Seleccionar estrategias
*/
function politicas_direccionales_estrategias_seleccionar_estrategias($ente_planificador) {
drupal_set_title(t('Seleccionar estrategias'));
global $user;
$ente = usuario_tiene_ente($user->uid);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$current_time = time();
$ente_has_acceso = FALSE;
if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) {
$fecha = TRUE;
}
if (!$fecha) {
muestra_mensaje("posibles", $ente_planificador->tipo);
}
else {
if ($user->entes == $ente_planificador->nid) {
muestra_mensaje("posibles", $ente_planificador->tipo, 0);
}
}
if ($fecha && (user_access('admin planificador') || $fecha && $user->entes == $ente_planificador->nid)) {
$ente_has_acceso = TRUE;
}
$ente_planificador_micro = $ente_planificador;
if ($ente_planificador->tipo > 1) {
$ente_has_acceso = FALSE;
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_has_acceso = TRUE;
$ente_planificador = node_load($macro);
}
}
$step = 10;
$headers_table = array();
$headers_table[] = array(
'data' => t('Nombre de la política Direccional'),
'sort' => 'asc',
);
$headers_table[] = array(
'data' => t('Posibles estrategias'),
);
$headers_table[] = array(
'data' => t('estrategias Seleccionadas'),
);
$sqlcount = "select count(c.nid) FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND c.field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d";
$sql_query = "SELECT c.nid, n.title FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d ";
$sql_query.= tablesort_sql($headers_table);
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$sql_variables = array();
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = pager_query($sql_query, $step, 0, $sqlcount, $sql_variables);
while($politica = db_fetch_object($result)) {
$politica_load = node_load($politica->nid);
$row = array();
$row[] = array('data' => $politica_load->body, );
$estrategias = leer_estrategias_por_politica($ente_planificador_micro, $politica);
$estrategias_f = array();
$estrategias_s = array();
if ($politica_load->field_politicas_estrategias[0]['nid']) {
foreach($politica_load->field_politicas_estrategias as $est) {
if ($est['nid']) {
$estrategias_s[$est['nid']] = $est['nid'];
}
}
}
if (count($estrategias)) {
foreach($estrategias as $id => $estrategia) {
$estrategias_f[] = $estrategia['title'];
if (array_key_exists($id, $estrategias_s)) {
$estrategias_s[$id] = $estrategia['title'];
}
}
}
$count_f = count($estrategias_f);
if ($count_f) {
$texto_estrategia = theme('item_list', $estrategias_f);
}
else {
$texto_estrategia = t('La política no tiene estrategias registradas');
}
$row[] = array('data' => $texto_estrategia, );
$count_s = count($estrategias_s);
$links = array();
if ($count_s) {
$texto_estrategia = theme('item_list', $estrategias_s);
}
else {
$texto_estrategia = t('La política no tiene estrategias seleccionadas');
}
if ($ente_has_acceso && $count_f) {
$links[] = l(t('Seleccionar estrategias para esta política'), 'planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/'. $politica_load->nid . '/seleccionar', array('query' => array('destination' => 'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/seleccionar')));
}
$texto_estrategia .= theme('item_list', $links);
$row[] = array('data' => $texto_estrategia, );
$rows[] = $row;
}
if (!count($rows)) {
$row = array();
$row[] = array('data' => t('No se encontraron Políticas Direccionales para este ente'), 'colspan' => '3');
$rows[] = $row;
}
$output = theme('table', $headers_table, $rows);
$output .= theme('pager', NULL);
return $output;
}
/*
* Implementation of politicas_direccionales_seleccionar_estrategias_form()
* Formulario para seleccionar estrategias
*/
function politicas_direccionales_seleccionar_estrategias_form($form_state, $ente_planificador = 0, $politica = 0) {
$form = array();
$form['#ente_plan'] = $ente_planificador;
$form['#politica'] = $politica;
$estrategias = leer_estrategias_por_politica($ente_planificador, $politica);
$estrategias_f = array();
if (count($estrategias)) {
foreach($estrategias as $id => $estrategia) {
$estrategias_f[$id] = $estrategia['title'];
}
}
$default = array();
if ($politica->field_politicas_estrategias[0]['nid']) {
foreach($politica->field_politicas_estrategias as $est) {
if ($est['nid']) {
$default[$est['nid']] = $est['nid'];
}
}
}
$form['estrategias_seleccionar'] = array(
'#type' => 'checkboxes',
'#title' => t('Seleccionar estrategias'),
'#default_value' => $default,
'#options' => $estrategias_f,
'#required' => TRUE,
'#description' => t('Seleccionar las estrategias para la política direccionale.'),
);
$form['buttons'] = array(
'#prefix' => '',
'#suffix' => '
',
'#weight' => 100,
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#weight' => 100,
);
$form['buttons']['cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#weight' => 102,
);
$form['#after_build'] = array();
$form['#after_build'][] = 'politicas_direccionales_skip_validation_form_after_build';
return $form;
}
/*
* Implementation of politicas_direccionales_seleccionar_estrategias_form_submit()
*/
function politicas_direccionales_seleccionar_estrategias_form_submit($form, &$form_state){
$op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
$ente_planificador = $form['#ente_plan'];
if ($op == t('Cancel')) {
drupal_goto('planificacion/' . $ente_planificador->nid . '/politicas/estrategias/seleccionar');
return;
}
$politica = $form['#politica'];
module_load_include('inc', 'node', 'node.pages');
$nuevo = FALSE;
$form_values = $form_state['values'];
node_object_prepare($politica);
$politica->revision = 1;
$politica->log = t('Se agregarón estrategias a la política direccional');
$politica->field_politicas_estrategias = array();
if (count($form_values['estrategias_seleccionar'])) {
foreach($form_values['estrategias_seleccionar'] as $estrategia) {
if ($estrategia) {
$politica->field_politicas_estrategias[] = array('nid' => $estrategia);
}
}
}
node_save($politica);
//se agregan los requerimientos a la nueva version del nodo
db_query("UPDATE {politicas_ente} SET vid = %d WHERE nid = %d", $politica->vid, $politica->nid);
db_query("UPDATE {politicas_ente_actor} SET vid = %d WHERE nid = %d", $politica->vid, $politica->nid);
drupal_set_message(t('Se agregarón las estrategias a la política direccional "%politica"', array('%politica' => $politica->title)));
if (!$form_state['redirect']){
$form_state['redirect'] = array(
'planificacion/' . $ente_planificador->nid . '/politicas/estrategias/seleccionar',
);
}
}
/*
* Implementation of politicas_direccionales_mostrar_estrategias_por_politicas()
* Mostrar politicas y estrategias seleccionadas
*/
function politicas_direccionales_mostrar_estrategias_por_politicas($ente_planificador, $politica = 0, $estrategia = 0) {
drupal_set_title(t('Estrategias para materializar políticas direccionales'));
$output = '';
$ente_planificador_micro = $ente_planificador;
if ($ente_planificador->tipo > 1) {
$macro = ente_planificador_ente_macro($ente_planificador);
if ($macro) {
$ente_has_acceso = TRUE;
$ente_planificador = node_load($macro);
}
}
if (!$politica && !$estrategia) {
$links = array();
$output .= t('Seleccione la política:');
$sql_query = "SELECT c.nid, n.title FROM {content_type_politicas_direccionales} AS c INNER JOIN {node} AS n ON c.nid = n.nid AND c.vid = n.vid WHERE c. field_politicas_ente_nid = %d AND field_politicas_seleccionada_value = 'SÍ' AND n.created >= %d AND n.created <= %d ";
$mi_fecha = ente_planificador_user_acceso_proceso("posibles", $ente_planificador->tipo);
$sql_variables = array();
$sql_variables[] = $ente_planificador->nid;
$sql_variables[] = $mi_fecha[0];
$sql_variables[] = $mi_fecha[1] + 86399;
$result = db_query($sql_query, $sql_variables);
while($politica = db_fetch_object($result)) {
$politica_load = node_load($politica->nid);
if ($politica_load->field_politicas_estrategias[0]['nid']) {
$links[] = l($politica_load->body, 'planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/pol_estr/' . $politica_load->nid);
}
else {
$links[] = t('%politica_nombre (No existen estrategias seleccionadas para esta política)', array('%politica_nombre' => $politica_load->body));
}
}
$output .= theme('item_list', $links);
}
elseif ($politica && is_numeric($politica) && !$estrategia) {
$links = array();
$politica_load = node_load($politica);
if ($politica_load->field_politicas_seleccionada[0]['value'] != 'SÍ') {
drupal_set_message(t('No existe la política direccional'));
drupal_goto('planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/pol_estr');
return '';
}
$output .= t('Seleccione la estrategia:');
$estrategias = leer_estrategias_por_politica($ente_planificador, $politica_load);
if ($politica_load->field_politicas_estrategias[0]['nid']) {
foreach($politica_load->field_politicas_estrategias as $estrategia) {
if (array_key_exists($estrategia['nid'], $estrategias)) {
$links[] = l($estrategias[$estrategia['nid']]['title'], 'planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/pol_estr/' . $politica_load->nid . '/' . $estrategia['nid']);
}
}
}
$output .= theme('item_list', $links);
$output .= l(t('Regresar al listado de estrategias'), 'planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/pol_estr');
}
elseif ($politica && is_numeric($politica) && $estrategia && is_numeric($estrategia)) {
$politica_load = node_load($politica);
$estrategia_load = node_load($estrategia);
if ($politica_load->field_politicas_seleccionada[0]['value'] != 'SÍ') {
drupal_set_message(t('No existe la política direccional'));
drupal_goto('planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/pol_estr');
}
$found = FALSE;
if ($politica_load->field_politicas_estrategias[0]['nid']) {
foreach($politica_load->field_politicas_estrategias as $estrategia_n) {
if ($estrategia_n['nid'] == $estrategia_load->nid) {
$found = TRUE;
}
}
}
if (!$found) {
drupal_set_message(t('No existe la estrategia'));
drupal_goto('planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/pol_estr');
}
$output .= theme('politicas_direccionales_ver_estrategia', $politica_load, $estrategia_load);
$output .= l(t('Regresar al listado de estrategias'), 'planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/pol_estr/' . $politica_load->nid);
}
else {
drupal_set_message(t('Ocurrio un error al intentar cargar la página'));
drupal_goto('planificacion/' . $ente_planificador_micro->nid . '/politicas/estrategias/');
}
return $output;
}
/**
* Implementation of hook_views_api().
*/
function politicas_direccionales_views_api() {
return array(
'api' => '2.0',
'path' => drupal_get_path('module', 'politicas_direccionales') . '/views',
);
}