source: spip-zone/_plugins_/abomailmans/genie/abomailmans_envois.php @ 44019

Last change on this file since 44019 was 44019, checked in by kent1@…, 10 years ago

Réparation de la déclaration et mise à jour des tables

On rétablit le cron

  • Property svn:executable set to *
File size: 3.8 KB
Line 
1<?php
2/**
3 * Plugin Abomailmanss
4 * (c) 2009-2011 SPIP
5 * Distribue sous licence GPL
6 *
7 */
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10include_spip('inc/abomailmans');
11include_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 */
19function 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
48function liste_a_jour($id_liste) {
49        $t = sql_fetsel("*", "spip_abomailmans", "id_abomailman=$id_liste");
50        if(!$t) { 
51                spip_log("requete null ...","abomailmans");
52                return;
53        } else spip_log("envoi teste avec cron abomailmans","abomailmans");
54               
55        $datas = array();
56        $nom_site = lire_meta("nom_site");
57        $email_webmaster = lire_meta("email_webmaster");
58        $charset = lire_meta('charset');
59
60
61                $sujet=$t['titre']; 
62                $date_envoi=$t['date_envoi']; 
63                $email_receipt=$t['email'];
64                $modele_defaut=$t['modele_defaut'];
65               
66                $recuptemplate = explode('&',$modele_defaut);
67                       
68                include_spip('abomailmans_fonctions');
69                $paramplus = recup_param($modele_defaut); //pour url
70                $periodicite=intval($t['periodicite']);
71
72                /**
73                 * la page a envoyer doit etre testee a maintenant moins periodicite
74                 */
75                $time = time() - (3600 * 24 * $periodicite);
76
77                /**
78                 * construction du query
79                 */
80                parse_str($paramplus,$query);
81                $query['id_abomailman'] = $t['id_abomailman'];
82                $query['template'] = $recuptemplate[0];
83                $query['date'] = date('Y-m-d H:i:s', $time);
84
85                /**
86                 * on peut verifier le fond grace à l'url
87                 */
88                $url_genere = generer_url_public('abomailman_template',$query,'&'); 
89                $fond = recuperer_fond('abomailman_template',$query);
90       
91                $body = array(
92                'html'=>$fond,
93        ); 
94       
95        //Si la page renvoie un contenu
96        if (strlen($fond) > 10) {
97                               
98                // email denvoi depuis config facteur
99                if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui'
100                          AND $GLOBALS['meta']['facteur_adresse_envoi_email'])
101                                $from_email = $GLOBALS['meta']['facteur_adresse_envoi_email'];
102                        else
103                                $from_email = $email_webmaster;
104                // nom denvoi depuis config facteur
105                if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui'
106                          AND $GLOBALS['meta']['facteur_adresse_envoi_nom'])
107                                $from_nom = $GLOBALS['meta']['facteur_adresse_envoi_nom'];
108                        else
109                                $from_nom = $nom_site;
110                               
111                if (abomailman_mail($from_nom, $from_email, "", $email_receipt, $sujet,$body, true, $charset)) {
112                        spip_log("envoi ok = $url_genere tous les $periodicite jours sujet =".$sujet,"abomailmans");
113                        }
114        }
115        else 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"); 
116       
117        // Noter que l'envoi est OK meme si envoi echoue faute de contenu, on reessaiera dans /periodicite/ jours
118        sql_updateq("spip_abomailmans", array("date_envoi" => date('Y-m-d H:i:s', time())), "id_abomailman=".$t['id_abomailman']);
119       
120        return false; # c'est bon
121}
122
123?>
Note: See TracBrowser for help on using the repository browser.