source: sipei/modulos/datos_institucionales/datos_institucionales.module @ 44f67f8

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

Actualizaciones de view de proyectos estrategicos y del modulo datos_institucionales

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