Add files via upload

This commit is contained in:
2026-08-28 20:47:44 +02:00
committed by GitHub
parent 1abbb489d6
commit 61a0a08f64
17 changed files with 3962 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
<?php
// prospects_verifier.php
// Point d'entrée public (clic sur le lien reçu par mail) : valide l'adresse mail
// d'un prospect à partir de son token, quelle que soit la campagne d'origine,
// puis envoie automatiquement la documentation par défaut de cette campagne.
require __DIR__ . '/prospects_core.php';
header('Content-Type: text/html; charset=utf-8');
function pageMessage(string $texte): void
{
echo '<!doctype html><html lang="fr"><head><meta charset="utf-8">'
. '<title>ASPIC - Vérification</title></head>'
. '<body style="font-family:sans-serif;max-width:480px;margin:80px auto;text-align:center;">'
. '<p>' . htmlspecialchars($texte) . '</p>'
. '</body></html>';
}
$token = $_GET['token'] ?? '';
if ($token === '') {
http_response_code(400);
pageMessage('Lien de vérification invalide.');
exit;
}
$pdo = getDbConnection();
$stmt = $pdo->prepare(
'SELECT PSP_Incr, PSP_Prenom, PSP_Nom, PSP_Mail, PSP_CodeCampagne, PSP_TokenExpiration
FROM ASP_Prospects
WHERE PSP_TokenVerification = ? AND PSP_MailVerifie = 0 AND PSP_Actif = 1'
);
$stmt->execute([$token]);
$prospect = $stmt->fetch();
if (!$prospect) {
pageMessage('Ce lien de vérification est invalide ou a déjà été utilisé.');
exit;
}
if (strtotime($prospect['PSP_TokenExpiration']) < time()) {
pageMessage('Ce lien de vérification a expiré.');
exit;
}
$idProspect = (int) $prospect['PSP_Incr'];
$codeCampagne = $prospect['PSP_CodeCampagne'];
$pdo->prepare(
'UPDATE ASP_Prospects
SET PSP_MailVerifie = 1, PSP_TokenVerification = NULL, PSP_TokenExpiration = NULL
WHERE PSP_Incr = ?'
)->execute([$idProspect]);
journaliserOperation($idProspect, $codeCampagne . '-VAL');
// Envoi automatique de la doc par défaut de la campagne, si elle en a une de définie.
$stmt = $pdo->prepare('SELECT CMP_Incr, CMP_DocDefaut FROM ASP_Campagnes WHERE CMP_CodeCampagne = ?');
$stmt->execute([$codeCampagne]);
$campagne = $stmt->fetch();
if ($campagne && $campagne['CMP_DocDefaut']) {
$idDoc = (int) $campagne['CMP_DocDefaut'];
$idCampagneIncr = (int) $campagne['CMP_Incr'];
$stmt = $pdo->prepare('SELECT DOC_Libelle FROM ASP_Docs WHERE DOC_Incr = ?');
$stmt->execute([$idDoc]);
$doc = $stmt->fetch();
if ($doc) {
$lien = genererLienDoc($idProspect, $idDoc, $idCampagneIncr);
$envoiOk = envoyerMail($codeCampagne . '-DOC', $prospect['PSP_Mail'], [
'Prenom' => $prospect['PSP_Prenom'],
'Nom' => $prospect['PSP_Nom'],
'Lien' => $lien,
'Titre' => $doc['DOC_Libelle'],
]);
if ($envoiOk) {
journaliserOperation($idProspect, $codeCampagne . '-DOC');
} else {
error_log("ASPIC prospects: échec envoi mail de doc pour le prospect $idProspect");
}
}
}
pageMessage('Merci, votre adresse mail est vérifiée ! Vous allez recevoir notre documentation très prochainement.');