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

Last change on this file was 101265, checked in by tcharlss@…, 4 years ago

version 3.1.15 : ajout d'un formulaire pour envoyer des notifications ponctuellement aux abonnés d'une offre, en complément des notifications programmées donc. Par exemple, pour notifier les gens dont l'abonnement a expiré et qu'on ne pourrait pas inclure dans les notifications programmées.
Pas de doublon : si on envoie une notification et qu'elle est déjà programmée le même jour, elle ne partira qu'une seule fois.
On peut choisir les abonnements en fonction de leurs statuts et de leurs dates de création/fin.
Il y a une étape de vérification avant d'envoyer pour éviter les fausses manoeuvres.

File size: 2.4 KB
Line 
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){
20                       
21                        // Avant ou après la date de fin de l'abonnement ?
22                        switch ($notification['quand']){
23                                case 'apres':
24                                        $operateur = " - ";
25                                        break;
26                                default:
27                                        $operateur = " + ";
28                        }
29                       
30                        // De combien doit-on modifier la date ?
31                        switch ($notification['periode']){
32                                case 'jours':
33                                        $ajout = " $operateur ${notification['duree']} days";
34                                        break;
35                                case 'mois':
36                                        $ajout = " $operateur ${notification['duree']} months";
37                                        break;
38                                default:
39                                        $ajout ='';
40                                        break;
41                        }
42                       
43                        // S'il y a de quoi ajouter, alors on va calculer l'échéance à chercher
44                        if ($ajout){
45                                $echeance = date('Y-m-d', strtotime($jourdhui.$ajout));
46                        }
47                       
48                        // Pour cette notification on cherche donc tous les abonnés ayant cette échéance avec la même offre
49                        if ($a_notifier = sql_allfetsel(
50                                'id_abonnement, nom, email',
51                                'spip_abonnements as a left join spip_auteurs as u on a.id_auteur=u.id_auteur',
52                                array(
53                                        'DATE_FORMAT(date_fin, "%Y-%m-%d") = '.sql_quote($echeance),
54                                        'id_abonnements_offre = '.intval($notification['id_abonnements_offre']),
55                                        'email is not null'
56                                )
57                        )){
58                                // Pour chacun on programme un envoi de mail
59                                foreach ($a_notifier as $abonne){
60                                        $id_job = job_queue_add(       
61                                                'abonnements_notifier_echeance',
62                                                "Notifier automatiquement ${abonne['nom']} ${notification['duree']} ${notification['periode']} ${notification['quand']} l'échéance de son abonnement ${abonne['id_abonnement']}",
63                                                array(
64                                                        $abonne['id_abonnement'],
65                                                        $abonne['nom'],
66                                                        $abonne['email'],
67                                                        $notification['duree'],
68                                                        $notification['periode'],
69                                                        $notification['quand'],
70                                                ),
71                                                'inc/abonnements',
72                                                true
73                                        );
74                                        job_queue_link($id_job, array('objet'=>'abonnement', 'id_objet'=>$abonne['id_abonnement']));
75                                }
76                        }
77                }
78        }
79       
80        return 1;
81}
82
83?>
Note: See TracBrowser for help on using the repository browser.