<?php
//===================================================================================================================
//============================================LIBRERIAS Y VARIABLES==================================================
//===================================================================================================================
session_start();
//LIBRERIA DEL IDIOMA------------------------------------------------------------------------------------------------
include("../../idiomas/idioma_".$_SESSION['lenguaje'].".php");
//-----------------------------CONEXION------------------------------------------------------------------------------
require_once '../../conexion/conexion.php';
$bd = new connexion();
$bd->query("SET NAMES 'utf8'");
//VARIABLES----------------------------------------------------------------------------------------------------------
//USER
$user = "";
$user = $_SESSION["user"];
//GRUPO
$grupo = "";
$grupo = $_SESSION["grupo"];
//ordenador
$ordenador = $_SESSION['host'];
//ID DOC
$id = "20".$_POST['id'];
//PARA
$para = $_POST['para'];
//FECHA CADUCIDAD
$fch_cad = $_POST['fch'];
//TIPO DESCARGA O VISUALIZAR
$tipo = $_POST['tipo'];
//SI SE VA A GENERAR CLAVE DE DESCARGA
$clave = $_POST['clave'];
//NOMBRE A MOSTRAR
$nomb_mostrar = utf8_decode($_SESSION["mostrar"]);
//Asunto del Correo
$asunto = utf8_decode($_POST['asunto']);
//$asunto = F_MSG_MAIL_ASUNTO_SOL;
//==========================================================================================
//===============================OBTENGO LOS DATOS DEL DOCUMENTO============================
//Obtencion Datos del Doc------------------------------------------------------------
$datos_doc = datosDocs($id);
$ambito_doc = $datos_doc['AMBITO'];
$acceso_doc = $datos_doc['ACCESO'].$datos_doc['ACCESO_AUTO'];
$tamano_doc = $datos_doc['TAMANO'];
$nombre_doc = $datos_doc['NOMBRE'];
$nombre_doc = utf8_decode($nombre_doc);
$padre_doc = $datos_doc['PADRE'];
//AÑADO LA HORA ACTUAL A LA FECHA DE CADUCIDAD
$hora = date("H:i:s");
//ARMO LA VARIABLE DE CADUCIDAD
$caduca = $fch_cad." ".$hora;
//==========================================================================================
//==========================================================================================
//===============================CARGO LA RUTA A USAR PARA EL LOGOTIPO======================
//==========================================================================================
//CARGO EL DOMINIO
$dominio = dominioCliente($bd);
$logo = logoCorreos($bd);
//==========================================================================================
//===============================DATOS DEL SERVIDOR SMTP====================================
//==========================================================================================
//OBTENGO LA DIRECCION DE CORREO ASIGANADA PARA LA SALIDA-----------------------------------
$mail_sistema = correoSistema($bd);
//Obtengo los datos del correo de sistema---------------------------------------------------
$datosMail = datosMail($bd, $mail_sistema);
//VARIABLES
$host = $datosMail['SERVIDOR_SALIENTE'];
$usuario_mail = $datosMail['CUENTA'];
$clave_mail = $datosMail['CLAVE'];
$autent = $datosMail['AUT_SALIENTE'];
$puerto = $datosMail['PUERTO_SALIENTE'];
$descripcion = $datosMail['DESCRIPCION'];
//VALIDO QUE EL CAMPO MOSTRAR SEA UNA DIRECCION DE CORREO VALIDA----------------------------
//DE LOS CONTRARIO UTILIZO LA CUENTA DE MAIL DEL SISTEMA------------------------------------ 
$mailAmostrar = $datosMail['MOSTRAR'];
if (filter_var($mailAmostrar, FILTER_VALIDATE_EMAIL)) {
    $mailAmostrar = $datosMail['MOSTRAR'];
}else{
	$mailAmostrar = $datosMail['CUENTA'];
}
//==========================================================================================
//===============================CORREO ELECTRONICO=========================================
//==========================================================================================
//LIBRERIA----------------------------------------------------------------------------------
require '../../recursos/phpmailer/PHPMailerAutoload.php';
//=====================================================================================================================================
//===============================BLOQUE CORREO NOTIFICACION AL EMISOR==================================================================
//=====================================================================================================================================
//Valido que el emisor del mail tenga correo asignado
$mail_emisor = correoEmisor($bd, $user);
//DE TENER CORREO CONFIGURADO SE LO MANDO DE LO CONTRARIO NO HAGO NADA-------------------------
if ($mail_emisor != '') {
	//==========================================================================================
	//===============================CARGO LA RUTA A USAR PARA EL LOGOTIPO======================
	//==========================================================================================
	//CARGO EL DOMINIO
	$dominio = dominioCliente($bd);
	$logo = logoCorreos($bd);
	//CREO LA NUEVA VRIABLE---------------------------------------------------------------------
	$mail = new PHPMailer;
	//PARAMETROS--------------------------------------------------------------------------------
	// VALIDO LA VRIABLE COMO SMTP
	$mail->isSMTP();     
	//VALIDO EL IDIOMA A USAR
	$mail->SetLanguage('es');
	// SERVIDOR DE SMTP              
	$mail->Host = $host;
	//HABILITO LA AUTENTICACION SMTP-----------------------------------------------------------  
	if ($autent == 1) {
	     //REQUIERE AUTENTICACIÓN
		$mail->SMTPAuth = true;
	 }else{
	 	//NO LA REQUIERE
	 	$mail->SMTPAuth = false;
	 }           
	//USER DEL SERVIDOR SMTP-------------------------------------------------------------------               
	$mail->Username = $usuario_mail;      
	//PASSWORD DEL CLIENTE DEL SERVIDOR SMTP
	$mail->Password = $clave_mail; 
	//TIPO DE SEGURIDAD-------------------------------------------------------------------------
	$mail->SMTPSecure = 'tls';  
	//PUERTO DE ENVIO DEL CORREO----------------------------------------------------------------                
	$mail->Port = $puerto;                      
	//VALIDO LA CONEXION COMO INSEGURA ---------------------------------------------------------
	$mail->SMTPOptions = array(
				'ssl' => array(
								'verify_peer' 		=> false,
								'verify_peer_name' 	=> false,
								'allow_self_signed' => true
								)
				);
	//========================================================================================
	//DATOS DEL QUE ENVIA EL CORREO-----------------------------------------------------------
	//========================================================================================
	//CORREO A MOSTRAR DEL REMITENTE----------------------------------------------------------
	//VALIDO UNA CUENTA GENERICA NOREPLY CON DOMINIO DEL USUARIO
	if ($mailAmostrar != '') {
		$mail->setFrom($mailAmostrar, $descripcion);
	}else{
		$mail->setFrom("noreply@avanbox.com", $descripcion);
	}
	//=========================================================================================
	//============================CORREO PARA ENVIAR AVISO AL EMISOR===========================
	$mail->addAddress($mail_emisor); 
	//=========================================================================================
	//ENVIAR EL CORREO CON FORMATO HTML--------------------------------------------------------
	$mail->isHTML(true); 
	//=========================================================================================
	//ARMO CUERPO DEL CORREO-------------------------------------------------------------------
	//=========================================================================================
	//HTML DEL BODY DEL CORREO------------------------------------------------------------------
	$bodyContent = "

	<!-- Cuerpo del Correo -->
        <div align='left'>
        	<div align='center'>
        		<a href='' target='_blank'><img alt='AVANBOX logo' src='".$logo."' hspace='0' vspace='0'  align='center' border='0'></a>
        	</div>
            <div id='body_doc'>
                <p style='text-align: justify;'>
                	<br>
                    ".F_MSG_MAIL_HOLA." ".$nomb_mostrar.",
                </p>
                <p style='text-align: justify;' align='center'>
                    ".F_MSG_MAIL_HAS_COMP_SOL.": <strong>".$nombre_doc."</strong>
                </p>
                <br>
                <p style='text-align: justify;' align='center'>
                    <small>Mensaje generado por AvanBox. No responda a este correo electr&oacute;nico.</small>
                </p>
            </div>
        </div>
";
	//=========================================================================================
	//ARMO CUERPO DEL CORREO EN TEXTO PLANO----------------------------------------------------
	$bodyContentText = $nomb_mostrar;
	$bodyContentText .= F_MSG_MAIL_HAS_SOL;
	$bodyContentText .= $nombre_doc."<br>";
	
	//-----------------------------------------------------------------------------------------
	//ASUNTO------------------------------------------------------------------------------------
	//COLOCO EL ASUNTO PREDEFINIDO
	$mail->Subject = F_MSG_MAIL_HAS_SOL;
	//CARGO EL CUERPO DEL CORREO----------------------------------------------------------------
	//$mail->msgHTML(file_get_contents($bodyContent), dirname(__FILE__));
	$mail->msgHTML($bodyContent);
	//CARGO EL CUERPO DEL CORREO EN TEXTO PLANO------------------------------------------------
	$mail->AltBody = $bodyContentText;
	//DATOS ADJUNTOS---------------------------------------------------------------------------
	//$mail->addAttachment('recursos/img/logo.png');
	//ENVIO DEL MAIL---------------------------------------------------------------------------
	$mail->send();
}
//=====================================================================================================================================
//===============================BLOQUE CORREO DESTINATARIOS===========================================================================
//=====================================================================================================================================
//HAGO EL EXPLDOE DE LA CADENA DE CORREO
$array_para = explode(";", $para);
//CUENTO LA CANT DE REGISTROS DEL ARRAY
$total_para = count($array_para);
//---------------------------------------------------------------------------------------------
//RECORRO EL ARRAY Y CARGO LOS DESTINATARIOS---------------------------------------------------
for($i=0;$i<$total_para;$i++){
	//-----------------------------------------------------------------------------------------
	//===========================BLOQUE PARA GENERAR EL VINCULO================================
	//-----------------------------------------------------------------------------------------
	//GENERAR LA CLAVE DE 18 DIGITOS PARA EL CODIGO DEL VINCULO--------------------------------
	$clv_vinculo = getUnico();
	//Variable del correo del destinatario
	$mail_destinatario = $array_para[$i];
	//EVALUO SI SE SOLICITO GENERAR CLAVE PARA EL DOCUMENTO
	if ($clave==1) {
	    //CLAVE ALEATORIA
	    $clave_desc2 = rand( 1001, 9999 );
	    //ENCRIPTO LA CLAVE
		$clave_desc = sha1($clave_desc2);
	    //Armo el mensaje de contraseña
	    $contrasena = "Clave para la respuesta = ".$clave_desc2;
	}elseif ($clave == 0) {
	    //SIN CLAVE
	    $contrasena = "";
	    //SIN CLAVE
      	$clave_desc2 = 0;
      	//ENCRIPTO LA CLAVE
      	$clave_desc = sha1($clave_desc2);
	}
	//REALIZO EL INSERT EN LA TABLA DE BIBLIOTECA_VINCULOS
	insertVinculo($bd, $clv_vinculo, $id, $tipo, $mail_destinatario, $clave_desc, $caduca);
	//=========================================================================================
	//REalizo el asiento en la biblioreca de historial-----------------------------------------
	//===================================================================================
	//==============Registro del historial de traza======================================
	//variables para registrar la traza--------------------------------------------------
	$padre_traza = nombrePadre($bd, $padre_doc); 
	//TRAZA A DEJAR CON LA SOLICITUD-----------------------------------------------------
	$accion_trza = 45; //SOLICITADO LINK
	$tipo_traza = "D"; //Tipo documento
	$awa = 1;
	//CREO REGISTRO EN EL HISTORIAL------------------------------------------------------
	registroHistorial($bd, $id, $user, $ordenador, $nombre_doc, $padre_traza, $ambito_doc, $acceso_doc, $tamano_doc, $awa, $accion_trza, $tipo_traza, $clv_vinculo);
	//-----------------------------------------------------------------------------------------
	//===========================BLOQUE PARA ENVIAR CORREO AL DESTINATARIO=====================
	//-----------------------------------------------------------------------------------------
	//CREO LA NUEVA VRIABLE--------------------------------------------------------------------
	$mail = new PHPMailer;
	// VALIDO LA VRIABLE COMO SMTP
	$mail->isSMTP();     
	//VALIDO EL IDIOMA A USAR
	$mail->SetLanguage('es');
	// SERVIDOR DE SMTP              
	$mail->Host = $host;
	//HABILITO LA AUTENTICACION SMTP-----------------------------------------------------------  
	if ($autent == 1) {
	     //REQUIERE AUTENTICACIÓN
		$mail->SMTPAuth = true;
	 }else{
	 	//NO LA REQUIERE
	 	$mail->SMTPAuth = false;
	 }           
	//USER DEL SERVIDOR SMTP-------------------------------------------------------------------               
	$mail->Username = $usuario_mail;      
	//PASSWORD DEL CLIENTE DEL SERVIDOR SMTP
	$mail->Password = $clave_mail; 
	//TIPO DE SEGURIDAD-------------------------------------------------------------------------
	$mail->SMTPSecure = 'tls';  
	//PUERTO DE ENVIO DEL CORREO----------------------------------------------------------------                
	$mail->Port = $puerto;                      
	//VALIDO LA CONEXION COMO INSEGURA ---------------------------------------------------------
	$mail->SMTPOptions = array(
				'ssl' => array(
								'verify_peer' 		=> false,
								'verify_peer_name' 	=> false,
								'allow_self_signed' => true
								)
				);
	//-----------------------------------------------------------------------------------------
	//DATOS DEL QUE ENVIA EL CORREO------------------------------------------------------------
	//-----------------------------------------------------------------------------------------
	//CORREO A MOSTRAR DEL REMITENTE----------------------------------------------------------
	//VALIDO UNA CUENTA GENERICA NOREPLY CON DOMINIO DEL USUARIO
	if ($mailAmostrar != '') {
		$mail->setFrom($mailAmostrar, $descripcion);
	}else{
		$mail->setFrom("noreply@avanbox.com", $descripcion);
	}
	//CARGO LA DIRECCION DE MAIL---------------------------------------------------------------
	$mail->addAddress($array_para[$i]); 
	//-----------------------------------------------------------------------------------------
	//ENVIAR EL CORREO CON FORMATO HTML--------------------------------------------------------
	$mail->isHTML(true); 
	//-----------------------------------------------------------------------------------------
	//ARMO CUERPO DEL CORREO-------------------------------------------------------------------
	//-----------------------------------------------------------------------------------------
	//ARMO LA URL DE DESCARGA------------------------------------------------------------------
	//OBTENGO EL VALOR DEL DOMINIO DEL AWA
	$dominio = dominioAWA($bd);
	//SUFIJO DEL DOMINIO
	$suf_dominio = "/vtemp.php?id=";
	//URL FINAL
	$url = $dominio.$suf_dominio.$clv_vinculo;
	//HTML DEL BODY DEL CORREO------------------------------------------------------------------
	$bodyContent = "

	<!-- Cuerpo del Correo -->
        <div align='left'>
        	<div align='center'>
        		<a href='' target='_blank'><img alt='AVANBOX logo' src='".$logo."' hspace='0' vspace='0'  align='center' border='0'></a>
        	</div>
            <div id='body_doc'>
                <p style='text-align: justify;'>
                	<br>
                    ".F_MSG_MAIL_SALUDO.",
                </p>
                <p style='text-align: justify;' align='center'>
                    <strong>".$nomb_mostrar."</strong>, ".F_MSG_MAIL_COMPART_SOL." :
                </p>
                <p style='text-align: justify;' align='center'>
                    <a href='".$url."' target='_blank'>".$nombre_doc."</a>
                </p>
                <p style='text-align: justify;' align='center'>
                    ".$contrasena."
                </p>
                <p style='text-align: justify;' align='center'>
                    ".F_MSG_CAD." <strong>".$caduca."</strong>
                </p>
                <br>
                <p style='text-align: justify;' align='center'>
                    <small>Mensaje generado por AvanBox. No responda a este correo electr&oacute;nico.</small>
                </p>
            </div>
        </div>
		";
	//-----------------------------------------------------------------------------------------
	//ARMO CUERPO DEL CORREO EN TEXTO PLANO----------------------------------------------------
	$bodyContentText = $nomb_mostrar;
	$bodyContentText .= F_MSG_ASUNT_COMP;
	$bodyContentText .= $nombre_doc."<br>";
	$bodyContentText .= $url;
	//-----------------------------------------------------------------------------------------
	//ASUNTO------------------------------------------------------------------------------------
	//EVALUO SI EL ASUNTO VIENE VACIO
	if ($asunto != '') {
		//COLOCO EL ASUNTO COMO LO COLOC EL USUARIO
		$mail->Subject = $asunto;
	}else{
		//COLOCO EL ASUNTO PREDEFINIDO
		$asunto_predef = F_MSG_MAIL_ASUNTO_SOL." ".$nombre_doc;
		$mail->Subject = $asunto_predef;
	}
	//CARGO EL CUERPO DEL CORREO----------------------------------------------------------------
	$mail->msgHTML($bodyContent);
	//CARGO EL CUERPO DEL CORREO EN TEXTO PLANO------------------------------------------------
	$mail->AltBody = $bodyContentText;
	//VALIDACION DEL ENVIO---------------------------------------------------------------
	if(!$mail->send()) {
	    $mail_ok = 0;
	} else {
	    $mail_ok = 1;
	}
}
//VALIDO QUE EL COOREO DE SISTEMA SEA VALIDO------------------------------------------------
if (filter_var($usuario_mail, FILTER_VALIDATE_EMAIL)) {
    
}else{
	$mail_ok = 2;
}
//Devuelvo la validacion del envio del mail----------------------------------------------
echo $mail_ok;
//=======================================================================================
//==================================FUNCIONES============================================
//=======================================================================================
function datosMail($bd, $mail_sistema)
{
  $sql = "	SELECT C.SERVIDOR_SALIENTE, C.AUT_SALIENTE, C.CUENTA, C.CLAVE, C.DESCRIPCION, C.PUERTO_SALIENTE, C.MOSTRAR
			FROM CORREO_CUENTAS C
			WHERE C.CUENTA = '$mail_sistema' AND C.ACTIVA = 1";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  return $result;
}
//FUNCION PARA OBTENER LA DIRECCION DE MAIL DEL SISTEMA---------------------------------
function correoSistema($bd)
{
$sql = "SELECT P.VALOR
		FROM PARAMETROS  P
		WHERE P.CODIGO = 'CORREO_SISTEMA'";
$base = $bd->query($sql);
$result = mysqli_fetch_array($base);
$correo = $result['VALOR'];
return $correo;
}
//obtengo el dominio utilizado-------------------------------------------------------------
function dominioCliente($bd)
{
  $sql =  " SELECT P.VALOR
            FROM PARAMETROS P 
            WHERE P.CODIGO = 'AWA_DOMINIO'";
  $base = $bd->query($sql);
  $row = mysqli_fetch_array($base);
  $dominio = $row['VALOR'];
  return $dominio;
  $base->close();
}
 //FUNCION PARA OBTENER LOS DATOS DEL DOCUMENTO------------------------------------------------
 function datosDocs($id_doc){
  global $bd;
  $sql =  " SELECT e.CLAVE, e.NOMBRE, e.EXTENSION, e.TAMANO, e.SUFIJO, e.PARTES, e.PADRE, e.AMBITO, e.ACCESO, e.ACCESO_AUTO
            FROM BIBLIOTECA_ELEMENTOS e 
            WHERE e.CLAVE = '$id_doc'";
  $base = $bd->query($sql);
  $datos = mysqli_fetch_assoc($base);
  $base->close();
  return $datos;
 }
 //QRY PARA CONSULTAR EL DOMINIO DEL AWA
function dominioAWA($bd)
{
    $sql = "SELECT P.VALOR
            FROM PARAMETROS P
            WHERE P.CODIGO = 'AWA_DOMINIO'";
    $base = $bd->query($sql);
    $result = mysqli_fetch_array($base);
    $base->close();
    $dominio = $result["VALOR"];
    return $dominio;
}
//INSERT DE LA TABLA BIBLIOTECA_VINCULOS
function insertVinculo($bd, $clv_vinculo, $id, $tipo, $mail_destinatario, $clave_desc, $caduca)
{
    $fichero_ok = mysqli_query($bd, "	INSERT INTO BIBLIOTECA_VINCULOS  ( VINCULO, CLAVE, ACTIVO, TIPO, EMAIL, CLAVE_DESCARGA, CADUCIDAD ) 
    									VALUES ( '$clv_vinculo', '$id', 1, $tipo, '$mail_destinatario', '$clave_desc', '$caduca' )");
}
//FUNCION PARA OBTENER LA CLAVE UNICA DE 18 DIGITOS
function getUnico()
{
    return date( "YmdHis" ) . sprintf( "%04d", rand( 0, 9999 ) );
}
//obtengo el dominio utilizado-------------------------------------------------------------
function correoEmisor($bd, $user)
{
  $sql =  " SELECT C.EMAIL1
            FROM CONTACTOS C
            INNER JOIN USUARIOS U
            ON C.CODIGO = U.CONTACTO
            WHERE U.USUARIO = '$user'";
  $base = $bd->query($sql);
  $row = mysqli_fetch_array($base);
  $correo_emisor = $row['EMAIL1'];
  return $correo_emisor;
  $base->close();
}
//===============================================================================================================================
 //=========================================BLOQUE TRAZA HISTORIAL================================================================
 //FUNCION PARA Hacer el Registro en el Historial------------------------------------------------
 function registroHistorial($bd, $doc, $user, $ordenador, $nombre, $padre, $ambito, $acceso, $tamano, $awa, $accion, $tipo, $clv_vinculo)
 {
  $query =" INSERT INTO BIBLIOTECA_HISTORIAL ( CLAVE, USUARIO, FECHA, ACCION, DOCUMENTO, CARPETA, ORDENADOR, AMBITO, ACCESO, TIPO, TAMANO, CREADOR, AWA, DETALLE)
            VALUES ( '$doc', '$user', NOW(), $accion, '$nombre', '$padre', '$ordenador', '$ambito', '$acceso', '$tipo', $tamano, '$user', $awa, '$clv_vinculo')";
  mysqli_query($bd, $query);
 }  
 //FUNCION PARA OBTENER EL NOMBRE DEL PADRE DEL DOCUMENTO-------------------------------------
function nombrePadre($bd, $id_padre){
  //EVALUO SI EL PADRE NO PERTECENE A ALGUN DIRECTORIO RAIZ PUBLICO O PRIVADO
  if ($id_padre == "##PUBLICO##" OR $id_padre == "##PRIVADO##" OR $id_padre == "##USUARIOS##") {
      if ($id_padre == "##PUBLICO##") {
          $padre = "##PUBLICO##";
      }
      if ($id_padre == "##PRIVADO##") {
          $padre = "##PRIVADO##";
      } 
      if ($id_padre == "##USUARIOS##") {
          $padre = "##USUARIOS##";
      }  
	}else{
      $sql = "  SELECT e.NOMBRE
      FROM BIBLIOTECA_ELEMENTOS e
      WHERE e.CLAVE = '$id_padre'
      AND e.TIPO = 'C' LIMIT 1";
      $base = $bd->query($sql);
      $nomb_padre = mysqli_fetch_assoc($base);
      $padre = $nomb_padre['NOMBRE'];
	}
  //REgreso el valor del padre
  return $padre;
} 
//Trae LA URL DEL LOGO A UTLIZAR-----------------------------------------------------------------------------------------------
function logoCorreos($bd)
{
  $sql = "	SELECT P.VALOR
			FROM PARAMETROS P
			WHERE P.CODIGO = 'LOGOHEADER_AUTO' LIMIT 1";
  $base = $bd->query($sql);
  $result = mysqli_fetch_array($base);
  $logo = $result['VALOR'];
  return $logo;
}
//============================================================================================================================
//============================================================================================================================
?>