"Enero", 2 => "Febrero", 3 => "Marzo", 4 => "Abril", 5 => "Mayo", 6 => "Junio", 7 => "Julio", 8 => "Agosto", 9 => "Septiembre", 10 => "Octubre", 11 => "Noviembre", 12 => "Diciembre" ); $semana = date("D"); $semanaArray = array( "Mon" => "Lunes", "Tue" => "Martes", "Wed" => "Miercoles", "Thu" => "Jueves", "Fri" => "Viernes", "Sat" => "Sábado", "Sun" => "Domingo", ); $mesReturn = $mesArray[$mes]; $semanaReturn = $semanaArray[$semana]; $dia = date("d"); $ano = date ("Y"); return $semanaReturn." ".$dia." de ".$mesReturn." de ".$ano; } function nombre_mes($mes){ include LOCALE.LOCALESET."lenguaje.php"; switch ($mes){ case 1: $nombre_mes=$locale['064']; break; case 2: $nombre_mes=$locale['065']; break; case 3: $nombre_mes=$locale['066']; break; case 4: $nombre_mes=$locale['067']; break; case 5: $nombre_mes=$locale['068']; break; case 6: $nombre_mes=$locale['069']; break; case 7: $nombre_mes=$locale['070']; break; case 8: $nombre_mes=$locale['071']; break; case 9: $nombre_mes=$locale['072']; break; case 10: $nombre_mes=$locale['073']; break; case 11: $nombre_mes=$locale['074']; break; case 12: $nombre_mes=$locale['075']; break; } return $nombre_mes; } function nombre_dia($dia){ include LOCALE.LOCALESET."lenguaje.php"; switch ($dia){ case 1: $nombre_dia=$locale['057']; break; case 2: $nombre_dia=$locale['058']; break; case 3: $nombre_dia=$locale['059']; break; case 4: $nombre_dia=$locale['060']; break; case 5: $nombre_dia=$locale['061']; break; case 6: $nombre_dia=$locale['062']; break; case 7: $nombre_dia=$locale['063']; break; } return $nombre_dia; } //Retorna el nmero de la semana en donde se encuentra un determinado da. function que_dia_de_semana($dia,$mes,$ano){ $numerodiasemana = date('w', mktime(0,0,0,$mes,$dia,$ano)); if ($numerodiasemana == 0) $numerodiasemana = 6; else $numerodiasemana--; return $numerodiasemana; } //Revisa para tener los meses completos function verifica_long_mes($mes,$ano){ $ultimo_dia=28; while (checkdate($mes,$ultimo_dia + 1,$ano)){ $ultimo_dia++; } return $ultimo_dia; } //Muestra una fecha en formato mes-dia function ver_fecha($fecha){ $res = explode("-", $fecha); return $res[1]." de ".nombre_mes($res[0]); } //Muestra una fecha en formato dia-mes-a�o function ver_fecha_larga($fecha){ include LOCALE.LOCALESET."lenguaje.php"; $res = explode("-", $fecha); return $res[2]." de ".nombre_mes($res[1])." del ".$locale['329']." ".$res[0]; } //Muestra una fecha en formato dia-mes-a�o function ver_fecha_corta($fecha){ include LOCALE.LOCALESET."lenguaje.php"; $res = explode("-", $fecha); return $res[2]." de ".nombre_mes($res[1])." del ".$res[0]; } //Muestra el calendario festivo actualizable. function actualiza_festivos($dia, $mes, $ano, $localidad){ 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)){ $festivo = festivo_global($dia, $mes, $ano, $localidad); if(($festivo == $localidad && $festivo != "")){ return "$dia "; }else if(($festivo == "nacional") && $localidad == ""){ return "$dia "; }else if(($festivo == "nacional") && $localidad != ""){ return "$dia"; }else{ return "$dia "; } }else{ return "$dia"; } return "$dia"; } //Muestra los acontecimientos de un d�a function ver_dia($dia, $mes, $ano, $oid, $editable){ actualiza_rechazados($oid); if($dia < 10) $fecha = $ano."-".$mes."-0".$dia; else $fecha = $ano . "-" . $mes . "-" . $dia; if ($link = conectar()){ $festivo = festivo($dia, $mes, $ano, $oid); $vacaciones = vacaciones($dia, $mes, $ano, $oid); //Compruebo si hay parte del d�a $consulta = "select * from partes_actividad where oid = ".$oid." and fecha = '".$fecha."'"; if($resultado = mysql_query($consulta)){ $row = mysql_fetch_array($resultado); $fecha2 = $row["fecha"]; $dato = $row["dato"]; if($editable == "si"){ if($festivo){ return "$dia"; }else if($vacaciones >= 0){ if($vacaciones == 0){ return "$dia"; }else if($vacaciones == 1){ return "$dia"; }else if($vacaciones == 2){ return "$dia"; }else if($vacaciones == 3){ return "$dia"; } }else{ return "$dia"; } }else{ if($festivo){ return "$dia"; }else if($vacaciones >= 0){ if($vacaciones == 0){ return "$dia/$dato"; }else if($vacaciones == 1){ return "$dia/$dato"; }else if($vacaciones == 2){ return "$dia/$dato"; }else if($vacaciones == 3){ return "$dia/$dato"; } }else{ return "$dia/$dato"; } } }else{ return "".$dia."/"; } } return ""; } //Muestra un d�a del calendario de vacaciones function ver_vacaciones($dia, $mes, $ano, $oid, $editable, $accion){ actualiza_rechazados($oid); if($dia < 10) $fecha = $ano."-".$mes."-0".$dia; else $fecha = $ano . "-" . $mes . "-" . $dia; $plazo = constante("antelacion_vacaciones"); $festivo = festivo($dia, $mes, $ano, $oid); if($festivo){ return "$dia"; }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")); } ?>