$url"; //Si es festivo lo marcamos. if(festivo($dia, $mes, $ano, $oid)){ echo "$url"; //Si no es festivo comprobamos las vacaciones. }else{ $aprobada = estado_vacaciones($oid, $fecha); if($aprobada >= 0){ if($aprobada == 0){ echo "$url"; }else if($aprobada == 1){ echo "$url"; }else if($aprobada == 2){ echo "$url"; }else if($aprobada == 3){ echo "$url"; } }else{ echo "$url"; } if(puede_solicitar_vacaciones($oid, $fecha) || (comprobar_permisos("AP"))){ //Si la vista es diaria el día viene ya marcado para solicitar directamente. if($vista == "diaria"){ echo ""; }else{ echo ""; } echo ""; } } //Si no tiene permiso de rellenar partes de actividad no le aparece su parte. if(permiso_parte($oid) && $vista != "anual"){ $parte = parte_diario($oid, $fecha); if(!$parte) $parte = 0; //En la vista anual no se muestran los partes de actividad. if(puede_actualizar_parte($oid, $fecha) || (comprobar_permisos("AP"))){ echo ""; }else{ echo ""; } } echo ""; } function permiso_parte($oid){ $estado = -1; $consulta = "select * from usuarios where oid='$oid'"; $resultado = mysql_query($consulta); while($rows = mysql_fetch_array($resultado)){ $permisos = $rows["permisos"]; $rol = $rows["rol"]; } if(in_array("RP", explode(".", $permisos))) return true; $consulta = "select * from rol where oid='$rol'"; $resultado = mysql_query($consulta); while($rows = mysql_fetch_array($resultado)){ $permisos_rol = $rows["permisos"]; } if(in_array("RP", explode(".", $permisos_rol))) return true; return false; } /* Devuelve el estado de vacaciones de un día concreto de un usuario */ function estado_vacaciones($oid, $fecha){ $estado = -1; $consulta = "select * from vacaciones where oid='$oid' and fecha='$fecha'"; $resultado = mysql_query($consulta); while($rows = @mysql_fetch_array($resultado)){ $estado = $rows["aprobada"]; } return $estado; } /* Devuelve el estado de vacaciones de un día concreto de un usuario */ function parte_diario($oid, $fecha){ $parte = ""; $consulta = "select * from partes_actividad where oid='$oid' and fecha='$fecha'"; $resultado = mysql_query($consulta); while($rows = @mysql_fetch_array($resultado)){ $parte = $rows["dato"]; } return $parte; } function puede_actualizar_parte($oid, $fecha){ $mes = explode("-", $fecha); $mes = $mes[1]; $anyo = explode("-", $fecha); $anyo = $anyo[0]; $dia_hoy = date("j"); $mes_hoy = date("n"); $anyo_hoy = date("Y"); //No se puede rellenar parte de vacaciones solicitadas o aprobadas if(estado_vacaciones($oid, $fecha) == 0) return false; if(estado_vacaciones($oid, $fecha) == 1) return false; //Sólo podemos actualizar partes del mismo mes o del anterior (hasta el día 3). if($anyo != $anyo_hoy) return false; if(($mes+1 == $mes_hoy) && ($dia_hoy <= 3)) return true; if($mes != $mes_hoy) return false; return true; } function puede_solicitar_vacaciones($oid, $fecha){ $plazo = constante("antelacion_vacaciones"); $mes = explode("-", $fecha); $mes = $mes[1]; $anyo = explode("-", $fecha); $anyo = $anyo[0]; $dia = explode("-", $fecha); $dia = $dia[2]; if(!$dia){ $fecha = $anyo."-".$mes."-31"; }else{ $ev = estado_vacaciones($oid, $fecha); //Sólo pueden pedirse fechas que no estén en proceso de ser pedidas. if($ev != -1 && $ev != 1) return false; } //Las fechas se deben pedir con cierto plazo previo. if(fecha_valida($fecha) < $plazo) return false; //Siempre que cumpla el plazo se pueden solicitar vacaciones para el año presente. if($anyo == date("Y")) return true; //También se pueden solicitar vacaciones para el año siguiente... if($anyo != date("Y") + 1) return false; //a partir del 15 de diciembre. if(fecha_valida(date("Y")."-12-15") <= 0) return true; return false; } ?>