ouvag/admin/inc/mail.inc.php

325 lines
14 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
session_start();
echo $_SESSION['nb_mail_sent'];
// On teste si la variable de session existe et contient une valeur
if(empty($_SESSION['login']))
{
// Si inexistante ou nulle, on redirige vers le formulaire de login
header('Location: ../auth.php');
exit();
}
include("config.inc.php");
include("connect.inc.php");
include("fonctions.inc.php");
require("../../inc/PHPMailer/PHPMailerAutoload.php");
// Time start
$timestart=microtime(true);
$new_nb_mail_sent = $_SESSION['nb_mail_sent']+1;
if ($_SESSION['nb_mail_sent'] == 0) {
// On envoie les mails par paquet de 75
$query = $bdd->prepare("SELECT * FROM clients WHERE vote = 0 AND mailed = ? LIMIT 75");
$query->execute(array(0));
// Si tout le monde n'a pas voté, on balance les mails
$nbs = $query->rowCount();
if ($query->rowCount() > 0) {
// On utilise PHPMailer
while ($results = $query->fetch(PDO::FETCH_OBJ)) {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->CharSet = "UTF-8";
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
//$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
//$mail->Debugoutput = 'html';
// To load the French version
$mail->setLanguage('fr', 'PHPMailer/language/');
$mail->Host = 'smtp.ouvaton.coop';
$mail->SMTPAuth = true;
$mail->SMTPKeepAlive = true;
$mail->Username = '';
$mail->Password = '';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = '';
$mail->FromName = 'Ouvaton.coop AG 2019';
$mail->addAddress($results->email);
$mail->addReplyTo('');
$mail->isHTML(true);
$mail->Subject = 'Ouvaton AG 2019 : convocation et vote en ligne';
// On prépare le contenu du mail
$body = "
<html>
<head>
<title>Ouvaton.coop AG 2019</title>
</head>
<body>
<p>Cher Coopérateur/Chère Coopératrice,</p>
<p>Vous détenez une ou plusieurs parts sociales de la Coopérative Ouvaton. À ce titre, nous avons le plaisir de vous indiquer que les sociétaires sont convoqués en Assemblée Générale Ordinaire le vendredi 19 juin 2019 à 21h à Locmaria Guidel, afin de délibérer sur lordre du jour suivant :</p>
<ul>
<li>Présentation du rapport moral et financier par le Président du Directoire</li>
<li>Présentation du rapport du Conseil de Surveillance</li>
<li>Approbation des comptes 2018</li>
<li>Affectation du résultat</li>
<li>Quitus au Directoire et Conseil de Surveillance pour ledit exercice</li>
<li>Élection des membres du Conseil de Surveillance</li>
<li>Questions diverses</li>
<li>Pouvoirs pour formalités</li>
</ul>
<p>Dans l'hypothèse où le quorum ne serait pas atteint suite à cette première convocation, <strong>une deuxième assemblée serait convoquée le samedi 29 juin 2019, au 187 montée de Choulans 69005 Lyon, à 13h</strong>. Les votes émis avant le 19 juin 2019 à 21h resteront valables pour l'éventuelle assemblée de seconde convocation.</p>
<p>Vous trouverez tous les documents relatifs à l'Assemblée Générale 2019 statuant sur l'exercice 2018 (documents comptables, rapports, candidatures) sur le site de la
Coopérative en <a href=\"https://ouvaton.coop/la-cooperative/assemblees-generales/ag-2019/\">https://ouvaton.coop/la-cooperative/assemblees-generales/ag-2019/</a>.<br />
Ils peuvent être discutés sur <a href=\"https://forums.ouvaton.coop\">les forums Ouvaton</a>.</p>
<p>Conformément à la possibilité ouverte par la résolution n°5 adoptée par l'Assemblée Générale du 4 mai 2013, le vote sur les résolutions s'effectuera par scrutin électronique sécurisé (voir modalités plus bas).</p>
<p>Le formulaire de vote en ligne de notre Assemblée Générale est disponible sur <a href=\"https://ag.ouvaton.coop\">https://ag.ouvaton.coop</a>.</p>
<p>Il est accessible dès maintenant et le restera jusqu'au jour de l'Assemblée Générale à 15h.<br />
Nous attirons votre attention sur le fait que vous ne pourrez pas corriger votre vote une fois que vous l'aurez émis.<br />
Vous pouvez prendre le temps de la réflexion, une nouvelle invitation à voter vous sera envoyée dans deux semaines, puis quelques jours avant l'assemblée de seconde convocation.</p>
<p><strong>Voici les instructions pour voter :</strong></p>
<p>Quand elles vous seront demandées, saisissez les informations suivantes :</p>
<ul>
<li>Numéro de coopérateur : ".$results->reference."</li>
<li>Mot de passe : ".$results->password."</li>
</ul>
<p><strong>Le vote se déroule en 4 étapes :</strong></p>
<p>1. Vous devez vous identifier en utilisant votre numéro de coopérateur et le code d'accès donné ci-dessus.</p>
<p>2. Vous devez compléter le questionnaire avec vos choix.</p>
<p>3. Vos choix seront affichés, et il vous sera demandé de les confirmer, ou de retourner à l'étape précédente si vous souhaitez modifier votre vote.</p>
<p>4. Après avoir confirmé vos choix, une clé de contrôle unique vous sera donnée, qui vous permettra de vérifier que votre réponse a été correctement enregistrée. Pour assurer l'anonymat, aucun lien ne sera conservé entre cette clé et vos identifiants d'accès, gardez donc précieusement cette clé.<br />
<strong>Une fois que vous aurez voté, vous ne pourrez plus le faire à nouveau.</strong></p>
<p>Merci par avance pour votre participation à ce vote électronique.</p>
<p>Coopérativement,<br />
Le Président du Directoire</p>
<p>Ouvaton Coopérative SA à directoire et conseil de surveillance à capital variable Siège Social 16 bis rue dOdessa 75014 PARIS R.C.S. Paris 438 168 718</p>
</body>
</html>
";
$mail->msgHTML($body);
if ($mail->send()) {
// On fait le ménage dans PHPMailer avant la prochaine boucle
$mail->clearAddresses();
$mail->clearAttachments();
// On marque que le mail est envoyé pour ce coopérateur
$sql ="
UPDATE clients
SET mailed = :new_nb_mail_sent
WHERE reference = :reference
";
$stmt = $bdd->prepare($sql);
$stmt->bindParam(':reference', $results->reference);
$stmt->bindParam(':new_nb_mail_sent', $new_nb_mail_sent);
// Exécution de la requête
$stmt->execute();
} else {echo 'Mailer Error: ' . $mail->ErrorInfo . '<br />';}
}
// On regarde combien de coopérateurs n'ont pas encore de mails
$sql = "SELECT COUNT(*) FROM clients WHERE vote = 0 AND mailed = :nb_mail_sent";
$stmt = $bdd->prepare($sql);
$stmt->bindParam(':nb_mail_sent', $_SESSION['nb_mail_sent']);
// Exécution de la requête
$stmt->execute();
$results = $stmt->fetch();
$nbl = $results[0];
// On actualise la date et on incrémente le compteur
if ($nbl == 0) {
$nb_mail_sent = 1;
$sql ="
UPDATE admin SET option_value =
CASE
WHEN option_id = 2 THEN :last_mail_sent
WHEN option_id = 3 THEN :nb_mail_sent
ELSE option_value
END
WHERE option_id IN (2,3)
";
$stmt = $bdd->prepare($sql);
$stmt->bindParam(':last_mail_sent', date("Y-m-d H:i:s"));
$stmt->bindParam(':nb_mail_sent', $nb_mail_sent);
// Exécution de la requête
$stmt->execute();
}
// Time Stop
$timeend=microtime(true);
$time=$timeend-$timestart;
//Exec Time
$page_load_time = number_format($time, 3);
echo "Start : ".date("H:i:s", $timestart);
echo "<br>Stop: ".date("H:i:s", $timeend);
echo "<br>Script execute en " . $page_load_time . " sec";
header('Location: ../index.php?$sent=true&$nbs='.$nbs.'&$nbl='.$nbl.'&$plt='.$page_load_time);
} else {echo '<p>Aucune données ?</p>';}
} else {
// On envoie les mails par paquet de 75
$query = $bdd->prepare("SELECT * FROM clients WHERE vote = 0 AND mailed = ? LIMIT 75");
$query->execute(array($_SESSION['nb_mail_sent']));
// Si tout le monde n'a pas voté, on balance les mails
$nbs = $query->rowCount();
if ($query->rowCount() > 0) {
// On utilise PHPMailer
while ($results = $query->fetch(PDO::FETCH_OBJ)) {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->CharSet = "UTF-8";
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
//$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
//$mail->Debugoutput = 'html';
// To load the French version
$mail->setLanguage('fr', 'PHPMailer/language/');
$mail->Host = 'smtp.ouvaton.coop';
$mail->SMTPAuth = true;
$mail->SMTPKeepAlive = true;
$mail->Username = '';
$mail->Password = '';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = '';
$mail->FromName = 'Ouvaton.coop AG 2019';
$mail->addAddress($results->email);
$mail->addReplyTo('');
$mail->isHTML(true);
$mail->Subject = 'Ouvaton AG 2019 : quelques minutes pour participer au vote';
// On prépare le contenu du mail
$body = "
<html>
<head>
<title>Ouvaton.coop AG 2019</title>
</head>
<body>
<p>Cher Coopérateur/Chère Coopératrice,</p>
<p>Plus que quelques semaines pour voter et participer à notre AG 2019 !</p>
<p>Notre AG se déroulera le vendredi 29 juin 2019 au 187 montée de Choulans 69005 Lyon, à 13h.</p>
<p>Vous trouverez tous les documents relatifs à l'Assemblée Générale 2019 statuant sur l'exercice 2018 (documents comptables, rapports, candidatures) sur le site de la Coopérative en <a href=\"https://ouvaton.coop/la-cooperative/assemblees-generales/ag-2019/\">https://ouvaton.coop/la-cooperative/assemblees-generales/ag-2019/</a>.<br />
Ils peuvent être discutées sur <a href=\"https://forums.ouvaton.org\">les forums Ouvaton</a>.</p>
<p>Le formulaire de vote en ligne de notre Assemblée Générale est disponible sur <a href=\"https://ag.ouvaton.coop\">https://ag.ouvaton.coop</a>.</p>
<p>Il est accessible dès maintenant et le restera jusqu'au jour de l'Assemblée Générale à 15h.<br />
Nous attirons votre attention sur le fait que vous ne pourrez pas corriger votre vote une fois que vous l'aurez émis.</p>
<p><strong>Voici les instructions pour voter :</strong></p>
<p>Quand elles vous seront demandées saisissez les informations suivantes :</p>
<ul>
<li>Numéro de coopérateur : ".$results->reference."</li>
<li>Mot de passe : ".$results->password."</li>
</ul>
<p><strong>Le vote se déroule en 4 étapes :</strong></p>
<p>1. Vous devez vous identifier en utilisant votre numéro de coopérateur et le code d'accès donné ci-dessus.</p>
<p>2. Vous devez compléter le questionnaire avec vos choix.</p>
<p>3. Vos choix seront affichés, et il vous sera demandé de les confirmer, ou de retourner à l'étape précédente si vous souhaitez modifier votre vote.</p>
<p>4. Après avoir confirmé vos choix, une clé de contrôle unique vous sera donnée, qui vous permettra de vérifier que votre réponse a été correctement enregistrée. Pour assurer l'anonymat, aucun lien ne sera conservé entre cette clé et vos identifiants d'accès, gardez donc précieusement cette clé. Une fois que vous aurez voté, vous ne pourrez plus le faire à nouveau.</p>
<p>Merci par avance pour votre participation à ce vote électronique.</p>
<p>Coopérativement,<br />
Le Président du Directoire</p>
<p>Ouvaton Coopérative SA à directoire et conseil de surveillance à capital variable Siège Social 16 bis rue dOdessa 75014 PARIS R.C.S. Paris 438 168 718</p>
</body>
</html>
";
$mail->msgHTML($body);
if ($mail->send()) {
// On fait le ménage dans PHPMailer avant la prochaine boucle
$mail->clearAddresses();
$mail->clearAttachments();
// On marque que le mail est envoyé pour ce coopérateur
$sql ="
UPDATE clients
SET mailed = :new_nb_mail_sent
WHERE reference = :reference
";
$stmt = $bdd->prepare($sql);
$stmt->bindParam(':reference', $results->reference);
$stmt->bindParam(':new_nb_mail_sent', $new_nb_mail_sent);
// Exécution de la requête
$stmt->execute();
} else {echo 'Mailer Error: ' . $mail->ErrorInfo . '<br />';}
}
// On regarde combien de coopérateurs n'ont pas encore de mails
$sql = "SELECT COUNT(*) FROM clients WHERE vote = 0 AND mailed = :nb_mail_sent";
$stmt = $bdd->prepare($sql);
$stmt->bindParam(':nb_mail_sent', $_SESSION['nb_mail_sent']);
// Exécution de la requête
$stmt->execute();
$results = $stmt->fetch();
$nbl = $results[0];
// On actualise la date et on incrémente le compteur
if ($nbl == 0) {
$nb_mail_sent = $_SESSION['nb_mail_sent']+1;
$sql ="
UPDATE admin SET option_value =
CASE
WHEN option_id = 2 THEN :last_mail_sent
WHEN option_id = 3 THEN :nb_mail_sent
ELSE option_value
END
WHERE option_id IN (2,3)
";
$stmt = $bdd->prepare($sql);
$stmt->bindParam(':last_mail_sent', date("Y-m-d H:i:s"));
$stmt->bindParam(':nb_mail_sent', $nb_mail_sent);
// Exécution de la requête
$stmt->execute();
}
//Clore la requête
$stmt = null;
// Time Stop
$timeend=microtime(true);
$time=$timeend-$timestart;
//Exec Time
$page_load_time = number_format($time, 3);
echo "Start : ".date("H:i:s", $timestart);
echo "<br>Stop: ".date("H:i:s", $timeend);
echo "<br>Script execute en " . $page_load_time . " sec";
header('Location: ../index.php?$sent=true&$nbs='.$nbs.'&$nbl='.$nbl.'&$plt='.$page_load_time);
} else {echo '<p>Aucune données !!</p>';}
}