ldc-poule-et-toque/public/unsubscribe.php
2025-03-31 09:34:48 +02:00

201 lines
No EOL
5.2 KiB
PHP

<?php
require_once(__DIR__ . '/wp/wp-load.php');
use LDC\LDCCRM\Exceptions\ApiErrorException;
use LDC\LDCCRM\Exceptions\CrmException;
use LDC\LDCCRM\Exceptions\ValidationException;
use LDC\LDCCRM\Models\Customer;
use LDC\LDCCRM\Models\SingleOptin;
$callOK = false;
$modelNotFound = false;
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
if (isset($_GET['hashcode']) and !empty($_GET['hashcode'])) {
// * Initialise CRM API
initApiCrm();
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
$hashcode = sanitize_key($_GET['hashcode']);
try {
// Le customer existe ? Il est optin ?
if (($customer = Customer::find($hashcode)) and $customer->opt_in) {
// * Il met son optin à false
$customer->toggleOptin();
$callOK = true;
// Sinon est-il Single Optin ?
} else if (SingleOptin::unsetStatusWithHashcode($hashcode)) {
$callOK = true;
} else {
$modelNotFound = true;
}
} catch (ValidationException | CrmException | ApiErrorException $e) {
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log,Squiz.PHP.DiscouragedFunctions.Found
error_log(sprintf(
'ERROR CRM API : %s - %s | hashcode : %s',
get_class($e) === ApiErrorException::class ? $e->getApiError()->label : $e->getMessage(),
$e->getMessage(),
$hashcode
));
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Désinscription à la newsletter Poule & Toque</title>
<style>
@font-face {
font-family: 'campersans_regular';
src: url('app/themes/poule-et-toque-theme/assets/fonts/fenotype_-_campersans1-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}
html,
body,
::before,
::after,
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background-color: #fef6ef;
font-family: Arial, Helvetica, sans-serif;
font-size: 30px;
font-weight: normal;
color: #000000;
}
.post-title {
font-family: 'campersans_regular', Arial, Helvetica, sans-serif;
font-size: 1.33em;
font-weight: 700;
color: #dc4405;
}
a {
color: #000000;
transition: color .5s;
}
a:hover {
color: #dc4405;
}
p {
margin: 1em 0;
font-size: .8em;
}
span {
font-size: .6em;
}
.wrapper-unsub {
display: grid;
grid-template-rows: min-content min-content auto min-content;
justify-items: center;
min-height: 100vh;
padding: 10vw 4vw;
}
.unsub--logo {
width: 60%;
text-align: center;
}
.unsub--logo img {
width: 100%;
max-width: 300px;
}
.unsub--title {
margin: 4vw 0;
text-align: center;
}
.unsub--footer {
width: 100%;
}
@media only screen and (min-width:768px) {
.post-title {
font-size: 2em;
}
p {
font-size: 1em;
}
span {
font-size: .8em;
}
.wrapper-unsub {
padding: 4vw 10vw;
}
}
@media only screen and (min-width:1024px) {
.post-title {
font-size: 2.33em;
}
p {
font-size: 1.2em;
}
span {
font-size: 1em;
}
}
@media only screen and (min-width:1440px) {}
@media only screen and (min-width:1920px) {}
</style>
</head>
<body>
<div class="wrapper-unsub">
<div class="unsub--logo">
<img src="app/themes/poule-et-toque-theme/assets/images/logo.png" alt="Logo de la marque Poule et Toque">
</div>
<div class="unsub--title">
<h1 class="post-title">Désinscription</h1>
</div>
<div class="unsub--content">
<?php
/**
* On ne communique pas sur model not found
* pour ne pas créer une page où on peut determiner
* qui est inscrit dans la crm
*/
if($callOK or $modelNotFound) : ?>
<p>Vous êtes désinscrits de la newsletter Poule & Toque.</p>
<p>En espérant vous revoir bientôt !</p>
<?php else: ?>
<p>Une erreur est survenue.</p>
<p>Veuillez réessayer ultérieurement.</p>
<?php endif; ?>
</div>
<div class="unsub--footer">
<span>Retrouvez-nous sur <a href="https://www.poule-et-toque.fr/">poule-et-toque.fr</a> !</span>
</div>
</div>
</body>
</html>