<?php
	class Varios{

		public static function entregaMesCompleto($id){
			if($id==1){
				$mes="Enero";
			}else if($id==2){
				$mes="Febrero";
			}else if($id==3){
				$mes="Marzo";
			}else if($id==4){
				$mes="Abril";
			}else if($id==5){
				$mes="Mayo";
			}else if($id==6){
				$mes="Junio";
			}else if($id==7){
				$mes="Julio";
			}else if($id==8){
				$mes="Agosto";
			}else if($id==9){
				$mes="Septiembre";
			}else if($id==10){
				$mes="Octtubre";
			}else if($id==11){
				$mes="Noviembre";
			}else if($id==12){
				$mes="Diciembre";
			}

			return $mes;
		}

		public static function rutQuitarFormato($par_rut) {
			return str_replace('-', '', str_replace('.', '', $par_rut));
		}

		public static function rutDarFormato($par_rut) {
			if( strlen($par_rut) > 0 ) {
				try {
					$digitoVerificador = true;
					$sRut              = $par_rut;
					$sRutFormateado    = '';
					$sRut              = str_replace('-', '', str_replace('.', '', $sRut));

					if($digitoVerificador) {
						$sDV = substr($sRut, -1);
						$sRut = substr($sRut, 0, strlen($sRut)-1);
					}

					$sRutFormateado = number_format($sRut*1, 0, '.', '.');

					if($sRutFormateado != "" && $digitoVerificador) {
						$sRutFormateado .= "-".$sDV;
					} else if($digitoVerificador) {
						$sRutFormateado .= $sDV;
					}
					return $sRutFormateado;
				} catch (\Throwable $th) {
					return $par_rut;
				}
			}	
		}

		public static function formatFechaSQL2($fecha)
		{
			$dia = substr($fecha,0, 2); // day
			$g01 = substr($fecha,2, 1); // '-'
			$mes = substr($fecha,3, 2); // month
			$g02 = substr($fecha,5, 1); // '-'
			$ano = substr($fecha,6, 4); // year
			$fec = $ano."-".$mes."-".$dia;
			return $fec;
		}

        public static function formatFechaYYMMDDtoDDMMYY($fecha)
		{
			$ano = substr($fecha,0, 4); // year
			$g01 = substr($fecha,4, 1); // '-'
			$mes = substr($fecha,5, 2); // month
			$g02 = substr($fecha,7, 1); // '-'
			$dia = substr($fecha,8, 2); // day
			$fec = $dia.'-'.$mes.'-'.$ano;
			return $fec;
		}

		public static function transforma_correo($correo) {

			$correo_seguro    = explode("@", $correo);
			$correo_seguro[0] = substr($correo, 0, 2) . str_repeat("*", strlen($correo_seguro[0])) . substr($correo, strlen($correo_seguro[0]) - 2, 2);
			$correo_seguro[1] = substr($correo_seguro[1], 0, 1) . str_repeat("*", strlen($correo_seguro[1]) - 3) . substr($correo_seguro[1], strlen($correo_seguro[1]) - 3, 3);
			return implode("@", $correo_seguro);
		}

		public static function codifica($parametro) {

			$v_Llave = 'ISLSO12';
			//return base64_encode(base64_encode($parametro));
			$iv = "abcdefgh12345678";
			$result = trim(openssl_encrypt($parametro, "AES-256-CBC" , $v_Llave, NULL, $iv));

			return rawurlencode($result);

		}

		public static function decodifica($parametro) {

			$v_Llave = 'ISLSO12';
			$parametro = rawurldecode($parametro);

			$iv = "abcdefgh12345678";
			$result = trim(openssl_decrypt($parametro, "AES-256-CBC" , $v_Llave, NULL, $iv));
			return $result;
			//return base64_decode(base64_decode($parametro));

		}

		public static function validar_directorio($par_directorio) {
			//return true;
			$v_existe = file_exists($par_directorio);

			if ($v_existe == false) {

				mkdir($par_directorio, 755, true);
				chmod($par_directorio, 0755);

			}

			return $v_existe;
		}

		public static function asegurar_directorio($par_directorio) {

			chmod($par_directorio, 0744);
		}

		public static function generar_codigo($len = 10)
		{
			$pool = '123456789abcdefghjklmnopqrstuvwxyzABCDEFGHJKMNOPQRSTUVWXYZ#-_$%&+=@*!';
			$str = '';
			for ($i = 0; $i < $len; $i++)
			{
				$str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
			}
			return $str;
		}

		public static function generaToken($form)
		{
			$token = md5(uniqid(microtime(), true));
			$token_time = time();
			$_SESSION['_tkSils'][$form . '_token'] = array('token' => $token, 'time' => $token_time);
			return $token;
		}

		public static function verificaToken($form, $token, $tiempo = 0) {
			//Verifica Token
			if (!isset($_SESSION['_tkSils'][$form . '_token'])) {
				return false;
			}
			//Compara Token
			if ($_SESSION['_tkSils'][$form . '_token']['token'] !== $token) {
				return false;
			}

			if ($tiempo > 0) {
				$tiempo = 43200; //60 * 60 * 4;//($tiempo * 144); // 2 horas
				$token_age = time() - $_SESSION['_tkSils'][$form . '_token']['time'];
				if ($token_age >= $tiempo) {
					return false;
				}
			}

			return true;
		}

        public static function inputVerification( $p_variableName ) {
			if( isset( $_SESSION[ $p_variableName ]) ) {
				echo ' value="'.$_SESSION[ $p_variableName ].'"';
			}
		}

		public static function selectVerification( $p_variableName, $p_value ) {
			$v_filter = '';
			if( isset($_SESSION[ $p_variableName ]) ) {
				$v_filter = $_SESSION[ $p_variableName ];
			}
			if( $p_value == $v_filter ) {
				echo ' selected';
			}
		}

        public static function isActiveSession() {
            return isset($_SESSION[_SYSTEM_SESIONID.'userId']);
        }

        public static function hasModuleAccess( $p_modulo ) {
            return isset( $_SESSION[_SYSTEM_SESIONID.'glopermisos'][$p_modulo] );
        }

        public static function hasModuleActionAccess( $p_modulo, $p_accion ) {
            return isset( $_SESSION[_SYSTEM_SESIONID.'glopermisos'][$p_modulo][$p_accion] );
        }
        
        public static function auditInsert( $action, $table, $sql, $resultado, $mensaje ) {
            $auditoria_accion   = $action;
			$auditoria_tabla    = $table;
			$auditoria_sql      = $sql;
			require_once($_SERVER['DOCUMENT_ROOT'].'/clases/Auditoria.Class.php');
			$auditoria = new Auditoria(null);
			$auditoria->agregaAuditoria( $auditoria_accion, $auditoria_tabla, $auditoria_sql, $resultado, $mensaje );
			$auditoria->Close();
        }

		public static function verifyNull( $p_value ) {
			return ( (strlen( $p_value ) == 0) ? NULL : $p_value );
		}
        
        public static function closeSession() {
            session_destroy();
            header('location: /login/');
        }

	}
?>