/*! * GJframework * model/Newsletter.class.php * v1.0.0 (03/09/2018) * * Created by Guillaume Juncker on 24/08/2018. * Copyright © Guillaume Juncker. All rights reserved. */ /** * Newsletter * Classe de gestion des newsletters */ class Newsletter extends DB { public $id = "", $email = "", $unsubscribe_code = ""; /*------------------------------------------------------------------------------------------------------------------------------*/ /** * __construct * Construit un objet Newsletter */ /* public function __construct($vars = NULL) { parent::__construct($vars); } */ /*------------------------------------------------------------------------------------------------------------------------------*/ /** * initRequiredVars * Implémentation de la fonction parente * @return void */ protected function initRequiredVars() { $this->required_vars = array("email"); } /** * initUniqueVars * Implémentation de la fonction parente * @return void */ protected function initUniqueVars() { $this->unique_vars = array("email"); } /** * initErrors * Surcharge de la fonction parente pour personnaliser les messages * @return void */ protected function initErrors() { parent::initErrors(); $this->Errors['I_SUCCESS']->message = "Vous avez bien été inscrit(e) à la liste de diffusion"; $this->Errors['I_MISSING']->message = "Veuillez renseigner tous les champs obligatoires"; $this->Errors['I_EXISTS']->message = "Vous semblez être déjà inscrit(e) à cette liste de diffusion"; $this->Errors['I_ERROR']->message = "Une erreur s'est produite lors de votre inscription à la liste de diffusion, veuillez réessayer"; $this->Errors['D_SUCCESS']->message = "Vous avez bien été désinscrit(e) de la liste de diffusion"; $this->Errors['D_ERROR']->message = "Une erreur s'est produite lors de votre désinscription de la liste de diffusion, veuillez réessayer"; } /*------------------------------------------------------------------------------------------------------------------------------*/ /** * subscribe * Inscription à la newsletter * @param string $email: l'adresse email du nouvel inscrit * @return CustomError: l'erreur déclenchée à l'exécution */ public function subscribe($email) { return $this->insert(array("email" => $email, "unsubscribe_code" => $GLOBALS['_SITE']->strRand(50))); } /** * send * Envoie la newsletter à l'ensemble des inscrits * @param string $subject: le sujet de la newsletter * @param string $message: le contenu de la newsletter */ public function send($subject, $message) { foreach($this->getAll() as $newsletter) { $GLOBALS['_SITE']->Email->send($newsletter->email, $subject, $message); } } /** * unsubscribe * Désinscription à la newsletter * @param int $id: l'id de l'inscrit à supprimer * @param string $unsubscribe_code: le code d'autorisation à la désinscription * @return CustomError: l'erreur déclenchée à l'exécution */ public function unsubscribe($id, $unsubscribe_code) { if($this->id== $id AND $this->unsubscribe_code== $unsubscribe_code) { return $this->delete(); } else { return $this->Errors['D_ERROR'];} } }