<?php

//ini_set('include_path', "comunes/email/");
//require_once("comunes/email/phpMailer/class.phpmailer.php");
require('phpMailer/PHPMailer.php');

function envia_email($destinatarios, $asunto, $texto, $anotar_error = true, $bcc = '') {
    //----------------------------------------------------------------------------
    // Los destinatarios serán el email y el nombre separados por coma.
    // Entre Destinatario y destinatario separaremos con un punto y coma
    // Ejemplo: pedro@arminet.es,Pedro Carranza; pedro.arminet@gmail.com, Piter
    //----------------------------------------------------------------------------
    include('comunes/globals.php');
    $asunto = (isset($asunto)) ? $asunto : Shop::$empresa->nombre;
    $retorno = true;
    $cad_destinatarios = $destinatarios;
    $destinatarios = explode(';', $destinatarios);
    $mail = new PHPMailer();
    $mail->SetLanguage('es', 'comunes/phpMailer/');
    //$mail->SMTPDebug = 2;
    $mail->Mailer = 'smtp';
    $mail->Helo = Shop::$empresa->smtp_email; //Muy importante para que llegue a hotmail y otros
    $mail->IsSMTP();
    $mail->Port = 587;
    //$mail->SMTPSecure = 'ssl';
    $mail->SMTPAuth = true;

    $mail->Host = Shop::$empresa->smtp_email;
    $mail->Username = Shop::$empresa->usuario_email;
    $mail->Password = Shop::$empresa->password_email;
    $mail->FromName = Shop::$empresa->nombre;
    $mail->From = Shop::$empresa->direccion_email;
    $mail->Sender = Shop::$empresa->direccion_email;
    $mail->ReturnPath = Shop::$empresa->direccion_email;
	
	//Vamos a obligar al envío con UTF8
	$mail->CharSet = 'UTF-8';
	
    //$mail->SMTPDebug = 2;
    /*
      $mail->Host = "mail.arminet.es";
      $mail->Username = "web@arminet.es";
      $mail->Password = "8kl4rq5q3a31";
      $mail->FromName = "web@aminet.es";
      $mail->From = "web@aminet.es";
      $mail->Sender = "web@aminet.es";
      $mail->ReturnPath = "web@aminet.es";
     */
    $total_destinatarios = count($destinatarios);
    for ($i = 0; $i < $total_destinatarios; $i++) {
        $direccion = explode(',', $destinatarios[$i]);
        if (!isset($direccion[1])) {
            $direccion[1] = '';
        }
        $mail->AddAddress($direccion[0], $direccion[1]);
    }
    //Vamos ahora con la copia oculta
    //Si es un array no hay que convertir
    if (!is_array($bcc)) {
        $cad_bcc = $bcc;
        if ($bcc != '') {
            //Convertimos la cadena a array teniendo en cuenta que los destinatarios pueden estar separados por comas ',' o por punto y coma ';'
            $total_coma = substr_count($bcc, ',');
            $total_punto_coma = substr_count($bcc, ';');
            //Utilizaoms como separador el mayor
            if ($total_coma >= $total_punto_coma) {
                $separador = ',';
            } else {
                $separador = ';';
            }
            //Utilizamos el separador para crear un array:
            $bcc = explode($separador, $bcc);
        }
    } else {
        //La cadena a guardar en la tabla hay que recomponerla a partir del array
        $cad_bcc = implode(',', $bcc);
    }
    //Si llegados a este punto, bcc es un array de longitud mayor que 0, vamos a insertar la copia oculta
    if (is_array($bcc)) {
        if (count($bcc) > 0) {
            foreach ($bcc as $bccer) {
                //OjO, no a?adimos el destinatario si est? en la lista de destinatarios
                if (array_search($bccer, $destinatarios) === false) {
                    $mail->AddBCC($bccer);
                }
            }
        }
    }
    $mail->IsHTML(true);
    //Añadimos las im?genes que se vayan a utilizar en el mail
    //$mail->AddEmbeddedImage('img/logo.png', 'cabecera', 'header', 'base64', 'image/png');
    $mail->Subject = "$asunto";
    $mail->Body = $texto;
    $mail->MsgHTML($texto);
    $mail->WordWrap = 50;
    $retorno = true;
    //echo("Vamos a enviar el correo<br />\n");
    //print_r($mail);
    /*
      echo("<pre>");
      print_r($mail);
      echo('</pre>');
     */
    if (!$mail->Send()) {
        $retorno = false;
        if ($anotar_error) {
            $nombref = time() . '.txt';
            /*$ruta = "comunes/email/erroneos/$nombref";
            //echo "Ruta en:".$ruta;
            $gestor = fopen($ruta, 'w');
            fwrite($gestor, $texto);
            fclose($gestor);*/
            //Tenemos que crear el mensaje sin enviar en la lista de mensajes sin enviar
            $sentencia_sql = "INSERT INTO email (destinatarios, bcc, asunto, texto, texto_error) VALUES ('$cad_destinatarios', '$cad_bcc', '$asunto',
				'$nombref', '" . $mail->ErrorInfo . "')";
            //var_dump($sentencia_sql);
            $resultado = mysqli_query($conexionBD, $sentencia_sql);
        }
        //echo(mysqli_error($conexionBD));
        /* echo("Error<br />\n");
          echo($mail->ErrorInfo . "<br />\n"); */
    }

    return($retorno);
}

/**
  Envia un email que ha sido erroneo almacenado en la base de datos tomando los valores de un array
 */
function enviarEmailErroneo($parametros) {
    include('comunes/globals.php');
    $destinatarios = $parametros['destinatarios'];
    $asunto = $parametros['asunto'];
    $bcc = isset($parametros['bcc']) ? $parametros['bcc'] : '';
    /*$ruta = 'email/erroneos/' . $parametros['ruta'];
    $texto = '';
    //var_dump($parametros);
    //echo $ruta.'<br>';
    if (file_exists($ruta)) {
        $gestor = fopen($ruta, 'r');
        $texto = fread($gestor, filesize($ruta));
        fclose($gestor);
    }
	*/
    return envia_email($destinatarios, $asunto, $texto, true, $bcc);
}

function dame_email($pasunto, $ptexto) {
    include('comunes/globals.php');

    $retorno = '';

    /* //Ojo, hay que quitar todos los & de las cadenas
      $array_busqueda = array("&", '"');
      $array_reemplazo = array("@ampersand@", "@comillas@");
      $pasunto = str_replace($array_busqueda, $array_reemplazo, $pasunto);
      $ptexto = str_replace($array_busqueda, $array_reemplazo, $ptexto);
      //Vamos a obtener el email por curl
      //echo("la direcci?n es: " . Shop::$configuracion->url . 'comunes/email/envia_email.php' . "<br />\n");
      $conexion = curl_init(Shop::$configuracion->url . 'comunes/email/envia_email.php');
      $opciones = array(
      CURLOPT_POST => 1,
      CURLOPT_POSTFIELDS => "asunto=$pasunto&contenido=$ptexto",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_USERAGENT => BaseDatos::encrypt("@rminetArmillaGranada")
      );
      curl_setopt_array($conexion, $opciones);
      //recogemos la respuesta
      $retorno = curl_exec($conexion);
      //o el error, por si falla
      $error = curl_error($conexion);
     */
    $ruta_fichero = Theme::findFile('email.php');
    if ($ruta_fichero != NULL) {
        ob_start();
        $asunto = $pasunto;
        $contenido = $ptexto;
        include($ruta_fichero);
        $retorno = ob_get_contents();
        ob_end_clean();
    }
    //y finalmente cerramos curl
    //curl_close($conexion);
    return($retorno);
}

//Esta función está aún por definir
function envia_email_pedido($codigo_pedido_cliente, $fichero = 'email_pedido') {
    include('comunes/globals.php');
    ob_start();
    new Widget($_WH->GW('pedidos_cliente', 'finalizar_compra'), $codigo_pedido_cliente, $fichero, NULL);
    $txt_datos_pedido = ob_get_contents();
    ob_end_clean();
    $txt_datos_pedido = dame_email('Confirmación de pedido web', $txt_datos_pedido);

    if ($txt_datos_pedido != '') {
        //El email lo vamos a coger SIEMPRE del pedido, ya que puede ser un usuario sin login
        $sentencia_sql = 'SELECT nombre_legal, email FROM mc_pedcli WHERE codigo = ' . $codigo_pedido_cliente;
        if ($conexionBD) {
            if ($resultado = mysqli_query($conexionBD, $sentencia_sql)) {
                if ($fila = mysqli_fetch_array($resultado)) {
                    //Enviamos un email al cliente
                    envia_email($fila['email'] . ',' . $fila['nombre_legal'], 'Su pedido ha sido completado', $txt_datos_pedido);
                }
            }
        }
        //Enviamos un email a la empresa
        envia_email(Shop::$empresa->direccion_email_pedidos . ',' . Shop::$empresa->nombre_legal, 'Pedido web recibido', $txt_datos_pedido);
        //envia_email("pedro@arminet.es,Pedro Arminet", "Pedido web recibido", $txt_datos_pedido);
    }
}

function enviarEmailRegistroSinConfirmar($codigo_cliente) {
    $retorno = false;
    include('comunes/globals.php');
    if (($codigo_cliente > 0)) {
        //Vamos a obtener el email y la contraseña
        $sentencia_sql = 'SELECT email, nombre_legal FROM cliente WHERE codigo = ' . $codigo_cliente;
        if ($resultado = mysqli_query($conexionBD, $sentencia_sql)) {
            if ($fila = mysqli_fetch_array($resultado)) {
                $retorno = true;
                //Vamos a enviar un mail con los datos del cliente
                $texto_email = '<p>' . traducir('Hemos confirmado su dirección de correo electrónico. Ya puede acceder a nuestra web utilizando sus datos de usuario') . ':</p>';
                $texto_email .= '<p>' . traducir('Dirección de email: ') . $fila['email'] . '</p>';
                $texto_email .= '<p>' . traducir('Contraseña: ') . '**********' . '</p>';
                $texto_email .= '<p>' . traducir('Su contraseña ha sido ocultada por seguridad') . '.</p>';
                //echo('este es el texto : <br />\n$texto_email <br />\n');
                $asunto = traducir('Registro realizado correctamente en ') . Shop::$empresa->nombre;
                $contenido_email = dame_email($asunto, $texto_email);
                $destinatario = $fila['email'] . ',' . $fila['nombre_legal'];
                envia_email($destinatario, $asunto, $contenido_email);
            }
        }
    }

    return($retorno);
}

?>