source: spip-zone/_plugins_/abonnements/trunk/genie/abonnements_verifier_notifications.php @ 99536

Last change on this file since 99536 was 99536, checked in by toutati@…, 4 years ago

formulaire des notifications utilise le champ quand -1mois lorsque la notification est avant, 1mois lorsqu'elle est apres

File size: 2.2 KB
RevLine 
[71605]1<?php
2
3// Sécurité
4if (!defined('_ECRIRE_INC_VERSION')) return;
5
6/*
7 * Vérifie si aujourd'hui on a des notifications à envoyer à certains abonnés
8 */
9function genie_abonnements_verifier_notifications_dist($time){
10        include_spip('base/abstract_sql');
11        $jourdhui = date('Y-m-d H:I:s');
12       
13        // On va chercher toutes les notifications
14        if (
15                $notifications = sql_allfetsel('*', 'spip_abonnements_offres_notifications')
16                and is_array($notifications)
17        ){
18                // Pour chaque notification on va chercher les abonnés dont c'est le moment
19                foreach ($notifications as $notification){
[99536]20                       
21                        //avant ou après la date de fin de l'abonnement?
22                        if($relance['quand'] == "apres") $operateur = " - "; 
23                        else $operateur = " + ";
24                       
[71605]25                        // De combien doit-on modifier la date
26                        switch ($notification['periode']){
27                                case 'jours':
[99536]28                                        $ajout = " $operateur ${notification['duree']} days";
[71605]29                                        break;
30                                case 'mois':
[99536]31                                        $ajout = " $operateur ${notification['duree']} months";
[71605]32                                        break;
33                                default:
34                                        $ajout ='';
35                                        break;
36                        }
37                       
38                        // S'il y a de quoi ajouter, alors on va calculer l'échéance à chercher
39                        if ($ajout){
40                                $echeance = date('Y-m-d', strtotime($jourdhui.$ajout));
41                        }
42                       
43                        // Pour cette notification on cherche donc tous les abonnés ayant cet échéance avec la même offre
44                        if ($a_notifier = sql_allfetsel(
45                                'id_abonnement, nom, email',
46                                'spip_abonnements as a left join spip_auteurs as u on a.id_auteur=u.id_auteur',
47                                array(
48                                        'DATE_FORMAT(date_fin, "%Y-%m-%d") = '.sql_quote($echeance),
49                                        'id_abonnements_offre = '.intval($notification['id_abonnements_offre']),
50                                        'email is not null'
51                                )
52                        )){
53                                // Pour chacun on programme un envoi de mail
54                                foreach ($a_notifier as $abonne){
55                                        $id_job = job_queue_add(       
56                                                'abonnements_notifier_echeance',
57                                                "Notifier ${abonne['nom']} ${notification['duree']} ${notification['periode']} avant la fin de son abonnement ${abonne['id_abonnement']}",
58                                                array($abonne['id_abonnement'], $abonne['nom'], $abonne['email'], $notification['duree'], $notification['periode']),
59                                                'inc/abonnements',
60                                                true
61                                        );
62                                        job_queue_link($id_job, array('objet'=>'abonnement', 'id_objet'=>$abonne['id_abonnement']));
63                                }
64                        }
65                }
66        }
67       
68        return 1;
69}
70
71?>
Note: See TracBrowser for help on using the repository browser.