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ñ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 | */ |
---|
33 | function _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 | */ |
---|
74 | function 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 | */ |
---|
222 | function 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 | */ |
---|
234 | function 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 | */ |
---|
252 | function _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 | */ |
---|
286 | function 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 | */ |
---|
369 | function 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 | */ |
---|
380 | function 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 | */ |
---|
435 | function _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 | */ |
---|
493 | function _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 | */ |
---|
647 | function 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 | } |
---|