<?php
class Validacion{
	/** Valida que en un campo se ingrese un string con minimo 4 caracteres alfanumerico
	 *
	 * @param String $campo campo a validar
	 * @return boolean 
	*/
	public static function campoAlfanumerico($campo,$limite=4) {
		if(preg_match('/^([ ]+)$/',$campo)){
			return false;
		}
		$patron = '/^([a-zA-Z0-9ñÑáéíóúÁÉÍÓÚ ]+){'.$limite.'}$/';
		if(preg_match($patron, $campo)){
			return true;
		}
		return false;
	}
	
	public static function archivo_seguro($nombre) {
		if($nombre != '') {
			$blanco = array('?', '&', '=', ';', '~', '`', '¨', '%', '\'', ',', '!', '¬', '$', '€', '¡', '¿', '@', '{', '}', '[', ']', '^', '|', '°', '#', '*', '+', '´', '(', ')', '/', ';', ':','<','>','');
			$nombre = str_replace($blanco, '', $nombre);
			return $nombre;
		}
	}
	/** Valida un correo con el formato xxx.xxx@xxx.xx.xxx o xxxx@xxx.xx etc.
	 *
	 * @param String $correo Correo a validar
	 * @return boolean  
	 */
	public static function correo($correo) {
		$patron = '#^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$#';
		if(preg_match($patron, $correo)){
			return true;
		}
		return false;
	}

	public static function fecha($fecha) {
		$patron = '#^[0-9]{2}\-[0-9]{2}\-[0-9]{4}$#';
		if(preg_match($patron, $fecha) && strtotime($fecha)){
			return true;
		}
		return false;
	}

	public static function fechaMenorHoy($fecha) {
		if(Validacion::fecha($fecha) && strtotime($fecha) <= strtotime(date('d-m-Y')) ){
			return true;
		}
		return false;
	}

	public static function fechaMayorHoy($fecha) {
		if(Validacion::fecha($fecha) && strtotime($fecha) >= strtotime(date('d-m-Y')) ){
			return true;
		}
		return false;
	}

	public static function patente($patente){
		$patente = strtolower($patente);
		$patenteValida = '/^[a-z]{2}[\-][0-9]{2}[\-][0-9]{2}$|^[b-d,f-h,j-l,p,r-t,v-z]{2}[\-][b-d,f-h,j-l,p,r-t,v-z]{2}[\-][0-9]{2}$/';
		if(preg_match($patenteValida, $patente)):
			return true;
		else:
			return false;
		endif;
	}

	/** Valida que el formato del rut sea el correcto xx.xxx.xxx-x y tambien el digito verificador
	 *
	 * @param String $rut rut a validar
	 * @return boolean 
	 */
	public static function rut($rut) {
		$rutValido = '/^[0-9]{7,8}-[0-9kK]$/';
		$rut = strtolower(str_replace('.', '', $rut));
		if (!preg_match($rutValido, $rut)) {
			return false;
		}

		preg_match('#\-([0-9kK]{1})#', $rut, $verificador);

		$verificador = $verificador[1];

		preg_match('#^[0-9]{7,8}#', $rut, $rut);

		if($verificador == null || $rut == null){
			return false;
		}
		$rut = $rut[0];
		$rut = strrev($rut);
		$cant = strlen($rut);
		for($c = 0; $c < $cant; $c++){
			$r[] = substr($rut, $c, 1);
		}
		$suma = 0;
		$multiplicador = 2;
		foreach($r as $valor){
			$suma+=$multiplicador * $valor;
			if ($multiplicador == 7)
				$multiplicador = 2;
			else
				$multiplicador++;
		}
		$digito = $suma % 11;
		$digito = 11 - $digito;
		if($digito == 11){
			$digito = '0';
		}elseif ($digito == 10){
			$digito = 'k';
		}
		if (strcasecmp($verificador, $digito) == 0) {
			return true;
		}
		return false;
	}
}
?>
