Index: modules/proyecto_estrategico/proyecto_estrategico.module
===================================================================
--- modules/proyecto_estrategico/proyecto_estrategico.module	(revision ffa4103e9bd6345605d7a6e8bab84196654a0741)
+++ modules/proyecto_estrategico/proyecto_estrategico.module	(revision ffa4103e9bd6345605d7a6e8bab84196654a0741)
@@ -0,0 +1,1609 @@
+<?php
+  /**
+  * Sistema Automatizado para la PlanificaciÃ³n EstratÃ©gico-Situacional en la AdministraciÃ³n PÃºblica Venezolana
+  * @file situacion_actual.module
+  * Drupal part Module to code ente planificador module
+  * Copyright 2011 Sistema Automatizado para la PlanificaciÃ³n EstratÃ©gico-Situacional en la AdministraciÃ³n PÃºblica Venezolana (CENDITEL)
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation; either version 2 of the License, or
+  * (at your option) any later version.
+  * 
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  * 
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+  *
+  * @author Cenditel Merida - Msc. Juan Vizcarrondo
+  * @date 2011-10-27 // (a&#241;o-mes-dia)
+  * @version 0.2 // (0.2)
+  *
+  */
+
+/*
+ * Implementation of hook_ente_procesos_alter()
+ */
+function proyecto_estrategico_ente_procesos_alter(&$procesos, $type) {
+  if ($type == 'status') {
+    $procesos['proyecto_estrategico'] = array(
+      'title' => t('GestiÃ³n de proyectos estratÃ©gicos institucional.'),
+      'description' => t('GestiÃ³n de InformaciÃ³n de proyectos estratÃ©gicos institucional del actor planificador.'),
+      'weight' => -9,
+    );
+  }
+  else {
+    $procesos['proyecto_estrategico_proyectos'] = array(
+      'title' => t('Registro de proyectos estratÃ©gicos institucionales.'),
+      'description' => t('Registro de proyectos estratÃ©gicos institucionales.'),
+      'message' => 'Se podrÃ¡ registrar y/o modificar los proceso de los proyectos estratÃ©gicos desde %fecha hasta la fecha %fecha1',
+      'message_expire' => 'Registrar y/o modificar los proceso de los proyectos estratÃ©gicos no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
+      'weight' => 9,
+      'proceso' => 'proyecto_estrategico',
+    );
+  }
+}
+
+
+/*
+ * Implementation of proyectos_direccionales_status_planificacion_proyectos()
+ */
+function proyecto_estrategico_status_planificacion_proyecto_estrategico($ente_planificador, $tipo = 2) {
+  $ente = node_load($ente_planificador);
+  $mi_fecha = ente_planificador_user_acceso_proceso('proyecto_estrategico_proyectos', $tipo);
+  $proyectos = proyecto_estrategico_obtiene_proyectos($ente, $mi_fecha);
+  //se verifica que exista la planificacion, si existe al menos los datos de familiarizacion fueron ingresados
+  $proyecto_estrategico_status['proyecto_estrategico_proyectos']['value'] = count($proyectos) ? 1 : 0;
+  $proyecto_estrategico_status['proyecto_estrategico_proyectos']['title'] = t('GestiÃ³n de proyectos estratÃ©gicos institucional');
+  $proyecto_estrategico_status['proyecto_estrategico_proyectos']['link'] = 'planificacion/' . $ente_planificador . '/proyecto_estrategico';
+  $proyecto_estrategico_status['proyecto_estrategico_proyectos']['mylink'] = 'mi_ente_planificador/planificacion/proyecto_estrategico';
+  $proyecto_estrategico_status['proyecto_estrategico_proyectos']['weight'] = -10;
+  return $proyecto_estrategico_status;
+}
+
+/*
+ * Implementation of hook_menu()
+ */
+function proyecto_estrategico_menu() {
+  $items = array();
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico'] = array(
+    'title' => t('Proyectos estratÃ©gicos'),
+    'page callback' => 'proyecto_estrategico_listar_proyectos',
+    'page arguments' => array(1),
+    'access arguments' => array('ver planificador'),
+    'weight' => -7,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico/ver'] = array(
+    'title' => t('Proyectos estratÃ©gicos'),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10
+  );
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico/registrar'] = array(
+    'title' => t('Registrar proyecto estratÃ©gico'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('proyecto_estrategico_datos_basicos_form', 1),
+    'access callback' => 'proyecto_estrategico_usuario_crea_proyectos',
+    'access arguments' => array(1),
+    'weight' => -9,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico/%proyecto_estrategico_menu'] = array(
+    'title' => t('Ver proyecto estratÃ©gico'),
+    'page callback' => 'proyecto_estrategico_mostrar_proyectos',
+    'page arguments' => array(1, 3),
+    'access arguments' => array('ver planificador'),
+    'weight' => -7,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico/%proyecto_estrategico_menu/ver'] = array(
+    'title' => t('Proyecto estratÃ©gico'),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'weight' => -10
+  );
+
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico/%proyecto_estrategico_menu/datos_basicos'] = array(
+    'title' => t('Datos bÃ¡sicos'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('proyecto_estrategico_datos_basicos_form', 1, 3),
+    'access callback' => 'proyecto_estrategico_usuario_tiene_proyectos',
+    'access arguments' => array(1, 3),
+    'weight' => -9,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico/%proyecto_estrategico_menu/planes_politicas'] = array(
+    'title' => t('Planes y polÃ­ticas'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('proyecto_estrategico_planes_politicas_form', 1, 3),
+    'access callback' => 'proyecto_estrategico_usuario_tiene_proyectos',
+    'access arguments' => array(1, 3),
+    'weight' => -5,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico/%proyecto_estrategico_menu/objetivos'] = array(
+    'title' => t('objetivos estratÃ©gicos'),
+    'page callback' => 'proyecto_estrategico_mostrar_objetivos',
+    'page arguments' => array(1, 3),
+    'access callback' => 'proyecto_estrategico_usuario_tiene_proyectos',
+    'access arguments' => array(1, 3),
+    'weight' => -8,
+    'type' => MENU_LOCAL_TASK,
+  );
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico/%proyecto_estrategico_menu/objetivos/registrar'] = array(
+    'title' => t('Registrar objetivo estratÃ©gico'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('proyecto_estrategico_objetivos_estrategicos_registrar_form', 1, 3),
+    'access callback' => 'proyecto_estrategico_usuario_tiene_proyectos',
+    'access arguments' => array(1, 3),
+    'weight' => -8,
+    'type' => MENU_LOCAL_TASK,
+  );
+
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico/%proyecto_estrategico_menu/objetivos/%proyecto_objetivos_menu/modificar'] = array(
+    'title' => t('Modificar objetivo estratÃ©gico'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('proyecto_estrategico_objetivos_estrategicos_registrar_form', 1, 3, 5),
+    'access callback' => 'proyecto_estrategico_usuario_tiene_objetivos_estrategicos',
+    'access arguments' => array(1, 3),
+    'weight' => -8,
+    'type' => MENU_CALLBACk,
+  );
+  $items['planificacion/%ente_planificador_menu/proyecto_estrategico/%proyecto_estrategico_menu/objetivos/%proyecto_objetivos_menu/eliminar'] = array(
+    'title' => t('Eliminar objetivo estratÃ©gico'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('proyecto_estrategico_objetivos_estrategicos_eliminar_form', 1, 3, 5),
+    'access callback' => 'proyecto_estrategico_usuario_tiene_objetivos_estrategicos',
+    'access arguments' => array(1, 3),
+    'weight' => -8,
+    'type' => MENU_CALLBACk,
+  );
+  return $items;
+}
+
+/*
+ * Implementation of hook_perm
+ */
+function proyecto_estrategico_perm() {
+  return array(
+    'editar proyectos estrategicos de mi ente',
+  );
+}
+
+/**
+ * Implementation of proyecto_estrategico_menu_load().
+ * Menu loader callback. Load a proyecto estrategico.
+ */
+function proyecto_estrategico_menu_load($proyecto_estrategico_menu = 0) {
+  global $user; 
+  $proyecto_estrategico = FALSE;
+  if($proyecto_estrategico_menu && is_numeric($proyecto_estrategico_menu)) {
+    $proyecto_estrategico = node_load($proyecto_estrategico_menu);
+  }
+  if (!$proyecto_estrategico->status || $proyecto_estrategico->type != 'proyecto_estrategico' || $proyecto_estrategico->field_estrategico_ente[0]['nid'] != arg(1)) {
+    $proyecto_estrategico = FALSE;
+  }
+  return $proyecto_estrategico;
+}
+
+/**
+ * Implementation of proyecto_objetivos_menu_load().
+ * Menu loader callback. Load a proyecto estrategico.
+ */
+function proyecto_objetivos_menu_load($proyecto_estrategico_objetivos_menu = 0) {
+  global $user; 
+  $objetivo_estrategico = FALSE;
+  if($proyecto_estrategico_objetivos_menu && is_numeric($proyecto_estrategico_objetivos_menu)) {
+    $proyecto_estrategico_objetivos = node_load($proyecto_estrategico_objetivos_menu);
+    $proyecto_estrategico = FALSE;
+    if (isset($proyecto_estrategico_objetivos->field_objetivo_proyecto_estra[0]['nid']) && $proyecto_estrategico_objetivos->field_objetivo_proyecto_estra[0]['nid']) {
+      $proyecto_estrategico = node_load($proyecto_estrategico_objetivos->field_objetivo_proyecto_estra[0]['nid']);
+    }
+    if (!$proyecto_estrategico_objetivos->status || !$proyecto_estrategico->status || $proyecto_estrategico->type != 'proyecto_estrategico' || $proyecto_estrategico_objetivos->type != 'objetivos_estrategicos' || $proyecto_estrategico_objetivos->field_objetivo_ente[0]['nid'] != arg(1)) {
+      $proyecto_estrategico = FALSE;
+    }
+  }
+  return $proyecto_estrategico_objetivos;
+}
+
+/*
+ * Implementation of proyecto_estrategico_usuario_tiene_proyectos()
+ */
+function proyecto_estrategico_usuario_tiene_proyectos($ente_planificador, $proyecto_estrategico) {
+  global $user; 
+  $ente = usuario_tiene_ente($user->uid);
+  $accesso = proyecto_estrategico_obtiene_acceso_proceso('proyecto_estrategico_proyectos', $ente_planificador, $ente);
+  return ($proyecto_estrategico->nid && $accesso);
+}
+
+/*
+ * Implementation of proyecto_estrategico_usuario_crea_proyectos()
+ */
+function proyecto_estrategico_usuario_crea_proyectos($ente_planificador) {
+  global $user; 
+  $ente = usuario_tiene_ente($user->uid);
+  $accesso = proyecto_estrategico_obtiene_acceso_proceso('proyecto_estrategico_proyectos', $ente_planificador, $ente);
+  return $accesso;
+}
+
+/*
+ * Implementation of proyecto_estrategico_usuario_tiene_objetivos_estrategicos()
+ */
+function proyecto_estrategico_usuario_tiene_objetivos_estrategicos($ente_planificador, $objetivo_estrategico) {
+  global $user; 
+  $ente = usuario_tiene_ente($user->uid);
+  $accesso = proyecto_estrategico_obtiene_acceso_proceso('proyecto_estrategico_proyectos', $ente_planificador, $ente);
+  return ($objetivo_estrategico->nid && $accesso);
+}
+
+/*
+ * Implementation of proyecto_estrategico_obtiene_acceso_proceso()
+ */
+function proyecto_estrategico_obtiene_acceso_proceso($tipo_plan, $ente_planificador, $user_ente = NULL){
+  $current_time = time();
+  $accesso = FALSE;
+  if (isset($ente_planificador->tipo) && $ente_planificador->nid && is_numeric($ente_planificador->nid) && isset($ente_planificador->type) && $ente_planificador->type == 'ente_planificador') {
+    $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
+    if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
+      if ((user_access('admin planificador') || ($user_ente->nid == $ente_planificador->nid && user_access('editar proyectos estrategicos de mi ente')))) {
+        $accesso = TRUE;
+      }
+    }
+  }
+  return $accesso;
+}
+
+/*
+ * Implementation of proyecto_estrategico_obtiene_datos_objetivos()
+ */
+function proyecto_estrategico_obtiene_datos_objetivos($ente_planificador, $proyecto) {
+  $objetivos = array();
+  // leemos las funciones
+  $sql_query = "SELECT sap.nid FROM {content_type_objetivos_estrategicos} AS sap INNER JOIN {node} AS n ON sap.nid = n.nid AND sap.vid = n.vid WHERE sap.field_objetivo_ente_nid = %d AND sap.field_objetivo_proyecto_estra_nid = %d AND n.status > 0";
+  $sql_variables = array();
+  $sql_variables[] = $ente_planificador->nid;
+  $sql_variables[] = $proyecto->nid;
+  $result = db_query($sql_query, $sql_variables);
+  while($objetivo = db_fetch_object($result)) {
+    $objetivo_load = node_load($objetivo->nid);
+    $objetivos[$objetivo_load->nid] = $objetivo_load;
+  }
+  return $objetivos;
+}
+
+/*
+ * Implementation of proyecto_estrategico_obtiene_proyectos()
+ */
+function proyecto_estrategico_obtiene_proyectos($ente_planificador, $fecha) {
+  $proyectos = array();
+  // leemos las funciones
+  $sql_query = "SELECT sap.nid FROM {content_type_proyecto_estrategico} AS sap INNER JOIN {node} AS n ON sap.nid = n.nid AND sap.vid = n.vid WHERE sap.field_estrategico_ente_nid = %d AND n.status > 0";
+  $sql_variables = array();
+  $sql_variables[] = $ente_planificador->nid;
+  $result = db_query($sql_query, $sql_variables);
+  while($proyecto = db_fetch_object($result)) {
+    $proyecto_load = node_load($proyecto->nid);
+    $proyectos[$proyecto_load->nid] = $proyecto_load;
+  }
+  return $proyectos;
+}
+
+/*
+ * Implementation of proyecto_estrategico_listar_proyectos()
+ */
+function proyecto_estrategico_listar_proyectos($ente_planificador) {
+  global $user;
+  $tipo_plan = 'proyecto_estrategico_proyectos';
+  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
+  $current_time = time();
+  $fecha = FALSE;
+  $ente = usuario_tiene_ente($user->uid);
+  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
+    $fecha = TRUE;
+  }
+  if (!$fecha) {
+    muestra_mensaje($tipo_plan, $ente_planificador->tipo);
+  }
+  else {
+    if ($ente->nid == $ente_planificador->nid) {
+      $fecha = TRUE;
+      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
+    }
+    elseif (!user_access('admin planificador')) {
+      $fecha = FALSE;
+    }
+  }
+  $output = '';
+  $proyectos = proyecto_estrategico_obtiene_proyectos($ente_planificador, $mi_fecha);
+  $headers_table = array();
+  $headers_table[] = array(
+    'data' => t('CÃ³digo del Proyecto'),
+  );
+  $headers_table[] = array(
+    'data' => t('Proyecto'),
+  );
+  $headers_table[] = array(
+    'data' => t('Producto del proyecto'),
+  );
+  $headers_table[] = array(
+    'data' => t('Lapso de ejecuciÃ³n'),
+  );
+  $headers_table[] = array(
+   'data' => t('Monto total del proyecto'),
+  );
+  $count_headers_table = count($headers_table);
+  if ($fecha) {
+    $count_headers_table += 4;
+    $headers_table[] = array(
+      'data' => t('OperaciÃ³n'),
+      'colspan' => '4'
+    );
+  }
+  $rows = array();
+  if (is_array($proyectos) && count($proyectos)) {
+    foreach($proyectos as $proyecto_id => $proyecto_value) {
+      $row = array();
+      //CÃ³digo del Proyecto
+      $row[] = array('data' => $proyecto_value->field_estrategico_codigo[0]['value'], );
+      //titulo del Proyecto
+      $row[] = array('data' => $proyecto_value->title, );
+      //Producto del proyecto
+      $row[] = array('data' => $proyecto_value->field_estrategico_producto[0]['value'], );
+      //Lapso de ejecuciÃ³n
+      $row[] = array('data' => $proyecto_value->field_estrategico_ejecucion[0]['value'], );
+      //Monto total del proyecto
+      $row[] = array('data' => $proyecto_value->field_estrategico_total[0]['value'], );
+      $row[] = array(
+        'data' => l(
+          t('Ver Proyecto'),
+          'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto_value->nid. '/ver',
+          array(
+            'query' => array(
+              'destination' => 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico'
+            )
+          )
+        ),
+      );
+      if ($fecha) {
+        $row[] = array(
+          'data' => l(
+            t('Modificar datos BÃ¡sicos'),
+            'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto_value->nid. '/datos_basicos',
+            array(
+              'query' => array(
+                'destination' => 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto_value->nid. '/ver'
+              )
+            )
+          ),
+        );
+        $row[] = array(
+          'data' => l(
+            t('Planes y polÃ­ticas'),
+            'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto_value->nid. '/planes_politicas',
+            array(
+              'query' => array(
+                'destination' => 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto_value->nid. '/ver'
+              )
+            )
+          ),
+        );
+        $row[] = array(
+          'data' => l(
+            t('Objetivos estratÃ©gicos'),
+            'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto_value->nid. '/objetivos',
+            array(
+              'query' => array(
+                'destination' => 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto_value->nid. '/ver'
+              )
+            )
+          ),
+        );
+
+      }
+      $rows[] = $row;
+    }
+  }
+  else {
+    $row = array();
+    $row[] = array('data' => t('No se encontraron proyectos estratÃ©gicos para este ente'), 'colspan' => $count_headers_table);
+    $rows[] = $row;
+  }
+  $output .= theme('table', $headers_table, $rows);
+  if ($fecha) {
+    $output .= l(t('Registrar nuevo proyecto'), 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/registrar');
+  }
+  return $output;
+}
+
+/*
+ * Implementation of proyecto_estrategico_mostrar_proyectos()
+ */
+function proyecto_estrategico_mostrar_proyectos($ente_planificador, $proyecto) {
+  global $user; 
+  $output = '';
+  drupal_set_title(t('Ver Proyecto @nombre_proyecto', array('@nombre_proyecto' => $proyecto->title)));
+  $ente = usuario_tiene_ente($user->uid);
+  $accesso = proyecto_estrategico_obtiene_acceso_proceso('proyecto_estrategico_proyectos', $ente_planificador, $ente);
+  //proceso de familiarizaciÃ³n
+  $output .= '<div class ="proyecto-estrategico-datos-basicos" id ="proyecto-estrategico-datos-basicos-' . $ente_planificador->nid . '"><h2>' . t('Datos BÃ¡sicos') . '</h2>';
+  $contenido = array();
+  $content = node_build_content($proyecto);
+  $arreglo = array(
+    'field_estrategico_codigo' => 'field_estrategico_codigo',
+    'field_estrategico_necesi' => 'field_estrategico_necesi',
+    'field_estrategico_objetivo' => 'field_estrategico_objetivo',
+    'field_estrategico_producto' => 'field_estrategico_producto',
+    'field_estrategico_cantidad' => 'field_estrategico_cantidad',
+    'field_estrategico_unidad' => 'field_estrategico_unidad',
+    'field_estrategico_ejecucion' => 'field_estrategico_ejecucion',
+    'field_estrategico_poblacion' => 'field_estrategico_poblacion',
+    'field_estrategico_institu' => 'field_estrategico_institu',
+    'field_estrategico_total' => 'field_estrategico_total',
+    'field_estrategico_anual' => 'field_estrategico_anual',
+    'field_estrategicorespnombre' => 'field_estrategicorespnombre',
+    'field_estrategicoresptelf' => 'field_estrategicoresptelf',
+    'field_estrategicorespemail' => 'field_estrategicorespemail',
+    'field_estrategicoenlanombre' => 'field_estrategicoenlanombre',
+    'field_estrategicoenlatelf' => 'field_estrategicoenlatelf',
+    'field_estrategicoenlemail' => 'field_estrategicoenlemail',
+  );
+  $node_type = content_types('proyecto_estrategico');
+  $fields = $node_type['fields'];
+  foreach($content->content as $field_id => $field_value) {
+    if (array_key_exists($field_id, $arreglo)) {
+      $contenido[$field_id] = $field_value;
+    }
+    elseif (variable_get('proyecto_estrategico_db' . $field_id, FALSE)) {
+      $contenido[$field_id] = $field_value;
+    }
+  }
+  $output .= '<h3>' . $proyecto->title . '</h3>';
+  if (is_array($contenido) && count($contenido)) {
+    $output .= drupal_render($contenido);
+  }
+  if ($accesso) {
+    $output .= l(t('Modificar datos bÃ¡sicos'), 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto->nid. '/datos_basicos');
+  }
+  $output .= '</div>';
+  $output .= '<div class ="proyecto-estrategico-datos-basicos" id ="proyecto-estrategico-datos-basicos-' . $ente_planificador->nid . '"><h2>' . t('Planes y polÃ­ticas que aborda el proyecto') . '</h2>';
+  $contenido = array();
+  $taxonomy = array();
+  $c = db_query(db_rewrite_sql("SELECT v.* FROM {vocabulary} v INNER JOIN {vocabulary_node_types} n ON v.vid = n.vid WHERE n.type = '%s' ORDER BY v.weight, v.name", 'v', 'vid'), $proyecto->type);
+  while ($vocabulary = db_fetch_object($c)) {
+    $taxonomy[$vocabulary->vid] = $vocabulary->name;
+  }
+  $node_taxonomy = array();
+  if (is_array($proyecto->taxonomy) && count($proyecto->taxonomy)) {
+    foreach($proyecto->taxonomy as $tid => $term) {
+      $term->name_vocabulary = $taxonomy[$term->vid];
+      $node_taxonomy[$term->vid][] = $term;
+    }
+  }
+  if (is_array($node_taxonomy) && count($node_taxonomy)) {
+    foreach($node_taxonomy as $tid => $terms) {
+      $output .= '<div class = "field field-type-text">';
+      $output .= '<div class="field-label">' . $taxonomy[$tid] . ':&nbsp;</div>';
+      $output .= '<div class="field-items">';
+      $i = 1;
+      foreach($terms as $term) {
+         $count = $i % 2 ? 'odd' : 'even';
+         $output .= '<div class="field-item ' . $count .'"> ' . $term->name . ' </div>';
+         $i++;
+      }
+      $output .= '</div>';
+      $output .= '</div>';
+    }
+  }
+  $arreglo = array(
+    'field_estrategicoopolinspoa' => 'field_estrategicoopolinspoa',
+  );
+  $estado_p_p = FALSE;
+  foreach($content->content as $field_id => $field_value) {
+    if (array_key_exists($field_id, $arreglo)) {
+      $contenido[$field_id] = $field_value;
+      if (!$estado_p_p) {
+        $items = array();
+        foreach($proyecto->$field_id as $value) {
+          if ($value['value']) {
+            $items[] = $value['value'];
+          }
+        }
+        if (count($items)) {
+          $estado_p_p = TRUE;
+        }
+      }
+    }
+    elseif (variable_get('proyecto_estrategico_pp' . $field_id, FALSE)) {
+      $contenido[$field_id] = $field_value;
+    }
+  }
+  if (is_array($contenido) && count($contenido)) {
+    $output .= drupal_render($contenido);
+  }
+  if ($accesso) {
+    if ($estado_p_p) {
+      $output .= l(t('Modificar Planes y polÃ­ticas'), 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto->nid. '/planes_politicas');
+    }
+    else {
+      $output .= l(t('Agregar Planes y polÃ­ticas'), 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto->nid. '/planes_politicas');
+    }
+  }
+  $output .= '</div>';
+  //OBJETIVOS ESTRATEGICOS
+  $objetivos = array();
+  $headers_table = array();
+  $headers_table[] = array(
+    'data' => t('objetivo estratÃ©gico'),
+  );
+  $headers_table[] = array(
+    'data' => t('Perspectiva asociada al objetivo estratÃ©gico'),
+  );
+  $headers_table[] = array(
+    'data' => t('DescripciÃ³n del indicador'),
+  );
+  $headers_table[] = array(
+    'data' => t('Unidad de medida'),
+  );
+  $headers_table[] = array(
+    'data' => t('Meta total'),
+  );
+  $headers_table[] = array(
+    'data' => t('Meta anual'),
+  );
+  $headers_table[] = array(
+    'data' => t('Monto anual'),
+  );
+  $count_headers_table = count($headers_table);
+  if ($accesso) {
+    $count_headers_table += 3;
+    $headers_table[] = array(
+      'data' => t('OperaciÃ³n'),
+      'colspan' => '3'
+    );
+  }
+  $objetivos = proyecto_estrategico_obtiene_datos_objetivos($ente_planificador, $proyecto);
+  $rows = array();
+  if (is_array($objetivos) && count($objetivos)) {
+    foreach($objetivos as $objetivo_id => $objetivo_value) {
+      $row = array();
+      $row[] = array('data' => $objetivo_value->title, );
+      //Perspectiva
+      $items = array();
+      foreach($objetivo_value->field_objetivo_perspectiva as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      //indicador
+      $items = array();
+      foreach($objetivo_value->field_objetivo_indicador as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      //Unidad de medida
+      $items = array();
+      foreach($objetivo_value->field_objetivo_medida as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      //Meta total
+      $items = array();
+      foreach($objetivo_value->field_objetivo_meta_total as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      //Meta anual
+      $items = array();
+      foreach($objetivo_value->field_objetivo_meta_anual as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      //'Monto anual
+      $items = array();
+      foreach($objetivo_value->field_objetivo_monto_anual as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      if ($accesso) {
+        $row[] = array(
+          'data' => l(
+            t('Modificar'),
+              'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto->nid . '/objetivos/' . $objetivo_value->nid . '/modificar',
+            array(
+              'query' => array(
+                'destination' => 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico'
+              )
+            )
+          ),
+        );
+      }
+      $row[] = array(
+        'data' => l(
+          t('Eliminar'),
+          'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $funcion_value->nid . '/eliminar',
+          array(
+            'query' => array(
+              'destination' => 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico'
+            )
+          )
+        ),
+      );
+      $rows[] = $row;
+    }
+  }
+  else {
+    $row = array();
+    $row[] = array('data' => t('No se encontraron objetivos estratÃ©gicos para este ente'), 'colspan' => $count_headers_table);
+    $rows[] = $row;
+  }
+  $output .= '<div id ="proceso-analisis-objetivo-' . $ente_planificador->nid . '"><h2>' . t('Objetivos Estrategicos') . '</h2>';
+  $output .= theme('table', $headers_table, $rows);
+  if ($accesso) {
+    $output .= l(t('Registrar un objetivo estratÃ©gico'), 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto->nid . '/objetivos/registrar');
+  }
+  $output .= '</div>';
+  return $output;
+}
+
+/*
+ * Implementation of proyecto_estrategico_datos_basicos_form()
+ */
+function proyecto_estrategico_datos_basicos_form(&$form_state, $ente_planificador, $proyecto = 0) {
+  global $user;
+  $tipo_plan = 'proyecto_estrategico_proyectos';
+  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
+  $current_time = time();
+  $fecha = FALSE;
+  $ente = usuario_tiene_ente($user->uid);
+  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
+    $fecha = TRUE;
+  }
+  if ($proyecto_estrategico->nid) {
+    if (!$fecha) {
+      muestra_mensaje($tipo_plan, $ente_planificador->tipo);
+    }
+    else {
+      if ($ente->nid == $ente_planificador->nid) {
+        muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
+      }
+    }
+    $proyecto_estrategico_load = node_load($proyecto_estrategico->nid);
+  }
+  else {
+    if ($fecha && (user_access('admin planificador') || ($ente->nid == $ente_planificador->nid && user_access('editar datos institucionales de mi ente')))) {
+      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
+    }
+    else {
+      muestra_mensaje("explicacion", $ente_planificador->tipo);
+      return t('El ente @ente_planificador aun no tiene proyectos estratÃ©gicos.', array('@ente_planificador' => $ente_planificador->title));
+    }
+  }
+  $form = array();
+  $form['ente_planificador_nid'] = array(
+    '#type' => 'hidden',
+    '#default_value' => $ente_planificador->nid,
+  );
+  if ($proyecto && isset($proyecto->nid) && $proyecto->nid) {
+    drupal_set_title(t('Modificar Proyecto @nombre_proyecto', array('@nombre_proyecto' => $proyecto->title)));
+    $form['#node'] = $proyecto;
+  }
+  else {
+    drupal_set_title(t('Registrar proyecto estratÃ©gico'));
+    $form['#node'] = new stdClass();
+    $form['#node']->type = 'proyecto_estrategico';
+    $form['#node']->uid = $user->uid;
+    $form['#node']->field_estrategico_ente[0]['nid'] = $ente_planificador->nid;
+    $form['#node']->title = '';
+    $form['#node']->field_estrategico_anual[0]['value'] = 0;
+  }
+  $form['title'] = array( 
+    '#type' => 'textfield',
+    '#title' => t('TÃ­tulo del Proyecto'),
+    '#required' => TRUE,
+    '#default_value' => $form['#node']->title,
+  ); 
+  $node_type = content_types('proyecto_estrategico');
+  $fields = $node_type['fields'];
+  $field_form = array();
+  $arreglo = array(
+    'field_estrategico_codigo' => 'field_estrategico_codigo',
+    'field_estrategico_necesi' => 'field_estrategico_necesi',
+    'field_estrategico_objetivo' => 'field_estrategico_objetivo',
+    'field_estrategico_producto' => 'field_estrategico_producto',
+    'field_estrategico_cantidad' => 'field_estrategico_cantidad',
+    'field_estrategico_unidad' => 'field_estrategico_unidad',
+    'field_estrategico_ejecucion' => 'field_estrategico_ejecucion',
+    'field_estrategico_poblacion' => 'field_estrategico_poblacion',
+    'field_estrategico_institu' => 'field_estrategico_institu',
+    'field_estrategico_total' => 'field_estrategico_total',
+    'field_estrategicorespnombre' => 'field_estrategicorespnombre',
+    'field_estrategicoresptelf' => 'field_estrategicoresptelf',
+    'field_estrategicorespemail' => 'field_estrategicorespemail',
+    'field_estrategicoenlanombre' => 'field_estrategicoenlanombre',
+    'field_estrategicoenlatelf' => 'field_estrategicoenlatelf',
+    'field_estrategicoenlemail' => 'field_estrategicoenlemail',
+  );
+  if (is_array($fields) && count($fields)) {
+    foreach($fields as $field_id => $field) {
+      if (array_key_exists($field_id, $arreglo)) {
+        $field_form[] = $field_id;
+      }
+      elseif (variable_get('proyecto_estrategico_db' . $field_id, FALSE)) {
+        $field_form[] = $field_id;
+      }
+    }
+  }
+  $form['#proyecto_estrategico_fields_datos'] = $field_form;
+  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, 'proyecto_estrategico');
+      $form['#field_info'][$field_id] = $field;
+      $form += (array) content_field_form($form, $form_state, $field);
+    }
+  }
+  $form["field_estrategico_anual"] = array( 
+    '#type' => 'textfield',
+    '#title' => t('Monto Anual del Proyecto'),
+    '#required' => TRUE,
+    '#default_value' => $form['#node']->field_estrategico_anual[0]['value'],
+    '#size' => 12,
+    '#weight' => $form['field_estrategico_total']['#weight'] + 1,
+  );
+  $form['buttons'] = array(
+    '#type' => 'fieldset',
+   '#collapsible' => TRUE,
+    // Collapsed by default when "Create new revision" is unchecked
+    '#weight' => 100,
+  );
+  $form['buttons']['registrar'] = array(
+    '#type' => 'submit',
+    '#default_value' => t('Registrar proyecto estratÃ©gico'),
+    '#weight' => 100,
+  );
+  $form['buttons']['cancelar'] = array(
+    '#type' => 'submit',
+    '#default_value' => t('Cancelar'),
+    '#weight' => 101,
+    '#skip_validation' => TRUE,
+  );
+  $form['field_estrategico_codigo']['#weight'] = -11;
+  return $form;
+}
+
+/*
+ * Implementation of proyecto_estrategico_datos_basicos_form_validate()
+ */
+function proyecto_estrategico_datos_basicos_form_validate($form, &$form_state) {
+  if (!is_numeric($form_state['values']['field_estrategico_anual'])) {
+    form_set_error('field_estrategico_anual', t('El monto anual del proyecto deberia ser un nÃºmero'));
+  }
+  if ($form_state['values']['field_estrategico_total'][0]['value'] < $form_state['values']['field_estrategico_anual']) {
+    form_set_error('field_estrategico_anual', t('El monto anual del proyecto no debe ser mayor al monto total del proyecto'));
+  }
+}
+
+/*
+ * Implementation of proyecto_estrategico_datos_basicos_form_submit()
+ */
+function proyecto_estrategico_datos_basicos_form_submit($form, &$form_state) {
+  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
+  if ($op == t('Cancelar')) {
+    $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/proyecto_estrategico';
+    return;
+  }
+  module_load_include('inc', 'node', 'node.pages');
+  $node_load = $form['#node'];
+  $field_form = $form['#proyecto_estrategico_fields_datos'];
+  $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']);
+          }
+        }
+        $node_load->{$field_id} = $form_values[$field_id];
+      }
+    }
+  }
+  $node_load->field_estrategico_anual[0]['value'] = $form_state['values']['field_estrategico_anual'];
+  $node_load->title = check_plain($form_state['values']['title']);
+  $node_load->log = t('Agregado el proyecto estrÃ¡tegico del actor planificador');
+  $node_load->revision = 1;
+  node_save($node_load);
+  drupal_set_message(t("Agregado el proyecto estrÃ¡tegico del actor planificador"));
+  if ($_REQUEST['destination']) {
+    $form_state['redirect'] = url('planificacion/' . $form_state['values']['ente_planificador_nid'] . '/proyecto_estrategico', 
+      array(
+        'query' => array(
+          'destination' => $_REQUEST['destination'], 
+         ),
+         'absolute' => TRUE,  		    
+      )
+    ); 
+    unset($_REQUEST['destination']);
+  }
+  else {
+    // add redirect
+    $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/proyecto_estrategico'; 
+  }
+}
+
+/*
+ * Implementation of proyecto_estrategico_planes_politicas_form()
+ */
+function proyecto_estrategico_planes_politicas_form(&$form_state, $ente_planificador, $proyecto = 0) {
+  global $user;
+  $tipo_plan = 'proyecto_estrategico_proyectos';
+  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
+  $current_time = time();
+  $fecha = FALSE;
+  $ente = usuario_tiene_ente($user->uid);
+  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
+    $fecha = TRUE;
+  }
+  if ($proyecto_estrategico->nid) {
+    if (!$fecha) {
+      muestra_mensaje($tipo_plan, $ente_planificador->tipo);
+    }
+    else {
+      if ($ente->nid == $ente_planificador->nid) {
+        muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
+      }
+    }
+    $proyecto_estrategico_load = node_load($proyecto_estrategico->nid);
+  }
+  else {
+    if ($fecha && (user_access('admin planificador') || ($ente->nid == $ente_planificador->nid && user_access('editar datos institucionales de mi ente')))) {
+      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
+    }
+    else {
+      muestra_mensaje("explicacion", $ente_planificador->tipo);
+      return t('El ente @ente_planificador aun no tiene proyectos estratÃ©gicos.', array('@ente_planificador' => $ente_planificador->title));
+    }
+  }
+  $form = array();
+  $form['ente_planificador_nid'] = array(
+    '#type' => 'hidden',
+    '#default_value' => $ente_planificador->nid,
+  );
+  drupal_set_title(t('Modificar Planes y polÃ­ticas del proyecto @nombre_proyecto', array('@nombre_proyecto' => $proyecto->title)));
+  //add taxonomy if exist
+  if (module_exists('taxonomy')) {
+    if (!isset($proyecto->taxonomy)) {
+      $terms = empty($proyecto->nid) ? array() : taxonomy_node_get_terms($proyecto);
+    }
+    else {
+      // After a preview or form reload, the terms must be converted to objects.
+      reset($proyecto->taxonomy);
+      if (!is_object(current($proyecto->taxonomy))) {
+        $proyecto->taxonomy = taxonomy_preview_terms($proyecto);
+      }
+      $terms = $proyecto->taxonomy;
+    }
+    $c = db_query(db_rewrite_sql("SELECT v.* FROM {vocabulary} v INNER JOIN {vocabulary_node_types} n ON v.vid = n.vid WHERE n.type = '%s' ORDER BY v.weight, v.name", 'v', 'vid'), $proyecto->type);
+    while ($vocabulary = db_fetch_object($c)) {
+      if ($vocabulary->tags) {
+        if (isset($form_state['node_preview'])) {
+          // Typed string can be changed by the user before preview,
+          // so we just insert the tags directly as provided in the form.
+          $typed_string = $proyecto->taxonomy['tags'][$vocabulary->vid];
+        }
+        else {
+          $typed_string = taxonomy_implode_tags($terms, $vocabulary->vid) . (array_key_exists('tags', $terms) ? $terms['tags'][$vocabulary->vid] : NULL);
+        }
+        if ($vocabulary->help) {
+          $help = filter_xss_admin($vocabulary->help);
+        }
+        else {
+          $help = t('A comma-separated list of terms describing this content. Example: funny, bungee jumping, "Company, Inc.".');
+        }
+        $form['taxonomy']['tags'][$vocabulary->vid] = array('#type' => 'textfield',
+          '#title' => $vocabulary->name,
+          '#description' => $help,
+          '#required' => $vocabulary->required,
+          '#default_value' => $typed_string,
+          '#autocomplete_path' => 'taxonomy/autocomplete/'. $vocabulary->vid,
+          '#weight' => $vocabulary->weight,
+          '#maxlength' => 1024,
+        );
+      }
+      else {
+        // Extract terms belonging to the vocabulary in question.
+        $default_terms = array();
+        foreach ($terms as $term) {
+          // Free tagging has no default terms and also no vid after preview.
+          if (isset($term->vid) && $term->vid == $vocabulary->vid) {
+            $default_terms[$term->tid] = $term;
+          }
+        }
+        $form['taxonomy'][$vocabulary->vid] = taxonomy_form($vocabulary->vid, array_keys($default_terms), filter_xss_admin($vocabulary->help));
+        $form['taxonomy'][$vocabulary->vid]['#weight'] = $vocabulary->weight;
+        $form['taxonomy'][$vocabulary->vid]['#required'] = $vocabulary->required;
+      }
+    }
+    if (!empty($form['taxonomy']) && is_array($form['taxonomy'])) {
+      if (count($form['taxonomy']) > 1) {
+        // Add fieldset only if form has more than 1 element.
+        $form['taxonomy'] += array(
+          '#type' => 'fieldset',
+          '#title' => t('Planes y PolÃ­ticas'),
+          '#collapsible' => TRUE,
+          '#collapsed' => FALSE,
+        );
+      }
+      $form['taxonomy']['#weight'] = 8;
+      $form['taxonomy']['#tree'] = TRUE;
+    }
+  }
+  $form['#node'] = $proyecto;
+  $node_type = content_types('proyecto_estrategico');
+  $fields = $node_type['fields'];
+  $field_form = array();
+  $arreglo = array(
+    'field_estrategicoopolinspoa' => 'field_estrategicoopolinspoa',
+  );
+  if (is_array($fields) && count($fields)) {
+    foreach($fields as $field_id => $field) {
+      if (array_key_exists($field_id, $arreglo)) {
+        $field_form[] = $field_id;
+      }
+      elseif (variable_get('proyecto_estrategico_pp' . $field_id, FALSE)) {
+        $field_form[] = $field_id;
+      }
+    }
+  }
+  $form['#proyecto_estrategico_fields_datos'] = $field_form;
+  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, 'proyecto_estrategico');
+      $form['#field_info'][$field_id] = $field;
+      $form += (array) content_field_form($form, $form_state, $field);
+    }
+  }
+  $form['buttons'] = array(
+    '#type' => 'fieldset',
+   '#collapsible' => TRUE,
+    // Collapsed by default when "Create new revision" is unchecked
+    '#weight' => 100,
+  );
+  $form['buttons']['registrar'] = array(
+    '#type' => 'submit',
+    '#default_value' => t('Registrar Planes y polÃ­ticas'),
+    '#weight' => 100,
+  );
+  $form['buttons']['cancelar'] = array(
+    '#type' => 'submit',
+    '#default_value' => t('Cancelar'),
+    '#weight' => 101,
+    '#skip_validation' => TRUE,
+  );
+
+
+  return $form;
+}
+
+/*
+ * Implementation of proyecto_estrategico_planes_politicas_form_submit()
+ */
+function proyecto_estrategico_planes_politicas_form_submit($form, &$form_state) {
+  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
+  if ($op == t('Cancelar')) {
+    $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/proyecto_estrategico';
+    return;
+  }
+  module_load_include('inc', 'node', 'node.pages');
+  $node_load = $form['#node'];
+  $field_form = $form['#proyecto_estrategico_fields_datos'];
+  $form_values = $form_state['values'];
+  if (isset($form_state['values']['taxonomy'])) {
+    $node_load->taxonomy = $form_state['values']['taxonomy'];
+  }
+  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']);
+          }
+        }
+        $node_load->{$field_id} = $form_values[$field_id];
+      }
+    }
+  }
+  $node_load->log = t('Agregado el proyecto estrÃ¡tegico del actor planificador');
+  $node_load->revision = 1;
+  node_save($node_load);
+  drupal_set_message(t("Agregado el proyecto estrÃ¡tegico del actor planificador"));
+  if ($_REQUEST['destination']) {
+    $form_state['redirect'] = url('planificacion/' . $form_state['values']['ente_planificador_nid'] . '/proyecto_estrategico', 
+      array(
+        'query' => array(
+          'destination' => $_REQUEST['destination'], 
+         ),
+         'absolute' => TRUE,  		    
+      )
+    ); 
+    unset($_REQUEST['destination']);
+  }
+  else {
+    // add redirect
+    $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/proyecto_estrategico'; 
+  }
+}
+
+/*
+ * Implementation of proyecto_estrategico_objetivos_estrategicos_registrar_form()
+ */
+function proyecto_estrategico_objetivos_estrategicos_registrar_form(&$form_state, $ente_planificador, $proyecto_estrategico, $objetivo = 0) {
+  global $user;
+  $tipo_plan = 'proyecto_estrategico_proyectos';
+  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
+  $current_time = time();
+  $fecha = FALSE;
+  $ente = usuario_tiene_ente($user->uid);
+  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
+    $fecha = TRUE;
+  }
+  if (!$fecha) {
+    muestra_mensaje($tipo_plan, $ente_planificador->tipo);
+  }
+  else {
+    if ($ente->nid == $ente_planificador->nid) {
+      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
+    }
+  }
+  $form = array();
+  $form['#ente_planificador'] = $ente_planificador;
+  $form['#proyecto_estrategico'] = $proyecto_estrategico;
+  $form['#objetivo_estrategico'] = is_object($objetivo) ? $objetivo : 0;;
+  if (!$form['#objetivo_estrategico']) {
+    $title = t('Registrar objetivo estratÃ©gico');
+    drupal_set_title($title);
+    $objetivo = new stdClass();
+    $objetivo->type = 'objetivos_estrategicos';
+    $objetivo->uid = $user->uid;
+    $objetivo->field_objetivo_ente[0] = array('nid' => $ente_planificador->nid);
+    $objetivo->field_objetivo_proyecto_estra[0] = array('nid' => $proyecto_estrategico->nid);
+    $form['#objetivo_estrategico'] = $objetivo;
+  }
+  else{
+    drupal_set_title(t('Modificar objetivo estratÃ©gico @nombre_objetivo', array('@nombre_objetivo' => $objetivo->title)));
+    $title = t('Modificar objetivo estratÃ©gico');
+  }
+  $form['title'] = array( 
+    '#type' => 'textfield',
+    '#title' => t('Objetivo estratÃ©gico'),
+    '#required' => FALSE,
+    '#default_value' => isset($objetivo->title) ? $objetivo->title : '',
+  ); 
+  $node_type = content_types('objetivos_estrategicos');
+  $fields = $node_type['fields'];
+  $field_form = array();
+  $arreglo = array(
+    'field_objetivo_perspectiva' => 'field_objetivo_perspectiva',
+    'field_objetivo_indicador' => 'field_objetivo_indicador',
+    'field_objetivo_medida' => 'field_objetivo_medida',
+    'field_objetivo_meta_total' => 'field_objetivo_meta_total',
+    'field_objetivo_meta_anual' => 'field_objetivo_meta_anual',
+    'field_objetivo_monto_anual' => 'field_objetivo_monto_anual',
+  );
+  if (is_array($fields) && count($fields)) {
+    foreach($fields as $field_id => $field) {
+      if (array_key_exists($field_id, $arreglo)) {
+        $field_form[] = $field_id;
+      }
+      elseif (variable_get('proyecto_estrategico_oes_' . $field_id, FALSE)) {
+        $field_form[] = $field_id;
+      }
+    }
+  }
+  $form['#proyecto_estrategico_fields_datos'] = $field_form;
+  if (is_array($field_form) && count($field_form)) {
+    module_load_include('inc', 'content', 'includes/content.node_form');
+    $form['#node'] = $objetivo;
+    foreach ($field_form as $field_id) {
+      $field = content_fields($field_id, 'objetivos_estrategicos');
+      $form['#field_info'][$field_id] = $field;
+      $form += (array) content_field_form($form, $form_state, $field);
+    }
+  }
+  $form['buttons'] = array(
+    '#type' => 'fieldset',
+   '#collapsible' => TRUE,
+    // Collapsed by default when "Create new revision" is unchecked
+    '#weight' => 100,
+  );
+  $form['buttons']['registrar'] = array(
+    '#type' => 'submit',
+    '#default_value' => $title,
+    '#weight' => 100,
+  );
+  $form['buttons']['cancelar'] = array(
+    '#type' => 'submit',
+    '#default_value' => t('Cancelar'),
+    '#weight' => 101,
+    '#skip_validation' => TRUE,
+  );
+  return $form;
+}
+
+/*
+ * Implementation of proyecto_estrategico_objetivos_estrategicos_registrar_form_submit()
+ */
+function proyecto_estrategico_objetivos_estrategicos_registrar_form_submit($form, &$form_state) {
+  $node_load = $form['#objetivo_estrategico'];
+  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
+  if ($op == t('Cancelar')) {
+    $form_state['redirect'] = 'planificacion/' . $node_load->field_objetivo_ente[0]['nid'] . '/proyecto_estrategico/' . $node_load->field_objetivo_proyecto_estra[0]['nid'];
+    return;
+  }
+  $field_form = $form['#ente_planificador_fields_datos'];
+  module_load_include('inc', 'node', 'node.pages');
+  $node_load->title = check_plain($form_state['values']['title']);
+  $field_form = $form['#proyecto_estrategico_fields_datos'];
+  $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']);
+          }
+        }
+        $node_load->{$field_id} = $form_values[$field_id];
+      }
+    }
+  }
+  $node_load->log = t('Modificado el objetivos estratÃ©gico del ente');
+  $node_load->revision = 1;
+  node_save($node_load);
+  drupal_set_message(t('Se modifico la informaciÃ³n del objetivos estratÃ©gico del ente @nombre_objetivo', array('@nombre_objetivo' => $node_load->title)));
+  if ($_REQUEST['destination']) {
+    $form_state['redirect'] = url('planificacion/' . $node_load->field_objetivo_ente[0]['nid'] . '/proyecto_estrategico/' . $node_load->field_objetivo_proyecto_estra[0]['nid'], 
+      array(
+        'query' => array(
+          'destination' => $_REQUEST['destination'], 
+         ),
+         'absolute' => TRUE,  		    
+      )
+    ); 
+    unset($_REQUEST['destination']);
+  }
+  else {
+    // add redirect
+    $form_state['redirect'] = 'planificacion/' . $node_load->field_objetivo_ente[0]['nid'] . '/proyecto_estrategico/' . $node_load->field_objetivo_proyecto_estra[0]['nid']; 
+  }
+}
+
+
+/**
+ * Implementation of hook_planner_items_toolbar().
+*/
+function proyecto_estrategico_planner_items_toolbar($ente_planificador, $handler_icon) {
+  $link = array();
+  $icon_path = entes_planificadores_toolbar_get_icon_path('planner', 'proyectoes', $handler_icon);
+  $link[] = array(
+    'path' => 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico',
+    'icon_path' => $icon_path,
+    'icon' => theme('image', $icon_path, t('Consultar InformaciÃ³n Institucional del actor planificador'), t('Consultar InformaciÃ³n Institucional del actor planificador'), array('class' => 'handler-icon-' . $handler_icon)),
+    'title' => t('Proyectos estrategicos'),
+    'description' => t('Consultar InformaciÃ³n de los proyectos estrategicos del actor planificador'),
+    'category' => 'planner',
+  );
+  return $link;
+}
+
+
+/*
+ * Implementation of hook_node_info()
+ */
+function proyecto_estrategico_node_info() {
+  return array(
+    'proyecto_estrategico' => array(
+      'name' => t('Proyecto EstratÃ©gico'),
+      'description' => '',
+      'has_title' => TRUE,
+      'title_label' => 'TÃ­tulo del Proyecto',
+      'has_body' => FALSE,
+      'body_label' => 'Cuerpo',
+      'module' => 'proyecto_estrategico',
+    ),
+    'objetivos_estrategicos' => array(
+      'name' => t('Objetivos estratÃ©gicos'),
+      'description' => '',
+      'has_title' => TRUE,
+      'title_label' => 'TÃ­tulo',
+      'has_body' => TRUE,
+      'body_label' => 'Cuerpo',
+      'module' => 'proyecto_estrategico',
+    ),
+  );
+}
+
+/*
+ * Implementation of hook_form()
+ */
+function proyecto_estrategico_form(&$node, $form_state) {
+  return node_content_form($node, $form_state);
+}
+
+/*
+ * Implementation of hook_access()
+ */
+function proyecto_estrategico_access($op, $node, $account) {
+  global $user;
+  if ($op == 'view') {
+    return user_access('ver planificador') || user_access('admin planificador');
+  }
+  if ($op == 'create') {
+    return (user_access('admin planificador'));
+  }
+  if ($op == 'delete') {
+      return (user_access('admin planificador'));
+  }
+}
+
+/*
+ * hook_form_alter()
+ */
+function proyecto_estrategico_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'] == 'proyecto_estrategico'){
+    $arreglo = array(
+      'field_estrategico_codigo',
+      'field_estrategico_necesi',
+      'field_estrategico_objetivo',
+      'field_estrategico_producto',
+      'field_estrategico_cantidad',
+      'field_estrategico_unidad',
+      'field_estrategico_ejecucion',
+      'field_estrategico_poblacion',
+      'field_estrategico_institu',
+      'field_estrategico_total',
+      'field_estrategicorespnombre',
+      'field_estrategicoresptelf',
+      'field_estrategicorespemail',
+      'field_estrategicoenlanombre',
+      'field_estrategicoenlatelf',
+      'field_estrategicoenlemail',
+      'field_estrategicoopolinspoa',
+      'field_estrategico_ente',
+      'field_estrategico_anual',
+    );
+    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'] == 'proyecto_estrategico'){
+    $arreglo = array(
+      'field_estrategico_codigo',
+      'field_estrategico_necesi',
+      'field_estrategico_objetivo',
+      'field_estrategico_producto',
+      'field_estrategico_cantidad',
+      'field_estrategico_unidad',
+      'field_estrategico_ejecucion',
+      'field_estrategico_poblacion',
+      'field_estrategico_institu',
+      'field_estrategico_total',
+      'field_estrategicorespnombre',
+      'field_estrategicoresptelf',
+      'field_estrategicorespemail',
+      'field_estrategicoenlanombre',
+      'field_estrategicoenlatelf',
+      'field_estrategicoenlemail',
+      'field_estrategicoopolinspoa',
+      'field_estrategico_ente',
+      'field_estrategico_anual',
+    );
+    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.');
+      }
+    }
+  }
+  if ($form_id == 'content_field_overview_form' &&  $form['#type_name'] == 'objetivos_estrategicos'){
+    $arreglo = array(
+      'field_objetivo_perspectiva',
+      'field_objetivo_indicador',
+      'field_objetivo_medida',
+      'field_objetivo_meta_total',
+      'field_objetivo_meta_anual',
+      'field_objetivo_monto_anual',
+      'field_objetivo_ente',
+      'field_objetivo_proyecto_estra',
+    );
+    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'] == 'objetivos_estrategicos'){
+    $arreglo = array(
+      'field_objetivo_perspectiva',
+      'field_objetivo_indicador',
+      'field_objetivo_medida',
+      'field_objetivo_meta_total',
+      'field_objetivo_meta_anual',
+      'field_objetivo_monto_anual',
+      'field_objetivo_ente',
+      'field_objetivo_proyecto_estra',
+    );
+    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_content_field_edit_form_alter(): content_field_edit_form.
+ */
+function proyecto_estrategico_form_content_field_edit_form_alter(&$form, $form_state) {
+  if ($form['#field']['type_name'] == 'proyecto_estrategico') {
+    $arreglo = array(
+      'db' => t('Datos BÃ¡sicos'),
+      'pp' => t('Planes y polÃ­ticas'),
+    );
+    foreach($arreglo as $id => $value) {
+      $form['widget']['datos_institucionales' . $id] = array(
+        '#title' => t('InformaciÃ³n intitucional (incluir en @value)', array('@value' => $value)),
+        '#type' => 'checkbox',
+        '#default_value' => variable_get('proyecto_estrategico_' . $id . $form['#field']['field_name'], FALSE),
+        '#return_value' => '1',
+      );
+    }
+    $form['#submit'][] = 'proyecto_estrategico_proyecto_content_field_edit_form_submit';
+  }
+
+  if ($form['#field']['type_name'] == 'objetivos_estrategicos') {
+    $form['widget']['proyecto_estrategico_oes'] = array(
+      '#title' => t('InformaciÃ³n intitucional (incluir en @value)', array('@value' => $value)),
+      '#type' => 'checkbox',
+      '#default_value' => variable_get('proyecto_estrategico_oes_' . $form['#field']['field_name'], FALSE),
+      '#return_value' => '1',
+    );
+    $form['#submit'][] = 'datos_institucionales_objetivos_estrategicos_content_field_edit_form_submit';
+  }
+
+}
+
+/**
+ * Implementation of proyecto_estrategico_proyecto_content_field_edit_form_submit()
+ */
+function proyecto_estrategico_proyecto_content_field_edit_form_submit($form, &$form_state) {
+  $arreglo = array(
+    'db' => t('Datos BÃ¡sicos'),
+    'pp' => t('Planes y polÃ­ticas'),
+  );
+  foreach($arreglo as $id => $value) {
+    variable_set('proyecto_estrategico_' . $id . $form_state['values']['field_name'], $form_state['values']['datos_institucionales' . $id]);
+  }
+}
+
+/**
+ * Implementation of datos_institucionales_objetivos_estrategicos_content_field_edit_form_submit()
+ */
+function datos_institucionales_objetivos_estrategicos_content_field_edit_form_submit($form, &$form_state) {
+  variable_set('proyecto_estrategico_oes_' . $id . $form_state['values']['field_name'], $form_state['values']['proyecto_estrategico_oes']);
+}
+
+
+/**
+ * Implementation of hook_views_api().
+ */
+function proyecto_estrategico_views_api() {
+  return array(
+    'api' => '2.0',
+    'path' => drupal_get_path('module', 'proyecto_estrategico') . '/views',
+  );
+}
+
+/**
+ * Implementation of hook_planificadores_exportar_alter()
+ */
+function proyecto_estrategico_planificadores_exportar_alter(&$tipos) {
+  $tipos['proyecto_estrategico']['title'] = t('Proyecto estrategico');
+  $tipos['proyecto_estrategico']['callback'] = '_proyecto_estrategico_exportar';
+
+}
+
+/**
+ * Implementation of _proyecto_estrategico_exportar()
+ */
+function _proyecto_estrategico_exportar($entes, $ente_planificador) {
+  $output = '';
+  drupal_set_title(t('Importar situacion actual preliminar'));
+  $sql_query = "SELECT nid FROM {content_type_situacion_actual_preliminar} WHERE field_version_planificador_nid = %d";
+  $explicacion = db_fetch_object(db_query($sql_query, $entes->nid));
+  $tipo_plan = 'proyecto_estrategico_proyectos';
+  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
+  $proyectos = proyecto_estrategico_obtiene_proyectos($ente_planificador, $mi_fecha);
+  if (is_array($proyectos) && count($proyectos)) {
+    $explicacion_load = node_load($explicacion->nid);
+    $headers_table = array();
+    $headers_table[] = array('data' => t('Proyectos'));
+    $row = array();
+    $row[] = array('data' => drupal_get_form('proyecto_estrategico_exportar_proyecto_estrategico_form', $ente_planificador, $proyectos));
+    $rows[] = $row;
+    $output .= theme('table', $headers_table, $rows);
+  }
+  return $output;
+}
+
+function proyecto_estrategico_exportar_proyecto_estrategico_form($form_state, $ente_planificador, $proyectos = array()) {
+  $form = array();
+  $form['#ente_planificador'] = $ente_planificador;
+  $form['#proyectos'] = $proyectos;
+  if (is_array($proyectos) && count($proyectos)) {
+    foreach ($proyectos as $id => $value) {
+      $form[$id] = array(
+        '#type' => 'checkbox',
+        '#title' => $value->title,
+      );
+    }
+  }
+  $form['buttons']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Submit'),
+    '#weight' => 20
+  );
+  return $form;
+}
+
+function proyecto_estrategico_exportar_proyecto_estrategico_form_submit($form, &$form_state) {
+  global $user;
+  module_load_include('inc', 'node', 'node.pages');
+  $ente_planificador = $form['#ente_planificador'];
+  $proyectos = $form['#proyectos'];
+  $values = array();
+  $counter = 0;
+  if (is_array($proyectos) && count($proyectos)) {
+    foreach ($proyectos as $id => $proyecto) {
+      if ($form_state['values'][$id]) {
+        unset($proyecto->nid);
+        unset($proyecto->vid);
+        $proyecto->uid = $user->uid;
+        $proyecto->field_estrategico_ente[0]['nid'] = $ente_planificador->nid;
+        node_save($proyecto);
+        $counter++;
+      }
+    }
+  }
+  drupal_set_message(t('Se agregaron @counter proyectos al ente @ente_name', array('@counter' => $counter, '@ente_name' => $ente_planificador->title)));
+}
+
+/*
+ * Implementation of proyecto_estrategico_mostrar_objetivos()
+ */
+function proyecto_estrategico_mostrar_objetivos($ente_planificador, $proyecto) {
+  global $user; 
+  $output = '';
+  drupal_set_title(t('Ver Proyecto @nombre_proyecto', array('@nombre_proyecto' => $proyecto->title)));
+  $ente = usuario_tiene_ente($user->uid);
+  $accesso = proyecto_estrategico_obtiene_acceso_proceso('proyecto_estrategico_proyectos', $ente_planificador, $ente);
+  $objetivos = array();
+  $headers_table = array();
+  $headers_table[] = array(
+    'data' => t('objetivo estratÃ©gico'),
+  );
+  $headers_table[] = array(
+    'data' => t('Perspectiva asociada al objetivo estratÃ©gico'),
+  );
+  $headers_table[] = array(
+    'data' => t('DescripciÃ³n del indicador'),
+  );
+  $headers_table[] = array(
+    'data' => t('Unidad de medida'),
+  );
+  $headers_table[] = array(
+    'data' => t('Meta total'),
+  );
+  $headers_table[] = array(
+    'data' => t('Meta anual'),
+  );
+  $headers_table[] = array(
+    'data' => t('Monto anual'),
+  );
+  $count_headers_table = count($headers_table);
+  if ($accesso) {
+    $count_headers_table += 3;
+    $headers_table[] = array(
+      'data' => t('OperaciÃ³n'),
+      'colspan' => '3'
+    );
+  }
+  $objetivos = proyecto_estrategico_obtiene_datos_objetivos($ente_planificador, $proyecto);
+  $rows = array();
+  if (is_array($objetivos) && count($objetivos)) {
+    foreach($objetivos as $objetivo_id => $objetivo_value) {
+      $row = array();
+      $row[] = array('data' => $objetivo_value->title, );
+      //Perspectiva
+      $items = array();
+      foreach($objetivo_value->field_objetivo_perspectiva as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      //indicador
+      $items = array();
+      foreach($objetivo_value->field_objetivo_indicador as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      //Unidad de medida
+      $items = array();
+      foreach($objetivo_value->field_objetivo_medida as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      //Meta total
+      $items = array();
+      foreach($objetivo_value->field_objetivo_meta_total as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      //Meta anual
+      $items = array();
+      foreach($objetivo_value->field_objetivo_meta_anual as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      //'Monto anual
+      $items = array();
+      foreach($objetivo_value->field_objetivo_monto_anual as $value) {
+        $items[] = $value['value'];
+      }
+      $row[] = array('data' => theme('item_list', $items), );
+      if ($accesso) {
+        $row[] = array(
+          'data' => l(
+            t('Modificar'),
+              'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto->nid . '/objetivos/' . $objetivo_value->nid . '/modificar',
+            array(
+              'query' => array(
+                'destination' => 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico'
+              )
+            )
+          ),
+        );
+      }
+      $row[] = array(
+        'data' => l(
+          t('Eliminar'),
+          'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $funcion_value->nid . '/eliminar',
+          array(
+            'query' => array(
+              'destination' => 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico'
+            )
+          )
+        ),
+      );
+      $rows[] = $row;
+    }
+  }
+  else {
+    $row = array();
+    $row[] = array('data' => t('No se encontraron objetivos estratÃ©gicos para este ente'), 'colspan' => $count_headers_table);
+    $rows[] = $row;
+  }
+  $output .= '<div id ="proceso-analisis-objetivo-' . $ente_planificador->nid . '"><h2>' . t('Objetivos Estrategicos') . '</h2>';
+  $output .= theme('table', $headers_table, $rows);
+  if ($accesso) {
+    $output .= l(t('Registrar un objetivo estratÃ©gico'), 'planificacion/' . $ente_planificador->nid . '/proyecto_estrategico/' . $proyecto->nid . '/objetivos/registrar');
+  }
+  $output .= '</div>';
+  return $output;
+}
