1 | <?php |
---|
2 | |
---|
3 | /******************************************************************************************/ |
---|
4 | /* SPIP-listes est un systeme de gestion de listes d'abonnes et d'envoi d'information */ |
---|
5 | /* par email pour SPIP. */ |
---|
6 | /* Copyright (C) 2004 Vincent CARON v.caron<at>laposte.net , http://bloog.net */ |
---|
7 | /* */ |
---|
8 | /* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */ |
---|
9 | /* de la Licence Publique Generale GNU publiee par la Free Software Foundation */ |
---|
10 | /* (version 2). */ |
---|
11 | /* */ |
---|
12 | /* Ce programme est distribue car potentiellement utile, mais SANS AUCUNE GARANTIE, */ |
---|
13 | /* ni explicite ni implicite, y compris les garanties de commercialisation ou */ |
---|
14 | /* d'adaptation dans un but specifique. Reportez-vous a la Licence Publique Generale GNU */ |
---|
15 | /* pour plus de details. */ |
---|
16 | /* */ |
---|
17 | /* Vous devez avoir recu une copie de la Licence Publique Generale GNU */ |
---|
18 | /* en meme temps que ce programme ; si ce n'est pas le cas, ecrivez a la */ |
---|
19 | /* Free Software Foundation, */ |
---|
20 | /* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, etats-Unis. */ |
---|
21 | /******************************************************************************************/ |
---|
22 | |
---|
23 | function cron_spiplistes_cron($t){ |
---|
24 | |
---|
25 | $nomsite = $GLOBALS['meta']['nom_site']; |
---|
26 | |
---|
27 | // --------------------------------------------------------------------------------------------- |
---|
28 | // Taches de fond |
---|
29 | |
---|
30 | // |
---|
31 | // Envoi du mail quoi de neuf |
---|
32 | // |
---|
33 | |
---|
34 | $time = time(); |
---|
35 | spip_log("liste meleuse cron"); |
---|
36 | |
---|
37 | // Verifier toutes les listes et determiner les dates d'envoi |
---|
38 | |
---|
39 | $list_bg = spip_query ("SELECT * FROM spip_listes WHERE statut = 'liste' OR statut = 'inact'"); |
---|
40 | |
---|
41 | while($row = spip_fetch_array($list_bg)) { |
---|
42 | |
---|
43 | $id_liste_bg = $row['id_liste'] ; |
---|
44 | $titre_bg = $row['titre'] ; |
---|
45 | $titre_message = $row['titre_message'] ; |
---|
46 | $last_maj_bg = strtotime($row["maj"]); |
---|
47 | $auto_bg = $row["message_auto"]; |
---|
48 | $periode_bg = $row["periode"]; |
---|
49 | |
---|
50 | |
---|
51 | $temps = $time - $last_maj_bg ; |
---|
52 | $top = 3600 * 24 * $periode_bg ; |
---|
53 | |
---|
54 | if ( ($auto_bg == 'oui') AND ($periode_bg > 0) AND ( $temps > $top) ) { |
---|
55 | spip_log("la liste $id_liste_bg demande un envoi"); |
---|
56 | //squelette du patron |
---|
57 | $patron = $row["patron"] ; |
---|
58 | $lang_bg = $row["lang"]; |
---|
59 | spip_log('->'.$lang_bg); |
---|
60 | //Maj de la date d'envoi |
---|
61 | spip_query("UPDATE spip_listes SET maj=NOW() WHERE id_liste="._q($id_liste_bg)); |
---|
62 | |
---|
63 | |
---|
64 | // preparation mail |
---|
65 | |
---|
66 | $date = date('Y-m-d H:i:s',$last_maj_bg) ; |
---|
67 | |
---|
68 | include_spip('public/assembler'); |
---|
69 | $contexte_patron = array('date' => $date,'patron'=>$patron, 'lang'=>$lang_bg); |
---|
70 | $texte_patron_bg = recuperer_fond('patrons/'.$patron, $contexte_patron); |
---|
71 | //$texte_patron_bg = recuperer_page(generer_url_public('patron_switch',"patron=$patron&date=$date",true)) ; |
---|
72 | |
---|
73 | $titre_patron_bg = ($titre_message =="") ? $titre_bg." de ".$nomsite : $titre_message; |
---|
74 | $titre_bg = $titre_patron_bg; |
---|
75 | |
---|
76 | spip_log("Message choppe -> $titre".$titre_bg, "spiplistes"); |
---|
77 | |
---|
78 | // ne pas envoyer des textes de moins de 10 caracteres |
---|
79 | include_spip('inc/spiplistes_api'); |
---|
80 | $taille = strlen(spip_listes_strlen(spiplistes_version_texte($texte_patron_bg))) ; |
---|
81 | spip_log("taille -> $taille","spiplistes"); |
---|
82 | //spip_log("txt -> ".spiplistes_version_texte($texte_patron_bg),"spiplistes"); |
---|
83 | |
---|
84 | if ( $taille > 10 ) { |
---|
85 | |
---|
86 | include_spip('inc/filtres'); |
---|
87 | $texte_patron_bg = liens_absolus($texte_patron_bg); |
---|
88 | // si un mail a pu etre genere, on l'ajoute a la pile d'envoi |
---|
89 | $type_bg = 'auto'; |
---|
90 | $statut_bg = 'encour'; |
---|
91 | |
---|
92 | // creer le courrier |
---|
93 | $result = spip_query("INSERT INTO spip_courriers (titre, texte, date, statut, type, id_auteur, id_liste) |
---|
94 | VALUES ("._q($titre_bg).","._q($texte_patron_bg).", NOW(),"._q($statut_bg).","._q($type_bg).", '1',"._q($id_liste_bg).")"); |
---|
95 | |
---|
96 | $id_message_bg = spip_insert_id(); |
---|
97 | |
---|
98 | //generer la pile d'envoi |
---|
99 | remplir_liste_envois($id_message_bg,$id_liste_bg); |
---|
100 | spip_log("remplir courrier $id_message_bg, liste : $id_liste_bg"); |
---|
101 | } else { |
---|
102 | spip_log("envoi mail nouveautes : pas de nouveautes ->$taille"); |
---|
103 | |
---|
104 | $type_bg = 'auto'; |
---|
105 | $statut_bg = 'publie'; |
---|
106 | |
---|
107 | $result = spip_query("INSERT INTO spip_courriers (titre, texte, date, statut, type, id_auteur, id_liste) |
---|
108 | VALUES ("._q(_L("Pas d'envoi")) |
---|
109 | .","._q(_L("aucune nouveauté, le mail automatique n'a pas été envoyé")) |
---|
110 | .", NOW(),"._q($statut_bg).","._q($type_bg).", '1' ,"._q($id_liste_bg)." )"); |
---|
111 | $id_message_bg = spip_insert_id(); |
---|
112 | |
---|
113 | } // y'a du neuf |
---|
114 | } // c'est l'heure |
---|
115 | |
---|
116 | }// fin du test nb listes |
---|
117 | |
---|
118 | /**************/ |
---|
119 | |
---|
120 | // Envoi d'un mail automatique ? |
---|
121 | $result_pile = spip_query("SELECT COUNT(id_courrier) AS n FROM spip_courriers WHERE statut='encour'"); |
---|
122 | if (($row = spip_fetch_array($result_pile)) && $row['n']){ |
---|
123 | spip_log("appel meleuse"); |
---|
124 | include_spip('inc/spiplistes_meleuse'); |
---|
125 | |
---|
126 | $result_pile = spip_query("SELECT COUNT(id_courrier) AS n FROM spip_courriers WHERE statut='encour'"); |
---|
127 | if (($row = spip_fetch_array($result_pile)) && $row['n']){ |
---|
128 | spip_log("spiplistes cron : il reste des courriers a envoyer !"); |
---|
129 | return (0 - $t); |
---|
130 | } |
---|
131 | } |
---|
132 | return 1; |
---|
133 | } |
---|
134 | |
---|
135 | /******************************************************************************************/ |
---|
136 | /* SPIP-listes est un systeme de gestion de listes d'abonnes et d'envoi d'information */ |
---|
137 | /* par email pour SPIP. */ |
---|
138 | /* Copyright (C) 2004 Vincent CARON v.caron<at>laposte.net , http://bloog.net */ |
---|
139 | /* */ |
---|
140 | /* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes */ |
---|
141 | /* de la Licence Publique Generale GNU publiee par la Free Software Foundation */ |
---|
142 | /* (version 2). */ |
---|
143 | /* */ |
---|
144 | /* Ce programme est distribue car potentiellement utile, mais SANS AUCUNE GARANTIE, */ |
---|
145 | /* ni explicite ni implicite, y compris les garanties de commercialisation ou */ |
---|
146 | /* d'adaptation dans un but specifique. Reportez-vous a la Licence Publique Generale GNU */ |
---|
147 | /* pour plus de details. */ |
---|
148 | /* */ |
---|
149 | /* Vous devez avoir recu une copie de la Licence Publique Generale GNU */ |
---|
150 | /* en meme temps que ce programme ; si ce n'est pas le cas, ecrivez a la */ |
---|
151 | /* Free Software Foundation, */ |
---|
152 | /* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, etats-Unis. */ |
---|
153 | /******************************************************************************************/ |
---|
154 | |
---|
155 | ?> |
---|