<?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 null; } } // 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 choixVotation($path, $methode = 2, $confirm = true) //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); 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?id=' . $votations["0"]["id"]) . $redirect; } print ('<form method="get" action="' . $path . '">'); print "<pre>"; print '<input type="hidden" name="action" value="' . $action . '">'; foreach($votations as $key => $value ) { print '<input type="radio" name="id" value="' . $value["id"] . '"> ' . $value["titre"] . ' :' . $value["libelle"] . '<br>'; } // TODO confirmation du choix par javascript si $confirm = true print '</pre><br> <div> <input type="submit" value="Envoyer"> </div> </form>'; } function votationForm($path, $titre="", $libelle="", $dateDebut="", $DateFin="", $status=0) { //TODO vérification du formulaire en javascript print('<form method="get" action="' . $path . '">'); print('<label for="titre">' . _("Titre") .'</label><br><input type="text" id="titre" name="titre" value="'. $titre . '">') . EOLH; print('<label for="libelle">' . _("Description") . '</label><br><input type="text" id="libelle" name="libelle" value="'. $libelle . '">') . EOLH; print('<label for="dateDebut">' . _("Date de début de la période de vote") . '</label><br><input type="date" id="dateDebut" name="dateDebut" value="'. $dateDebut . '">') . EOLH; print('<label for="dateFin">' . _("Date de fin de la période de vote") . '</label><br><input type="date" id="dateFin" name="dateFin" value="'. $dateFin . '">') . EOLH; print('<input type="submit" formaction="index.php" value="' . _("Annuler") . '">') . EOLH; print('<input type="submit" value="' . _("Envoyer") . '">') . EOLH; } function votesForm($path, $libelle = "", $method = 0) { $db = new db(); $query = "SELECT * FROM methods"; // clotûre $db->query($query); $methods = $db->result->fetch_all(MYSQLI_ASSOC); if (!(array_key_exists($method, $methods))) { print(_("L'ID de la méthode demandée n'est pas bonne " . __file__ . __LINE__)); log_error(_("L'ID de la méthode demandée n'est pas bonne " . __file__ . __LINE__), true, true); } //TODO vérification du formulaire en javascript print('<form method="get" action="' . $path . '">' . EOL); print('<label for="libelle">' . _("Libellé du vote") .'</label><br><input type="text" id="libelle" name="libelle" value="'. $libelle . '">') . EOLH; print('<label for="method">' . _("Méthode de vote") . '</label><br> <select id="method" name="method" value="'. $method . '">') . EOLH; if ($method == 0) { print('<option value ="">' . _("Choisissez une option") . '<option>') . EOL; } foreach ($methods as $value) { $id = $value["id"]; if ($id == $method) { print('<option value ="' . $id . '" selected>' . $value["libelle"] . '<option>' . EOL); }else { print('<option value ="' . $id . '">' . $value["libelle"] . '<option>' . EOL); } } print("</select>"); print('<input type="submit" formaction="index.php" value="' . _("Annuler") . '">') . EOLH; print('<input type="submit" value="' . _("Envoyer") . '">') . EOLH; print('</form>') . EOL; } 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); } ?>