Paaxio 1.0
Plateforme de streaming musical - SAE IUT Bayonne
Chargement...
Recherche...
Aucune correspondance
controller_newsletter.class.php
Aller à la documentation de ce fichier.
1<?php
2
23{
30 public function __construct(\Twig\Environment $twig, \Twig\Loader\FilesystemLoader $loader)
31 {
32 parent::__construct($loader, $twig);
33 }
34
40 public function afficher()
41 {
42 $template = $this->getTwig()->load('newsletter.html.twig');
43 echo $template->render(array(
44 "page" => [
45 'title' => "Newsletter",
46 'name' => "newsletter",
47 'description' => "Newsletter de Paaxio"
48 ],
49 ));
50 }
51
61 public function ajouter()
62 {
63 if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
64 $this->redirectTo('newsletter', 'afficher');
65 }
66
67 $post = $this->getPost() ?? [];
68 $email = trim($post['email'] ?? '');
69
70 $errors = [];
71 $success = '';
72
73 if (empty($email)) {
74 $errors[] = 'L\'adresse e-mail est requise.';
75 } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
76 $errors[] = 'L\'adresse e-mail n\'est pas valide.';
77 }
78
79 if (empty($errors)) {
80 try {
81 $pdo = $this->getPDO();
82 $dao = new NewsletterDAO($pdo);
83
84 if ($dao->existsByEmail($email)) {
85 // Pour la sécurité, on ne révèle pas si l'email est déjà présent : message générique succès
86 $success = 'Merci ! Votre inscription à la newsletter a bien été prise en compte.';
87 // On garde les erreurs vide pour ne pas afficher de bloc erreur
88 } else {
89 $n = new Newsletter();
90 $n->setEmail($email);
91 $n->setDateInscription(new DateTime());
92 if ($dao->create($n)) {
93 $success = 'Merci ! Votre inscription à la newsletter a bien été prise en compte.';
94 } else {
95 $errors[] = 'Une erreur est survenue lors de l\'inscription. Veuillez réessayer.';
96 }
97 }
98 } catch (Exception $e) {
99 $errors[] = 'Erreur serveur : ' . $e->getMessage();
100 }
101 }
102
103 $template = $this->getTwig()->load('newsletter.html.twig');
104 echo $template->render(array(
105 "page" => [
106 'title' => "Newsletter",
107 'name' => "newsletter",
108 'description' => "Newsletter de Paaxio"
109 ],
110 'success' => $success,
111 'errors' => $errors,
112 'form' => [
113 'email' => $errors ? $email : ''
114 ]
115 ));
116 }
117}
Contrôleur dédié à la gestion de la newsletter.
__construct(\Twig\Environment $twig, \Twig\Loader\FilesystemLoader $loader)
Constructeur du contrôleur newsletter.
ajouter()
Traite l'inscription à la newsletter.
afficher()
Affiche le formulaire d'inscription à la newsletter.
Classe de base pour tous les contrôleurs de l'application.
getPost()
Récupère les données POST.
Twig Environment $twig
redirectTo(string $controller, string $method, array $params=[])
Redirige vers un contrôleur et une méthode donnés.
Twig Loader FilesystemLoader $loader
getPDO()
Récupère la connexion PDO.
getTwig()
Récupère l'environnement Twig.