Script para habilitar un intervalo de Fechas para sistema de Reserva de Citas.

Hola!, comparto el siguiente script de un pequeño algoritmo que puede ser útil para su sistema de citas. Lo que hace en si, es crear un intervalo de fechas de hoy + x cantidad de días disponibles para que el usuario ( cliente) pueda selecciona el día, ahora lo interesante de este script es que puedes realizar bloqueos por

Mes ( puedes bloquear un mes completo)
Dia especifico recurrente ( esto es como por ejemplo que no este disponible un dia determinado de la semana, Ej: Domingo, Lunes.
Un Fecha en especifico ( Por motivos de un feriado, o bien alguna actividad especial la fecha no debe habilitarse al usuario/cliente)

Recuerda que esto son scripts modulo muy sencillos “core” que deben trabajar en forma conjunto con otros, por ejemplo el otro script del intervalo de horas que publiqué anteriormente.

a continuación el código:

<?php
date_default_timezone_set('America/Costa_Rica');
function consulta_mes($mes){
	switch($mes){
		case '01':{ $mes_letra = 'Enero'; return $mes_letra; break;}
		case '02':{ $mes_letra = 'Febrero'; return $mes_letra; break;}
		case '03':{ $mes_letra = 'Marzo'; return $mes_letra; break;}
		case '04':{ $mes_letra = 'Abril'; return $mes_letra; break;}
		case '05':{ $mes_letra = 'Mayo'; return $mes_letra; break;}
		case '06':{ $mes_letra = 'Junio'; return $mes_letra; break;}
		case '07':{ $mes_letra = 'Julio'; return $mes_letra; break;}
		case '08':{ $mes_letra = 'Agosto'; return $mes_letra; break;}
		case '09':{ $mes_letra = 'Septiembre'; return $mes_letra; break;}
		case '10':{ $mes_letra = 'Octubre'; return $mes_letra; break;}
		case '11':{ $mes_letra = 'Noviembre'; return $mes_letra; break;}
		case '12':{ $mes_letra = 'Diciembre'; return $mes_letra; break;}
	}
}

function consulta_dia($dia){
	switch($dia){
		case 0:{ $dia_letra = 'Domingo'; return $dia_letra; break;}
		case 1:{ $dia_letra = 'Lunes'; return $dia_letra; break;}
		case 2:{ $dia_letra = 'Martes'; return $dia_letra; break;}
		case 3:{ $dia_letra = 'Miércoles'; return $dia_letra; break;}
		case 4:{ $dia_letra = 'Jueves'; return $dia_letra; break;}
		case 5:{ $dia_letra = 'Viernes'; return $dia_letra; break;}
		case 6:{ $dia_letra = 'Sábado'; return $dia_letra; break;}
	}
 }


# Para indicar el bloqueo de algun mes en especifico colocar el valor
# '01' para Enero, '02' para Febrero, etc.
# $a_meses_bloqueados = array('01','02','03'); Bloquea Enero, Febrero y Marzo
$a_meses_bloqueados = array('');


################################# 	0 = Domingo Bloquedo
# Bloqueo para dias Especificos	#	1 = Lunes	Bloquedo
# Formato date("w")			 	# 	2 = Martes	Bloquedo
#$a_dias_bloqueados=array('0');	#
							 	# 	3 = Miercoles Bloquedo
			 					# 	4 = Jueves	Bloquedo
							 	# 	5 = Viernes	Bloquedo
								# 	6 = Sabado	Bloquedo
$a_dias_bloqueados=array();
###########################################################


# Especificar una fecha especifica que debe ser bloqueada.
# $fechas_bloqueadas = array('2015-03-31');
$fechas_bloqueadas = array('');



# Fecha de Inicio,equivale al dia de hoy + 1 ( mañana) 
$int_dias_ini	= date('Y-m-d',mktime(0,0,0,date('m'),date('d')+1,date('Y')));

# Fecha de Fin del ciclo,equivale al dia de hoy + 25 dias proximos
$int_dias_fin	= date('Y-m-d',mktime(0,0,0,date('m'),date('d')+90,date('Y')));


while(strtotime($int_dias_ini)<=strtotime($int_dias_fin)) {

	#echo $int_dias_ini ." Formato Legible:";
	
	$dia_int =  date("w", strtotime($int_dias_ini));# Brinda el dia  0 = Domingos hasta 6=Sabados. Utilizado para los dias dias_bloqueados
	$mes_int =  date("m", strtotime($int_dias_ini));# Brinda el Mes en un rango de posicion del 01 al 12.
	$dia_actual =  date("d", strtotime($int_dias_ini));# Brinda el Mes en un rango de posicion del 01 al 12.	


	# Verifica que el mes , no este en el conjunto de meses bloqueados.
	if (!in_array($mes_int,$a_meses_bloqueados)){ 	
	
		# Verifica que el dia , no este en el conjunto de dias especificos bloqueados.
		if (!in_array($dia_int,$a_dias_bloqueados)){
			
			# Verifica que la fecha indicada no este en el conjunto de fechas ESPECIFICAS DE BLOQUEO
			if (!in_array($int_dias_ini,$fechas_bloqueadas)){
			
				echo "" . consulta_dia($dia_int) ." ". $dia_actual ."-". consulta_mes($mes_int)."";
			
			}
			
		} 

	}
	## Incrementa el contador de STRTOTIME en un dia.
	$int_dias_ini = date("Y-m-d", strtotime( "$int_dias_ini + 1 DAY")) ;
	
}//while(strtotime($inicio)<=strtotime($fin)) {

exit();?>

Suerte!.