Conjunto d164b29 en sipes


Ignorar:
Fecha y hora:
12/05/2017 17:30:17 (hace 7 años)
Autor:
Sipes Apn <root@…>
Branches:
stable
Children:
5d7d8d6
Parents:
2b3e7ae
Mensaje:

se realizo correciones de acceso

Fichero:
1 editado

Leyenda

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

    r3c7b6ac rd164b29  
    8080    'weight' => -10
    8181  );
    82   $items['proyectosop/%proyectosop/seguimiento/workflow/send'] = array(
     82  $items['proyectosop/%proyectosop/seguimiento/workflow/%'] = array(
    8383    'title' => 'Enviar Seguimiento',
    8484    'type' => MENU_LOCAL_TASK,
    8585    'access callback' => '_proyecto_seguimiento_mes_mover_estado_access',
    86     'access arguments' => array(1),
     86    'access arguments' => array(1, 4),
    8787    'page callback' => 'drupal_get_form',
    88     'page arguments' => array('cambiodeestado_seg_proyecto_paginaconfirmacion_form', 1),
     88    'page arguments' => array('cambiodeestado_seg_proyecto_paginaconfirmacion_form', 1, 4),
    8989    'file' => 'includes/proyecto/cambiodeestado_seg_proyecto_paginaconfirmacion.forms.inc',
    9090    'weight' => 2,
     
    124124  );
    125125
    126   //----------------------------------------------------------------------------workflow
     126  /*----------------------------------------------------------------------------workflow
    127127  $items['proyectosop/%proyectosop/seguimiento/proyecto/%messeg/workflow'] = array(
    128128    'title' => 'Seguimiento',
     
    135135    'weight' => 2,
    136136  );
    137  
    138   $items['proyectosop/%proyectosop/seguimiento/%messeg/history'] = array(
     137*/
     138 
     139  $items['proyectosop/%proyectosop/seguimiento/workflowhis'] = array(
    139140    'title' => 'Historial Seguimiento',
    140141    'type' => MENU_LOCAL_TASK,
     
    143144    'file' => 'includes/proyecto/historial_cambiodeestado_seg_proyecto.pages.inc',
    144145    'page callback' => 'historial_cambiodeestado_seg_proyecto_page',
    145     'page arguments' => array(1, 4),
     146    'page arguments' => array(1),
    146147    'weight' => 2,
    147148  );
     
    181182  $mes_o = $mes;
    182183  //esta fuera del mes de seguimiento actual
    183   if (!_mes_habilitado_para_seguimiento($mes +1)) {
    184     return FALSE;
    185   }
    186 
    187   $mes++;//colocando parametro entre 1 y 12
    188   $mes_final = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0);
     184  if (!_mes_habilitado_para_seguimiento($mes)) {
     185    return FALSE;
     186  }
     187
     188  $mes_final = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 1);
    189189  //esta fuera del anho de seguimiento actual
    190190  if ($proyecto->anhoproyectos_operativos != variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0)) {
     
    250250    }
    251251  }
    252 /*
    253   $move = FALSE;
    254   $transition = _proyecto_seguimiento_mes_mover_estado_access($proyecto, $mes);
    255   if ($transition) {
    256     $move = TRUE;
    257   }
    258 */
    259 
    260252  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 /*
    285 VERIFICAR 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 */
    304 } // function _proyecto_operativo_seguimiento_modificar_mes_access
     253}
    305254
    306255/**
     
    308257 */
    309258function _proyecto_seguimiento_mes_mover_estado_access($node, $mes = 0, $message = false) {
    310 /*
    311   if ($mes == 0) {
    312     $mes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
    313   }
    314 */
    315259  global $user;
     260  $mesI = $mes;
     261  $meses = json_decode(MESES);
     262
    316263  $seguimiento = _seguimiento_mesactual_proyecto_load($node, $mes);
    317264  // si no estan separadas el seguimiento de las AE con los proyectos
     265  $acciones = array();
    318266  if (!variable_get('accion_especifica_de_proyecto_seguimiento_aesep', 0)) {
    319267    //se verifica que se haya ingresado todo el seguimiento de las acciones especificas
     
    321269    $count = 0;
    322270    $acciones_estado = array();
    323     $cnt = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0) + ($mes);
    324271    $count_proyect = 0;
     272
    325273
    326274    foreach($node->field_proyecto_accion_esp as $accion) {
    327275      $accion_load = (object) $accion;
    328       $acciones_estado[$accion['nid']] = _seguimiento_mesactual_partida_ae_deproyecto_load($accion_load, $mes);
    329276      //se busca manejar la cantidad total de acciones disponibles por mes, exluir las restantes
    330277      $accion_load = node_load($accion['nid']);
     278
    331279      //obtener la cantidad total de las transiciones disponibles de todas las acciones para todos los meses
    332      // $transiciones = array();
    333       for ($i=$mes; $i<$cnt; $i++) {
    334       //  $transiciones[] = _seguimiento_mesactual_partida_ae_deproyecto_load($accion_load, $i);
    335 
    336         $mes_restante = $i;
    337         if (_accion_especifica_de_proyecto_seguimiento_consultar_mes_access($accion_load, $i)) {
    338           if ($transiciones_dispo = _obtener_transiciones_disponibles($accion_load, $i)) {
    339 
    340 /*
    341 print '<pre>';
    342 print_r($transiciones_dispo);
    343 print '</pre>';
    344 */
    345 
    346             $count++;
     280        if (in_array($mes, variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 1) )) {
     281          $acciones_estado[$accion['nid']] = _seguimiento_mesactual_partida_ae_deproyecto_load($accion_load, $mes);
     282          if (is_numeric($acciones_estado[$accion['nid']]['segmes']['mes'])) {
     283            $mes_accion[$accion['nid']][$mes] = $acciones_estado[$accion['nid']]['segmes']['mes'];
     284            $accion_content[$mes][$accion['nid']] = $mes;
    347285          }
    348           else {
    349             $mes_restante = $i;
     286          if ($transiciones_dispoP = _obtener_transiciones_disponibles_proyecto($node, $mes)) {
     287            if ((count($transiciones_dispoP['transic'])  && !$transiciones_dispoP['estado_actual']) || (!count($transiciones_dispoP['transic']) && $transiciones_dispoP['estado_actual'])) {
     288              return false;
     289            }
     290            elseif (!($transiciones_dispoP['estado_actual']) || !$transiciones_dispoP['nombre_estado_actual']) {
     291              return false;
     292            }
    350293          }
    351           if (count($transiciones_dispo['transic'])) {
    352             $cuenta++;
     294          $total_acciones = count($acciones_estado);
     295          $transiciones = _obtener_transiciones_disponibles($accion_load, $mes);
     296
     297          if ((count($transiciones['transic']) && !$transiciones['estado_actual']) || (!count($transiciones['transic']) && $transiciones['estado_actual'])) {
     298            return FALSE;
    353299          }
    354         }
     300          elseif (!($transiciones['estado_actual']) || !$transiciones['nombre_estado_actual']) {
     301            return false;
     302          }
    355303      }
    356 
    357       /*if ($seguimiento_proyecto = _seguimiento_mesactual_proyecto_load($node, $i)) {
    358         if ($seguimiento_proyecto['segmes']['estado']) {
    359           $count_proyecto++;
    360         }
    361       }*/
    362 
    363 /*
    364 print '<pre>';
    365 print_r($transiciones_dispo);
    366 print '</pre>';
    367 */
    368 
    369   /*    if ($acciones_estado[$accion['nid']]['segmes']) {
    370         $cuenta++;
    371       }
    372 */
    373 
    374     }
    375     $countP = 0;
    376     $cuentaP = 0;
    377     for ($i=$mes; $i<$cnt; $i++) {
    378       if ($transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $i)) {
    379         if (count($transiciones_dispo['transic'])  && $transiciones_dispo['estado_actual']>0) {
    380            $cuentaP++;
    381          }
    382          $countP++;
    383        }
    384     }
    385     if ($countP != $cuentaP || $cuentaP == 0) {
    386       return FALSE;
    387     }
    388     if (($count != $cuenta || $count == 0) && !user_access('admin planificador')) {
    389       return FALSE;
    390     }
    391     elseif ($message) {
    392       $text = t("El envio del seguimiento del proyecto ya se encuentra disponible");
    393       $text .= ' <b>'.l(t('Enviar el Seguimiento'), 'proyectosop/' . $node->nid. "/seguimiento/workflow/send") . '</b>';
    394       drupal_set_message($text, "warning");
    395     }
    396     /*if ($count_proyecto != $cnt) {
    397       drupal_set_message(t("Para poder realizar el envio del reporte es necesario completar el seguimiento del proyecto en los meses faltantes"), "warning");
    398       return FALSE;
    399     }*/
     304    }
    400305  }
    401306
    402307  //esta fuera del mes de seguimiento actual
    403   if (!_mes_habilitado_para_seguimiento($mes +1)) {
    404     return FALSE;
    405   }
    406   $mes++;//colocando parametro entre 1 y 12
     308  if (!_mes_habilitado_para_seguimiento($mes) && !(in_array($mes, variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 1) ))) {
     309    return FALSE;
     310  }
     311
    407312  //esta fuera del anho de seguimiento actual
    408313  $anno = variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0);
     
    422327  $ente = usuario_tiene_ente($user->uid);
    423328  $ente_planificador = ente_planificador_leer_ente_planificadores($node->field_proyecto_ente[0]['nid']);
    424 /*
    425   if (($ente_planificador->nid != $ente->nid)&& !user_access('admin planificador')) {
    426     return FALSE;
    427   }
    428 */
    429329
    430330  $current_time = time();
     
    447347    }
    448348  }
     349
    449350  return $fecha;
    450 /*
    451   if (module_exists('workflow') && !user_access('admin planificador')) {
    452     $estado = 0;
    453     if (!$seguimiento) {
    454       $states = _proyectos_operativos_reformula_obtiene_estados();
    455       if ($states['wid']) {
    456         $estado = _workflow_creation_state($states['wid']);
    457       }
    458     }
    459     else {
    460       $estado = $seguimiento['estado'];
    461     }
    462 
    463   $roles_perm = TRUE;
    464   if (module_exists('workflow') && $fecha && !user_access('admin planificador')) {
    465     $estado = 0;
    466     $wid = workflow_get_workflow_for_type('proyectos_operativos');
    467     $states = workflow_get_states($wid);
    468     $roles_perm = FALSE;
    469     foreach ($states as $sid => $state) {
    470       $roles_allow = variable_get('proyectos_operativos_state_s_' . $sid, array());
    471       $roles = array_keys($user->roles);
    472       if (count($roles)) {
    473         foreach ($roles as $rol) {
    474           if ($roles_allow[$rol]) {
    475             $roles_perm = TRUE;
    476           }
    477           elseif ($rol == -1 && $node->uid == $user->uid) {
    478             $roles_perm = TRUE;
    479           }
    480         }
    481       }
    482     }
    483   }
    484 
    485   return $fecha && $roles_perm;
    486 */
    487 /*
    488     $roles_perm = FALSE;
    489     $roles_allow = variable_get('proyectos_operativos_state_s_' . $estado, array());
    490     $roles = array_keys($user->roles);
    491     if (count($roles)) {
    492       foreach($roles as $rol) {
    493         if($roles_allow[$rol]) {
    494           $roles_perm = TRUE;
    495         }
    496         elseif ($rol == -1 && $seguimiento['uid'] == $user->uid) {
    497           $roles_perm = TRUE;
    498         }
    499       }
    500     }
    501     if (!$roles_perm) {
    502       return FALSE;
    503     }
    504 */
    505 
    506 /*
    507   return ((_es_tipo_proyectooperativo($node))&&
    508 (_mes_dentro_de_duracion_proyecto($node, $mes))&&
    509 (_mes_habilitado_para_seguimiento($mes))&&
    510 (_anno_habilitado_para_seg($node))&&
    511 (_periodo_de_seguimiento_proyecto_y_aes_esta_activo())&&
    512 (_es_usuario_autenticado())&&
    513 _permiso_para_realizar_transicion_estado_proyecto($node, $mes, $estadonuevo)&&
    514 (_es_elmismo_ente_proyecto_y_usuario_proyecto($node)) &&
    515 _proyectooperativo_esta_aprobado($node));
    516 */
    517 } // function _accion_especifica_de_proyecto_seguimiento_modificar_mes_access
     351}
    518352
    519353/**
     
    542376 */
    543377function _proyectooperativo_esta_aprobado($node) {
    544  
    545   $estado_aprobado = variable_get('proyectos_operativos_state_aprobado', NULL);
    546  
    547   if($node->type =='proyectos_operativos'){
    548     return ($node->_workflow == $estado_aprobado); 
    549   }elseif($node->type =='accion_especifica'){
    550     $nodo_proyecto = node_load($node->field_accion_esp_proyecto[0]['nid']);
    551     return ($nodo_proyecto->_workflow == $estado_aprobado);
     378
     379  $meses = json_decode(MESES);
     380  $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($node);
     381  $mes_seguimiento_proyecto_y_aes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
     382  $nodo_proyecto = node_load($node->nid);
     383
     384  $anno = variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0);
     385  $fecha = explode('-', $nodo_proyecto->field_proyecto_fecha_i[0]['value']);
     386  $mes_inicio = (int) $fecha[1];
     387  $year_inicio = (int) $fecha[0];
     388
     389  //exluir el link de la tabla de proyectos
     390  if (($year_inicio < $anno) || ($year_inicio == $anno) && in_array($mes_inicio, variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 1))) {
     391    $estado_aprobado = variable_get('proyectos_operativos_state_aprobado', NULL);
     392    if($node->type =='proyectos_operativos'){
     393      return ($node->_workflow == $estado_aprobado); 
     394    }elseif($node->type =='accion_especifica'){
     395      $nodo_proyecto = node_load($node->field_accion_esp_proyecto[0]['nid']);
     396      return ($nodo_proyecto->_workflow == $estado_aprobado);
     397     }
    552398  }
    553399  return FALSE;
     
    724570  $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($proyecto);
    725571  $mes_seguimiento_proyecto_y_aes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
     572  $cnt = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 1);
    726573  $nodo_proyecto = node_load($proyecto->nid);
    727574
    728 //proyectosop/%proyectosop/seguimiento
    729   if ($mes_seguimiento_proyecto_y_aes >= ($mes_fase_seg+1)) {
    730     if($nodo_proyecto->anhoproyectos_operativos == variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0) && _proyectooperativo_esta_aprobado($nodo_proyecto)){
    731       $links[] = array(
    732         'data' => l(t('Fase de Seguimiento'), 'proyectosop/' . $nodo_proyecto->nid . '/seguimiento'),
    733         'class' => 'proyectos-operativos-faseseguimiento',
    734       );
    735     }
     575  $anno = variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0);
     576  $fecha = explode('-', $proyecto->field_proyecto_fecha_i[0]['value']);
     577  $mes_inicio = (int) $fecha[1];
     578  $year_inicio = (int) $fecha[0];
     579
     580  //exluir el link de la tabla de proyectos
     581  if (($year_inicio < $anno) || ($year_inicio == $anno && in_array($mes_fase_seg, variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 1)))) {
     582      if($nodo_proyecto->anhoproyectos_operativos == variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0) && _proyectooperativo_esta_aprobado($nodo_proyecto)){
     583        $links[] = array(
     584          'data' => l(t('Fase de Seguimiento'), 'proyectosop/' . $nodo_proyecto->nid . '/seguimiento'),
     585          'class' => 'proyectos-operativos-faseseguimiento',
     586        );
     587      }
    736588  }
    737589}
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.