";
}else if ($link = conectar()){
//Si el d�a se puede editar y es una fecha de solicitud v�lida seguimos
if(($editable == "si") && (fecha_valida($fecha) >= $plazo)){
$consulta = "select * from vacaciones where oid='$oid' and fecha='$fecha'";
$resultado = mysql_query($consulta);
if($resultado){
$rows = mysql_num_rows($resultado);
}
//Si el d�a se ha fijado como vacaciones, sea en el estado que sea, ya no se puede solicitar
//s�lo anular o administrar.
if($rows > 0){
$aprobado = mysql_fetch_array($resultado);
$aprobado = $aprobado["aprobada"];
/***
Estados de los d�as de vacaciones:
0 - Solicitado.
1 - Concedido.
2 - Rechazado.
3 - Solicitud de anulaci�n.
***/
//Un d�a solicitado lo puede aprobar o rechazar el admin, as� que le aparece
//marcado y coloreado. El usuario no lo puede editar.
if($aprobado == 0){
if($accion == "s"){
return "
$dia
";
}else{
return "
$dia
";
}
//Un d�a concedido puede solicitar anularlo el usuario, a quien le
//aparece como no marcado. Si lo marca solicita anular.
}else if($aprobado == 1){
if($accion == "anular"){
return "
$dia
";
}else{
return "
$dia
";
}
//Un d�a rechazado no puede editarlo nadie.
}else if($aprobado == 2){
return "
$dia
";
//Un d�a que se solicita anular puede aceptarlo el admin, a quien le
//aparece como no marcado. Si lo marca est� echazando la anulaci�n.
}else if($aprobado == 3){
if($accion == "s"){
return "
$dia
";
}else{
return "
$dia
";
}
}
//Si el d�a no est� en ning�n estado de vacaciones, el usuario puede solicitarlo.
}else{
if($accion == "solicitar"){
return "
$dia
";
}else{
return "
$dia
";
}
}
}else{
return "
$dia
";
}
}
return $ret;
}
//Comprueba si el d�a es de vacaciones.
function vacaciones($dia, $mes, $ano, $oid){
if($dia < 10) $fecha = $ano."-".$mes."-0".$dia;
else $fecha = $ano . "-" . $mes . "-" . $dia;
$consulta = "select * from vacaciones where oid = '$oid' and fecha = '$fecha'";
$resultado = mysql_query($consulta);
$cont = mysql_num_rows($resultado);
if($cont > 0){
$rows = mysql_fetch_array($resultado);
$aprobada = $rows["aprobada"];
return $aprobada;
}
return -1;
}
function actualiza_rechazados($oid){
$link = conectar();
$resultado = mysql_query("select * from dias_rechazados where oid='$oid'", $link);
$cont = mysql_num_rows($resultado);
while ($row = @mysql_fetch_array($resultado)){
$fecha = $row["fecha"];
$dia = $row["dia"];
$cont = fecha_valida($fecha);
//echo "comprobando la fecha $fecha. Resultado: $cont ";
if(fecha_valida($fecha) <= -7){
//echo "Borro ";
$resultado = mysql_query("delete from dias_rechazados where oid ='$oid' and fecha='$fecha'");
$resultado = mysql_query("delete from vacaciones where oid='$oid' and fecha='$dia' and aprobada='2'");
}
}
}
//Comprueba si el d�a es festivo para un usuario.
function festivo($dia, $mes, $ano, $oid){
if($dia < 10) $fecha = $ano."-".$mes."-0".$dia;
else $fecha = $ano . "-" . $mes . "-" . $dia;
$d = que_dia_de_semana($dia, $mes, $ano);
if(($d == 6) || ($d == 5)) return true;
if ($link = conectar()){
//Festivo nacional
$consulta = "select * from festivos_nacional where id = '".$fecha."'";
if($resultado = mysql_query($consulta)){
$cont = mysql_num_rows($resultado);
if($cont > 0){
return true;
}
}
//Festivo local
$consulta = "select * from usuarios,festivos_local where oid = '".$oid."' and fecha = '".$fecha."' and festivos_local.localidad = usuarios.localidad_trabajo";
if($resultado = mysql_query($consulta)){
$cont = mysql_num_rows($resultado);
if($cont > 0){
return true;
}
}
}
return false;
}
//Comprueba si el d�a es festivo.
function festivo_global($dia, $mes, $ano, $localidad){
if($mes < 10) $mes = "0".$mes;
if($dia < 10) $fecha = $ano."-".$mes."-0".$dia;
else $fecha = $ano . "-" . $mes . "-" . $dia;
$d = que_dia_de_semana($dia, $mes, $ano);
if(($d == 6) || ($d == 5)) return true;
if ($link = conectar()){
//Festivo nacional
$consulta = "select * from festivos_nacional where id = '".$fecha."'";
if($resultado = mysql_query($consulta)){
$cont = mysql_num_rows($resultado);
if($cont > 0){
return "nacional";
}
}
//Festivo local
$consulta = "select * from festivos_local where fecha = '".$fecha."' and localidad = '".$localidad."'";
if($resultado = mysql_query($consulta)){
$cont = mysql_num_rows($resultado);
if($cont > 0){
$rows = mysql_fetch_array($resultado);
return $localidad;
}
}
}
return "";
}
//Resta un d�a de vacaciones del calendario de un usuario
//de forma recursiva, acumulando vacaciones a�o tras a�o.
//Calcula la distancia en d�as entre la fecha actual y la fecha pasada como argumento.
function fecha_valida($fecha){
$hoy = date("Y-m-d");
$hoy = strtotime($hoy, 0);
$fecha = strtotime($fecha, 0);
$cuanto = $fecha-$hoy;
$dif = floor($cuanto / 86400);
return $dif;
}
//Calcula el n�mero de d�as que separan dos fechas
function distancia_fechas($fecha, $otra){
$otra = strtotime($otra, 0);
$fecha = strtotime($fecha, 0);
$cuanto = $fecha-$otra;
$dif = floor($cuanto / 86400);
return $dif;
}
function dia_siguiente($fecha){
return date("12-10-2008", strtotime("+1 day"));
}
?>