<?php

require_once 'log.php';
require 'PHPMailer/Exception.php';
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
if ( !isset($site) )
{
    require_once( "config.inc.php" );
	header( 'Location:  ' . $accueil );
}
//	$var clef à rechercher dans $_POST, $_GET, et $_SESSION (si $session=true)
//	$default valeur retournée si aucune valeur n'est trouvée
//	$session: si true, rechercher aussi dans $_SESSION

function getpost( $var )
{
	//echo '$var =>' . $var . "<br />";
	if ( isset($_GET[$var]) )
	{
		//echo '$_get -> $var =>' . $var . "<br />";
		return $_GET[$var];
	}
	elseif ( isset($_POST[$var]) )
	{
		//echo '$_POST -> $var =>' . $var . "<br />";
		return $_POST[$var];
	}else
	{
		return;
	}
}

// MET LA PREMIÈRE LETTRE D'UN MOT EN MAJUSCULE ( utf8 compliant )

function mb_ucfirst($str)
{
	$char = mb_substr($str,0,1,"UTF8");
	$str = mb_substr( $str, 1, NULL, "UTF8");
	$char = mb_strtoupper( $char, "UTF8");
	return $char . $str;
}

function getLang( $lang, $gestion=false )
{
	$dico = array();
	if ( empty($lang) )
	{
		$lang="en";
	}
	$langPath ='lang/'.$lang;
	if ($gestion)
		$langPath = "../" . $langPath;
	if (($fh = fopen($langPath, 'r') ))
	{
		$str = fgets($fh);
		fclose($fh);
		$dico = json_decode($str, true);
		return $dico;
	}else
	{
		return false;
	}
}

function choixVotation($path, $methode=2)		//2 = toutes les votations  1 = votations en cours    0 = votations cloturées
{
	global $db, $base_url, $action;
	$query = "SELECT * FROM liste_votations";
	if ($methode != 2)
	{
		$query .= " where status=" . $methode;
	}
	$result = $db->query($query);
	$votations = $db->result->fetch_all(MYSQLI_ASSOC);
	print ('<form method="get" action="' . $path . '">');
	print "<pre>";
	if ($db->result->num_rows == 1)
	{
		$redirect = '<META HTTP-EQUIV=Refresh CONTENT="0; URL=' .  $base_url . $path . '?id=' . $votations["0"]["id"];
		if( !empty($action))
		{
			$redirect .= '&action=' . $action;
		}
		$redirect .= '">';

		echo $redirect;
		//header( 'Location:  ' .  $base_url . '/gestionsite/modifVotation.php?action=modif&id=' . $votations["0"]["id"]);
	}
	foreach($votations as $key => $value )
	{
		print '<input type="radio" name="id" value="' . $value["id"] . '"> ' . $value["titre"] . '&nbsp;:' . $value["libelle"] . '<br>';
	}
	print '</pre><br>
						<div>
							<input type="submit" value="Envoyer">
						</div>
					</form>';
}

/*
function envoiMailold($destinataire, $sujet, $text, $html=false, $cc='', $bcc='')
{
	require_once 'swiftmailer/autoload.php';
	//require_once 'include/swiftmailer/swiftmailer/lib/swift_init.php';
	$transport = (new Swift_SmtpTransport('mail.gandi.net', 465, 'ssl'))
		->setUsername('contact@lalis.fr')
		->setPassword('Gu>V$fiM{bQ^!x+FAHF+R.}bl');
	$mailer  = new Swift_Mailer($transport);
	$message = (new Swift_Message($sujet))
		->setFrom(["contact@lalis.fr"])
		->setTo([$destinataire])
		->setCharset('utf-8');
	$type = $message->getHeaders()->get('Content-Type');
	if ($html)
	{
		// setParameters() takes an associative array
		$type->setValue('text/html');
		$type->setParameter('charset', 'utf-8');
		$str = nl2br($text);
		$text = "<html><head></head>\n<body>" . $str . "</body></html>";
		log_write(__FILE__ . EOL . __LINE__ .  EOL . wordwrap($text, 1000, "\r\n"), INFO);
	}else
	{
		$type->setValue('text/plain');
		$type->setParameter('charset', 'utf-8');
		$text = str_replace("\n","\r\n", $text);
	}
	$message->setBody($text);
	//add date header
	$headers = $message->getHeaders();
	$headers->addDateHeader('Your-Header', new DateTimeImmutable('3 days ago'));
	if (!$mailer->send($message, $failures))
	{
		echo "Failures:";
		print_r($failures);
		log_write(__FILE__ . EOL . __LINE__ .  EOL . "Le courriel n'est pas parti:" . $destinataire . EOL . $sujet . EOL . print_r($failure, true) . EOL . wordwrap($text, 1000 , "\r\n"), ERROR);
		return false;
	}
	return true;
}*/

function envoiMail($destinataire, $sujet, $text, $html=false, $cc='', $bcc='')
{

	//require 'vendor/autoload.php';
	$mail = new PHPMailer(true);
	try {
		if ($html)
		{
			// setParameters() takes an associative array
			$str = nl2br($text);
			$text = "<html><head></head>\n<body>" . $str . "</body></html>";
			log_write(__FILE__ . EOL . __LINE__ .  EOL . wordwrap($text, 1000, "\r\n"), INFO);
			$mail->isHTML(true);
			$mail->AltBody = 'Ceci est un messssage HTML';
		}else
		{
			//$mail->isHTML(false);

			$text = str_replace("\n","\r\n", $text);
		}


		//Server settings
		//$mail->SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output
		$mail->isSMTP();                                            //Send using SMTP
		$mail->Host       = 'mail.gandi.net';                     //Set the SMTP server to send through
		$mail->SMTPAuth   = true;                                   //Enable SMTP authentication
		$mail->Username   = 'contact@lalis.fr';                     //SMTP username
		$mail->Password   = 'Gu>V$fiM{bQ^!x+FAHF+R.}bl';                               //SMTP password
		$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            //Enable implicit ssl encryption
		$mail->Port       = 465;                                    //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
		$mail->MessageDate= '';
		$mail->SMTPKeepAlive = true;
		//Recipients
		$mail->setFrom('contact@lalis.fr');
		$mail->addAddress($destinataire);     //Add a recipient
		//$mail->addReplyTo('info@example.com', 'Information');
		$mail->CharSet = PHPMailer::CHARSET_UTF8;
		$mail->Body = $text;
		//Attachments
		//$mail->addAttachment('/var/tmp/file.tar.gz');         //Add attachments
		//$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    //Optional name

		//Content
		                                  //Set email format to HTML
		$mail->Subject = $sujet;
		$mail->send();
		echo 'Message has been sent';
		log_write(__FILE__ . EOL . __LINE__ .  EOL . "Le courriel est parti:" . $destinataire . EOL . $sujet . EOL, INFO);
	} catch (Exception $e) {
		echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
		log_error(__FILE__ . EOL . __LINE__ .  EOL . "Le courriel n'est pas parti:" . $destinataire . EOL . $sujet . EOL . print_r($mail->ErrorInfo, true) . EOL . wordwrap($text, 1000 , "\r\n"));
		 $mail->getSMTPInstance()->reset();
		return false;
	}
	return true;
}

function formatteDate($locale, $date, $tz)
{
    $formatter = new IntlDateFormatter($locale, IntlDateFormatter::LONG, IntlDateFormatter::NONE, $tz, IntlDateFormatter::GREGORIAN );
    $datetime  = new DateTime();
    $datetime->setTimestamp($date);
    if ($formatter == null)
    {
       log_write(__FILE__ . EOLH . __LINE__ .  EOLH . "Formatter error : locale = " . $locale . "tz = " . $tz . "Formatter = " . print_r($formatter, true) . InvalidConfigException(intl_get_error_message()),ERROR);
	}
    return $formatter->format($datetime );
}

function listeAdherents()
{
	$dolibarr = new dbDolibarr();
	$query = 'SELECT login, firstname, lastname FROM llx_adherent';
	$dolibarr->query($query);
	while ($adherent = $dolibarr->result->fetch_array())
	{
		$listeAdherents[$adherent['login']] = $adherent['firstname'] . ' ' . $adherent['lastname'];
	}
	$dolibarr->close();
	return $listeAdherents;
}

function listeVotants($idVotation, $idVote, $listeAdherents)
{
	global $db;
	$nv = 0;
	$text = '';

	$query = "SELECT DISTINCT idVotant FROM votes WHERE idVotation=" . $idVotation . ' AND idVote=' . $idVote;
	$result = $db->query($query);

	while ($idVotants = $db->result->fetch_assoc())
	{
		$nv++;
		$text .= $listeAdherents[$idVotants['idVotant']] . EOLH;
	}
	print('Nombre de votants : ' . $nv . EOLH . '<div id="listeVotants' . $idVote . '" style="display: none; line-height: 0.8;">' . $text . '</div>');
	print('<button id="button' . $idVote . '" onclick="show(\'listeVotants\',\'' . $idVote . '\')">Voir la liste des votants</button>' . EOLH);
}

?>
