[90] | 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 | ?> |
---|