[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / abomailmans / genie / abomailmans_envois.php
1 <?php
2 /**
3 * Plugin Abomailmanss
4 * (c) 2009-2011 SPIP
5 * Distribue sous licence GPL
6 *
7 */
8
9 if (!defined("_ECRIRE_INC_VERSION")) return;
10 include_spip('inc/abomailmans');
11 include_spip('inc/distant');
12
13 /**
14 * Les abomailmans de chaque liste peuvent se faire par cron
15 * base sur les champs remplis de chaque liste
16 * automatique tout les /periodicite/ jours
17 * @param unknown_type $time
18 */
19 function genie_abomailmans_envois_dist($time) {
20
21 /**
22 * Les listes dont la date_envoi < maintenant+periodicite
23 * pour tester on peut mettre a MINUTE penser a remettre a DAY !!
24 */
25 $where = "periodicite!='' AND desactive='0' AND email!=''
26 AND date_envoi < DATE_SUB(NOW(), INTERVAL periodicite DAY)";
27 $id_liste = sql_getfetsel("id_abomailman", "spip_abomailmans", $where, '', "date_envoi", "1");
28
29 if ($id_liste) {
30 spip_log("il faut traiter liste id=$id_liste","abomailmans");
31 $res2 = liste_a_jour($id_liste);
32 } else $res2 = true;
33
34 /**
35 * nul, si la tache n'a rien a faire
36 * positif, si la tache a ete traitee
37 * negatif, si la tache a commence, mais doit se poursuivre.
38 * Cela permet d'effectuer des taches par lots (pour eviter des timeout sur les executions des scripts PHP
39 * a cause de traitements trop longs).
40 * Dans ce cas la, le nombre negatif indique correspond au nombre de secondes d'intervalle
41 * pour la prochaine execution.
42 */
43 return ($res1 OR $res2) ? 0 : $id_liste;
44 }
45
46
47
48 function liste_a_jour($id_liste) {
49 $envoi_ok=true;
50 $t = sql_fetsel("*", "spip_abomailmans", "id_abomailman=$id_liste");
51 if(!$t) {
52 spip_log("requete null ...","abomailmans");
53 return;
54 } else spip_log("envoi teste avec cron abomailmans","abomailmans");
55
56 $datas = array();
57 $nom_site = lire_meta("nom_site");
58 $email_webmaster = lire_meta("email_webmaster");
59 $charset = lire_meta('charset');
60
61
62 $sujet=$t['titre'];
63 $date_envoi=$t['date_envoi'];
64 $email_receipt=$t['email'];
65 $modele_defaut=$t['modele_defaut'];
66
67 $recuptemplate = explode('&',$modele_defaut);
68
69 include_spip('abomailmans_fonctions');
70 $paramplus = recup_param($modele_defaut); //pour url
71 $periodicite=intval($t['periodicite']);
72
73 /**
74 * la page a envoyer doit etre testee a maintenant moins periodicite
75 */
76 $time = time() - (3600 * 24 * $periodicite);
77
78 /**
79 * construction du query
80 */
81 parse_str($paramplus,$query);
82 $query['id_abomailman'] = $t['id_abomailman'];
83 $query['template'] = $recuptemplate[0];
84 $query['date'] = date('Y-m-d H:i:s', $time);
85
86 /**
87 * on peut verifier le fond grace à l'url
88 */
89 $url_genere = generer_url_public('abomailman_template',$query,'&');
90 $fond = recuperer_fond('abomailman_template',$query);
91
92 $body = array(
93 'html'=>$fond,
94 );
95 /* Format Texte */
96 $query['envoi_txt'] = "oui";
97 $body['texte'] = recuperer_fond('abomailman_template',$query);
98
99 //Si la page renvoie un contenu
100 if (strlen($fond) > 10) {
101
102 // email denvoi depuis config facteur
103 if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui'
104 AND $GLOBALS['meta']['facteur_adresse_envoi_email'])
105 $from_email = $GLOBALS['meta']['facteur_adresse_envoi_email'];
106 else
107 $from_email = $email_webmaster;
108 // nom denvoi depuis config facteur
109 if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui'
110 AND $GLOBALS['meta']['facteur_adresse_envoi_nom'])
111 $from_nom = $GLOBALS['meta']['facteur_adresse_envoi_nom'];
112 else
113 $from_nom = $nom_site;
114
115 if (abomailman_mail($from_nom, $from_email, "", $email_receipt, $sujet,$body, true, $charset)) {
116 spip_log("envoi ok = $url_genere tous les $periodicite jours sujet =".$sujet,"abomailmans");
117 } else {
118 spip_log("!! envoi nok = $url_genere tous les $periodicite jours sujet =".$sujet,"abomailmans."._LOG_ERREUR);
119 $envoi_ok=false;
120 }
121 }
122 else {
123 spip_log("maintenant=".date('Y-m-d H:i:s', time())." date demande = ".$query['date']." non envoye =$url_genere : rien de neuf depuis $periodicite jours","abomailmans");
124 }
125
126 if($envoi_ok) {
127 // Noter que l'envoi est OK meme si envoi echoue faute de contenu, on reessaiera dans /periodicite/ jours
128 sql_updateq("spip_abomailmans", array("date_envoi" => date('Y-m-d H:i:s', time())), "id_abomailman=".$t['id_abomailman']);
129 }
130 return false; # c'est bon
131 }
132
133 ?>