source: sipes/0.3-modules/continuarproyectosopplurianual/continuarproyectosopplurianual.module @ eb502b4

stable
Last change on this file since eb502b4 was 027e3f5, checked in by José Gregorio Puentes <jpuentes@…>, 6 años ago

se corrigio el bug relacionado al crear las acciones

  • Propiedad mode establecida a 100755
File size: 29.6 KB
Línea 
1<?php
2
3  /**
4  * Sistema Integral de Planificación y Presupuesto (SIPP)
5  * @file continuarproyectosopplurianual.module
6  * Drupal part Module to Sistema Integral de Planificación y Presupuesto (SIPP)
7  * Copyright 2017 Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana (CENDITEL)
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
22  *
23  * @author Cenditel Merida - Phd. Juan Vizcarrondo
24  * @date 2017-08-09 // (a&#241;o-mes-dia)
25  * @version 0.3 // (0.1)
26  *
27  */
28
29/*
30 * _continuar_proyecto_campos_esenciales
31 * Contiene los campos esenciales por formulario
32 */
33function _continuar_proyecto_campos_esenciales(){
34  $campos_esenciales = array(
35    'proyectos_operativos_proyecto_basico_form' => array(
36      'field_proyecto_monto_anual' => 'field_proyecto_monto_anual',
37      'field_proyecto_total' => 'field_proyecto_total',
38      'field_proyecto_correo' => 'field_proyecto_correo',
39      'field_proyecto_fecha_i' => 'field_proyecto_fecha_i',
40      'field_proyecto_fecha_f' => 'field_proyecto_fecha_f',
41      'field_proyecto_monto_ant' => 'field_proyecto_monto_ant',
42      'field_proyecto_monto_prox' => 'field_proyecto_monto_prox',
43      'field_proyecto_plurianual' => 'field_proyecto_plurianual',
44    ),
45    'proyectos_operativos_mcti_proyecto_generales_form' => array(
46    ),
47    'proyectos_operativos_proyecto_indicadores_form' => array(
48      'field_proyecto_meta_fisica' => 'field_proyecto_meta_fisica',
49    ),
50    'proyectos_operativos_accion_especifica_crear_form' => array(
51      'field_accion_esp_ponderacion' => 'field_accion_esp_ponderacion',
52      'field_accion_esp_fechai' => 'field_accion_esp_fechai',
53      'field_accion_esp_fechaf' => 'field_accion_esp_fechaf',
54      'field_accion_esp_metaf' => 'field_accion_esp_metaf',
55      'field_accion_esp_programacion' => 'field_accion_esp_programacion',
56    ),
57  );
58  //se agregan los campos de financiamiento
59  $arreglo_financiamiento = array();
60  $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4);
61  if ($accion_especifica_number_fields > 0) {
62    for($i = 0; $i < $accion_especifica_number_fields; $i++) {
63      foreach(variable_get('accion_especifica_financiamiento_options_' . $i, array()) as $field_id => $field) {
64        $campos_esenciales['proyectos_operativos_accion_especifica_crear_form'][$field_id] = $field_id;
65      }
66    }
67  }
68  return $campos_esenciales;
69}
70
71/*
72 * hook_form_alter
73 */
74function continuarproyectosopplurianual_form_alter(&$form, $form_state, $form_id) {
75  if ($form_id == 'proyectos_operativos_admin_settings') {
76    for($i = 0; $i <= 10; $i++) {
77      $years[$i] = $i;
78    }
79    $form['continuarproyectosopplurianual'] = array(
80      '#type' => 'fieldset',
81      '#title' => t('Proyectos Plurianuales'),
82      '#collapsible' => TRUE,
83      '#collapsed' => FALSE,
84    );
85    $form['continuarproyectosopplurianual']['continuarproyectosopplurianual_anho_creacion'] = array(
86      '#title' => t('Permitir continuar Proyectos Plurianuales (años) anteriores'),
87      '#type' => 'select',
88      '#default_value' => variable_get('continuarproyectosopplurianual_anho_creacion', 0),
89      '#options' => $years,
90    );
91    $form['continuarproyectosopplurianual']['continuarproyectosopplurianual_aes'] = array(
92      '#type' => 'checkbox',
93      '#title' => t('Restringir fecha de las AES'),
94      '#description' => t('Restringir las AES dentro del año de ejecución del proyecto (clonar)'),
95      '#default_value' => variable_get('continuarproyectosopplurianual_aes', 0),
96    );
97    $form['continuarproyectosopplurianual']['continuarproyectosopplurianual_mcti'] = array(
98      '#type' => 'checkbox',
99      '#title' => t('Restringir fecha de las AES'),
100      '#description' => t('Permitir editar el campo de Políticas Pireccionales'),
101      '#default_value' => variable_get('continuarproyectosopplurianual_mcti', 1),
102    );
103  }
104  if (strstr($form_id, 'proyectos_operativos_proyecto_') || $form_id == 'proyectos_operativos_accion_especifica_crear_form') {
105    $proyecto = $form['#node']->type == 'proyectos_operativos'? $form['#node'] : $form['#proyecto'];
106    $campo = $form['#node']->type == 'proyectos_operativos'? 'field_proyecto_plurianualb' : 'field_ae_plurianualb';
107    $plurianual = $form['#node']->nid && ($proyecto->field_proyecto_plurianual[0]['value'] == variable_get('proyectos_operativos_plurianual', 0) && $form['#node']->{$campo}[0]['nid'] && is_numeric($form['#node']->{$campo}[0]['nid']) && !$form['#node']->{$campo}[0]['nid'] != $form['#node']->nid);
108    $campos_disable = array();
109    if (!$plurianual) {
110      return;
111    }
112      $campos = _continuar_proyecto_get_fieldsbyformstep();
113      $campos_form = $campos[$form['#node']->type][$form_id];
114      //se agregar el campo de fecha de finalización para que pueda ser modificado
115      if ($form_id == 'proyectos_operativos_proyecto_basico_form') {
116        $campos_form['field_proyecto_fecha_f'] = 'field_proyecto_fecha_f';
117        //$campos_form['field_proyecto_pndes'] = 'field_proyecto_pndes';
118      }
119      elseif($form_id == 'proyectos_operativos_accion_especifica_crear_form') {
120        $campos_form['field_accion_esp_fechaf'] = 'field_accion_esp_fechaf';
121      }
122
123    if (count($campos_form)) {
124      $proyectos_operativos_fields = array();
125      $campos_esenciales = _continuar_proyecto_campos_esenciales();
126      $form['#campos_esenciales'] = array();
127
128
129
130      $display_ids = array();
131      foreach($form['#proyectos_operativos_fields'] as $id) {
132        if (isset($form[$id]) && !isset($campos_form[$id]) && !isset($display_ids[$id])) {
133          if (isset($campos_esenciales[$form_id][$id])) {
134            $form['#campos_esenciales'][$id] = $id;
135          }
136          $display_ids[$id] = $id;
137          $titulo = $form['#field_info'][$id]['widget']['label'];
138          unset($form[$id]);
139          $vid = isset($form['#field_info'][$id]['vid']) && is_numeric($form['#field_info'][$id]['vid'])? $form['#field_info'][$id]['vid'] : 0;
140          $items = array();
141          $inputs = array();
142          $sql_implode = array();
143          $options = array();
144          if ($form['#field_info'][$id]['widget']['type'] == 'optionwidgets_select') {
145
146            $list = explode("\n", $form['#field_info'][$id]['allowed_values']);
147            $list = array_map('trim', $list);
148            $list = array_filter($list, 'strlen');
149            foreach ($list as $opt) {
150              // Sanitize the user input with a permissive filter.
151              $opt = content_filter_xss($opt);
152              if (strpos($opt, '|') !== FALSE) {
153                list($key, $value) = explode('|', $opt);
154                $options[$key] = (isset($value) && $value !=='') ? $value : $key;
155              }
156              else {
157                $options[$cid][$opt] = $opt;
158              }
159            }
160          }
161          foreach($form['#node']->{$id} as $valores) {
162            if (isset($form['#field_info'][$id]['columns']['nid'])){
163              foreach($valores as $id1 => $valor){
164                $inputs[] = $valor;
165                $sql_implode[] = '%d';
166              }
167            }
168            else {
169              foreach($valores as $id1 => $valor){
170                if ($vid) {
171                  $padres = $valor && is_numeric($valor)? taxonomy_get_parents_all($valor) : array();
172                  $lista = array();
173                  foreach($padres as $term){
174                    $lista[] = $term->name;
175                  }
176                  $items[] = implode(' > ', $lista);
177                }
178                else{
179                  $display_ids[$id] = $id;
180                  $mostrar = isset($options[$valor])? $options[$valor] : $valor;
181                  $items[] = $mostrar;
182                }
183             }
184            }
185            if (count($inputs)) {
186              $sql = 'SELECT nid, title FROM {node} WHERE nid in(' . implode(', ', $sql_implode) . ')';
187              $result = db_query($sql, $inpunts);
188              while($nodo = db_fetch_object($result)) {
189                $items[] = $nodo->title;
190              }
191            }
192          }
193          $display = count($items) > 1? theme('item_list', $items) : implode(' ',$items);
194          $form[$id] = array(
195            '#value' => '<div id="edit-field-proyecto-' . $id . '-0-value-wrapper" class="form-item"><label for="edit-field-proyecto-' . $id . '-0-value">' . $titulo . '</label>' . $display . '</div>',
196            '#access' => TRUE,
197          );
198        }
199        elseif (!isset($display_ids[$id])) {
200          $proyectos_operativos_fields[$id] = $id;
201        }
202      }
203      $form['#proyectos_operativos_fields'] = $proyectos_operativos_fields;
204      if (count($form['#campos_esenciales'])) {
205        $form['#validate'][] = 'continuarproyectosopplurianual_disable_form_validate';
206      }
207
208
209      $continuarproyectosopplurianual_path = drupal_get_path('module', 'continuarproyectosopplurianual');
210      drupal_add_js($continuarproyectosopplurianual_path . '/js/continuarproyectosopplurianual.js');
211      drupal_add_js(array('continuarproyectosopplurianual' => array('plurianual' => $campos_disable)), 'setting');
212    }
213    $form['#proyectos_operativos_fields'] = $proyectos_operativos_fields;
214    $form['#continuarproyectosopplurianual'] = $campos_disable;
215  }
216}
217
218/*
219 * Implementation of continuarproyectosopplurianual_disable_form_validate()
220 * validar proyectos.
221 */
222function continuarproyectosopplurianual_disable_form_validate($form, &$form_state) {
223  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
224  if ($op == t('Cancelar')) {
225    return;
226  }
227  foreach($form['#campos_esenciales'] as $id) {
228    $form_state['values'][$id] == $form['#node']->{$id};
229  }
230}
231/*
232 * Implementation of hook_menu()
233 */
234function continuarproyectosopplurianual_menu() {
235  //agregar proyecto operativo
236  $items['continuarproyectosopplurianual/%proyectosop'] = array(
237    'title' => t('Continuar Proyecto Plurianual'),
238    'page callback' => 'drupal_get_form',
239    'page arguments' => array('continuarproyectosopplurianual_agregar_proyectos_operativo_form', 1),
240    'access callback' => '_proyectosopplurianual_access_add',
241    'access arguments' => array(1),
242    'weight' => -7,
243    'type' => MENU_NORMAL_ITEM,
244  );
245  return $items;
246}
247
248/**
249 * Implementation of _proyectos_operativos_access_editar()
250 * Menu access control callback. Determina si un usuario tiene acceso a editar un proyecto
251 */
252function _proyectosopplurianual_access_add($node) {
253  global $user;
254  if ($node->field_proyecto_plurianual[0]['value'] != variable_get('proyectos_operativos_plurianual', 0)) {
255    return FALSE;
256  }
257  if (module_exists('workflow')) {
258    $estado_aprobado = variable_get('proyectos_operativos_state_aprobado', NULL);
259    if ($node->_workflow != $estado_aprobado) {
260      return FALSE;
261    }
262  }
263  //se verifica que no exista un proyecto plurianual ya creado para este periodo
264  $sql = 'SELECT count(n.nid) as nidb FROM {content_type_proyectos_operativos} AS p INNER JOIN {node} AS n ON n.nid = p.nid AND n.vid = p.vid INNER JOIN {proyectos_operativos} AS po ON po.nid = p.nid WHERE (p.field_proyecto_plurianualb_nid = %d OR n.nid = %d) AND po.year = %d';
265  $inpunts = array();
266  $inpunts[] = $node->nid;
267  $inpunts[] = $node->nid;
268  $year_p = variable_get('proyectos_operativos_anho_creacion', 0);
269  $inpunts[] = $year_p;
270  $result = db_query($sql, $inpunts);
271  $proy = db_fetch_object($result);
272  if ($proy->nidb > 0) {
273    return FALSE;
274  }
275  $umbral = $year_p - $node->anhoproyectos_operativos;
276  if ($umbral <= 0 || $umbral > variable_get('continuarproyectosopplurianual_anho_creacion', 0)) {
277    return FALSE;
278  }
279  return $node->field_proyecto_ente[0]['nid'] && _proyectos_operativos_edita_datos_agregar($node->field_proyecto_ente[0]['nid']);
280}
281
282/**
283 * Implementation of continuarproyectosopplurianual_agregar_proyectos_operativo_form().
284 * Formulario de para agregar nuevo proyecto operativo.
285 */
286function continuarproyectosopplurianual_agregar_proyectos_operativo_form(&$form_state, $proyecto = 0) {
287  global $user;
288  //add breadcrumb
289  $breadcrumb = array();
290  $breadcrumb[] = l(t('Home'), '<front>');
291  $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
292  if ($proyecto->nid) {
293    $breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid);
294  }
295  $breadcrumb[] = t('Continuar Proyecto Plurianual'); // Link to current URL
296  drupal_set_breadcrumb($breadcrumb);
297  $current_time = time();
298  $tipo_plan = 'proyectos_operativos_formular';
299  $ente_planificador = 0;
300  if($proyecto && $proyecto->nid && $proyecto->field_proyecto_ente[0]['nid']) {
301    $ente_planificador = ente_planificador_leer_ente_planificadores($proyecto->field_proyecto_ente[0]['nid']);
302  }
303  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
304  $fecha = FALSE;
305  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
306    $fecha = TRUE;
307  }
308  if (!$fecha) {
309    muestra_mensaje($tipo_plan, $ente_planificador);
310  }
311  if ($fecha && $ente->nid) {
312    muestra_mensaje($tipo_plan, $ente_planificador, 0);
313  }
314  $fechas_validacion = array(
315    'inicio' => '',
316    'fin' => '',
317  );
318  $form = array();
319  $form['#node'] = $proyecto;
320  //Se obtienen las AE disponibles para el nuevo proyecto plurianual
321  $sql = "SELECT aet.field_accion_titulo_value AS titulo, aet.nid FROM {content_type_proyectos_operativos} AS po INNER JOIN {content_field_proyecto_accion_esp} AS ae ON ae.nid = po.nid AND ae.vid = po.vid INNER JOIN {node} AS n ON n.nid = ae.field_proyecto_accion_esp_nid INNER JOIN {content_type_accion_especifica} AS aet ON aet.nid = n.nid AND aet.vid = n.vid WHERE po.field_proyecto_plurianualb_nid = %d OR (po.nid = %d AND po.vid = %d)";
322  $inpunts = array();
323  $inpunts[] = $proyecto->nid;
324  $inpunts[] = $proyecto->nid;
325  $inpunts[] = $proyecto->vid;
326  if (variable_get('continuarproyectosopplurianual_aes', 0)) {
327    $year = variable_get('proyectos_operativos_anho_creacion', 0);
328    $sql .= " aet.field_accion_esp_fechai_value <= '%s' AND  aet.field_accion_esp_fechaf_value >= '%s'";
329    $inpunts[] = ($year + 1) . '-01-01 00:00:00';
330    $inpunts[] = ($year - 1) . '-12-31 00:00:00';
331  }
332  $result = db_query($sql, $inpunts);
333  $aes = array();
334  $form['ae'] = array(
335    '#type' => 'fieldset',
336    '#title' => t('Acciones Específicas'),
337    '#description' => t('Acciones Específicas a incorporar en el proyecto'),
338    '#collapsible' => TRUE,
339    '#collapsed' => FALSE,
340  );
341  while($ae = db_fetch_object($result)) {
342    $form['ae']['ae_' . $ae->nid] = array(
343      '#type' => 'checkbox',
344      '#title' => check_plain($ae->titulo),
345      '#default_value' => FALSE,
346    );
347    $aes[$ae->nid] = $ae->titulo;
348  }
349  $form['#ae'] = $aes;
350  $form['buttons']['registrar'] = array(
351    '#type' => 'submit',
352    '#default_value' => t('Agregar Proyecto Plurianual'),
353    '#weight' => 100,
354  );
355  $form['buttons']['cancelar'] = array(
356    '#type' => 'submit',
357    '#default_value' => t('Cancelar'),
358    '#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'),
359    '#weight' => 101,
360  );
361  $form['#submit'] = array('continuarproyectosopplurianual_agregar_proyectos_operativo_form_submit');
362  return $form;
363}
364
365/*
366 * Implementation of proyectos_operativos_proyecto_basico_form_validate()
367 * Validar formulario de datos basicos (proyectos operativos).
368 */
369function continuarproyectosopplurianual_agregar_proyectos_operativo_form_validate($form, &$form_state) {
370  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
371  if ($op == t('Cancelar')) {
372    return;
373  }
374}
375
376/*
377 * Implementation of continuarproyectosopplurianual_agregar_proyectos_operativo_form_submit().
378 * Guardar el nuevo proyecto operativo.
379 */
380function continuarproyectosopplurianual_agregar_proyectos_operativo_form_submit($form, &$form_state) {
381  global $user;
382  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
383  if ($op == t('Cancelar')) {
384    $form_state['redirect'] = 'proyectos_operativos';
385    return;
386  }
387  module_load_include('inc', 'node', 'node.pages');
388  $proyecto = $form['#node'];
389  if (!isset($proyecto->field_proyecto_plurianualb) || !$proyecto->field_proyecto_plurianualb[0]['nid'] || !is_numeric($proyecto->field_proyecto_plurianualb[0]['nid'])) {
390    $proyecto->field_proyecto_plurianualb[0]['nid'] = $proyecto->nid;
391    node_save($proyecto);
392  }
393  //se crea el nuevo proyecto plurianual
394  $nuevo_proyecto = _continuar_clonar_proyecto_aes($proyecto->nid);
395  if ($nuevo_proyecto && $nuevo_proyecto->nid) {
396    $new_aes = array();
397    $new_aes_title = array();
398    foreach($form['#ae'] as $nid => $title) {
399      if ($form_state['values']['ae_' . $nid]) {
400        $nueva_ae = _continuar_clonar_proyecto_aes($nid, $nuevo_proyecto->nid);
401        if ($nueva_ae && $nueva_ae->nid) {
402          $new_aes[]['nid'] = $nueva_ae->nid;
403          $new_aes_title[$nueva_ae->nid] = $title;
404        }
405      }
406    }
407    if (count($new_aes_title)) {
408      $nuevo_proyecto->field_proyecto_accion_esp = $new_aes;
409      $nuevo_proyecto->log = t('Se agregarón las AE: @aes', array('@aes' => theme('item_list', $new_aes_title)));
410      $nuevo_proyecto->revision = 1;
411      node_save($nuevo_proyecto);
412    }
413  }
414  if ($_REQUEST['destination']) {
415    $form_state['redirect'] = url('proyectosopedit/' . $nuevo_proyecto->nid,
416      array(
417        'query' => array(
418          'destination' => $_REQUEST['destination'],
419         ),
420         'absolute' => TRUE,               
421      )
422    );
423    unset($_REQUEST['destination']);
424  }
425  else {
426    // add redirect
427    $form_state['redirect'] = 'proyectosopedit/' . $nuevo_proyecto->nid;
428  }
429}
430
431/**
432 * Implementation of _continuar_clonar_proyecto_aes().
433 * clonar un proyecto o ae.
434 */
435function _continuar_clonar_proyecto_aes($nid = 0, $nodefather = 0) {
436  global $user;
437  $node_load = 0;
438  $seudonimo = array(
439    'proyectos_operativos' => 'proyecto',
440    'accion_especifica' => 'ae',
441  );
442  if ($nid && is_numeric($nid)) {
443    $node = node_load($nid);
444    $campos = _continuar_proyecto_get_fieldsbyformstep();
445    if (isset($campos[$node->type])) {
446      $node_load = clone $node;
447      unset($node_load->nid);
448      unset($node_load->vid);
449      unset($node_load->created);
450      unset($node_load->changed);
451      unset($node_load->revision_uid);
452      unset($node_load->path);
453      unset($node_load->data);
454      unset($node_load->current_revision_id);
455      unset($node_load->is_current);
456      unset($node_load->num_revisions);
457      $node_load->log = t('Se Agregó @tipo como pluiranual de (@nombre)', array('@nombre' => check_plain($node->title),'@tipo' => $node->type));
458      $node_load->uid = $user->uid;
459      $node_load->revision = 1;
460      foreach($campos[$node->type] as $tipo => $campo) {
461        foreach($campo as $id) {
462          unset($node_load->{$id});
463        }
464      }
465      $node_load->{'field_' . $seudonimo[$node->type] . '_plurianualb'} = array();
466      $enlace = array();
467      $valor = isset($node->{'field_' . $seudonimo[$node->type] . '_plurianualb'}[0]['nid'])? $node->{'field_' . $seudonimo[$node->type] . '_plurianualb'}[0]['nid'] : 0;
468      $enlace[]['nid'] = ($valor && is_numeric($valor))? $valor : $node->nid;
469      $node_load->{'field_' . $seudonimo[$node->type] . '_plurianualb'} = $enlace;
470      if ($node->type == 'accion_especifica') {
471        $enlace = array();
472        $valor = isset($node->{'field_ae_proyectobase'}[0]['nid'])? $node->{'field_ae_proyectobase'}[0]['nid'] : 0;
473        $enlace[]['nid'] = ($valor && is_numeric($valor)) ? $valor : $node->field_accion_esp_proyecto[0]['nid'];
474        $node_load->field_ae_proyectobase = $enlace;
475        if ($nodefather && is_numeric($nodefather)) {
476          $node_load->field_accion_esp_proyecto = array();
477          $node_load->field_accion_esp_proyecto[]['nid'] = $nodefather;
478        }
479      }
480      elseif($node->type == 'proyectos_operativos') {
481        $node_load->anhoproyectos_operativos = variable_get('proyectos_operativos_anho_creacion', 0);
482      }
483      node_save($node_load);
484    }
485  }
486  return $node_load;
487}
488
489/**
490 * Implementation of _continuar_proyecto_get_fieldsbyformstep().
491 * obtiene los campos a editar en un proyecto o ae.
492 */
493function _continuar_proyecto_get_fieldsbyformstep(){
494  $arreglo = array(
495    'proyectos_operativos' => array(
496      'proyectos_operativos_proyecto_basico_form' => array(
497        'field_proyecto_pndes' => 'field_proyecto_pndes',
498        'field_proyecto_causas' => 'field_proyecto_causas',
499        'field_proyecto_problemas' => 'field_proyecto_problemas',
500        'field_proyecto_justificacion' => 'field_proyecto_justificacion',
501        //update 6000
502        'field_proyecto_alcance' => 'field_proyecto_alcance',
503        'field_lineas_estrategicas' => 'field_lineas_estrategicas',
504        'field_poli_ministeriales' => 'field_poli_ministeriales',
505        'field_proyectos_programas' => 'field_proyectos_programas',
506        'field_montos_otras_moneds' => 'field_montos_otras_moneds',
507        'field_proyecto_fecha_i' => 'field_proyecto_fecha_i',
508        'field_proyecto_fecha_f' => 'field_proyecto_fecha_f',
509        'field_proyecto_monto_ant' => 'field_proyecto_monto_ant',
510        'field_proyecto_monto_anual' => 'field_proyecto_monto_anual',
511        'field_proyecto_monto_prox' => 'field_proyecto_monto_prox',
512        'field_proyecto_total' => 'field_proyecto_total',
513        'field_proyecto_nombre_gere' => 'field_proyecto_nombre_gere',
514        'field_proyecto_cedul_gere' => 'field_proyecto_cedul_gere',
515        'field_proyecto_corre_gere' => 'field_proyecto_corre_gere',
516        'field_proyecto_telef_gere' => 'field_proyecto_telef_gere',
517        'field_proyecto_nom_r_tec' => 'field_proyecto_nom_r_tec',
518        'field_proyecto_ced_r_tec' => 'field_proyecto_ced_r_tec',
519        'field_proyecto_cor_r_tec' => 'field_proyecto_cor_r_tec',
520        'field_proyecto_tel_r_tec' => 'field_proyecto_tel_r_tec',
521        'field_proyecto_und_r_tec' => 'field_proyecto_und_r_tec',   
522        'field_proyecto_nom_r_reg' => 'field_proyecto_nom_r_reg',
523        'field_proyecto_ced_r_reg' => 'field_proyecto_ced_r_reg',
524        'field_proyecto_cor_r_reg' => 'field_proyecto_cor_r_reg',
525        'field_proyecto_tel_r_reg' => 'field_proyecto_tel_r_reg',
526        'field_proyecto_nom_r_adm' => 'field_proyecto_nom_r_adm',
527        'field_proyecto_ced_r_adm' => 'field_proyecto_ced_r_adm',
528        'field_proyecto_cor_r_adm' => 'field_proyecto_cor_r_adm',
529        'field_proyecto_tel_r_adm' => 'field_proyecto_tel_r_adm',
530        'field_proyecto_und_r_adm' => 'field_proyecto_und_r_adm',
531        'field_proyecto_ubicaci_inter' => 'field_proyecto_ubicaci_inter',
532        'field_proyecto_codigo_comu' => 'field_proyecto_codigo_comu',
533        'field_proyecto_nombres_cum' => 'field_proyecto_nombres_cum',
534        'field_proyecto_ubicaci_comu' => 'field_proyecto_ubicaci_comu',
535        'field_proyecto_poan' => 'field_proyecto_poan',
536      ),
537      'proyectos_operativos_proyecto_generales_form' => array(
538        'field_proyecto_emdirecto' => 'field_proyecto_emdirecto',
539        'field_proyecto_efdirecto' => 'field_proyecto_efdirecto',
540        'field_proyecto_emindirecto' => 'field_proyecto_emindirecto',
541        'field_proyecto_efindirecto' => 'field_proyecto_efindirecto',     
542        'field_proyecto_relacion' => 'field_proyecto_relacion',
543        'field_proyecto_beneficiario' => 'field_proyecto_beneficiario',
544        'field_proyectos_masculino_d' => 'field_proyectos_masculino_d',
545        'field_proyectos_femenino_d' => 'field_proyectos_femenino_d',
546        'field_proyectos_masculino_i' => 'field_proyectos_masculino_i',
547        'field_proyectos_femenino_i' => 'field_proyectos_femenino_i',
548      ),
549      'proyectos_operativos_proyecto_indicadores_form' => array(
550        //'field_proyecto_pndes' => 'field_proyecto_pndes',
551        //'field_proyecto_causas' => 'field_proyecto_causas',
552        //'field_proyecto_problemas' => 'field_proyecto_problemas',
553        //'field_proyecto_justificacion' => 'field_proyecto_justificacion',
554        //'field_proyecto_alcance' => 'field_proyecto_alcance',
555        'field_proyecto_descripcion_bien' => 'field_proyecto_descripcion_bien',
556        'field_proyecto_unidadm' => 'field_proyecto_unidadm',
557        'field_proyecto_meta_m' => 'field_proyecto_meta_m',
558        'field_proyecto_meta_f' => 'field_proyecto_meta_f',
559        'field_proyecto_meta_fisica' => 'field_proyecto_meta_fisica',
560        'field_progrmcn_anual_prog' => 'field_progrmcn_anual_prog',
561        'field_progrmcn_anual_unid' => 'field_progrmcn_anual_unid',
562        'field_progrmcn_anual_cap' => 'field_progrmcn_anual_cap',
563        'field_progrmcn_anual_anho' => 'field_progrmcn_anual_anho',
564        'field_balnc_progrmn_anu' => 'field_balnc_progrmn_anu',
565        'field_balance_fuente' => 'field_balance_fuente',
566        'field_balanc_tipofuent' => 'field_balanc_tipofuent',
567        'field_balanc_tipoprod' => 'field_balanc_tipoprod',
568        'field_balanc_unidmed' => 'field_balanc_unidmed',
569        'field_balanc_capacid' => 'field_balanc_capacid',
570        'field_balanc_anho' => 'field_balanc_anho',
571        'field_tipo_factores' => 'field_tipo_factores',
572        'field_factor_impact_multifc' => 'field_factor_impact_multifc',
573        'field_factor_segun_origen' => 'field_factor_segun_origen',
574        'field_factor_impact_multiog' => 'field_factor_impact_multiog',
575        'field_factor_naturaleza' => 'field_factor_naturaleza',
576        'field_factor_intensidad' => 'field_factor_intensidad',
577        'field_factor_extension' => 'field_factor_extension',
578        'field_factor_momento' => 'field_factor_momento',
579        'field_factor_persistencia' => 'field_factor_persistencia',
580        'field_factor_reversibilidad' => 'field_factor_reversibilidad',
581        'field_factor_sinergismo' => 'field_factor_sinergismo',
582        'field_factor_acumulacion' => 'field_factor_acumulacion',
583        'field_factor_relacion' =>'field_factor_relacion',
584        'field_factor_recuperabilidad' => 'field_factor_recuperabilidad',
585        'field_factor_importancia' => 'field_factor_importancia',
586        'field_factor_medids_impact' => 'field_factor_medids_impact',
587
588
589        'field_proyecto_sa_descripcion' => 'field_proyecto_sa_descripcion',
590        'field_proyecto_sa_formulai' => 'field_proyecto_sa_formulai',
591        'field_proyecto_sa_fuentei' => 'field_proyecto_sa_fuentei',
592        'field_proyecto_sa_fecha' => 'field_proyecto_sa_fecha',
593        'field_proyecto_so_descripcion' => 'field_proyecto_so_descripcion',
594        'field_proyecto_tiempoi' => 'field_proyecto_tiempoi',
595
596      ),
597      'otros' => array( 
598        'field_proyecto_esp_monto_finan' => 'field_proyecto_esp_monto_finan',
599        'field_proyecto_esp_total_fuent' => 'field_proyecto_esp_total_fuent',
600      ),
601    ),
602    'accion_especifica' => array(
603      'proyectos_operativos_accion_especifica_crear_form' => array(
604        'field_accion_esp_fechai' => 'field_accion_esp_fechai',
605        'field_accion_esp_fechaf' => 'field_accion_esp_fechaf',
606        'field_accion_esp_ejecutor' => 'field_accion_esp_ejecutor',
607        'field_accion_esp_bien' => 'field_accion_esp_bien',
608        'field_accion_esp_localizacion' => 'field_accion_esp_localizacion',
609        'field_accion_esp_latitud' => 'field_accion_esp_latitud',
610        'field_accion_esp_longitud' => 'field_accion_esp_longitud',
611        'field_accion_esp_metaf' => 'field_accion_esp_metaf',
612        'field_accion_esp_ponderacion' => 'field_accion_esp_ponderacion',
613        'field_accion_esp_meta_m' => 'field_accion_esp_meta_m',
614        'field_accion_esp_meta_f' => 'field_accion_esp_meta_f',
615        'field_accion_esp_ponderacion' => 'field_accion_esp_ponderacion',
616        'field_accion_esp_programacion' => 'field_accion_esp_programacion',
617        'field_accion_esp_unidadm' => 'field_accion_esp_unidadm',
618        'field_ae_finamonedas' => 'field_ae_finamonedas',
619      ),
620      'otros' => array( 
621        'field_accion_esp_monto_finan' => 'field_accion_esp_monto_finan',
622        'field_accion_esp_total_fuent' => 'field_accion_esp_total_fuent',
623        'field_accion_esp_total_meta' => 'field_accion_esp_total_meta',
624      ),
625    ),
626  );
627  if (variable_get('continuarproyectosopplurianual_mcti', 1)) {
628    $arreglo['proyectos_operativos']['proyectos_operativos_proyecto_basico_form']['field_proyecto_mcti'] = 'field_proyecto_mcti';
629  }
630  //se agregan los campos de financiamiento
631  $arreglo_financiamiento = array();
632  $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4);
633  if ($accion_especifica_number_fields > 0) {
634    for($i = 0; $i < $accion_especifica_number_fields; $i++) {
635      foreach(variable_get('accion_especifica_financiamiento_options_' . $i, array()) as $field_id => $field) {
636        $arreglo['accion_especifica']['proyectos_operativos_accion_especifica_crear_form'][$field_id] = $field_id;
637      }
638    }
639  }
640
641  return $arreglo;
642}
643
644/*
645 * Implementation of hook_proyecto_obtiene_links_alter()
646*/
647function continuarproyectosopplurianual_proyecto_obtiene_links_alter(&$links, $proyecto, $acceso = FALSE) {
648//field_proyecto_plurianual
649  if (_proyectosopplurianual_access_add($proyecto)) {
650    $nid_proyecto_base = (isset($proyecto->field_proyecto_plurianualb[0]['nid']) && is_numeric($proyecto->field_proyecto_plurianualb[0]['nid']) && $proyecto->field_proyecto_plurianualb[0]['nid'])? $proyecto->field_proyecto_plurianualb[0]['nid'] : $proyecto->nid;
651    $links['proyecto_plurianual'] = array(
652      'data' => l(t('Continuar Proyecto Plurianual'), 'continuarproyectosopplurianual/' . $nid_proyecto_base),
653      'class' => 'continuar-proyectos-operativos',
654    );
655  }
656}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.