Conjunto 02335de en sipes


Ignorar:
Fecha y hora:
08/02/2017 09:38:43 (hace 7 años)
Autor:
Cenditel <root@…>
Branches:
version-3.0
Children:
077ef38
Parents:
13316bf
Mensaje:

se modifico las funciones de acceso y envio del proyecto

Fichero:
1 editado

Leyenda

No modificado
Añadido
Eliminado
  • 0.3-modules/proyectos_operativos_seguimiento/proyecto_operativo_seguimiento.module

    r303fae2 r02335de  
    2525  *
    2626  */
     27$meses = array(
     28  0 => t('January'),
     29  1 => t('February'),
     30  2 => t('March'),
     31  3 => t('April'),
     32  4 => t('May'),
     33  5 => t('June'),
     34  6 => t('July'),
     35  7 => t('August'),
     36  8 => t('September'),
     37  9 => t('Octuber'),
     38  10 => t('November'),
     39  11 => t('December'),
     40);
     41define('MESES', json_encode($meses));
    2742
    2843/*
     
    4257 */
    4358function proyecto_operativo_seguimiento_menu() {
    44     $items = array();
    45  
     59  $items = array();
     60  $items['proyectosop/seguimiento/workflow_ahah/callback'] = array(
     61    'page callback' => 'ahah_proyectosop_seguimiento_workflow_callback',
     62    'access callback' => TRUE,
     63    'type' => MENU_CALLBACK,
     64    'file' => 'includes/proyecto/cambiodeestado_seg_proyecto_paginaconfirmacion.forms.inc',
     65  );
    4666  //----------------------------------------------------------------------------Seguimiento de acciones específicas de proyectos operativos
    47   $items['proyectosop/%node/seguimiento_proyecto'] = array(
     67  $items['proyectosop/%proyectosop/seguimiento'] = array(
    4868    'title' => 'Seguimiento',
    4969    'type' => MENU_LOCAL_TASK,
    50     'access callback' => '_proyecto_operativo_seguimiento_access',
     70    'access callback' => '_proyectooperativo_esta_aprobado',
    5171    'access arguments' => array(1),
    5272    'file' => 'includes/proyecto/seguimiento_proyecto.pages.inc',
     
    5575    'weight' => 2,
    5676  );
    57  
    58  
    59   $items['node/%node/seguimiento_proyecto'] = array(
     77  $items['proyectosop/%proyectosop/seguimiento/view'] = array(
    6078    'title' => 'Seguimiento',
    61     'type' => MENU_CALLBACK,
    62     'access callback' => '_proyecto_operativo_seguimiento_access',
     79    'type' => MENU_DEFAULT_LOCAL_TASK,
     80    'weight' => -10
     81  );
     82  $items['proyectosop/%proyectosop/seguimiento/workflow/send'] = array(
     83    'title' => 'Enviar Seguimiento',
     84    'type' => MENU_LOCAL_TASK,
     85    'access callback' => '_proyecto_seguimiento_mes_mover_estado_access',
     86    'access arguments' => array(1),
     87    'page callback' => 'drupal_get_form',
     88    'page arguments' => array('cambiodeestado_seg_proyecto_paginaconfirmacion_form', 1),
     89    'file' => 'includes/proyecto/cambiodeestado_seg_proyecto_paginaconfirmacion.forms.inc',
     90    'weight' => 2,
     91  );
     92/*
     93  $items['proyectosop/%proyectosop/seguimiento/proyecto_aes/%'] = array(
     94    'title' => 'Proyecto y AE',
     95    'type' => MENU_LOCAL_TASK,
     96    'access callback' => '_fasedeseguimiento_proyecto_y_ae_access',
     97    'access arguments' => array(1),
     98    'file' => 'includes/fase_de_seguimiento_proyecto_y_aes.pages.inc',
     99    'page callback' => 'fase_de_seguimiento_proyecto_y_aes_page',
     100    'page arguments' => array(1),
     101    'weight' => 3,
     102  );
     103*/
     104  $items['proyectosop/%proyectosop/seguimiento/proyecto'] = array(
     105    'title' => 'Proyecto',
     106    'type' => MENU_LOCAL_TASK,
     107    'access callback' => '_proyectooperativo_esta_aprobado',
    63108    'access arguments' => array(1),
    64109    'file' => 'includes/proyecto/seguimiento_proyecto.pages.inc',
     
    67112    'weight' => 2,
    68113  );
    69  
    70   $items['node/%node/seguimiento_proyecto/mes/%messegaepartida/edit'] = array(
     114
     115  $items['proyectosop/%proyectosop/seguimiento/proyecto/%messeg/edit/%'] = array(
    71116    'title' => 'Seguimiento',
    72     'type' => MENU_CALLBACK,
     117    'type' => MENU_LOCAL_TASK,
    73118    'access callback' => '_proyecto_operativo_seguimiento_modificar_mes_access',
    74     'access arguments' => array(1,4),
    75     //'file' => 'includes/proyecto/seguimiento_proyecto_datospormes_modificar.forms.inc',
     119    'access arguments' => array(1, 4),
     120    'file' => 'includes/proyecto/seguimiento_proyecto_datospormes_modificar.forms.inc',
    76121    'page callback' => 'drupal_get_form',
    77     'page arguments' => array('seguimiento_proyecto_datospormes_modificar_form', 1, 4),
     122    'page arguments' => array('seguimiento_proyecto_datospormes_modificar_form', 1, 4,6),
    78123    'weight' => 2,
    79124  );
    80  
     125
    81126  //----------------------------------------------------------------------------workflow
    82   $items['node/%node/seguimiento_proyecto/%messegaepartida/workflow/%seg_proyecto_y_aes_wk_menu'] = array(
     127  $items['proyectosop/%proyectosop/seguimiento/proyecto/%messeg/workflow'] = array(
    83128    'title' => 'Seguimiento',
    84129    'type' => MENU_LOCAL_TASK,
    85130    'access callback' => '_proyecto_seguimiento_mes_mover_estado_access',
    86     'access arguments' => array(1,3,5),
     131    'access arguments' => array(1, 4),
    87132    'file' => 'includes/proyecto/cambiodeestado_seg_proyecto_paginaconfirmacion.forms.inc',
    88133    'page callback' => 'drupal_get_form',
    89     'page arguments' => array('cambiodeestado_seg_proyecto_paginaconfirmacion_form', 1, 3, 5),
     134    'page arguments' => array('cambiodeestado_seg_proyecto_paginaconfirmacion_form', 1, 4),
    90135    'weight' => 2,
    91136  );
    92137 
    93   $items['node/%node/seguimiento_proyecto/%messegaepartida/workflow/historial'] = array(
     138  $items['proyectosop/%proyectosop/seguimiento/%messeg/history'] = array(
    94139    'title' => 'Historial Seguimiento',
    95     'type' => MENU_CALLBACK,
    96     'access callback' => '_proyecto_operativo_seguimiento_access',
     140    'type' => MENU_LOCAL_TASK,
     141    'access callback' => '_proyectooperativo_esta_aprobado',
    97142    'access arguments' => array(1),
    98143    'file' => 'includes/proyecto/historial_cambiodeestado_seg_proyecto.pages.inc',
    99144    'page callback' => 'historial_cambiodeestado_seg_proyecto_page',
    100     'page arguments' => array(1,3),
     145    'page arguments' => array(1, 4),
    101146    'weight' => 2,
    102147  );
    103  
     148//  'proyectosop/%proyectosop/seguimiento/proyecto/%year/%messegaepartida/workflow/historial'
    104149  //----------------------------------------------------------------------------Fase de Seguimiento de proyectos operativos y sus acciones especificas
    105   $items['node/%node/fase_de_seguimiento_proyecto_y_aes/mes/%messegaepartida'] = array(
    106     'title' => 'Seguimiento',
    107     'type' => MENU_CALLBACK,
     150/*
     151  $items['proyectosop/%proyectosop/fase_de_seguimiento_proyecto_y_aes'] = array(
     152    'title' => 'Proyecto y AE',
     153    'type' =>  MENU_LOCAL_TASK,
    108154    'access callback' => '_fasedeseguimiento_proyecto_y_ae_access',
    109     'access arguments' => array(1,4),
    110     //'file' => 'includes/fase_de_seguimiento_proyecto_y_aes.pages.inc',
     155    'access arguments' => array(1),
     156    'file' => 'includes/fase_de_seguimiento_proyecto_y_aes.pages.inc',
    111157    'page callback' => 'fase_de_seguimiento_proyecto_y_aes_page',
    112     'page arguments' => array(1,4),
     158    'page arguments' => array(1),
    113159    'weight' => 2,
    114160  );
    115 
     161*/
    116162    return $items;
    117163}
     
    123169 * verificar que el nodo que desea se evaluado sea de tipo 'proyectos_operativos'
    124170 */
    125 function _proyecto_operativo_seguimiento_access($node) {
    126   return (_es_tipo_proyectooperativo($node) && _proyectooperativo_esta_aprobado($node));
     171
     172function _proyecto_operativo_seguimiento_access($proyecto = 0) {
     173  return _proyectooperativo_esta_aprobado($node);
    127174} // function _proyecto_operativo_seguimiento_access
    128175
     
    130177 * verificar que el nodo que desea se evaluado sea de tipo 'proyectos_operativos', que el mes este dentro dentro del periodo de duracion, mes habilitado para seg, y periodo de seguimiento activo
    131178 */
    132 function _proyecto_operativo_seguimiento_modificar_mes_access($node, $mes=0) {
    133 
    134   return ((_es_tipo_proyectooperativo($node))&&(_mes_dentro_de_duracion_proyecto($node, $mes))&&(_mes_habilitado_para_seguimiento($mes))&&(_anno_habilitado_para_seg($node))&&(_periodo_de_seguimiento_proyecto_y_aes_esta_activo())&&_es_usuario_autenticado() &&(!_seg_esta_aprobado_proyecto($node, $mes)) &&(_estado_seg_en_nivel_de_usuario_proyecto($node, $mes)) &&(_es_elmismo_ente_proyecto_y_usuario_proyecto($node)) &&_proyectooperativo_esta_aprobado($node));
     179function _proyecto_operativo_seguimiento_modificar_mes_access($proyecto = 0, $mes = 0) {
     180  global $user;
     181  $mes_o = $mes;
     182  //esta fuera del mes de seguimiento actual
     183  if (!_mes_habilitado_para_seguimiento($mes)) {
     184    return FALSE;
     185  }
     186
     187  $mes++;//colocando parametro entre 1 y 12
     188  $mes_final = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0);
     189  //esta fuera del anho de seguimiento actual
     190  if ($proyecto->anhoproyectos_operativos != variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0)) {
     191    return FALSE;
     192  }
     193  $anno = variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0);
     194  $fecha = explode('-', $proyecto->field_proyecto_fecha_i[0]['value']);
     195  $mes_inicio = (int) $fecha[1];
     196  $year_inicio = (int) $fecha[0];
     197  $fecha = explode('-', $proyecto->field_proyecto_fecha_f[0]['value']);
     198  $mes_fin = (int) $fecha[1];
     199  $year_fin = (int) $fecha[0];
     200
     201  if (($anno == $year_inicio && $mes_inicio > $mes) || ($anno == $year_fin && $mes_fin < $mes) && $mes_final<=$m_fin) { //se establecio la condicion de años como falsa
     202    return FALSE;
     203  }
     204  //se valida el acceso al plan
     205  $current_time = time();
     206  $tipo_plan = 'proyecto_y_accionesespecificas_seguimiento';
     207  $fecha = FALSE;
     208  $ente = usuario_tiene_ente($user->uid);
     209  $ente_planificador = ente_planificador_leer_ente_planificadores($proyecto->field_proyecto_ente[0]['nid']);
     210  if ($ente_planificador->nid != $ente->nid && !user_access('admin planificador')) {
     211    return FALSE;
     212  }
     213  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
     214  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
     215    $fecha = TRUE;
     216  }
     217  if ($fecha) {
     218    if ($ente->nid == $ente_planificador->nid ) {
     219      $fecha = TRUE;
     220    }
     221    elseif (!user_access('admin planificador')) {
     222      $fecha = FALSE;
     223    }
     224  }
     225  //si no posee la transición del seguimiento no puede editar
     226  $transiciones = _obtener_transiciones_disponibles_proyecto($proyecto, $mes_o);
     227  if (!count($transiciones['transic'])  && $transiciones['estado_actual']>0 && !user_access('admin planificador')) {
     228   return FALSE;
     229  }
     230
     231  $roles_perm = TRUE;
     232  if (module_exists('workflow') && $fecha && !user_access('admin planificador')) {
     233    $estado = 0;
     234    $wid = workflow_get_workflow_for_type('proyectos_operativos');
     235    $states = workflow_get_states($wid);
     236    $roles_perm = FALSE;
     237    foreach ($states as $sid => $state) {
     238      $roles_allow = variable_get('proyectos_operativos_state_s_' . $sid, array());
     239      $roles = array_keys($user->roles);
     240      if (count($roles)) {
     241        foreach ($roles as $rol) {
     242          if ($roles_allow[$rol]) {
     243            $roles_perm = TRUE;
     244          }
     245          elseif ($rol == -1 && $node->uid == $user->uid) {
     246            $roles_perm = TRUE;
     247          }
     248        }
     249      }
     250    }
     251  }
     252/*
     253  $move = FALSE;
     254  $transition = _proyecto_seguimiento_mes_mover_estado_access($proyecto, $mes);
     255  if ($transition) {
     256    $move = TRUE;
     257  }
     258*/
     259
     260  return $fecha && $roles_perm;
     261
     262/*$transiciones_dispo = _obtener_transiciones_disponibles($proyecto, $mes);
     263  $seguimiento = _seguimiento_mesactual_proyecto_load($proyecto, $mes);
     264
     265
     266    $roles_perm = FALSE;
     267    $roles_allow = variable_get('proyectos_operativos_state_s_' . $estado, array());
     268    $roles = array_keys($user->roles);
     269    if (count($roles)) {
     270      foreach($roles as $rol) {
     271        if($roles_allow[$rol]) {
     272          $roles_perm = TRUE;
     273        }
     274        elseif ($rol == -1 && $seguimiento['uid'] == $user->uid) {
     275          $roles_perm = TRUE;
     276        }
     277      }
     278    }
     279    if (!$roles_perm) {
     280      return FALSE;
     281    }
     282*/
     283
     284/*
     285VERIFICAR si es aca donde se debe establecer el permiso para que solo los autores puedan modifciar
     286  $transiciones_dispo = _obtener_transiciones_disponibles_proyecto($proyecto, $mes);
     287  if (!count($transiciones_dispo['transic'])) {
     288    return false;
     289  }
     290*/
     291  return _proyectooperativo_esta_aprobado($proyecto);
     292/*
     293  return (
     294(_mes_dentro_de_duracion_proyecto($proyecto, $mes))&&
     295(_mes_habilitado_para_seguimiento($mes))&&
     296(_anno_habilitado_para_seg($proyecto))&&
     297(_periodo_de_seguimiento_proyecto_y_aes_esta_activo())&&
     298_es_usuario_autenticado()&&
     299(!_seg_esta_aprobado_proyecto($proyecto, $mes))&&
     300(_estado_seg_en_nivel_de_usuario_proyecto($proyecto, $mes))&&
     301(_es_elmismo_ente_proyecto_y_usuario_proyecto($proyecto))&&
     302_proyectooperativo_esta_aprobado($proyecto));
     303*/
    135304} // function _proyecto_operativo_seguimiento_modificar_mes_access
    136305
    137306/**
    138  * acceso a workflow
    139  */
    140 function _proyecto_seguimiento_mes_mover_estado_access($node, $mes=0, $estadonuevo=0) {
    141   return ((_es_tipo_proyectooperativo($node))&&(_mes_dentro_de_duracion_proyecto($node, $mes))&&(_mes_habilitado_para_seguimiento($mes))&&(_anno_habilitado_para_seg($node))&&(_periodo_de_seguimiento_proyecto_y_aes_esta_activo())&&(_es_usuario_autenticado())&&_permiso_para_realizar_transicion_estado_proyecto($node, $mes, $estadonuevo) &&(_es_elmismo_ente_proyecto_y_usuario_proyecto($node)) &&_proyectooperativo_esta_aprobado($node));
     307 * acceso a workflow accion_especifica_de_proyecto_seguimiento.module
     308 */
     309function _proyecto_seguimiento_mes_mover_estado_access($node, $mes = 0, $message = false) {
     310  global $user;
     311  $seguimiento = _seguimiento_mesactual_proyecto_load($node, $mes);
     312  // si no estan separadas el seguimiento de las AE con los proyectos
     313  if (!variable_get('accion_especifica_de_proyecto_seguimiento_aesep', 0)) {
     314    //se verifica que se haya ingresado todo el seguimiento de las acciones especificas
     315    $cuenta = 0;
     316    $count = 0;
     317    $acciones_estado = array();
     318    $cnt = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0);
     319//echo $cnt;
     320//print_r($node->field_proyecto_accion_esp);
     321    $count_proyect = 0;
     322    foreach($node->field_proyecto_accion_esp as $accion) {
     323      $accion_load = (object) $accion;
     324      $acciones_estado[$accion['nid']] = _seguimiento_mesactual_partida_ae_deproyecto_load($accion_load, $mes);
     325      //se busca manejar la cantidad total de acciones disponibles por mes, exluir las restantes
     326      $accion_load = node_load($accion['nid']);
     327      //obtener la cantidad total de las transiciones disponibles de todas las acciones para todos los meses
     328     // $transiciones = array();
     329      for ($i=$mes; $i<=$cnt; $i++) {
     330      //  $transiciones[] = _seguimiento_mesactual_partida_ae_deproyecto_load($accion_load, $i);
     331
     332        $mes_restante = $i;
     333        if (_accion_especifica_de_proyecto_seguimiento_consultar_mes_access($accion_load, $i)) {
     334          if ($transiciones_dispo = _obtener_transiciones_disponibles($accion_load, $i)) {
     335//print_r($transiciones_dispo);
     336            $count++;
     337          }
     338          else {
     339            $mes_restante = $i;
     340          }
     341          if (count($transiciones_dispo['transic'])) {
     342            $cuenta++;
     343          }
     344        }
     345      }
     346
     347      /*if ($seguimiento_proyecto = _seguimiento_mesactual_proyecto_load($node, $i)) {
     348        if ($seguimiento_proyecto['segmes']['estado']) {
     349          $count_proyecto++;
     350        }
     351      }*/
     352
     353/*
     354print '<pre>';
     355print_r($transiciones_dispo);
     356print '</pre>';
     357*/
     358
     359  /*    if ($acciones_estado[$accion['nid']]['segmes']) {
     360        $cuenta++;
     361      }
     362*/
     363
     364    }
     365    $countP = 0;
     366    $cuentaP = 0;
     367    for ($i=$mes; $i<=$cnt; $i++) {
     368      if ($transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $i)) {
     369        if (count($transiciones_dispo['transic'])  && $transiciones_dispo['estado_actual']>0) {
     370           $cuentaP++;
     371         }
     372         $countP++;
     373       }
     374    }
     375    if ($countP != $cuentaP || $cuentaP == 0) {
     376      return FALSE;
     377    }
     378    if (($count != $cuenta || $count == 0) && !user_access('admin planificador')) {
     379      return FALSE;
     380    }
     381    elseif ($message) {
     382      $text = t("El envio del seguimiento del proyecto ya se encuentra disponible");
     383      $text .= ' <b>'.l(t('Enviar el Seguimiento'), 'proyectosop/' . $node->nid. "/seguimiento/workflow/send") . '</b>';
     384      drupal_set_message($text, "warning");
     385    }
     386    /*if ($count_proyecto != $cnt) {
     387      drupal_set_message(t("Para poder realizar el envio del reporte es necesario completar el seguimiento del proyecto en los meses faltantes"), "warning");
     388      return FALSE;
     389    }*/
     390  }
     391
     392  //esta fuera del mes de seguimiento actual
     393  if (!_mes_habilitado_para_seguimiento($mes)) {
     394    return FALSE;
     395  }
     396  $mes++;//colocando parametro entre 1 y 12
     397  //esta fuera del anho de seguimiento actual
     398  $anno = variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0);
     399  if ($node->anhoproyectos_operativos != $anno) {
     400    return FALSE;
     401  }
     402  $fecha = explode('-', $node->field_proyecto_fecha_i[0]['value']);
     403  $mes_inicio = (int) $fecha[1];
     404  $anno_inicio = (int) $fecha[0];
     405  $fecha = explode('-', $node->field_proyecto_fecha_f[0]['value']);
     406  $mes_fin = (int) $fecha[1];
     407  $anno_fin = (int) $fecha[0];
     408  //el mes esta fuera del rango del proyecto
     409  if (($anno == $anno_inicio && $mes_inicio > $mes) || ($anno == $anno_fin && $mes_fin < $mes)) {
     410    return FALSE;
     411  }
     412  $ente = usuario_tiene_ente($user->uid);
     413  $ente_planificador = ente_planificador_leer_ente_planificadores($node->field_proyecto_ente[0]['nid']);
     414/*
     415  if (($ente_planificador->nid != $ente->nid)&& !user_access('admin planificador')) {
     416    return FALSE;
     417  }
     418*/
     419
     420  $current_time = time();
     421  $tipo_plan = 'proyecto_y_accionesespecificas_seguimiento';
     422  $fecha = FALSE;
     423  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador);
     424  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
     425    $fecha = TRUE;
     426  }
     427  if ($fecha) {
     428    if (user_access('admin planificador')) {
     429      $fecha = TRUE;
     430    }
     431    elseif ($ente->nid == $ente_planificador->nid && !user_access('admin planificador')) {
     432      $fecha = TRUE;
     433    }
     434    elseif (module_exists('ente_planificador_hierarchical')) {
     435      $fathers = _ente_planificador_hierarchical_get_descbyid($ente_planificador->nid, 1);
     436      $fecha = isset($fathers[$ente->nid]) ? TRUE : FALSE;
     437    }
     438  }
     439  return $fecha;
     440/*
     441  if (module_exists('workflow') && !user_access('admin planificador')) {
     442    $estado = 0;
     443    if (!$seguimiento) {
     444      $states = _proyectos_operativos_reformula_obtiene_estados();
     445      if ($states['wid']) {
     446        $estado = _workflow_creation_state($states['wid']);
     447      }
     448    }
     449    else {
     450      $estado = $seguimiento['estado'];
     451    }
     452
     453  $roles_perm = TRUE;
     454  if (module_exists('workflow') && $fecha && !user_access('admin planificador')) {
     455    $estado = 0;
     456    $wid = workflow_get_workflow_for_type('proyectos_operativos');
     457    $states = workflow_get_states($wid);
     458    $roles_perm = FALSE;
     459    foreach ($states as $sid => $state) {
     460      $roles_allow = variable_get('proyectos_operativos_state_s_' . $sid, array());
     461      $roles = array_keys($user->roles);
     462      if (count($roles)) {
     463        foreach ($roles as $rol) {
     464          if ($roles_allow[$rol]) {
     465            $roles_perm = TRUE;
     466          }
     467          elseif ($rol == -1 && $node->uid == $user->uid) {
     468            $roles_perm = TRUE;
     469          }
     470        }
     471      }
     472    }
     473  }
     474
     475  return $fecha && $roles_perm;
     476*/
     477/*
     478    $roles_perm = FALSE;
     479    $roles_allow = variable_get('proyectos_operativos_state_s_' . $estado, array());
     480    $roles = array_keys($user->roles);
     481    if (count($roles)) {
     482      foreach($roles as $rol) {
     483        if($roles_allow[$rol]) {
     484          $roles_perm = TRUE;
     485        }
     486        elseif ($rol == -1 && $seguimiento['uid'] == $user->uid) {
     487          $roles_perm = TRUE;
     488        }
     489      }
     490    }
     491    if (!$roles_perm) {
     492      return FALSE;
     493    }
     494*/
     495
     496/*
     497  return ((_es_tipo_proyectooperativo($node))&&
     498(_mes_dentro_de_duracion_proyecto($node, $mes))&&
     499(_mes_habilitado_para_seguimiento($mes))&&
     500(_anno_habilitado_para_seg($node))&&
     501(_periodo_de_seguimiento_proyecto_y_aes_esta_activo())&&
     502(_es_usuario_autenticado())&&
     503_permiso_para_realizar_transicion_estado_proyecto($node, $mes, $estadonuevo)&&
     504(_es_elmismo_ente_proyecto_y_usuario_proyecto($node)) &&
     505_proyectooperativo_esta_aprobado($node));
     506*/
    142507} // function _accion_especifica_de_proyecto_seguimiento_modificar_mes_access
    143508
     
    145510 * verificar que el nodo que desea se evaluado sea de tipo 'proyectos_operativos'
    146511 */
    147 function _fasedeseguimiento_proyecto_y_ae_access($node, $mes=0) {
    148   return (_es_tipo_proyectooperativo($node)&&(_mes_dentro_de_duracion_proyecto($node, $mes)) &&_proyectooperativo_esta_aprobado($node));
     512function _fasedeseguimiento_proyecto_y_ae_access($proyecto) {
     513  $mes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
     514  $fecha = explode('-', $proyecto->field_proyecto_fecha_i[0]['value']);
     515  $mes_inicio = (int) $fecha[1];
     516  $fecha = explode('-', $proyecto->field_proyecto_fecha_f[0]['value']);
     517  $mes_fin = (int) $fecha[1];
     518  return ((($mes_inicio <= $mes)||($mes_fin >= $mes)) && _proyectooperativo_esta_aprobado($proyecto)) && $proyecto->anhoproyectos_operativos == variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0);
    149519} // function _fasedeseguimiento_proyecto_y_ae_access
    150520
     
    205575}
    206576
    207 function _permiso_para_realizar_transicion_estado_proyecto($node, $mes = 0, $estadonuevo=0){
     577function _permiso_para_realizar_transicion_estado_proyecto($node, $mes = 0, $estadonuevo = 0){
    208578 
    209579  $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($node, $mes);
     
    264634 */
    265635
    266 function _estado_seg_en_nivel_de_usuario_proyecto($node, $mes=0){
     636function _estado_seg_en_nivel_de_usuario_proyecto($node, $mes=0) {
    267637 
    268638  //calcular el estado
    269639  $transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $mes);
     640
     641/*global $user;
     642
     643    $roles_perm = FALSE;
     644    $roles_allow = variable_get('proyectos_operativos_state_s_' . $estado, array());
     645    $roles = array_keys($user->roles);
     646    if (count($roles)) {
     647      foreach($roles as $rol) {
     648        if($roles_allow[$rol]) {
     649          $roles_perm = TRUE;
     650        }
     651        elseif ($rol == -1 && $seguimiento['uid'] == $user->uid) {
     652          $roles_perm = TRUE;
     653        }
     654      }
     655    }
     656  echo $roles_perm;
     657
     658print_r($transiciones_dispo);
     659*/
    270660  $nivel_usuario = _obtener_nivel_usuario_segun_estado($transiciones_dispo['nombre_estado_actual']);
    271661 
     
    321711 */
    322712function proyecto_operativo_seguimiento_proyecto_obtiene_links_alter(&$links, $proyecto, $acceso = FALSE) {
    323  
    324     $meses = array(
    325       0 => t('January'),
    326       1 => t('February'),
    327       2 => t('March'),
    328       3 => t('April'),
    329       4 => t('May'),
    330       5 => t('June'),
    331       6 => t('July'),
    332       7 => t('August'),
    333       8 => t('September'),
    334       9 => t('Octuber'),
    335       10 => t('November'),
    336       11 => t('December'),
    337     );
    338  
     713  $meses = json_decode(MESES);
     714  $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($proyecto);
     715  $mes_seguimiento_proyecto_y_aes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
    339716  $nodo_proyecto = node_load($proyecto->nid);
    340717
    341   if($nodo_proyecto->anhoproyectos_operativos == variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0) && _proyectooperativo_esta_aprobado($nodo_proyecto)){
    342     $mes_seguimiento_proyecto_y_aes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
    343     $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($nodo_proyecto);
    344 //echo $mes_seguimiento_proyecto_y_aes . '-' . $mes_fase_seg . '<br>';
    345     if ($mes_seguimiento_proyecto_y_aes == ($mes_fase_seg + 1)) {
     718//proyectosop/%proyectosop/seguimiento
     719  if ($mes_seguimiento_proyecto_y_aes >= ($mes_fase_seg+1)) {
     720    if($nodo_proyecto->anhoproyectos_operativos == variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0) && _proyectooperativo_esta_aprobado($nodo_proyecto)){
    346721      $links[] = array(
    347         'data' => l(t('Fase de Seguimiento ').'('.$meses[$mes_fase_seg].')', 'node/' . $nodo_proyecto->nid."/fase_de_seguimiento_proyecto_y_aes/mes/".$mes_fase_seg),
     722        'data' => l(t('Fase de Seguimiento'), 'proyectosop/' . $nodo_proyecto->nid . '/seguimiento'),
    348723        'class' => 'proyectos-operativos-faseseguimiento',
    349724      );
    350725    }
    351 
    352726  }
    353727}
     728
     729/**
     730 * Implementation of hook_node_load
     731 */
     732function proyecto_operativo_seguimiento_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
     733  switch ($op) {
     734    case 'load':
     735      if ($node->type == 'proyectos_operativos') {
     736        $additions = db_fetch_object(db_query('SELECT acumulativo FROM {seguimiento_proyecto} WHERE nid = %d', $node->nid));
     737        $node->es_acumulativo = $additions->acumulativo;
     738      }
     739    break;
     740  }
     741}
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.