Deux remarques rapides ; je suis en gros d'accod sur la méthode générale.
Il va l'inscrire dans une nouvelle table, genre spip_internautes
Il faut utiliser la table spip_auteurs, avec un statut de plus
éventuellement (on a déjà 6forum pour le forum public).
Ou encore en utilisant un squelette qui ne produit pas du HTML mais
du texte (je ne suis pas *particulièrement* fan des mails html, qui
permettent en outre de tracer la lecture).
Ouaips.
- un envoi automatique quotidien / hebdomadaire / mensuel
et
- un envoi manuel "quand ça me chante" pour les sites à périodicité
aléatoire, soit de la composition déjà faite, soit d'un texte libre "je
veux envoyer un flash parce-qu'il y a de l'info coco et l'info ça
n'attends pas".
Ceci doit être précédé de l'envoi d'un mail de test à une adresse à
saisir, c'est con mais très utile.
En fait, tu peux envoyer le mail auto à l'adresse de test, avec un lien
permettant d'aller "valider" ce mail : la validation te présente un
formulaire qui te permet d'éditer le mail avant l'envoi (c'est ce qu'on fait
sur la lettre hebdo du Portail des copains).
pour cela que je propose de noter la liste des mails à envoyer dans une
table faite pour ça, genre spip_envoi
- id_envoi bigint(21) auto_increment
- id_liste_diffusion bigint(21) clé étrangère
- id_internaute bigint(21) clé étrangère
- statut varchar(20) a_envoyer / envoye / erreur
... et de mettre à jour cette table lorsque l'envoi a été fait. Comme
ça on peut reprendre l'envoi s'il y a eu un problème, et on ne risque
pas (enfin on risque beaucoup moins) d'arroser un innocent de dizaines
de mails.
Je dirais même plus : on supprime l'enregistrement correspondant à un
destinataire AVANT d'essayer d'envoyer. Donc, si jamais ça génère un
plantage, deux cas :
1) ça n'a pas envoyé le mail, tant pis !
2) ça l'a envoyé, tant mieux !
mais on évite le scénario : on réessaie. (incontrôlable).
Ensuite l'envoi proprement dit :
- on boucle sur la table
- un mail php
Oui, et on s'arrête à un nombre maxi sans attendre nécessairement le timeout.
- si c'est bon on met à jour à "envoye"
- sinon on passe en erreur
Non : on considère par principe que c'est bon (cf ci-dessus).
... visuellement accompagné d'une petite progress-bar... ?
Boarf. De toutes façons rien n'oblige à ce que l'envoi soit synchrone avec
la décision d'envoyer. Tu en envoies cinquante, et à la pochaine connexion
tu en envoies encore 50, etc... jusqu'à épuisement de la file.
Puis un petit rapport, "ça s'est bien passé" sauf pour les emails
Non, pas de rapport.
3 - Gestion de la liste des abonnés
Relativement simple création / modification / suppression, avec un
champ de recherche (fait avec un '%like%' mais c'est du back).
Non, on ne va pas recréer un environnement classique de gestion de liste.
D'ailleurs, je trouve que ces interfaces (et j'en ai essayé plein crois-
moi!) sont toutes relativement merdiques.
4 - Publication des archives
On voit ça rarement sur les sites éditoriaux, c'est dommage à mon
sens.
Une BOUCLE(LISTES_DIFFUSION){id_liste}{par date/num}
#ID_LISTE
#DATE_CREATION
#DATE_ENVOI
#TEXTE
Mouais... ça pourrait aussi bien être géré dans un spip_articles.
Question : noter qu'un article a déjà été envoyé ? (table en plus ?
ou alors dans spip_articles mais bof si un jour on veut gérer plusieurs
listes) (serait pratique pour l'envoi auto et/ou le squelette texte de
mail, et pour gérer une interface plus complexe plus tard)
Tu confonds "ce qu'on veut afficher" et "comment envoyer des choses".
Mais, pour aller dans cette direction, le suivi des "articles déjà envoyés"
peut reposer sur un spip_meta (du genre "date_dernier_envoi_nouveautes") ;
tout en sachant que pour les articles pré- ou post-datéss ça ne marchera
pas.
-- Fil