source: sipei/modulos/datos_institucionales/datos_institucionales.module @ 65995a6

drupal-6.x
Last change on this file since 65995a6 was 65995a6, checked in by Luis Peña <lpena@…>, 12 años ago

Agregando Actualizaciones de los Modulos Principales del SIPEI

  • Propiedad mode establecida a 100755
File size: 111.4 KB
Línea 
1<?php
2  /**
3  * Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana
4  * @file datos_institucionales.module
5  * Drupal part Module to code ente planificador module
6  * Copyright 2012 Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana (CENDITEL)
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
21  *
22  * @author Cenditel Merida - Msc. Juan Vizcarrondo
23  * @date 2012-09-14 // (a&#241;o-mes-dia)
24  * @version 0.2 // (0.2)
25  *
26  */
27
28/*
29 * Implementation of hook_ente_procesos_alter()
30 */
31function datos_institucionales_ente_procesos_alter(&$procesos, $type) {
32  if ($type == 'status') {
33    $procesos['datos_institucionales'] = array(
34      'title' => t('Gestión de Información Institucional.'),
35      'description' => t('Gestión de Información Institucional del actor planificador.'),
36      'weight' => -9,
37    );
38  }
39  else {
40    $procesos['datos_familiarización'] = array(
41      'title' => t('Registrar proceso de familiarización.'),
42      'description' => t('Registrar proceso de familiarización.'),
43      'message' => 'Se podrá registrar y/o modificar los proceso de familiarización desde %fecha hasta la fecha %fecha1',
44      'message_expire' => 'Registrar y/o modificar los proceso de familiarización no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
45      'weight' => 9,
46      'proceso' => 'datos_institucionales',
47    );
48    $procesos['datos_analisis_funcional'] = array(
49      'title' => t('Registrar análisis funcional.'),
50      'description' => t('Registrar análisis funcional.'),
51      'message' => 'Se podrá registrar y/o modificar el análisis funcional desde %fecha hasta la fecha %fecha1',
52      'message_expire' => 'Registrar y/o modificar el análisis funcional no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
53      'weight' => 8,
54      'proceso' => 'datos_institucionales',
55    );
56    $procesos['datos_actividades_eticas'] = array(
57      'title' => t('Registrar actividades asociadas a la ética.'),
58      'description' => t('Registrar actividades asociadas a la ética.'),
59      'message' => 'Se podrá registrar y/o modificar las actividades asociadas a la ética desde %fecha hasta la fecha %fecha1',
60      'message_expire' => 'Registrar y/o modificar las actividades asociadas a la ética no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
61      'weight' => 7,
62      'proceso' => 'datos_institucionales',
63    );
64    $procesos['datos_foda'] = array(
65      'title' => t('Registrar análisis FODA.'),
66      'description' => t('Registrar análisis FODA.'),
67      'message' => 'Se podrá registrar y/o modificar el análisis FODA desde %fecha hasta la fecha %fecha1',
68      'message_expire' => 'Registrar y/o modificar el análisis FODA no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
69      'weight' => 6,
70      'proceso' => 'datos_institucionales',
71    );
72    $procesos['datos_mision_vision'] = array(
73      'title' => t('Registrar misión y visión.'),
74      'description' => t('Registrar misión y visión.'),
75      'message' => 'Se podrá registrar y/o modificar la misión y visión desde %fecha hasta la fecha %fecha1',
76      'message_expire' => 'Registrar y/o modificar la misión y visión no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
77      'weight' => 5,
78      'proceso' => 'datos_institucionales',
79    );
80    $procesos['datos_factores_criticos'] = array(
81      'title' => t('Registrar factores críticos.'),
82      'description' => t('Registrar factores críticos.'),
83      'message' => 'Se podrá registrar y/o modificar los factores críticos desde %fecha hasta la fecha %fecha1',
84      'message_expire' => 'Registrar y/o modificar los factores críticos no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
85      'weight' => 4,
86      'proceso' => 'datos_institucionales',
87    );
88    $procesos['datos_objetivos'] = array(
89      'title' => t('Registrar objetivo funcional y objetivos estratégicos.'),
90      'description' => t('Registrar objetivo funcional y objetivos estratégicos.'),
91      'message' => 'Se podrá registrar y/o modificar el objetivo funcional y objetivos estratégicos desde %fecha hasta la fecha %fecha1',
92      'message_expire' => 'Registrar y/o modificar el objetivo funcional y objetivos estratégicos no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)',
93      'weight' => 3,
94      'proceso' => 'datos_institucionales',
95    );
96  }
97}
98
99/*
100 * Implementation of proyectos_direccionales_status_planificacion_proyectos()
101 */
102function datos_institucionales_status_planificacion_datos_institucionales($ente_planificador, $tipo = 2) {
103  $datos_institucionales_status = array();
104  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
105  $new_ente_planificador = node_load($ente_planificador);
106  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($new_ente_planificador);
107  //se verifica que exista la planificacion, si existe al menos los datos de familiarizacion fueron ingresados
108  $datos_institucionales_status['datos_familiarización']['value'] = isset($datos_institucionales->nid) ? 1 : 0;
109  $datos_institucionales_status['datos_familiarización']['title'] = t('Registrar proceso de familiarización');
110  $datos_institucionales_status['datos_familiarización']['link'] = 'planificacion/' . $ente_planificador . '/datos_institucionales/familiarizacion';
111  $datos_institucionales_status['datos_familiarización']['mylink'] = 'mi_ente_planificador/planificacion/datos_institucionales/familiarizacion';
112  $datos_institucionales_status['datos_familiarización']['weight'] = -10;
113  $funciones = array();
114  //si existe al menos una función el analisis funcional se puede considerar terminado
115  if (isset($datos_institucionales->nid)) {
116    $funciones = datos_institucionales_obtiene_datos_funcion($new_ente_planificador, $datos_institucionales);
117  }
118  $datos_institucionales_status['datos_analisis_funcional']['value'] = count($funciones) ? 1 : 0;
119  $datos_institucionales_status['datos_analisis_funcional']['title'] = t('Registrar análisis funcional');
120  $datos_institucionales_status['datos_analisis_funcional']['link'] = 'planificacion/' . $ente_planificador . '/datos_institucionales/actividades_eticas';
121  $datos_institucionales_status['datos_analisis_funcional']['mylink'] = 'mi_ente_planificador/planificacion/datos_institucionales/actividades_eticas';
122  $datos_institucionales_status['datos_analisis_funcional']['weight'] = -9;
123  //actividades asociadas a la etica
124  $arreglo = array(
125    'field_funciones_principios' => 'field_funciones_principios',
126    'field_funciones_valores' => 'field_funciones_valores',
127    'field_funciones_custom' => 'field_funciones_custom',
128  );
129  $estado_etica = FALSE;
130  if (is_array($funciones) && count($funciones)) {
131    foreach($funciones as $funcion_id => $funcion_value) {
132      foreach($arreglo as $id => $value) {
133        $items = array();
134        foreach($funcion_value->$id as $value) {
135          if ($value['value']) {
136            $items[] = $value['value'];
137          }
138        }
139        if (count($items)) {
140          $estado_etica = TRUE;
141        }
142      }
143    }
144  }
145  $datos_institucionales_status['datos_actividades_eticas']['value'] = $estado_etica ? 1 : 0;
146  $datos_institucionales_status['datos_actividades_eticas']['title'] = t('Registrar actividades asociadas a la ética');
147  $datos_institucionales_status['datos_actividades_eticas']['link'] = 'planificacion/' . $ente_planificador . '/datos_institucionales';
148  $datos_institucionales_status['datos_actividades_eticas']['mylink'] = 'mi_ente_planificador/planificacion/datos_institucionales';
149  $perspectivas = datos_institucionales_obtiene_perspectivas($ente_planificador);
150  $arreglo = array('o', 'a', 'f', 'd');
151  $datos_institucionales_status['datos_actividades_eticas']['weight'] = 1;
152
153  $estado_foda = FALSE;
154  if (isset($datos_institucionales->nid)) {
155    $node_load = node_load($datos_institucionales->nid);
156    foreach($perspectivas as $id_perspectiva => $perspectiva) {
157      foreach($arreglo as $tipo) {
158        $items = array();
159        $campo = 'field_foda_' . $tipo . $id_perspectiva;
160        if (isset($node_load->{$campo}) && is_array($node_load->{$campo})) {
161          foreach($node_load->{$campo} as $value) {
162            if ($value['value']) {
163              $items[] = $value['value'];
164            }
165          }
166        }
167        if (count($items)) {
168          $estado_foda = TRUE;
169        }
170      }
171    }
172  }
173  $datos_institucionales_status['datos_foda']['value'] = $estado_foda ? 1 : 0;
174  $datos_institucionales_status['datos_foda']['title'] = t('Registrar análisis FODA');
175  $datos_institucionales_status['datos_foda']['link'] = 'planificacion/' . $ente_planificador . '/datos_institucionales';
176  $datos_institucionales_status['datos_foda']['mylink'] = 'mi_ente_planificador/planificacion/datos_institucionales';
177
178  $estado_mision = FALSE;
179  $arreglo = array(
180    'field_institucional_mision' => 'field_institucional_mision',
181    'field_institucional_mision' => 'field_institucional_mision',
182  );
183  if (isset($node_load)) {
184    foreach($perspectivas as $id_perspectiva => $perspectiva) {
185      foreach($arreglo as $tipo) {
186        $items = array();
187        $campo = 'field_foda_' . $tipo . $id_perspectiva;
188        if (isset($node_load->{$campo}) && is_array($node_load->{$campo})) {
189          foreach($node_load->{$campo} as $value) {
190            if ($value['value']) {
191              $items[] = $value['value'];
192            }
193          }
194        }
195        if (count($items)) {
196          $estado_mision = TRUE;
197        }
198      }
199    }
200  }
201  $datos_institucionales_status['datos_mision_vision']['value'] = $estado_mision ? 1 : 0;
202  $datos_institucionales_status['datos_mision_vision']['title'] = t('Registrar misión y visión');
203  $datos_institucionales_status['datos_mision_vision']['link'] = 'planificacion/' . $ente_planificador . '/datos_institucionales';
204  $datos_institucionales_status['datos_mision_vision']['mylink'] = 'mi_ente_planificador/planificacion/datos_institucionales';
205
206  $arreglo = array(
207    'field_funciones_fcriticos' => 'field_funciones_fcriticos',
208    'field_funciones_valoresesp' => 'field_funciones_valoresesp',
209    'field_funciones_indicadorescp' => 'field_funciones_indicadorescp',
210  );
211  $estado_fcriticos = FALSE;
212  if (is_array($funciones) && count($funciones)) {
213    foreach($funciones as $funcion_id => $funcion_value) {
214      foreach($arreglo as $id => $value) {
215        $items = array();
216        foreach($funcion_value->$id as $value) {
217          if ($value['value']) {
218            $items[] = $value['value'];
219          }
220        }
221        if (count($items)) {
222          $estado_fcriticos = TRUE;
223        }
224      }
225    }
226  }
227  $datos_institucionales_status['datos_factores_criticos']['value'] = $estado_fcriticos ? 1 : 0;
228  $datos_institucionales_status['datos_factores_criticos']['title'] = t('Registrar factores críticos');
229  $datos_institucionales_status['datos_factores_criticos']['link'] = 'planificacion/' . $ente_planificador . '/datos_institucionales';
230  $datos_institucionales_status['datos_factores_criticos']['mylink'] = 'mi_ente_planificador/planificacion/datos_institucionales';
231  $estado_objetivo = FALSE;
232  $arreglo = array(
233    'field_institucional_funcion' => 'field_institucional_funcion',
234  );
235  foreach($perspectivas as $id_perspectiva => $perspectiva) {
236    $arreglo['field_institucional_estrat' . $id_perspectiva] = 'field_institucional_estrat' . $id_perspectiva;
237  }
238  if (isset($node_load)) {
239    foreach($perspectivas as $id_perspectiva => $perspectiva) {
240      foreach($arreglo as $tipo) {
241        $items = array();
242        $campo = 'field_foda_' . $tipo . $id_perspectiva;
243        if (isset($node_load->{$campo}) && is_array($node_load->{$campo})) {
244          foreach($node_load->{$campo} as $value) {
245            if ($value['value']) {
246              $items[] = $value['value'];
247            }
248          }
249        }
250        if (count($items)) {
251          $estado_objetivo = TRUE;
252        }
253      }
254    }
255  }
256  $datos_institucionales_status['datos_objetivos']['value'] = $estado_objetivo ? 1 : 0;
257  $datos_institucionales_status['datos_objetivos']['title'] = t('Registrar objetivo funcional y objetivos estratégicos');
258  $datos_institucionales_status['datos_objetivos']['link'] = 'planificacion/' . $ente_planificador . '/datos_institucionales';
259  $datos_institucionales_status['datos_objetivos']['mylink'] = 'mi_ente_planificador/planificacion/datos_institucionales';
260  return $datos_institucionales_status;
261}
262
263/*
264 * Implementation of hook_menu()
265 */
266function datos_institucionales_menu() {
267  $items = array();
268  $items['planificacion/%ente_planificador_menu/datos_institucionales'] = array(
269    'title' => t('Información Institucional'),
270    'page callback' => 'datos_institucionales_muestra_datos_institucion',
271    'page arguments' => array(1),
272    'access arguments' => array('ver planificador'),
273    //'access callback' => 'ente_planificador_usuario_tiene_proyectos',
274    //'access arguments' => array(1),
275    'weight' => -7,
276    'type' => MENU_LOCAL_TASK,
277  );
278  $items['planificacion/%ente_planificador_menu/datos_institucionales/ver'] = array(
279    'title' => t('Información Institucional'),
280    'type' => MENU_DEFAULT_LOCAL_TASK,
281    'weight' => -10
282  );
283  $items['planificacion/%ente_planificador_menu/datos_institucionales/familiarizacion'] = array(
284    'title' => t('Proceso de familiarización'),
285    'page callback' => 'drupal_get_form',
286    'page arguments' => array('datos_institucionales_familiarizacion_form', 1),
287    'access callback' => 'datos_institucionales_usuario_tiene_familiarizacion',
288    'access arguments' => array(1),
289    'weight' => -9,
290    'type' => MENU_LOCAL_TASK,
291  );
292  $items['planificacion/%ente_planificador_menu/datos_institucionales/funcional'] = array(
293    'title' => t('Análisis funcional'),
294    'page callback' => 'datos_institucionales_analisis_funcional_ver',
295    'page arguments' => array(1),
296    'access callback' => 'datos_institucionales_usuario_tiene_funcional',
297    'access arguments' => array(1),
298    'weight' => -8,
299    'type' => MENU_LOCAL_TASK,
300  );
301  $items['planificacion/%ente_planificador_menu/datos_institucionales/funcional/registrar'] = array(
302    'title' => t('Registrar Función'),
303    'page callback' => 'drupal_get_form',
304    'page arguments' => array('datos_institucionales_analisis_funcional_registrar_form', 1),
305    'access callback' => 'datos_institucionales_usuario_tiene_funcional',
306    'access arguments' => array(1),
307    'weight' => -8,
308    'type' => MENU_LOCAL_TASK,
309  );
310  $items['planificacion/%ente_planificador_menu/datos_institucionales/funcional/%datos_institucionales_funcion_menu/modificar'] = array(
311    'title' => t('Modificar Función'),
312    'page callback' => 'drupal_get_form',
313    'page arguments' => array('datos_institucionales_analisis_funcional_registrar_form', 1, 4),
314    'access callback' => 'datos_institucionales_usuario_tiene_funcional',
315    'access arguments' => array(1),
316    'weight' => -8,
317    'type' => MENU_LOCAL_TASK,
318  );
319  $items['planificacion/%ente_planificador_menu/datos_institucionales/funcional/%datos_institucionales_funcion_menu/eliminar'] = array(
320    'title' => t('Eliminar Función'),
321    'page callback' => 'drupal_get_form',
322    'page arguments' => array('datos_institucionales_analisis_funcional_eliminar_form', 1, 4),
323    'access callback' => 'datos_institucionales_usuario_tiene_funcional',
324    'access arguments' => array(1),
325    'weight' => -8,
326    'type' => MENU_LOCAL_TASK,
327  );
328  $items['planificacion/%ente_planificador_menu/datos_institucionales/funcional/%datos_institucionales_funcion_menu/actividades'] = array(
329    'title' => t('Actividades asociadas a la ética'),
330    'page callback' => 'drupal_get_form',
331    'page arguments' => array('datos_institucionales_analisis_funcional_actividades_form', 1, 4),
332    'access callback' => 'datos_institucionales_usuario_tiene_actividades',
333    'access arguments' => array(1),
334    'weight' => -7,
335    'type' => MENU_LOCAL_TASK,
336  );
337  $items['planificacion/%ente_planificador_menu/datos_institucionales/funcional/%datos_institucionales_funcion_menu/fcriticos'] = array(
338    'title' => t('Factores críticos'),
339    'page callback' => 'drupal_get_form',
340    'page arguments' => array('datos_institucionales_analisis_funcional_fcriticos_form', 1, 4),
341    'access callback' => 'datos_institucionales_usuario_tiene_fcriticos',
342    'access arguments' => array(1),
343    'weight' => -4,
344    'type' => MENU_LOCAL_TASK,
345  );
346  $items['planificacion/%ente_planificador_menu/datos_institucionales/actividades_eticas'] = array(
347    'title' => t('Actividades asociadas a la ética'),
348    'page callback' => 'datos_institucionales_actividades_eticas_ver',
349    'page arguments' => array(1),
350    'access callback' => 'datos_institucionales_usuario_tiene_actividades',
351    'access arguments' => array(1),
352    'weight' => -7,
353    'type' => MENU_LOCAL_TASK,
354  );
355  $items['planificacion/%ente_planificador_menu/datos_institucionales/foda'] = array(
356    'title' => t('Análisis FODA'),
357    'page callback' => 'drupal_get_form',
358    'page arguments' => array('datos_institucionales_foda_form', 1),
359    'access callback' => 'datos_institucionales_usuario_tiene_foda',
360    'access arguments' => array(1),
361    'weight' => -6,
362    'type' => MENU_LOCAL_TASK,
363  );
364  $items['planificacion/%ente_planificador_menu/datos_institucionales/mision_vision'] = array(
365    'title' => t('Misión y visión'),
366    'page callback' => 'drupal_get_form',
367    'page arguments' => array('datos_institucionales_mision_vision_form', 1),
368    'access callback' => 'datos_institucionales_usuario_tiene_mision_vision',
369    'access arguments' => array(1),
370    'weight' => -5,
371    'type' => MENU_LOCAL_TASK,
372  );
373  $items['planificacion/%ente_planificador_menu/datos_institucionales/factores_criticos'] = array(
374    'title' => t('Factores críticos'),
375    'page callback' => 'datos_institucionales_factores_criticos_ver',
376    'page arguments' => array(1),
377    'access callback' => 'datos_institucionales_usuario_tiene_fcriticos',
378    'access arguments' => array(1),
379    'weight' => -4,
380    'type' => MENU_LOCAL_TASK,
381  );
382  $items['planificacion/%ente_planificador_menu/datos_institucionales/objetivos'] = array(
383    'title' => t('Objetivo funcional y estratégicos'),
384    'page callback' => 'drupal_get_form',
385    'page arguments' => array('datos_institucionales_objetivos_form', 1),
386    'access callback' => 'datos_institucionales_usuario_tiene_objetivos',
387    'access arguments' => array(1),
388    'weight' => -3,
389    'type' => MENU_LOCAL_TASK,
390  );
391  //perspectivas
392  $items['admin/settings/ente_planificador/perspectivas'] = array(
393    'title' => t('Perspectivas'),
394    'page callback' => 'datos_institucionales_view_perspectivas',
395    'access arguments' => array('admin planificador'),
396    'weight' => -6,
397    'type' => MENU_LOCAL_TASK,
398  );
399  $items['admin/settings/ente_planificador/perspectivas/ver'] = array(
400    'title' => t('Ver Perspectivas'),
401    'type' => MENU_DEFAULT_LOCAL_TASK,
402    'weight' => -10
403  );
404  $items['admin/settings/ente_planificador/perspectivas/agregar_perspectivas'] = array(
405    'title' => t('Agregar perspectiva'),
406    'page callback' => 'drupal_get_form',
407    'page arguments' => array('datos_institucionales_agregar_perspectivas_form'),
408    'access arguments' => array('admin planificador'),
409    'weight' => -5,
410    'type' => MENU_LOCAL_TASK,
411  );
412  $items['admin/settings/ente_planificador/perspectivas/%perspectiva_menu/edit'] = array(
413    'title' => t('Modificar'),
414    'page callback' => 'drupal_get_form',
415    'page arguments' => array('datos_institucionales_edit_perspectivas_form',4),
416    'access arguments' => array('admin planificador'),
417    'type' => MENU_CALLBACK,
418  );
419  $items['admin/settings/ente_planificador/perspectivas/%perspectiva_menu/remove'] = array(
420    'title' => t('Eliminar Perspectiva'),
421    'page callback' => 'drupal_get_form',
422    'page arguments' => array('datos_institucionales_eliminar_perspectivas_form',4),
423    'access arguments' => array('admin planificador'),
424    'type' => MENU_CALLBACK,
425  );
426  return $items;
427}
428
429/*
430 * Implementation of hook_perm
431 */
432function datos_institucionales_perm() {
433  return array(
434    'editar datos institucionales de mi ente',
435  );
436}
437
438/**
439 * Implementation of hook_theme().
440 */
441function datos_institucionales_theme() {
442  return array(
443    'datos_institucionales_foda_form' => array(
444      'arguments' => array('form' => NULL),
445    ),
446  );
447}
448
449/**
450 * Implementation of datos_institucionales_funcion_menu_load().
451 */
452function datos_institucionales_funcion_menu_load($datos_institucionales_funcion_menu = 0) {
453  $funcion = FALSE;
454  if($datos_institucionales_funcion_menu && is_numeric($datos_institucionales_funcion_menu)) {
455    $funcion = node_load($datos_institucionales_funcion_menu);
456  }
457  if (!$funcion->status) {
458    $funcion = FALSE;
459  }
460  return $funcion;
461}
462
463/**
464 * Implementation of perspectiva_menu_load().
465 * Menu loader callback. Load perspectiva.
466 */
467function perspectiva_menu_load($perspectiva) {
468  if ($perspectiva) {
469    $resul_act = db_query("SELECT * FROM {datos_institucionales_perspectivas} where id_perspectiva = %d", $perspectiva);
470    $perspectiva = db_fetch_object($resul_act);
471    return $perspectiva;
472  }
473  return FALSE;
474}
475
476/**
477 * Implementation of datos_institucionales_usuario_tiene_familiarizacion().
478 */
479function datos_institucionales_usuario_tiene_familiarizacion($ente_planificador) {
480  global $user;
481  $ente = usuario_tiene_ente($user->uid);
482  //$datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
483  $accesso = datos_institucionales_obtiene_acceso_proceso('datos_familiarización', $ente_planificador, $ente);
484  return ($accesso);
485}
486
487/**
488 * Implementation of datos_institucionales_usuario_tiene_funcional().
489 */
490function datos_institucionales_usuario_tiene_funcional($ente_planificador) {
491  global $user;
492  $ente = usuario_tiene_ente($user->uid);
493  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
494  $accesso = datos_institucionales_obtiene_acceso_proceso('datos_analisis_funcional', $ente_planificador, $ente);
495  return ($datos_institucionales->nid && $accesso);
496}
497
498/**
499 * Implementation of datos_institucionales_usuario_tiene_actividades().
500 */
501function datos_institucionales_usuario_tiene_actividades($ente_planificador) {
502  global $user;
503  $ente = usuario_tiene_ente($user->uid);
504  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
505  $accesso = datos_institucionales_obtiene_acceso_proceso('datos_actividades_eticas', $ente_planificador, $ente);
506  $funciones = datos_institucionales_obtiene_datos_funcion($ente_planificador, $datos_institucionales);
507  return ($datos_institucionales->nid && $accesso && is_array($funciones) && count($funciones));
508}
509
510/**
511 * Implementation of datos_institucionales_usuario_tiene_foda().
512 */
513function datos_institucionales_usuario_tiene_foda($ente_planificador) {
514  global $user;
515  $ente = usuario_tiene_ente($user->uid);
516  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
517  $accesso = datos_institucionales_obtiene_acceso_proceso('datos_foda', $ente_planificador, $ente);
518  $funciones = datos_institucionales_obtiene_datos_funcion($ente_planificador, $datos_institucionales);
519  $estado_etica = FALSE;
520  if ($datos_institucionales->nid && $accesso && is_array($funciones) && count($funciones)) {
521    foreach($funciones as $funcion_id => $funcion_value) {
522      $items = array();
523      foreach($funcion_value->field_funciones_principios as $value) {
524        if ($value['value']) {
525          $items[] = $value['value'];
526        }
527      }
528      if (count($items)) {
529        $estado_etica = TRUE;
530      }
531      $items = array();
532      foreach($funcion_value->field_funciones_valores as $value) {
533        if ($value['value']) {
534          $items[] = $value['value'];
535        }
536      }
537      if (count($items)) {
538        $estado_etica = TRUE;
539      }
540      $items = array();
541      foreach($funcion_value->field_funciones_custom as $value) {
542        if ($value['value']) {
543          $items[] = $value['value'];
544        }
545      }
546      if (count($items)) {
547        $estado_etica = TRUE;
548      }
549
550    }
551  }
552  return $estado_etica;
553}
554
555/**
556 * Implementation of datos_institucionales_usuario_tiene_mision_vision().
557 */
558function datos_institucionales_usuario_tiene_mision_vision($ente_planificador) {
559  global $user;
560  $ente = usuario_tiene_ente($user->uid);
561  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
562  $accesso = datos_institucionales_obtiene_acceso_proceso('datos_mision_vision', $ente_planificador, $ente);
563  $perspectivas = datos_institucionales_obtiene_perspectivas($ente_planificador);
564  $arreglo = array('o', 'a', 'f', 'd');
565  $estado_foda = FALSE;
566  $node_load = node_load($datos_institucionales->nid);
567  if ($datos_institucionales->nid && $accesso && is_array($perspectivas) && count($perspectivas)) {
568    foreach($perspectivas as $id_perspectiva => $perspectiva) {
569      foreach($arreglo as $tipo) {
570        $items = array();
571        $campo = 'field_foda_' . $tipo . $id_perspectiva;
572        if (isset($node_load->{$campo}) && is_Array($node_load->{$campo})) {
573          foreach($node_load->{$campo} as $value) {
574            if ($value['value']) {
575              $items[] = $value['value'];
576            }
577          }
578        }
579        if (count($items)) {
580          $estado_foda = TRUE;
581        }
582      }
583    }
584  }
585  return $estado_foda;
586}
587
588/**
589 * Implementation of datos_institucionales_usuario_tiene_fcriticos().
590 */
591function datos_institucionales_usuario_tiene_fcriticos($ente_planificador) {
592  global $user;
593  $ente = usuario_tiene_ente($user->uid);
594  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
595  $accesso = datos_institucionales_obtiene_acceso_proceso('datos_factores_criticos', $ente_planificador, $ente);
596  $estado_mision = FALSE;
597  if ($datos_institucionales->nid && $accesso) {
598    $node_load = node_load($datos_institucionales->nid);
599    $items = array();
600    foreach($node_load->field_institucional_mision as $value) {
601      if ($value['value']) {
602        $items[] = $value['value'];
603      }
604    }
605    if (count($items)) {
606      $estado_mision = TRUE;
607    }
608    $items = array();
609    foreach($node_load->field_institucional_mision as $value) {
610      if ($value['value']) {
611        $items[] = $value['value'];
612      }
613    }
614    if (count($items)) {
615      $estado_mision = TRUE;
616    }
617  }
618  return $estado_mision;
619}
620
621/**
622 * Implementation of datos_institucionales_usuario_tiene_objetivos().
623 */
624function datos_institucionales_usuario_tiene_objetivos($ente_planificador) {
625  global $user;
626  $ente = usuario_tiene_ente($user->uid);
627  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
628  $accesso = datos_institucionales_obtiene_acceso_proceso('datos_objetivos', $ente_planificador, $ente);
629  $funciones = datos_institucionales_obtiene_datos_funcion($ente_planificador, $datos_institucionales);
630  $estado_fcriticos = FALSE;
631  if ($datos_institucionales->nid && $accesso && is_array($funciones) && count($funciones)) {
632    foreach($funciones as $funcion_id => $funcion_value) {
633      $items = array();
634      foreach($funcion_value->field_funciones_fcriticos as $value) {
635        if ($value['value']) {
636          $items[] = $value['value'];
637        }
638      }
639      if (count($items)) {
640        $estado_fcriticos = TRUE;
641      }
642      $items = array();
643      foreach($funcion_value->field_funciones_valoresesp as $value) {
644        if ($value['value']) {
645          $items[] = $value['value'];
646        }
647      }
648      if (count($items)) {
649        $estado_fcriticos = TRUE;
650      }
651      $items = array();
652      foreach($funcion_value->field_funciones_indicadorescp as $value) {
653        if ($value['value']) {
654          $items[] = $value['value'];
655        }
656      }
657      if (count($items)) {
658       $estado_fcriticos = TRUE;
659      }
660    }
661  }
662  return $estado_fcriticos;
663}
664
665/*
666 * Implementation of datos_institucionales_view_perspectivas()
667 */
668function datos_institucionales_view_perspectivas() {
669  $header = array();
670  $header[] = array('data' => t('Name'));
671  $header[] = array('data' => t('Action'), 'colspan' => 2);
672  $perspectivas = datos_institucionales_obtiene_todas_perspectivas();
673  $rows = array();
674  foreach($perspectivas as $id => $perspectiva) {
675    $row = array();
676    $row[] = array('data' => t($perspectiva), );
677    $row[] = array(
678      'data' => l(t('Update'), 'admin/settings/ente_planificador/perspectivas/' . $id . '/edit'),
679    );
680    $row[] = array(
681      'data' => l(t('Remove'),'admin/settings/ente_planificador/perspectivas/' . $id . '/remove'),
682    );
683    $rows[] = $row;
684  }
685  if (!count($rows)) {
686    $row = array();
687    $row[] = array(
688      'data' => t('No se encontrarón perspectivas'),
689      'colspan' => 3
690    );
691    $rows[] = $row;
692  }
693  return theme('table', $header, $rows);
694}
695
696/*
697 * Implementation of datos_institucionales_agregar_perspectivas_form()
698 */
699function datos_institucionales_agregar_perspectivas_form(&$form_state) {
700  $form = array();
701  $form['nombre'] = array(
702    '#title' => t('Perspectiva'),
703    '#type' => 'textfield',
704    '#default_value' => '',
705    '#required' => TRUE,
706    '#maxlength' => 1024,
707  );
708  $form['submit'] = array(
709    '#type' => 'submit',
710    '#value' => t('Save Perspectiva'),
711    '#weight' => 40,
712  );
713  return $form;
714}
715
716/**
717 * Implementation of datos_institucionales_agregar_perspectivas_form_submit().
718 * Save perspectiva values
719 */
720function datos_institucionales_agregar_perspectivas_form_submit($form, &$form_state) {
721  db_query("INSERT INTO {datos_institucionales_perspectivas} (nombre) VALUES ('%s')", check_plain($form_state['values']['nombre']));
722  drupal_set_message(t('Perspectiva %name_perspectiva agregada', array('%name_perspectiva' => $form_state['values']['nombre'])));
723  $form_state['redirect'] = 'admin/settings/ente_planificador/perspectivas';
724  $perspectivas = datos_institucionales_obtiene_todas_perspectivas();
725  $countperspectivas = count($perspectivas);
726  if ($countperspectivas > 5) {
727    drupal_set_message(t('Debe crear los campos field_foda_o!countperspectivas, field_foda_a!countperspectivas, field_foda_f!countperspectivas y field_foda_d!countperspectivas para que el analisis FODA funcione corectamente', array('!countperspectivas' => $countperspectivas)));
728    $form_state['redirect'] = 'admin/content/node-type/ente-institucional/fields';
729  }
730}
731
732/**
733 * Implementation of datos_institucionales_edit_perspectivas_form().
734 * Edit a actividad data.
735 */
736function datos_institucionales_edit_perspectivas_form(&$form_state, $actividad_menu) {
737  $form['id_perspectiva'] = array(
738    '#type' => 'hidden',
739    '#value' => $actividad_menu->id_perspectiva,
740  );
741  $form['nombre'] = array(
742    '#title' => t('Perspectiva'),
743    '#type' => 'textfield',
744    '#default_value' => $actividad_menu->nombre,
745    '#required' => TRUE,
746    '#maxlength' => 1024,
747  );
748  $form['submit'] = array(
749    '#type' => 'submit',
750    '#value' => t('Save Perspectiva'),
751    '#weight' => 40,
752  );
753  return $form;
754}
755
756/*
757 * Implementation of datos_institucionales_edit_perspectivas_form_submit()
758 */
759function datos_institucionales_edit_perspectivas_form_submit($form, &$form_state) {
760  db_query("UPDATE {datos_institucionales_perspectivas} SET nombre = '%s' WHERE id_perspectiva = %d", check_plain($form_state['values']['nombre']), $form_state['values']['id_perspectiva']);
761  drupal_set_message(t('Actividad %name_perspectiva modificada', array('%name_perspectiva' => $form_state['values']['nombre'])));
762  $form_state['redirect'] = 'admin/settings/ente_planificador/perspectivas';
763}
764
765/*
766 * Implementation of datos_institucionales_eliminar_perspectivas_form()
767 */
768function datos_institucionales_eliminar_perspectivas_form(&$form_state, $perspectiva_menu) {
769  $perspectivas = datos_institucionales_obtiene_todas_perspectivas();
770  if (count($perspectivas) < 2) {
771    drupal_set_message(t('Debe existir al menos una perspectiva en el sistema'));
772    drupal_goto('admin/settings/ente_planificador/perspectivas');
773  }
774  $form['id_perspectiva'] = array('#type' => 'value', '#value' => $perspectiva_menu->id_perspectiva);
775  $form['nombre'] = array('#type' => 'value', '#value' => $perspectiva_menu->nombre);
776  $message = t('Are you sure you want to delete perspectiva %name_perspectiva?', array('%name_perspectiva' => $perspectiva_menu->nombre));
777  $caption = '<p>'. t('This action cannot be undone.') .'</p>';
778  $return_path = 'admin/settings/ente_planificador/perspectivas';
779  return confirm_form($form, $message, $return_path, $caption, t('Delete'));
780}
781
782/*
783 * Implementation of datos_institucionales_eliminar_perspectivas_form_submit()
784 */
785function datos_institucionales_eliminar_perspectivas_form_submit($form, &$form_state) {
786  db_query("DELETE FROM {datos_institucionales_perspectivas} WHERE id_perspectiva = %d", $form_state['values']['id_perspectiva']);
787  drupal_set_message(t('Perspectiva %name_perspectiva ha sido eliminada', array('%name_perspectiva' => $form_state['values']['nombre'])));
788  $form_state['redirect'] = 'admin/settings/ente_planificador/perspectivas';
789}
790
791function datos_institucionales_obtiene_todas_perspectivas() {
792  $perspectivas = array();
793  $result = db_query("SELECT * FROM {datos_institucionales_perspectivas}");
794  while($perspectiva = db_fetch_object($result)) {
795    $perspectivas[$perspectiva->id_perspectiva] = $perspectiva->nombre;
796  }
797  return $perspectivas;
798}
799
800/**
801 * Implementation of datos_institucionales_obtiene_perspectivas().
802 */
803function datos_institucionales_obtiene_perspectivas($ente_planificador, $planificacion = 'normal') {
804  $perspectivas = array();
805  $result = db_query("SELECT * FROM {datos_institucionales_perspectivas}");
806  while($perspectiva = db_fetch_object($result)) {
807    $perspectivas[$perspectiva->id_perspectiva] = $perspectiva->nombre;
808  }
809  return $perspectivas;
810}
811
812/**
813 * Implementation of datos_institucionales_obtiene_datos_institucion().
814 */
815function datos_institucionales_obtiene_datos_institucion($ente_planificador) {
816  $tipo_plan = 'datos_familiarización';
817  $fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
818  $sql_query = "SELECT sap.nid FROM {content_type_ente_institucional} AS sap INNER JOIN {node} AS n ON sap.nid = n.nid AND sap.vid = n.vid WHERE field_institucional_ente_nid = %d";
819  $sql_variables = array();
820  $sql_variables[] = $ente_planificador->nid;
821  //$mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
822  //$sql_variables[] = $mi_fecha[0];
823  //$sql_variables[] = $mi_fecha[1]  + 86399;
824  $datos_institucionales = db_fetch_object(db_query($sql_query, $sql_variables));
825  return $datos_institucionales;
826}
827
828/**
829 * Implementation of datos_institucionales_obtiene_datos_funcion().
830 */
831function datos_institucionales_obtiene_datos_funcion($ente_planificador, $datos_institucionales) {
832  $funciones = array();
833  // leemos las funciones
834  $sql_query = "SELECT sap.nid FROM {content_type_ente_funciones} AS sap INNER JOIN {node} AS n ON sap.nid = n.nid AND sap.vid = n.vid WHERE sap.field_funciones_ente_nid = %d AND sap.field_funciones_institucional_nid = %d AND n.status > 0";
835  $sql_variables = array();
836  $sql_variables[] = $ente_planificador->nid;
837  $sql_variables[] = $datos_institucionales->nid;
838  $result = db_query($sql_query, $sql_variables);
839  while($funcion = db_fetch_object($result)) {
840    $funcion_load = node_load($funcion->nid);
841    $funciones[$funcion_load->nid] = $funcion_load;
842  }
843  return $funciones;
844}
845
846/**
847 * Implementation of datos_institucionales_obtiene_datos_funcion().
848 */
849function datos_institucionales_obtiene_datos_foda($ente_planificador, $datos_institucionales) {
850  $fodas = array();
851  // leemos las funciones
852  $sql_query = "SELECT sap.nid FROM {content_type_foda} AS sap INNER JOIN {node} AS n ON sap.nid = n.nid AND sap.vid = n.vid WHERE sap.field_foda_ente_nid = %d AND sap.field_foda_institucional_nid = %d AND n.status > 0";
853  $sql_variables = array();
854  $sql_variables[] = $ente_planificador->nid;
855  $sql_variables[] = $datos_institucionales->nid;
856  $result = db_query($sql_query, $sql_variables);
857  while($foda = db_fetch_object($result)) {
858    $foda_load = node_load($foda->nid);
859    $fodas[$foda_load->nid] = $foda_load;
860  }
861  return $fodas;
862}
863
864/**
865 * Implementation of datos_institucionales_obtiene_datos_funcion().
866 */
867function datos_institucionales_obtiene_datos_objetivo_ente($ente_planificador, $datos_institucionales) {
868  $objetivos = array();
869  // leemos las funciones
870  $sql_query = "SELECT sap.nid FROM {content_type_objetivos_entes} AS sap INNER JOIN {node} AS n ON sap.nid = n.nid AND sap.vid = n.vid WHERE sap.field_objetivo_ente_ente_nid = %d AND sap.field_objetivo_institucional_nid = %d AND n.status > 0";
871  $sql_variables = array();
872  $sql_variables[] = $ente_planificador->nid;
873  $sql_variables[] = $datos_institucionales->nid;
874  $result = db_query($sql_query, $sql_variables);
875  while($objetivo = db_fetch_object($result)) {
876    $objetivo_load = node_load($objetivo->nid);
877    $objetivos[$objetivo_load->nid] = $objetivo_load;
878  }
879  return $objetivos;
880}
881
882
883
884/**
885 * Implementation of datos_institucionales_obtiene_acceso_proceso().
886 */
887function datos_institucionales_obtiene_acceso_proceso($tipo_plan, $ente_planificador, $user_ente = NULL){
888  $current_time = time();
889  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
890  $accesso = FALSE;
891  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
892    if ((user_access('admin planificador') || ($user_ente->nid == $ente_planificador->nid && user_access('editar datos institucionales de mi ente')))) {
893      $accesso = TRUE;
894    }
895  }
896  return $accesso;
897}
898
899/**
900 * Implementation of datos_institucionales_muestra_datos_institucion().
901 */
902function datos_institucionales_muestra_datos_institucion($ente_planificador) {
903  global $user;
904  $output = '';
905  $ente = usuario_tiene_ente($user->uid);
906  $accesso_familiarizacion = datos_institucionales_obtiene_acceso_proceso('datos_familiarización', $ente_planificador, $ente);
907  $perspectivas = datos_institucionales_obtiene_perspectivas($ente_planificador);
908  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
909  if ($datos_institucionales->nid) {
910    //proceso de familiarización
911    $output .= '<div id ="proceso-familiarizacion-' . $ente_planificador->nid . '"><h2>' . t('Proceso de familiarización') . '</h2>';
912    $contenido = array();
913    $node_load = node_load($datos_institucionales->nid);
914    $content = node_build_content($node_load);
915    $arreglo = array(
916      'field_institucional_unidad' => 'field_institucional_unidad',
917      'field_institucional_insumos' => 'field_institucional_insumos',
918    );
919    $node_type = content_types('ente_institucional');
920    $fields = $node_type['fields'];
921    foreach($content->content as $field_id => $field_value) {
922      if (array_key_exists($field_id, $arreglo)) {
923        $contenido[$field_id] = $field_value;
924      }
925      elseif (variable_get('datos_institucionales_' . $field_id, FALSE)) {
926        $contenido[$field_id] = $field_value;
927      }
928    }
929    if (is_array($contenido) && count($contenido)) {
930      $output .= drupal_render($contenido);
931    }
932    if ($accesso_familiarizacion) {
933      $output .= l(t('Modificar proceso familiarización'), 'planificacion/' . $ente_planificador->nid . '/datos_institucionales/familiarizacion');
934    }
935    $output .= '</div>';
936    //FUNCIONES
937    $funciones = array();
938    $headers_table = array();
939    $headers_table[] = array(
940      'data' => t('Función'),
941    );
942    $count_headers_table = 6;
943    $headers_table[] = array(
944      'data' => t('Tipo'),
945    );
946    $headers_table[] = array(
947      'data' => t('Procesos claves'),
948    );
949    $headers_table[] = array(
950      'data' => t('Productos esperados'),
951    );
952    $headers_table[] = array(
953      'data' => t('Usuarios'),
954    );
955    $headers_table[] = array(
956      'data' => t('Condicionamientos legales'),
957    );
958    $accesso = datos_institucionales_obtiene_acceso_proceso('datos_analisis_funcional', $ente_planificador, $ente);
959    if ($accesso) {
960    $count_headers_table += 3;
961      $headers_table[] = array(
962        'data' => t('Operación'),
963        'colspan' => '3'
964      );
965    }
966    $funciones = datos_institucionales_obtiene_datos_funcion($ente_planificador, $datos_institucionales);
967    $rows = array();
968    if (is_array($funciones) && count($funciones)) {
969      foreach($funciones as $funcion_id => $funcion_value) {
970        $row = array();
971        $row[] = array('data' => $funcion_value->title, );
972        $row[] = array('data' => $funcion_value->field_funciones_tipo[0]['value'], );
973        //procesos claves
974        $items = array();
975        foreach($funcion_value->field_funciones_procesos as $value) {
976          $items[] = $value['value'];
977        }
978        $row[] = array('data' => theme('item_list', $items), );
979        //Productos esperados
980        $items = array();
981        foreach($funcion_value->field_funciones_productos as $value) {
982          $items[] = $value['value'];
983        }
984        $row[] = array('data' => theme('item_list', $items), );
985        //usuarios
986        $items = array();
987        foreach($funcion_value->field_funciones_usuarios as $value) {
988          $items[] = $value['value'];
989        }
990        $row[] = array('data' => theme('item_list', $items), );
991        //Condicionamientos legales
992        $items = array();
993        foreach($funcion_value->field_funciones_legales as $value) {
994          $items[] = $value['value'];
995        }
996        $row[] = array('data' => theme('item_list', $items), );
997        if ($accesso) {
998          $row[] = array(
999            'data' => l(
1000              t('Modificar'),
1001              'planificacion/' . $ente_planificador->nid . '/datos_institucionales/funcional/' . $funcion_value->nid . '/modificar',
1002              array(
1003                'query' => array(
1004                  'destination' => 'planificacion/' . $ente_planificador->nid . '/datos_institucionales'
1005                )
1006              )
1007            ),
1008          );
1009        }
1010        $row[] = array(
1011          'data' => l(
1012            t('Eliminar'),
1013            'planificacion/' . $ente_planificador->nid . '/datos_institucionales/funcional/' . $funcion_value->nid . '/eliminar',
1014            array(
1015              'query' => array(
1016                'destination' => 'planificacion/' . $ente_planificador->nid . '/datos_institucionales'
1017              )
1018            )
1019          ),
1020        );
1021        $rows[] = $row;
1022      }
1023    }
1024    else {
1025      $row = array();
1026      $row[] = array('data' => t('No se encontraron funcionalidades para este ente'), 'colspan' => $count_headers_table);
1027      $rows[] = $row;
1028    }
1029    $output .= '<div id ="proceso-analisis-funcional-' . $ente_planificador->nid . '"><h2>' . t('Análisis funcional') . '</h2>';
1030    $output .= theme('table', $headers_table, $rows);
1031    if ($accesso  ) {
1032      $output .= l(t('Registrar nueva Funcionalidad'), 'planificacion/' . $ente_planificador->nid . '/datos_institucionales/funcional/registrar');
1033    }
1034    $output .= '</div>';
1035    //Actividades asociadas a la ética
1036    $headers_table = array();
1037    $headers_table[] = array(
1038      'data' => t('Función'),
1039    );
1040    $count_headers_table = 4;
1041    $headers_table[] = array(
1042      'data' => t('Principios'),
1043    );
1044    $headers_table[] = array(
1045      'data' => t('Valores'),
1046    );
1047    $headers_table[] = array(
1048      'data' => t('Customización'),
1049    );
1050    $ente_has_acceso = TRUE;
1051    if ($ente_has_acceso) {
1052    $count_headers_table += 1;
1053      $headers_table[] = array(
1054        'data' => t('Operación'),
1055        'colspan' => '1'
1056      );
1057    }
1058    $accesso = datos_institucionales_obtiene_acceso_proceso('datos_actividades_eticas', $ente_planificador, $ente);
1059    $rows = array();
1060    $estado_etica = FALSE;
1061    if (is_array($funciones) && count($funciones)) {
1062      foreach($funciones as $funcion_id => $funcion_value) {
1063        $row = array();
1064        $row[] = array('data' => $funcion_value->title, );
1065        //Principios
1066        $items = array();
1067        foreach($funcion_value->field_funciones_principios as $value) {
1068          if ($value['value']) {
1069            $items[] = $value['value'];
1070          }
1071        }
1072        if (count($items)) {
1073          $estado_etica = TRUE;
1074        }
1075        $row[] = array('data' => theme('item_list', $items), );
1076        //Valores
1077        $items = array();
1078        foreach($funcion_value->field_funciones_valores as $value) {
1079          if ($value['value']) {
1080            $items[] = $value['value'];
1081          }
1082        }
1083        if (count($items)) {
1084          $estado_etica = TRUE;
1085        }
1086        $row[] = array('data' => theme('item_list', $items), );
1087        //Customización
1088        $items = array();
1089        foreach($funcion_value->field_funciones_custom as $value) {
1090          if ($value['value']) {
1091            $items[] = $value['value'];
1092          }
1093        }
1094        if (count($items)) {
1095          $estado_etica = TRUE;
1096        }
1097        $row[] = array('data' => theme('item_list', $items), );
1098        if ($accesso) {
1099          $row[] = array(
1100            'data' => l(
1101              t('Modificar actividades asociadas a la ética'),
1102              'planificacion/' . $ente_planificador->nid . '/datos_institucionales/funcional/' . $funcion_value->nid. '/actividades',
1103              array(
1104                'query' => array(
1105                  'destination' => 'planificacion/' . $ente_planificador->nid . '/datos_institucionales'
1106                )
1107              )
1108            ),
1109          );
1110        }
1111        $rows[] = $row;
1112      }
1113    }
1114    else {
1115      $row = array();
1116      $row[] = array('data' => t('No se encontraron funcionalidades para este ente'), 'colspan' => $count_headers_table);
1117      $rows[] = $row;
1118    }
1119    $output .= '<div id ="proceso-actividades-' . $ente_planificador->nid . '"><h2>' . t('Actividades asociadas a la ética') . '</h2>';
1120    $output .= theme('table', $headers_table, $rows);
1121    $output .= '</div>';
1122    //FODA
1123    $accesso = datos_institucionales_obtiene_acceso_proceso('datos_foda', $ente_planificador, $ente);
1124    $estado_foda = FALSE;
1125    if ($estado_etica && is_array($funciones) && count($funciones)) {
1126      $rows = array();
1127      $output .= '<div id ="proceso-analisis-foda-' . $ente_planificador->nid . '"><h2>' . t('Análisis FODA') . '</h2>';
1128      $headers_table = array();
1129      $headers_table[] = array(
1130        'data' => t('F.O.D.A.'),
1131      );
1132      $headers_table[] = array(
1133        'data' => t('Análisis externo'),
1134        'colspan' => '2',
1135      );
1136      $headers_table[] = array(
1137        'data' => t('Análisis interno'),
1138        'colspan' => '2',
1139      );
1140      $row = array();
1141      $row[] = array('data' => 'Perspectivas', );
1142      $row[] = array('data' => t('Oportunidades'), );
1143      $row[] = array('data' => t('Amenazas'), );
1144      $row[] = array('data' => t('Fortalezas'), );
1145      $row[] = array('data' => t('Debilidades'), );
1146      $rows[] = $row;
1147      $arreglo = array('o', 'a', 'f', 'd');
1148      $existen_campos = TRUE;
1149      foreach($perspectivas as $id_perspectiva => $perspectiva) {
1150        $row = array();
1151        $row[] = array('data' => $perspectiva, );
1152        //Condicionamientos legales
1153        foreach($arreglo as $tipo) {
1154          $items = array();
1155          $campo = 'field_foda_' . $tipo . $id_perspectiva;
1156          if (isset($node_load->{$campo}) && is_Array($node_load->{$campo})) {
1157            foreach($node_load->{$campo} as $value) {
1158              if ($value['value']) {
1159                $items[] = $value['value'];
1160              }
1161            }
1162          }
1163          else {
1164            $existen_campos = FALSE;
1165          }
1166          if (count($items)) {
1167            $estado_foda = TRUE;
1168          }
1169          $row[] = array('data' => theme('item_list', $items), );
1170        }
1171        if ($existen_campos) {
1172          $rows[] = $row;
1173        }
1174      }
1175      $output .= theme('table', $headers_table, $rows);
1176      if ($accesso && $estado_etica) {
1177        $output .= l(t('Registrar análisis FODA'), 'planificacion/' . $ente_planificador->nid . '/datos_institucionales/foda');
1178      }
1179      $output .= '</div>';
1180    }
1181    //misión y visión
1182    $estado_mision = FALSE;
1183    $accesso = datos_institucionales_obtiene_acceso_proceso('datos_mision_vision', $ente_planificador, $ente);
1184    $output .= '<div id ="proceso-analisis-mision-vision-' . $ente_planificador->nid . '"><h2>' . t('Misión y visión') . '</h2>';
1185    $contenido = array();
1186    $arreglo = array(
1187      'field_institucional_mision' => 'field_institucional_mision',
1188      'field_institucional_vision' => 'field_institucional_vision',
1189    );
1190    foreach($content->content as $field_id => $field_value) {
1191      if (array_key_exists($field_id, $arreglo)) {
1192        $contenido[$field_id] = $field_value;
1193      }
1194      elseif (variable_get('datos_institucionales_' . $field_id, FALSE)) {
1195        $contenido[$field_id] = $field_value;
1196      }
1197    }
1198    if (is_array($contenido) && count($contenido)) {
1199      $estado_mision = TRUE;
1200      $output .= drupal_render($contenido);
1201    }
1202    if ($estado_foda && $accesso) {
1203      $output .= l(t('misión y visión'), 'planificacion/' . $ente_planificador->nid . '/datos_institucionales/mision_vision');
1204    }
1205    $output .= '</div>';
1206    //factores criticos
1207    $accesso = datos_institucionales_obtiene_acceso_proceso('datos_factores_criticos', $ente_planificador, $ente);
1208    $headers_table = array();
1209    $headers_table[] = array(
1210      'data' => t('Función'),
1211    );
1212    $count_headers_table = 4;
1213    $headers_table[] = array(
1214      'data' => t('Factores críticos'),
1215    );
1216    $headers_table[] = array(
1217      'data' => t('Indicadores a corto plazo'),
1218    );
1219    $headers_table[] = array(
1220      'data' => t('Valores esperados'),
1221    );
1222    $ente_has_acceso = TRUE;
1223    if ($accesso) {
1224    $count_headers_table += 1;
1225      $headers_table[] = array(
1226        'data' => t('Operación'),
1227        'colspan' => '1'
1228      );
1229    }
1230    $estado_fcriticos= FALSE;
1231    $rows = array();
1232    if (is_array($funciones) && count($funciones)) {
1233      foreach($funciones as $funcion_id => $funcion_value) {
1234        $row = array();
1235        $row[] = array('data' => $funcion_value->title, );
1236        //Principios
1237        $items = array();
1238        foreach($funcion_value->field_funciones_fcriticos as $value) {
1239          if ($value['value']) {
1240            $items[] = $value['value'];
1241          }
1242        }
1243        if (count($items)) {
1244          $estado_fcriticos = TRUE;
1245        }
1246        $row[] = array('data' => theme('item_list', $items), );
1247        //Valores
1248        $items = array();
1249        foreach($funcion_value->field_funciones_valoresesp as $value) {
1250          if ($value['value']) {
1251            $items[] = $value['value'];
1252          }
1253        }
1254        if (count($items)) {
1255          $estado_fcriticos = TRUE;
1256        }
1257        $row[] = array('data' => theme('item_list', $items), );
1258        //Customización
1259        $items = array();
1260        foreach($funcion_value->field_funciones_indicadorescp as $value) {
1261          if ($value['value']) {
1262            $items[] = $value['value'];
1263          }
1264        }
1265        if (count($items)) {
1266          $estado_fcriticos = TRUE;
1267        }
1268        $row[] = array('data' => theme('item_list', $items), );
1269        if ($accesso) {
1270          $row[] = array(
1271            'data' => l(
1272              t('Modificar factores críticos'),
1273              'planificacion/' . $ente_planificador->nid . '/datos_institucionales/funcional/' . $funcion_value->nid. '/fcriticos',
1274              array(
1275                'query' => array(
1276                  'destination' => 'planificacion/' . $ente_planificador->nid . '/datos_institucionales'
1277                )
1278              )
1279            ),
1280          );
1281        }
1282        $rows[] = $row;
1283      }
1284    }
1285    else {
1286      $row = array();
1287      $row[] = array('data' => t('No se encontraron funcionalidades para este ente'), 'colspan' => $count_headers_table);
1288      $rows[] = $row;
1289    }
1290    $output .= '<div id ="proceso-factores-criticos-' . $ente_planificador->nid . '"><h2>' . t('Factores crítico') . '</h2>';
1291    $output .= theme('table', $headers_table, $rows);
1292    $output .= '</div>';
1293    //objetivos
1294    $accesso = datos_institucionales_obtiene_acceso_proceso('datos_objetivos', $ente_planificador, $ente);
1295    //objetivo funcional y objetivos estratégicos
1296    $output .= '<div id ="proceso-analisis-objetivos-' . $ente_planificador->nid . '"><h2>' . t('Objetivo funcional y objetivos estratégicos') . ' ' . l(t('misión y visión'), 'planificacion/' . $ente_planificador->nid . '/datos_institucionales/objetivos') . '</h2>';
1297    $contenido = array();
1298    $arreglo = array(
1299      'field_institucional_funcion' => 'field_institucional_funcion',
1300    );
1301    foreach($perspectivas as $id_perspectiva => $perspectiva) {
1302      $arreglo['field_institucional_estrat' . $id_perspectiva] = 'field_institucional_estrat' . $id_perspectiva;
1303    }
1304    foreach($content->content as $field_id => $field_value) {
1305      if (array_key_exists($field_id, $arreglo)) {
1306        $contenido[$field_id] = $field_value;
1307      }
1308      elseif (variable_get('datos_institucionales_' . $field_id, FALSE)) {
1309        $contenido[$field_id] = $field_value;
1310      }
1311    }
1312    if (is_array($contenido) && count($contenido)) {
1313      $output .= drupal_render($contenido);
1314    }
1315    if ($estado_fcriticos && $accesso) {
1316      $output .= l(t('Agregar bjetivo funcional y objetivos estratégicos'), 'planificacion/' . $ente_planificador->nid . '/datos_institucionales/objetivos');
1317    }
1318    $output .= '</div>';
1319  }
1320  else {
1321    $output .= '<div id ="proceso-familiarizacion-' . $ente_planificador->nid . '"><h2>' . t('Proceso de familiarización') . '</h2>';
1322    $output .= '<div id ="proceso-familiarizacion-' . $ente_planificador->nid . '-no-found" class =""><h2>' . t('El ente aun no ha ingresado el procesos de familiarización') . '</div>';
1323    if ($accesso_familiarizacion) {
1324      $output .= l(t('Modificar proceso familiarización'), 'planificacion/' . $ente_planificador->nid . '/datos_institucionales/familiarizacion');
1325    }
1326  }
1327  return $output;
1328}
1329
1330/**
1331 * Implementation of datos_institucionales_familiarizacion_form().
1332 */
1333function datos_institucionales_familiarizacion_form(&$form_state, $ente_planificador) {
1334  drupal_set_title(t('Registrar proceso de familiarización'));
1335  global $user;
1336  $tipo_plan = 'datos_familiarización';
1337  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
1338  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
1339  $current_time = time();
1340  $fecha = FALSE;
1341  $ente = usuario_tiene_ente($user->uid);
1342  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
1343    $fecha = TRUE;
1344  }
1345  if ($datos_institucionales->nid) {
1346    if (!$fecha) {
1347      muestra_mensaje($tipo_plan, $ente_planificador->tipo);
1348    }
1349    else {
1350      if ($ente->nid == $ente_planificador->nid) {
1351        muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
1352      }
1353    }
1354    $datos_institucionales_load = node_load($datos_institucionales->nid);
1355  }
1356  else {
1357    if ($fecha && (user_access('admin planificador') || ($ente->nid == $ente_planificador->nid && user_access('editar datos institucionales de mi ente')))) {
1358      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
1359      module_load_include('inc', 'node', 'node.pages');
1360      $datos_institucionales1 = new stdClass();
1361      $datos_institucionales1->type = 'ente_institucional';
1362      node_object_prepare($datos_institucionales1);
1363      $datos_institucionales1->title = t('Institucional @nombre_ente', array('@nombre_ente' => check_plain($ente_planificador->title)));
1364      $datos_institucionales1->uid = $user->uid;
1365      $datos_institucionales1->field_institucional_unidad = array();
1366      $datos_institucionales1->field_institucional_unidad[] = array('value' => '');
1367      $datos_institucionales1->field_institucional_insumos = array();
1368      $datos_institucionales1->field_institucional_insumos[] = array('value' => '');
1369      $datos_institucionales1->field_institucional_ente = array();
1370      $datos_institucionales1->field_institucional_ente[0] = array('nid' => $ente_planificador->nid);
1371      node_save($datos_institucionales1);
1372      $datos_institucionales_load = node_load($datos_institucionales1->nid);
1373    }
1374    else {
1375      muestra_mensaje("explicacion", $ente_planificador->tipo);
1376      return t('El ente @ente_planificador aun no tiene proceso de familiarización.', array('@ente_planificador' => $ente_planificador->title));
1377    }
1378  }
1379  $form = array();
1380  $form['ente_planificador_nid'] = array(
1381    '#type' => 'hidden',
1382    '#default_value' => $ente_planificador->nid,
1383  );
1384  $form['datos_institucionales_nid'] = array(
1385    '#type' => 'hidden',
1386    '#default_value' => $datos_institucionales_load->nid,
1387  );
1388  $node_type = content_types('ente_institucional');
1389  $fields = $node_type['fields'];
1390  $field_form = array();
1391  $arreglo = array(
1392    'field_institucional_unidad' => 'field_institucional_unidad',
1393    'field_institucional_insumos' => 'field_institucional_insumos',
1394  );
1395  if (is_array($fields) && count($fields)) {
1396    foreach($fields as $field_id => $field) {
1397      if (array_key_exists($field_id, $arreglo)) {
1398        $field_form[] = $field_id;
1399      }
1400      elseif (variable_get('datos_institucionales_' . $field_id, FALSE)) {
1401        $field_form[] = $field_id;
1402      }
1403    }
1404  }
1405  $form['#datos_institucionales_fields_datos'] = $field_form;
1406  if (is_array($field_form) && count($field_form)) {
1407    module_load_include('inc', 'content', 'includes/content.node_form');
1408    $form['#node'] = $datos_institucionales_load;
1409    foreach ($field_form as $field_id) {
1410      $field = content_fields($field_id, 'ente_institucional');
1411      $form['#field_info'][$field_id] = $field;
1412      $form += (array) content_field_form($form, $form_state, $field);
1413    }
1414  }
1415  $form['registrar'] = array(
1416    '#type' => 'submit',
1417    '#default_value' => t('Registrar proceso de familiarización'),
1418    '#weight' => 100,
1419  );
1420  $form['#submit'] = array('datos_institucionales_familiarizacion_form_submit');
1421  return $form;
1422}
1423
1424/*
1425 * datos_institucionales_familiarizacion_form_submit
1426 * Guardar formulario de los datos institucionales
1427 */
1428function datos_institucionales_familiarizacion_form_submit($form, &$form_state) {
1429  $field_form = $form['#ente_planificador_fields_datos'];
1430  module_load_include('inc', 'node', 'node.pages');
1431  $node_load = node_load($form_state['values']['datos_institucionales_nid']);
1432  $field_form = $form['#datos_institucionales_fields_datos'];
1433  $form_values = $form_state['values'];
1434  if (is_array($field_form) && count($field_form)) {
1435    foreach ($field_form as $field_id) {
1436      if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
1437        foreach($form_values[$field_id] as $id => $value) {
1438          if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
1439            unset($form_values[$field_id][$id]['_error_element']);
1440          }
1441        }
1442        $node_load->{$field_id} = $form_values[$field_id];
1443      }
1444    }
1445  }
1446  $node_load->log = t('Modificados los datos institucionales del actor planificador');
1447  $node_load->revision = 1;
1448  node_save($node_load);
1449  drupal_set_message(t("Se agregarón los datos intitucionales del ente"));
1450  if ($_REQUEST['destination']) {
1451    $form_state['redirect'] = url('planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionales',
1452      array(
1453        'query' => array(
1454          'destination' => $_REQUEST['destination'],
1455         ),
1456         'absolute' => TRUE,               
1457      )
1458    );
1459    unset($_REQUEST['destination']);
1460  }
1461  else {
1462    // add redirect
1463    $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionales';
1464  }
1465}
1466
1467/**
1468 * Implementation of datos_institucionales_mision_vision_form().
1469 */
1470function datos_institucionales_mision_vision_form(&$form_state, $ente_planificador) {
1471  global $user;
1472  drupal_set_title(t('Registrar misión y visión'));
1473  $tipo_plan = 'datos_mision_vision';
1474  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
1475  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
1476  $current_time = time();
1477  $fecha = FALSE;
1478  $ente = usuario_tiene_ente($user->uid);
1479  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
1480    $fecha = TRUE;
1481  }
1482  if ($datos_institucionales->nid) {
1483    if (!$fecha) {
1484      muestra_mensaje($tipo_plan, $ente_planificador->tipo);
1485    }
1486    else {
1487      if ($ente->nid == $ente_planificador->nid) {
1488      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
1489      }
1490    }
1491    $datos_institucionales_load = node_load($datos_institucionales->nid);
1492  }
1493  else {
1494    if ($fecha && (user_access('admin planificador') || ($ente->nid == $ente_planificador->nid && user_access('editar datos institucionales de mi ente')))) {
1495      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
1496      drupal_goto('planificacion/' . $ente_planificador->nid . '/datos_institucionales');
1497      return;
1498    }
1499    else {
1500      muestra_mensaje("explicacion", $ente_planificador->tipo);
1501      return t('El ente @ente_planificador aun no tiene proceso de familiarización.', array('@ente_planificador' => $ente_planificador->title));
1502    }
1503  }
1504  $form = array();
1505  $form['ente_planificador_nid'] = array(
1506    '#type' => 'hidden',
1507    '#default_value' => $ente_planificador->nid,
1508  );
1509  $form['datos_institucionales_nid'] = array(
1510    '#type' => 'hidden',
1511    '#default_value' => $datos_institucionales_load->nid,
1512  );
1513  $node_type = content_types('ente_institucional');
1514  $fields = $node_type['fields'];
1515  $field_form = array();
1516  $arreglo = array(
1517    'field_institucional_mision' => 'field_institucional_mision',
1518    'field_institucional_vision' => 'field_institucional_vision',
1519  );
1520  if (is_array($fields) && count($fields)) {
1521    foreach($fields as $field_id => $field) {
1522      if (array_key_exists($field_id, $arreglo)) {
1523        $field_form[] = $field_id;
1524      }
1525      elseif (variable_get('datos_institucionales_mv_' . $field_id, FALSE)) {
1526        $field_form[] = $field_id;
1527      }
1528    }
1529  }
1530  $form['#datos_institucionales_fields_datos'] = $field_form;
1531  if (is_array($field_form) && count($field_form)) {
1532    module_load_include('inc', 'content', 'includes/content.node_form');
1533    $form['#node'] = $datos_institucionales_load;
1534    foreach ($field_form as $field_id) {
1535      $field = content_fields($field_id, 'ente_institucional');
1536      $form['#field_info'][$field_id] = $field;
1537      $form += (array) content_field_form($form, $form_state, $field);
1538    }
1539  }
1540  $form['registrar'] = array(
1541    '#type' => 'submit',
1542    '#default_value' => t('Registrar misión y visión.'),
1543    '#weight' => 100,
1544  );
1545  $form['#submit'] = array('datos_institucionales_mision_vision_form_submit');
1546  return $form;
1547}
1548
1549/*
1550 * datos_institucionales_familiarizacion_form_submit
1551 * Guardar formulario de los datos institucionales
1552 */
1553function datos_institucionales_mision_vision_form_submit($form, &$form_state) {
1554  $field_form = $form['#ente_planificador_fields_datos'];
1555  module_load_include('inc', 'node', 'node.pages');
1556  $node_load = node_load($form_state['values']['datos_institucionales_nid']);
1557  $field_form = $form['#datos_institucionales_fields_datos'];
1558  $form_values = $form_state['values'];
1559  if (is_array($field_form) && count($field_form)) {
1560    foreach ($field_form as $field_id) {
1561      if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
1562        foreach($form_values[$field_id] as $id => $value) {
1563          if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
1564            unset($form_values[$field_id][$id]['_error_element']);
1565          }
1566        }
1567        $node_load->{$field_id} = $form_values[$field_id];
1568      }
1569    }
1570  }
1571  $node_load->log = t('Modificados los datos misión y visión del actor planificador');
1572  $node_load->revision = 1;
1573  node_save($node_load);
1574  drupal_set_message(t("Se agregarón la misión y visión del ente"));
1575  if ($_REQUEST['destination']) {
1576    $form_state['redirect'] = url('planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionales',
1577      array(
1578        'query' => array(
1579          'destination' => $_REQUEST['destination'],
1580         ),
1581         'absolute' => TRUE,               
1582      )
1583    );
1584    unset($_REQUEST['destination']);
1585  }
1586  else {
1587    // add redirect
1588    $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionales';
1589  }
1590}
1591
1592/**
1593 * Implementation of datos_institucionales_objetivos_form().
1594 */
1595function datos_institucionales_objetivos_form(&$form_state, $ente_planificador) {
1596  global $user;
1597  drupal_set_title(t('Registrar objetivo funcional y objetivos estratégicos'));
1598  $tipo_plan = 'datos_objetivos';
1599  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
1600  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
1601  $current_time = time();
1602  $fecha = FALSE;
1603  $ente = usuario_tiene_ente($user->uid);
1604  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
1605    $fecha = TRUE;
1606  }
1607  if ($datos_institucionales->nid) {
1608    if (!$fecha) {
1609      muestra_mensaje($tipo_plan, $ente_planificador->tipo);
1610    }
1611    else {
1612      if ($ente->nid == $ente_planificador->nid) {
1613      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
1614      }
1615    }
1616    $datos_institucionales_load = node_load($datos_institucionales->nid);
1617  }
1618  else {
1619    if ($fecha && (user_access('admin planificador') || ($ente->nid == $ente_planificador->nid && user_access('editar datos institucionales de mi ente')))) {
1620      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
1621      drupal_goto('planificacion/' . $ente_planificador->nid . '/datos_institucionales');
1622      return;
1623    }
1624    else {
1625      muestra_mensaje("explicacion", $ente_planificador->tipo);
1626      return t('El ente @ente_planificador aun no tiene proceso de familiarización.', array('@ente_planificador' => $ente_planificador->title));
1627    }
1628  }
1629  $form = array();
1630  $form['ente_planificador_nid'] = array(
1631    '#type' => 'hidden',
1632    '#default_value' => $ente_planificador->nid,
1633  );
1634  $form['datos_institucionales_nid'] = array(
1635    '#type' => 'hidden',
1636    '#default_value' => $datos_institucionales_load->nid,
1637  );
1638  $node_type = content_types('ente_institucional');
1639  $fields = $node_type['fields'];
1640  $field_form = array();
1641  $arreglo = array(
1642    'field_institucional_funcion' => 'field_institucional_funcion',
1643  );
1644  $perspectivas = datos_institucionales_obtiene_perspectivas($ente_planificador);
1645    foreach($perspectivas as $id_perspectiva => $perspectiva) {
1646      $arreglo['field_institucional_estrat' . $id_perspectiva] = 'field_institucional_estrat' . $id_perspectiva;
1647    }
1648  if (is_array($fields) && count($fields)) {
1649    foreach($fields as $field_id => $field) {
1650      if (array_key_exists($field_id, $arreglo)) {
1651        $field_form[] = $field_id;
1652      }
1653      elseif (variable_get('datos_institucionales_obj_' . $field_id, FALSE)) {
1654        $field_form[] = $field_id;
1655      }
1656    }
1657  }
1658  $form['#datos_institucionales_fields_datos'] = $field_form;
1659  if (is_array($field_form) && count($field_form)) {
1660    module_load_include('inc', 'content', 'includes/content.node_form');
1661    $form['#node'] = $datos_institucionales_load;
1662    foreach ($field_form as $field_id) {
1663      $field = content_fields($field_id, 'ente_institucional');
1664      $form['#field_info'][$field_id] = $field;
1665      $form += (array) content_field_form($form, $form_state, $field);
1666    }
1667  }
1668  $form['registrar'] = array(
1669    '#type' => 'submit',
1670    '#default_value' => t('Registrar objetivo funcional y objetivos estratégicos'),
1671    '#weight' => 100,
1672  );
1673  $form['#submit'] = array('datos_institucionales_objetivos_form_submit');
1674  return $form;
1675}
1676
1677/*
1678 * datos_institucionales_familiarizacion_form_submit
1679 * Guardar formulario de los datos institucionales
1680 */
1681function datos_institucionales_objetivos_form_submit($form, &$form_state) {
1682  $field_form = $form['#ente_planificador_fields_datos'];
1683  module_load_include('inc', 'node', 'node.pages');
1684  $node_load = node_load($form_state['values']['datos_institucionales_nid']);
1685  $field_form = $form['#datos_institucionales_fields_datos'];
1686  $form_values = $form_state['values'];
1687  if (is_array($field_form) && count($field_form)) {
1688    foreach ($field_form as $field_id) {
1689      if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
1690        foreach($form_values[$field_id] as $id => $value) {
1691          if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
1692            unset($form_values[$field_id][$id]['_error_element']);
1693          }
1694        }
1695        $node_load->{$field_id} = $form_values[$field_id];
1696      }
1697    }
1698  }
1699  $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionales';
1700  $node_load->log = t('Modificados los datos misión y visión del actor planificador');
1701  $node_load->revision = 1;
1702  node_save($node_load);
1703  drupal_set_message(t("Se agregarón la misión y visión del ente"));
1704  if ($_REQUEST['destination']) {
1705    $form_state['redirect'] = url('planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionales',
1706      array(
1707        'query' => array(
1708          'destination' => $_REQUEST['destination'],
1709         ),
1710         'absolute' => TRUE,               
1711      )
1712    );
1713    unset($_REQUEST['destination']);
1714  }
1715  else {
1716    // add redirect
1717    $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionales';
1718  }
1719}
1720
1721/**
1722 * Implementation of datos_institucionales_analisis_funcional_registrar_form().
1723 */
1724function datos_institucionales_analisis_funcional_registrar_form(&$form_state, $ente_planificador, $datos_institucionales_funcion = 0) {
1725  global $user;
1726  drupal_set_title(t('Registrar función del ente'));
1727  $tipo_plan = 'datos_analisis_funcional';
1728  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
1729  $current_time = time();
1730  $fecha = FALSE;
1731  $ente = usuario_tiene_ente($user->uid);
1732  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
1733    $fecha = TRUE;
1734  }
1735  if (!$fecha) {
1736    muestra_mensaje($tipo_plan, $ente_planificador->tipo);
1737  }
1738  else {
1739    if ($ente->nid == $ente_planificador->nid) {
1740      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
1741    }
1742  }
1743  $form = array();
1744  $form['#ente_planificador'] = $ente_planificador;
1745  $form['#datos_institucionales_funcion'] = is_object($datos_institucionales_funcion) ? $datos_institucionales_funcion : 0;
1746  if (!$form['#datos_institucionales_funcion']) {
1747    drupal_set_title(t('Registrar función del ente'));
1748    $datos_institucionales_funcion = new stdClass();
1749    $datos_institucionales_funcion->type = 'ente_funciones';
1750    $datos_institucionales_funcion->uid = $user->uid;
1751    $datos_institucionales_funcion->field_funciones_ente[0] = array('nid' => $ente_planificador->nid);
1752    $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
1753    $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
1754    $datos_institucionales_funcion->field_funciones_institucional[0] = array('nid' => $datos_institucionales->nid);
1755    $form['#datos_institucionales_funcion'] = $datos_institucionales_funcion;
1756  }
1757  else{
1758    drupal_set_title(t('Modificar función @nombre_funcion', array('@nombre_funcion' => $datos_institucionales_funcion->title)));
1759  }
1760  $form['title'] = array(
1761    '#type' => 'textfield',
1762    '#title' => t('Función'),
1763    '#required' => FALSE,
1764    '#size' => 20,
1765    '#default_value' => isset($datos_institucionales_funcion->title) ? $datos_institucionales_funcion->title : '',
1766  );
1767  $node_type = content_types('ente_funciones');
1768  $fields = $node_type['fields'];
1769  $field_form = array();
1770  $arreglo = array(
1771    'field_funciones_tipo' => 'field_funciones_tipo',
1772    'field_funciones_procesos' => 'field_funciones_procesos',
1773    'field_funciones_productos' => 'field_funciones_productos',
1774    'field_funciones_usuarios' => 'field_funciones_usuarios',
1775    'field_funciones_legales' => 'field_funciones_legales',
1776  );
1777  if (is_array($fields) && count($fields)) {
1778    foreach($fields as $field_id => $field) {
1779      if (array_key_exists($field_id, $arreglo)) {
1780        $field_form[] = $field_id;
1781      }
1782      elseif (variable_get('datos_institucionales_af_' . $field_id, FALSE)) {
1783        $field_form[] = $field_id;
1784      }
1785    }
1786  }
1787  $form['#datos_institucionales_fields_datos'] = $field_form;
1788  if (is_array($field_form) && count($field_form)) {
1789    module_load_include('inc', 'content', 'includes/content.node_form');
1790    $form['#node'] = $datos_institucionales_funcion;
1791    foreach ($field_form as $field_id) {
1792      $field = content_fields($field_id, 'ente_funciones');
1793      $form['#field_info'][$field_id] = $field;
1794      $form += (array) content_field_form($form, $form_state, $field);
1795    }
1796  }
1797  $title = t('Registrar función');
1798  if ($datos_institucionales_funcion->nid) {
1799    $title = t('Modificar función');
1800  }
1801    $form['registrar'] = array(
1802      '#type' => 'submit',
1803      '#default_value' => $title,
1804      '#weight' => 100,
1805    );
1806  $form['#submit'] = array('datos_institucionales_analisis_funcional_registrar_form_submit');
1807  return $form;
1808}
1809
1810/*
1811 * datos_institucionales_familiarizacion_form_submit
1812 * Guardar formulario de los datos institucionales
1813 */
1814function datos_institucionales_analisis_funcional_registrar_form_submit($form, &$form_state) {
1815  $field_form = $form['#ente_planificador_fields_datos'];
1816  module_load_include('inc', 'node', 'node.pages');
1817  $node_load = $form['#datos_institucionales_funcion'];
1818  $node_load->title = check_plain($form_state['values']['title']);
1819  $field_form = $form['#datos_institucionales_fields_datos'];
1820  $form_values = $form_state['values'];
1821  if (is_array($field_form) && count($field_form)) {
1822    foreach ($field_form as $field_id) {
1823      if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
1824        foreach($form_values[$field_id] as $id => $value) {
1825          if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
1826            unset($form_values[$field_id][$id]['_error_element']);
1827          }
1828        }
1829        $node_load->{$field_id} = $form_values[$field_id];
1830      }
1831    }
1832  }
1833  $form_state['redirect'] = 'planificacion/' . $form['#ente_planificador']->nid . '/datos_institucionales';
1834  $node_load->log = t('Modificada la función del ente');
1835  $node_load->revision = 1;
1836  node_save($node_load);
1837  drupal_set_message(t('Se modifico la información de la función del ente @nombre_funcion', array('@nombre_funcion' => $node_load->title)));
1838  if ($_REQUEST['destination']) {
1839    $form_state['redirect'] = url('planificacion/' . $form['#ente_planificador']->nid . '/datos_institucionales',
1840      array(
1841        'query' => array(
1842          'destination' => $_REQUEST['destination'],
1843         ),
1844         'absolute' => TRUE,               
1845      )
1846    );
1847    unset($_REQUEST['destination']);
1848  }
1849  else {
1850    // add redirect
1851    $form_state['redirect'] = 'planificacion/' . $form['#ente_planificador']->nid . '/datos_institucionales';
1852  }
1853}
1854
1855/**
1856 * Implementation of datos_institucionales_analisis_funcional_eliminar_form().
1857 */
1858function datos_institucionales_analisis_funcional_eliminar_form(&$form_state, $ente_planificador, $datos_institucionales_funcion) {
1859  $tipo_plan = 'datos_analisis_funcional';
1860  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
1861  $current_time = time();
1862  $fecha = FALSE;
1863  $ente = usuario_tiene_ente($user->uid);
1864  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
1865    $fecha = TRUE;
1866  }
1867  if (!$fecha) {
1868    muestra_mensaje($tipo_plan, $ente_planificador->tipo);
1869  }
1870  else {
1871    if ($ente->nid == $ente_planificador->nid) {
1872      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
1873    }
1874  }
1875  $form = array();
1876  $form['#ente_planificador'] = $ente_planificador;
1877  $form['#datos_institucionales_funcion'] = $datos_institucionales_funcion;
1878  $message = t('Esta seguro de querer eliminar la función %nombre_funcion?', array('%nombre_funcion' => $datos_institucionales_funcion->title));
1879  $caption = '<p>'. t('This action cannot be undone.') .'</p>';
1880  $return_path = 'planificacion/' . $ente_planificador->nid . '/datos_institucionales';
1881  return confirm_form($form, $message, $return_path, $caption, t('Delete'));
1882}
1883
1884/**
1885 * Implementation of datos_institucionales_analisis_funcional_eliminar_form_submit().
1886 * Process funcion delete confirm form.
1887 */
1888function datos_institucionales_analisis_funcional_eliminar_form_submit($form, &$form_state) {
1889  $ente_planificador = $form['#ente_planificador'];
1890  $node_load = $form['#datos_institucionales_funcion'];
1891  $node_load->status = 0;
1892  $node_load->log = t('Se eliminó la función del ente');
1893  $node_load->revision = 1;
1894  node_save($node_load);
1895  //REMOVE DATA
1896    drupal_set_message(t('Función @nombre_funcion fue removida del sistema', array('@server_name' => $node_load->title)));
1897  $form_state['redirect'] = 'planificacion/' . $ente_planificador->nid . '/datos_institucionales';
1898}
1899
1900/**
1901 * Implementation of datos_institucionales_analisis_funcional_actividades_form().
1902 */
1903function datos_institucionales_analisis_funcional_actividades_form(&$form_state, $ente_planificador, $datos_institucionales_funcion) {
1904  global $user;
1905  drupal_set_title(t('Actividades asociadas'));
1906  $tipo_plan = 'datos_actividades_eticas';
1907  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
1908  $current_time = time();
1909  $fecha = FALSE;
1910  $ente = usuario_tiene_ente($user->uid);
1911  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
1912    $fecha = TRUE;
1913  }
1914  if (!$fecha) {
1915    muestra_mensaje($tipo_plan, $ente_planificador->tipo);
1916  }
1917  else {
1918    if ($ente->nid == $ente_planificador->nid) {
1919      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
1920    }
1921  }
1922  $form = array();
1923  $form['#ente_planificador'] = $ente_planificador;
1924  $form['#datos_institucionales_funcion'] = is_object($datos_institucionales_funcion) ? $datos_institucionales_funcion : 0;
1925  $node_type = content_types('ente_funciones');
1926  $fields = $node_type['fields'];
1927  $field_form = array();
1928  $arreglo = array(
1929    'field_funciones_principios' => 'field_funciones_principios',
1930    'field_funciones_valores' => 'field_funciones_valores',
1931    'field_funciones_custom' => 'field_funciones_custom',
1932  );
1933  if (is_array($fields) && count($fields)) {
1934    foreach($fields as $field_id => $field) {
1935      if (array_key_exists($field_id, $arreglo)) {
1936        $field_form[] = $field_id;
1937      }
1938      elseif (variable_get('datos_institucionales_act_' . $field_id, FALSE)) {
1939        $field_form[] = $field_id;
1940      }
1941    }
1942  }
1943  $form['#datos_institucionales_fields_datos'] = $field_form;
1944  if (is_array($field_form) && count($field_form)) {
1945    module_load_include('inc', 'content', 'includes/content.node_form');
1946    $form['#node'] = $datos_institucionales_funcion;
1947    foreach ($field_form as $field_id) {
1948      $field = content_fields($field_id, 'ente_funciones');
1949      $form['#field_info'][$field_id] = $field;
1950      $form += (array) content_field_form($form, $form_state, $field);
1951    }
1952  }
1953  $form['registrar'] = array(
1954    '#type' => 'submit',
1955    '#default_value' => t('Registrar actividades asociadas'),
1956    '#weight' => 100,
1957  );
1958  $form['#submit'] = array('datos_institucionales_analisis_funcional_actividades_form_submit');
1959  return $form;
1960}
1961
1962/*
1963 * datos_institucionales_familiarizacion_form_submit
1964 * Guardar formulario de los datos institucionales
1965 */
1966function datos_institucionales_analisis_funcional_actividades_form_submit($form, &$form_state) {
1967  $field_form = $form['#ente_planificador_fields_datos'];
1968  module_load_include('inc', 'node', 'node.pages');
1969  $node_load = $form['#datos_institucionales_funcion'];
1970  $field_form = $form['#datos_institucionales_fields_datos'];
1971  $form_values = $form_state['values'];
1972  if (is_array($field_form) && count($field_form)) {
1973    foreach ($field_form as $field_id) {
1974      if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
1975        foreach($form_values[$field_id] as $id => $value) {
1976          if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
1977            unset($form_values[$field_id][$id]['_error_element']);
1978          }
1979        }
1980        $node_load->{$field_id} = $form_values[$field_id];
1981      }
1982    }
1983  }
1984  $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionales';
1985  $node_load->log = t('Modificada la actividades asociadas a la ética de la función');
1986  $node_load->revision = 1;
1987  node_save($node_load);
1988  drupal_set_message(t('Se modifico la actividades asociadas a la ética de la función @nombre_funcion', array('@nombre_funcion' => $node_load->title)));
1989  if ($_REQUEST['destination']) {
1990    $form_state['redirect'] = url('planificacion/' . $form['#ente_planificador']->nid . '/datos_institucionales',
1991      array(
1992        'query' => array(
1993          'destination' => $_REQUEST['destination'],
1994         ),
1995         'absolute' => TRUE,               
1996      )
1997    );
1998    unset($_REQUEST['destination']);
1999  }
2000  else {
2001    // add redirect
2002    $form_state['redirect'] = 'planificacion/' . $form['#ente_planificador']->nid . '/datos_institucionales';
2003  }
2004}
2005
2006/**
2007 * Implementation of datos_institucionales_analisis_funcional_fcriticos_form().
2008 */
2009function datos_institucionales_analisis_funcional_fcriticos_form(&$form_state, $ente_planificador, $datos_institucionales_funcion) {
2010  global $user;
2011  drupal_set_title(t('Factores críticos'));
2012  $tipo_plan = 'datos_factores_criticos';
2013  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
2014  $current_time = time();
2015  $fecha = FALSE;
2016  $ente = usuario_tiene_ente($user->uid);
2017  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
2018    $fecha = TRUE;
2019  }
2020  if (!$fecha) {
2021    muestra_mensaje($tipo_plan, $ente_planificador->tipo);
2022  }
2023  else {
2024    if ($ente->nid == $ente_planificador->nid) {
2025      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
2026    }
2027  }
2028  $form = array();
2029  $form['#ente_planificador'] = $ente_planificador;
2030  $form['#datos_institucionales_funcion'] = is_object($datos_institucionales_funcion) ? $datos_institucionales_funcion : 0;
2031  $node_type = content_types('ente_funciones');
2032  $fields = $node_type['fields'];
2033  $field_form = array();
2034  $arreglo = array(
2035    'field_funciones_fcriticos' => 'field_funciones_fcriticos',
2036    'field_funciones_indicadorescp' => 'field_funciones_indicadorescp',
2037    'field_funciones_valoresesp' => 'field_funciones_valoresesp',
2038  );
2039  if (is_array($fields) && count($fields)) {
2040    foreach($fields as $field_id => $field) {
2041      if (array_key_exists($field_id, $arreglo)) {
2042        $field_form[] = $field_id;
2043      }
2044      elseif (variable_get('datos_institucionales_act_' . $field_id, FALSE)) {
2045        $field_form[] = $field_id;
2046      }
2047    }
2048  }
2049  $form['#datos_institucionales_fields_datos'] = $field_form;
2050  if (is_array($field_form) && count($field_form)) {
2051    module_load_include('inc', 'content', 'includes/content.node_form');
2052    $form['#node'] = $datos_institucionales_funcion;
2053    foreach ($field_form as $field_id) {
2054      $field = content_fields($field_id, 'ente_funciones');
2055      $form['#field_info'][$field_id] = $field;
2056      $form += (array) content_field_form($form, $form_state, $field);
2057    }
2058  }
2059
2060    $form['registrar'] = array(
2061      '#type' => 'submit',
2062      '#default_value' => t('Registrar factores críticos'),
2063      '#weight' => 100,
2064    );
2065  $form['#submit'] = array('datos_institucionales_analisis_funcional_fcriticos_form_submit');
2066  return $form;
2067}
2068
2069/*
2070 * datos_institucionales_familiarizacion_form_submit
2071 * Guardar formulario de los datos institucionales
2072 */
2073function datos_institucionales_analisis_funcional_fcriticos_form_submit($form, &$form_state) {
2074  $field_form = $form['#ente_planificador_fields_datos'];
2075  module_load_include('inc', 'node', 'node.pages');
2076  $node_load = $form['#datos_institucionales_funcion'];
2077  $field_form = $form['#datos_institucionales_fields_datos'];
2078  $form_values = $form_state['values'];
2079  if (is_array($field_form) && count($field_form)) {
2080    foreach ($field_form as $field_id) {
2081      if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
2082        foreach($form_values[$field_id] as $id => $value) {
2083          if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
2084            unset($form_values[$field_id][$id]['_error_element']);
2085          }
2086        }
2087        $node_load->{$field_id} = $form_values[$field_id];
2088      }
2089    }
2090  }
2091  $form_state['redirect'] = 'planificacion/' . $form['#ente_planificador']->nid . '/datos_institucionales';
2092  $node_load->log = t('Se han Modificadó los Factores críticos de la función');
2093  $node_load->revision = 1;
2094  node_save($node_load);
2095  drupal_set_message(t('Se modificado los Factores críticos de la función @nombre_funcion', array('@nombre_funcion' => $node_load->title)));
2096  if ($_REQUEST['destination']) {
2097    $form_state['redirect'] = url('planificacion/' . $form['#ente_planificador']->nid . '/datos_institucionales',
2098      array(
2099        'query' => array(
2100          'destination' => $_REQUEST['destination'],
2101         ),
2102         'absolute' => TRUE,               
2103      )
2104    );
2105    unset($_REQUEST['destination']);
2106  }
2107  else {
2108    // add redirect
2109    $form_state['redirect'] = 'planificacion/' . $form['#ente_planificador']->nid . '/datos_institucionales';
2110  }
2111}
2112
2113/**
2114 * Implementation of datos_institucionales_foda_form().
2115 */
2116function datos_institucionales_foda_form(&$form_state, $ente_planificador) {
2117  global $user;
2118  drupal_set_title(t('Análisis FODA'));
2119  $tipo_plan = 'datos_foda';
2120  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
2121  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
2122  $current_time = time();
2123  $fecha = FALSE;
2124  $ente = usuario_tiene_ente($user->uid);
2125  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
2126    $fecha = TRUE;
2127  }
2128
2129  if ($datos_institucionales->nid) {
2130    if (!$fecha) {
2131      muestra_mensaje($tipo_plan, $ente_planificador->tipo);
2132    }
2133    else {
2134      if ($ente->nid == $ente_planificador->nid) {
2135      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
2136      }
2137    }
2138    $datos_institucionales_load = node_load($datos_institucionales->nid);
2139  }
2140  else {
2141    if ($fecha && (user_access('admin planificador') || ($ente->nid == $ente_planificador->nid && user_access('editar datos institucionales de mi ente')))) {
2142      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
2143      drupal_goto('planificacion/' . $ente_planificador->nid . '/datos_institucionales');
2144      return;
2145    }
2146    else {
2147      muestra_mensaje("explicacion", $ente_planificador->tipo);
2148      return t('El ente @ente_planificador aun no tiene proceso de familiarización.', array('@ente_planificador' => $ente_planificador->title));
2149    }
2150  }
2151  $form = array();
2152  $form['ente_planificador_nid'] = array(
2153    '#type' => 'hidden',
2154    '#default_value' => $ente_planificador->nid,
2155  );
2156  $form['datos_institucionales_nid'] = array(
2157    '#type' => 'hidden',
2158    '#default_value' => $datos_institucionales_load->nid,
2159  );
2160  $node_type = content_types('ente_institucional');
2161  $fields = $node_type['fields'];
2162  $field_form = array();
2163  $perspectivas = datos_institucionales_obtiene_perspectivas($ente_planificador);
2164  $arreglo1 = array('o', 'a', 'f', 'd');
2165  foreach($perspectivas as $id_perspectiva => $perspectiva) {
2166    foreach($arreglo1 as $tipo) {
2167      $arreglo['field_foda_' . $tipo . $id_perspectiva] = 'field_foda_' . $tipo . $id_perspectiva;
2168    }
2169  }
2170  if (is_array($fields) && count($fields)) {
2171    foreach($fields as $field_id => $field) {
2172      if (array_key_exists($field_id, $arreglo)) {
2173        $field_form[] = $field_id;
2174      }
2175      elseif (variable_get('datos_institucionales_foda_' . $field_id, FALSE)) {
2176        $field_form[] = $field_id;
2177      }
2178    }
2179  }
2180  $form['#datos_institucionales_fields_datos'] = $field_form;
2181  if (is_array($field_form) && count($field_form)) {
2182    module_load_include('inc', 'content', 'includes/content.node_form');
2183    $form['#node'] = $datos_institucionales_load;
2184    foreach ($field_form as $field_id) {
2185      $field = content_fields($field_id, 'ente_institucional');
2186      $form['#field_info'][$field_id] = $field;
2187      $form += (array) content_field_form($form, $form_state, $field);
2188    }
2189  }
2190  $form['registrar'] = array(
2191    '#type' => 'submit',
2192    '#default_value' => t('Registrar Analisis FODA'),
2193    '#weight' => 100,
2194  );
2195  $form['#submit'] = array('datos_institucionales_mision_vision_form_submit');
2196  return $form;
2197}
2198
2199/*
2200 * datos_institucionales_familiarizacion_form_submit
2201 * Guardar formulario de los datos institucionales
2202 */
2203function datos_institucionales_foda_form_submit($form, &$form_state) {
2204  $field_form = $form['#ente_planificador_fields_datos'];
2205  module_load_include('inc', 'node', 'node.pages');
2206  $node_load = node_load($form_state['values']['datos_institucionales_nid']);
2207  $field_form = $form['#datos_institucionales_fields_datos'];
2208  $form_values = $form_state['values'];
2209  if (is_array($field_form) && count($field_form)) {
2210    foreach ($field_form as $field_id) {
2211      if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
2212        foreach($form_values[$field_id] as $id => $value) {
2213          if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
2214            unset($form_values[$field_id][$id]['_error_element']);
2215          }
2216        }
2217        $node_load->{$field_id} = $form_values[$field_id];
2218      }
2219    }
2220  }
2221  $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionales';
2222  $node_load->log = t('Se ha odificado el análisis FODA del actor planificador');
2223  $node_load->revision = 1;
2224  node_save($node_load);
2225  drupal_set_message(t("Modificados el análisis FODA del actor planificador"));
2226  if ($_REQUEST['destination']) {
2227    $form_state['redirect'] = url('planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionales',
2228      array(
2229        'query' => array(
2230          'destination' => $_REQUEST['destination'],
2231         ),
2232         'absolute' => TRUE,               
2233      )
2234    );
2235    unset($_REQUEST['destination']);
2236  }
2237  else {
2238    // add redirect
2239    $form_state['redirect'] = 'planificacion/' . $form_state['values']['ente_planificador_nid'] . '/datos_institucionalesa';
2240  }
2241}
2242
2243
2244/**
2245 * @ingroup themeable
2246 * @see datos_institucionales_foda_form()
2247 */
2248function theme_datos_institucionales_foda_form($form) {
2249  $output = '';
2250  $rows = array();
2251  $headers_table = array();
2252  $headers_table[] = array(
2253    'data' => t('F.O.D.A.'),
2254  );
2255  $headers_table[] = array(
2256    'data' => t('Análisis externo'),
2257    'colspan' => '2',
2258  );
2259  $headers_table[] = array(
2260    'data' => t('Análisis interno'),
2261    'colspan' => '2',
2262  );
2263  $row = array();
2264  $row[] = array('data' => 'Perspectivas', );
2265  $row[] = array('data' => t('Oportunidades'), );
2266  $row[] = array('data' => t('Amenazas'), );
2267  $row[] = array('data' => t('Fortalezas'), );
2268  $row[] = array('data' => t('Debilidades'), );
2269  $rows[] = $row;
2270  $perspectivas = datos_institucionales_obtiene_perspectivas($ente_planificador);
2271  $arreglo = array('o', 'a', 'f', 'd');
2272  foreach($perspectivas as $id_perspectiva => $perspectiva) {
2273    $row = array();
2274    $row[] = array('data' => $perspectiva, );
2275    $existen_campos = TRUE;
2276    foreach($arreglo as $tipo) {
2277      $campo = 'field_foda_' . $tipo . $id_perspectiva;
2278      if (isset($form[$campo])) {
2279        $row[] = array('data' => drupal_render($form[$campo]), );
2280      }
2281      else {
2282        $existen_campos = FALSE;
2283      }
2284    }
2285    if ($existen_campos) {
2286      $rows[] = $row;
2287    }
2288  }
2289  $output .= theme('table', $headers_table, $rows);
2290  $output .= drupal_render($form);
2291  return $output;
2292}
2293
2294/**
2295 * Implementation of datos_institucionales_analisis_funcional_ver().
2296 */
2297function datos_institucionales_analisis_funcional_ver($ente_planificador) {
2298  $tipo_plan = 'datos_analisis_funcional';
2299  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
2300  $current_time = time();
2301  $fecha = FALSE;
2302  $ente = usuario_tiene_ente($user->uid);
2303  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
2304    $fecha = TRUE;
2305  }
2306  if (!$fecha) {
2307    muestra_mensaje($tipo_plan, $ente_planificador->tipo);
2308  }
2309  else {
2310    if ($ente->nid == $ente_planificador->nid) {
2311      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
2312    }
2313    elseif (!user_access('admin planificador')) {
2314      $fecha = FALSE;
2315    }
2316  }
2317  $output = '';
2318  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
2319  if ($datos_institucionales->nid) {
2320    $node_load = node_load($datos_institucionales->nid);
2321    //FUNCIONES
2322    $funciones = array();
2323    $headers_table = array();
2324    $headers_table[] = array(
2325      'data' => t('Función'),
2326    );
2327    $count_headers_table = 6;
2328    $headers_table[] = array(
2329      'data' => t('Tipo'),
2330    );
2331    $headers_table[] = array(
2332      'data' => t('Procesos claves'),
2333    );
2334    $headers_table[] = array(
2335      'data' => t('Productos esperados'),
2336    );
2337    $headers_table[] = array(
2338      'data' => t('Usuarios'),
2339    );
2340    $headers_table[] = array(
2341      'data' => t('Condicionamientos legales'),
2342    );
2343    if ($fecha) {
2344      $count_headers_table += 3;
2345      $headers_table[] = array(
2346        'data' => t('Operación'),
2347        'colspan' => '3'
2348      );
2349    }
2350    $funciones = datos_institucionales_obtiene_datos_funcion($ente_planificador, $datos_institucionales);
2351    $rows = array();
2352    if (is_array($funciones) && count($funciones)) {
2353      foreach($funciones as $funcion_id => $funcion_value) {
2354        $row = array();
2355        $row[] = array('data' => $funcion_value->title, );
2356        $row[] = array('data' => $funcion_value->field_funciones_tipo[0]['value'], );
2357        //procesos claves
2358        $items = array();
2359        foreach($funcion_value->field_funciones_procesos as $value) {
2360          $items[] = $value['value'];
2361        }
2362        $row[] = array('data' => theme('item_list', $items), );
2363        //Productos esperados
2364        $items = array();
2365        foreach($funcion_value->field_funciones_productos as $value) {
2366          $items[] = $value['value'];
2367        }
2368        $row[] = array('data' => theme('item_list', $items), );
2369        //usuarios
2370        $items = array();
2371        foreach($funcion_value->field_funciones_usuarios as $value) {
2372          $items[] = $value['value'];
2373        }
2374        $row[] = array('data' => theme('item_list', $items), );
2375        //Condicionamientos legales
2376        $items = array();
2377        foreach($funcion_value->field_funciones_legales as $value) {
2378          $items[] = $value['value'];
2379        }
2380        $row[] = array('data' => theme('item_list', $items), );
2381        if ($fecha) {
2382          $row[] = array(
2383            'data' => l(
2384              t('Modificar'),
2385              'planificacion/' . $ente_planificador->nid . '/datos_institucionales/funcional/' . $funcion_value->nid . '/modificar',
2386              array(
2387                'query' => array(
2388                  'destination' => 'planificacion/' . $ente_planificador->nid . '/datos_institucionales'
2389                )
2390              )
2391            ),
2392          );
2393          $row[] = array(
2394            'data' => l(
2395              t('Eliminar'),
2396              'planificacion/' . $ente_planificador->nid . '/datos_institucionales/funcional/' . $funcion_value->nid . '/eliminar',
2397              array(
2398                'query' => array(
2399                  'destination' => 'planificacion/' . $ente_planificador->nid . '/datos_institucionales'
2400                )
2401              )
2402            ),
2403          );
2404        }
2405        $rows[] = $row;
2406      }
2407    }
2408    else {
2409      $row = array();
2410      $row[] = array('data' => t('No se encontraron funcionalidades para este ente'), 'colspan' => $count_headers_table);
2411      $rows[] = $row;
2412    }
2413    $output .= theme('table', $headers_table, $rows);
2414    if ($fecha) {
2415      $output .= l(t('Registrar nueva Funcionalidad'), 'planificacion/' . $ente_planificador->nid . '/datos_institucionales/funcional/registrar');
2416    }
2417    $output .= '</div>';
2418  }
2419  return $output;
2420}
2421
2422/**
2423 * Implementation of datos_institucionales_actividades_eticas_ver().
2424 */
2425function datos_institucionales_actividades_eticas_ver($ente_planificador) {
2426  $tipo_plan = 'datos_actividades_eticas';
2427  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
2428  $current_time = time();
2429  $fecha = FALSE;
2430  $ente = usuario_tiene_ente($user->uid);
2431  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
2432    $fecha = TRUE;
2433  }
2434  if (!$fecha) {
2435    muestra_mensaje($tipo_plan, $ente_planificador->tipo);
2436  }
2437  else {
2438    if ($ente->nid == $ente_planificador->nid) {
2439      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
2440    }
2441    elseif (!user_access('admin planificador')) {
2442      $fecha = FALSE;
2443    }
2444  }
2445  $output = '';
2446  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
2447  if ($datos_institucionales->nid) {
2448    $node_load = node_load($datos_institucionales->nid);
2449    $headers_table = array();
2450    $headers_table[] = array(
2451      'data' => t('Función'),
2452    );
2453    $count_headers_table = 4;
2454    $headers_table[] = array(
2455      'data' => t('Principios'),
2456    );
2457    $headers_table[] = array(
2458      'data' => t('Valores'),
2459    );
2460    $headers_table[] = array(
2461      'data' => t('Customización'),
2462    );
2463    if ($fecha) {
2464      $count_headers_table += 1;
2465      $headers_table[] = array(
2466        'data' => t('Operación'),
2467        'colspan' => '1'
2468      );
2469    }
2470    $funciones = datos_institucionales_obtiene_datos_funcion($ente_planificador, $datos_institucionales);
2471    $rows = array();
2472    if (is_array($funciones) && count($funciones)) {
2473      foreach($funciones as $funcion_id => $funcion_value) {
2474        $row = array();
2475        $row[] = array('data' => $funcion_value->title, );
2476        //Principios
2477        $items = array();
2478        foreach($funcion_value->field_funciones_principios as $value) {
2479          $items[] = $value['value'];
2480        }
2481        $row[] = array('data' => theme('item_list', $items), );
2482        //Valores
2483        $items = array();
2484        foreach($funcion_value->field_funciones_valores as $value) {
2485          $items[] = $value['value'];
2486        }
2487        $row[] = array('data' => theme('item_list', $items), );
2488        //Customización
2489        $items = array();
2490        foreach($funcion_value->field_funciones_custom as $value) {
2491          $items[] = $value['value'];
2492        }
2493        $row[] = array('data' => theme('item_list', $items), );
2494        if ($fecha) {
2495          $row[] = array(
2496            'data' => l(
2497              t('Modificar actividades asociadas a la ética'),
2498              'planificacion/' . $ente_planificador->nid . '/datos_institucionales/funcional/' . $funcion_value->nid. '/actividades',
2499              array(
2500                'query' => array(
2501                  'destination' => 'planificacion/' . $ente_planificador->nid . '/datos_institucionales'
2502                )
2503              )
2504            ),
2505          );
2506        }
2507        $rows[] = $row;
2508      }
2509    }
2510    else {
2511      $row = array();
2512      $row[] = array('data' => t('No se encontraron funcionalidades para este ente'), 'colspan' => $count_headers_table);
2513      $rows[] = $row;
2514    }
2515    $output .= theme('table', $headers_table, $rows);
2516  }
2517  return $output;
2518}
2519
2520/**
2521 * Implementation of datos_institucionales_factores_criticos_ver().
2522 */
2523function datos_institucionales_factores_criticos_ver($ente_planificador) {
2524  $tipo_plan = 'datos_factores_criticos';
2525  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
2526  $current_time = time();
2527  $fecha = FALSE;
2528  $ente = usuario_tiene_ente($user->uid);
2529  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
2530    $fecha = TRUE;
2531  }
2532  if (!$fecha) {
2533    muestra_mensaje($tipo_plan, $ente_planificador->tipo);
2534  }
2535  else {
2536    if ($ente->nid == $ente_planificador->nid) {
2537      muestra_mensaje($tipo_plan, $ente_planificador->tipo, 0);
2538    }
2539    elseif (!user_access('admin planificador')) {
2540      $fecha = FALSE;
2541    }
2542  }
2543  $output = '';
2544  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
2545  $datos_institucionales = datos_institucionales_obtiene_datos_institucion($ente_planificador);
2546  if ($datos_institucionales->nid) {
2547    $node_load = node_load($datos_institucionales->nid);
2548    $headers_table = array();
2549    $headers_table[] = array(
2550      'data' => t('Función'),
2551    );
2552    $count_headers_table = 4;
2553    $headers_table[] = array(
2554      'data' => t('Factores críticos'),
2555    );
2556    $headers_table[] = array(
2557      'data' => t('Indicadores a corto plazo'),
2558    );
2559    $headers_table[] = array(
2560      'data' => t('Valores esperados'),
2561    );
2562    $ente_has_acceso = TRUE;
2563    if ($fecha) {
2564      $count_headers_table += 1;
2565      $headers_table[] = array(
2566        'data' => t('Operación'),
2567        'colspan' => '1'
2568      );
2569    }
2570    $funciones = datos_institucionales_obtiene_datos_funcion($ente_planificador, $datos_institucionales);
2571    $rows = array();
2572    if (is_array($funciones) && count($funciones)) {
2573      foreach($funciones as $funcion_id => $funcion_value) {
2574        $row = array();
2575        $row[] = array('data' => $funcion_value->title, );
2576        //Principios
2577        $items = array();
2578        foreach($funcion_value->field_funciones_fcriticos as $value) {
2579          $items[] = $value['value'];
2580        }
2581        $row[] = array('data' => theme('item_list', $items), );
2582        //Valores
2583        $items = array();
2584        foreach($funcion_value->field_funciones_valoresesp as $value) {
2585          $items[] = $value['value'];
2586        }
2587        $row[] = array('data' => theme('item_list', $items), );
2588        //Customización
2589        $items = array();
2590        foreach($funcion_value->field_funciones_indicadorescp as $value) {
2591          $items[] = $value['value'];
2592        }
2593        $row[] = array('data' => theme('item_list', $items), );
2594        if ($fecha) {
2595          $row[] = array(
2596            'data' => l(
2597              t('Modificar factores críticos'),
2598              'planificacion/' . $ente_planificador->nid . '/datos_institucionales/funcional/' . $funcion_value->nid. '/fcriticos',
2599              array(
2600                'query' => array(
2601                  'destination' => 'planificacion/' . $ente_planificador->nid . '/datos_institucionales'
2602                )
2603              )
2604            ),
2605          );
2606        }
2607        $rows[] = $row;
2608      }
2609    }
2610    else {
2611      $row = array();
2612      $row[] = array('data' => t('No se encontraron funcionalidades para este ente'), 'colspan' => $count_headers_table);
2613      $rows[] = $row;
2614    }
2615    $output .= theme('table', $headers_table, $rows);
2616  }
2617  return $output;
2618}
2619
2620/**
2621 * Implementation of hook_planner_items_toolbar().
2622*/
2623function datos_institucionales_planner_items_toolbar($ente_planificador, $handler_icon) {
2624  $link = array();
2625  $icon_path = entes_planificadores_toolbar_get_icon_path('planner', 'institucional', $handler_icon);
2626  $link[] = array(
2627    'path' => 'planificacion/' . $ente_planificador->nid . '/datos_institucionales',
2628    'icon_path' => $icon_path,
2629    '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)),
2630    'title' => t('Información Institucional'),
2631    'description' => t('Consultar Información Institucional del actor planificador'),
2632    'category' => 'planner',
2633  );
2634  return $link;
2635}
2636
2637/*
2638 * Implementation of hook_node_info()
2639 */
2640function datos_institucionales_node_info() {
2641  return array(
2642    'ente_institucional' => array(
2643      'name' => t('Información Institucional'),
2644      'description' => '',
2645      'has_title' => TRUE,
2646      'title_label' => 'Título',
2647      'has_body' => FALSE,
2648      'body_label' => 'Cuerpo',
2649      'module' => 'datos_institucionales',
2650    ),
2651    'ente_funciones' => array(
2652      'name' => t('Funciones'),
2653      'description' => '',
2654      'has_title' => TRUE,
2655      'title_label' => 'Nombre',
2656      'has_body' => TRUE,
2657      'body_label' => 'Cuerpo',
2658      'module' => 'datos_institucionales',
2659    ),
2660  );
2661}
2662
2663/*
2664 * Implementation of hook_form()
2665 */
2666function datos_institucionales_form(&$node, $form_state) {
2667  return node_content_form($node, $form_state);
2668}
2669
2670/*
2671 * Implementation of hook_access()
2672 */
2673function datos_institucionales_access($op, $node, $account) {
2674  global $user;
2675  if ($op == 'view') {
2676    return user_access('ver planificador') || user_access('admin planificador');
2677  }
2678  if ($op == 'create') {
2679    return (user_access('admin planificador'));
2680  }
2681  if ($op == 'delete') {
2682      return (user_access('admin planificador'));
2683  }
2684}
2685
2686/*
2687 * hook_form_alter()
2688 */
2689function datos_institucionales_form_alter(&$form, $form_state, $form_id) {
2690  //impedir que los campos sean borrados con la interfaz
2691  if ($form_id == 'content_field_overview_form' &&  $form['#type_name'] == 'ente_institucional'){
2692    $arreglo = array(
2693      'field_institucional_unidad',
2694      'field_institucional_insumos',
2695      'field_foda_o1',
2696      'field_foda_a1',
2697      'field_foda_f1',
2698      'field_foda_d1',
2699      'field_foda_o2',
2700      'field_foda_a3',
2701      'field_foda_f2',
2702      'field_foda_d2',
2703      'field_foda_o3',
2704      'field_foda_a3',
2705      'field_foda_f3',
2706      'field_foda_d3',
2707      'field_foda_o4',
2708      'field_foda_a4',
2709      'field_foda_f4',
2710      'field_foda_d4',
2711      'field_foda_o5',
2712      'field_foda_a5',
2713      'field_foda_f5',
2714      'field_foda_d5',
2715      'field_institucional_mision',
2716      'field_institucional_vision',
2717      'field_institucional_funcion',
2718      'field_institucional_ente',
2719      'field_institucional_estrat1',
2720      'field_institucional_estrat2',
2721      'field_institucional_estrat3',
2722      'field_institucional_estrat4',
2723      'field_institucional_estrat5',
2724    );
2725    foreach ($arreglo as $valor) {
2726      if (isset($form[$valor]['remove']['#value'])) {
2727        $form[$valor]['remove']['#value'] = '';
2728      }
2729    }
2730  }
2731  if ($form_id == 'content_field_remove_form' &&  $form['type_name']['#value'] == 'ente_institucional'){
2732    $arreglo = array(
2733      'field_institucional_unidad',
2734      'field_institucional_insumos',
2735      'field_foda_o1',
2736      'field_foda_a1',
2737      'field_foda_f1',
2738      'field_foda_d1',
2739      'field_foda_o2',
2740      'field_foda_a3',
2741      'field_foda_f2',
2742      'field_foda_d2',
2743      'field_foda_o3',
2744      'field_foda_a3',
2745      'field_foda_f3',
2746      'field_foda_d3',
2747      'field_foda_o4',
2748      'field_foda_a4',
2749      'field_foda_f4',
2750      'field_foda_d4',
2751      'field_foda_o5',
2752      'field_foda_a5',
2753      'field_foda_f5',
2754      'field_foda_d5',
2755      'field_institucional_mision',
2756      'field_institucional_vision',
2757      'field_institucional_funcion',
2758      'field_institucional_ente',
2759      'field_institucional_estrat1',
2760      'field_institucional_estrat2',
2761      'field_institucional_estrat3',
2762      'field_institucional_estrat4',
2763      'field_institucional_estrat5',
2764    );
2765    foreach ($arreglo as $valor) {
2766      if($form['field_name']['#value'] == $valor) {
2767        $form['actions']['submit']['#access'] = FALSE;
2768        $form['description']['#value'] = t('Acción no permitida este campo ha sido agregado por un modulo.');
2769      }
2770    }
2771  }
2772  if ($form_id == 'content_field_overview_form' &&  $form['#type_name'] == 'ente_funciones'){
2773    $arreglo = array(
2774      'field_funciones_tipo',
2775      'field_funciones_procesos',
2776      'field_funciones_productos',
2777      'field_funciones_principios',
2778      'field_funciones_valores',
2779      'field_funciones_custom',
2780      'field_funciones_usuarios',
2781      'field_funciones_legales',
2782      'field_funciones_ente',
2783      'field_funciones_fcriticos',
2784      'field_funciones_valoresesp',
2785      'field_funciones_indicadorescp',
2786      'field_funciones_institucional',
2787    );
2788    foreach ($arreglo as $valor) {
2789      if (isset($form[$valor]['remove']['#value'])) {
2790        $form[$valor]['remove']['#value'] = '';
2791      }
2792    }
2793  }
2794  if ($form_id == 'content_field_remove_form' &&  $form['type_name']['#value'] == 'ente_funciones'){
2795    $arreglo = array(
2796      'field_funciones_tipo',
2797      'field_funciones_procesos',
2798      'field_funciones_productos',
2799      'field_funciones_principios',
2800      'field_funciones_valores',
2801      'field_funciones_custom',
2802      'field_funciones_usuarios',
2803      'field_funciones_legales',
2804      'field_funciones_ente',
2805      'field_funciones_fcriticos',
2806      'field_funciones_valoresesp',
2807      'field_funciones_indicadorescp',
2808      'field_funciones_institucional',
2809    );
2810    foreach ($arreglo as $valor) {
2811      if($form['field_name']['#value'] == $valor) {
2812        $form['actions']['submit']['#access'] = FALSE;
2813        $form['description']['#value'] = t('Acción no permitida este campo ha sido agregado por un modulo.');
2814      }
2815    }
2816  }
2817}
2818
2819/**
2820 * Implementation of hook_form_content_field_edit_form_alter(): content_field_edit_form.
2821 */
2822function datos_institucionales_form_content_field_edit_form_alter(&$form, $form_state) {
2823  if ($form['#field']['type_name'] == 'ente_institucional') {
2824    $arreglo = array(
2825      '_' => t('Proceso de familiarización'),
2826      '_mv_' => t('Misión y visión'),
2827      '_obj_' => t('Objetivos'),
2828      '_foda_' => t('Analisis FODA'),
2829    );
2830    foreach($arreglo as $id => $value) {
2831      $form['widget']['datos_institucionales' . $id] = array(
2832        '#title' => t('Información intitucional (incluir en @value)', array('@value' => $value)),
2833        '#type' => 'checkbox',
2834        '#default_value' => variable_get('datos_institucionales' . $id . $form['#field']['field_name'], FALSE),
2835        '#return_value' => '1',
2836      );
2837    }
2838    $form['#submit'][] = 'datos_institucionales_ente_content_field_edit_form_submit';
2839  }
2840
2841  if ($form['#field']['type_name'] == 'ente_funciones') {
2842    $arreglo = array(
2843      '_af_' => t('Analisis Funcional'),
2844      '_act_' => t('Actividades asociadas'),
2845    );
2846    foreach($arreglo as $id => $value) {
2847      $form['widget']['datos_institucionales'] = array(
2848        '#title' => t('Información intitucional (incluir en @value)', array('@value' => $value)),
2849        '#type' => 'checkbox',
2850        '#default_value' => variable_get('ente_planificador_' . $form['#field']['field_name'], FALSE),
2851        '#return_value' => '1',
2852      );
2853    }
2854    $form['#submit'][] = 'datos_institucionales_funcion_content_field_edit_form_submit';
2855  }
2856
2857}
2858
2859/**
2860 * Implementation of datos_institucionales_ente_content_field_edit_form_submit()
2861 */
2862function datos_institucionales_ente_content_field_edit_form_submit($form, &$form_state) {
2863  $arreglo = array(
2864    '_' => t('Proceso de familiarización'),
2865    '_mv_' => t('Misión y visión'),
2866    '_obj_' => t('Objetivos'),
2867    '_foda_' => t('Analisis FODA'),
2868  );
2869  foreach($arreglo as $id => $value) {
2870    variable_set('datos_institucionales' . $id . $form_state['values']['field_name'], $form_state['values']['ente_planificador']);
2871  }
2872}
2873
2874/**
2875 * Implementation of datos_institucionales_funcion_content_field_edit_form_submit()
2876 */
2877function datos_institucionales_funcion_content_field_edit_form_submit($form, &$form_state) {
2878  $arreglo = array(
2879    '_af_' => t('Analisis Funcional'),
2880    '_act_' => t('Actividades asociadas'),
2881  );
2882  foreach($arreglo as $id => $value) {
2883    variable_set('datos_institucionales' . $id . $form_state['values']['field_name'], $form_state['values']['ente_planificador']);
2884  }
2885}
2886
2887/**
2888 * Implementation of hook_admin_items_toolbar().
2889*/
2890function datos_institucionales_admin_items_toolbar($handler_icon) {
2891  $link = array();
2892  $icon_path = entes_planificadores_toolbar_get_icon_path('admin', 'reports', $handler_icon);
2893  $link[] = array(
2894    'path' => 'reportes',
2895    'icon_path' => $icon_path,
2896    'icon' => theme('image', $icon_path, t('Reportes'), t('Reportes'), array('class' => 'handler-icon-' . $handler_icon)),
2897    'title' => t('Reportes'),
2898    'description' => t('Consultar reportes'),
2899    'category' => 'admin',
2900  );
2901  return $link;
2902
2903}
2904
2905
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.