source: spip-zone/_plugins_/alertes/trunk/formulaires/alertes_email.php @ 101351

Last change on this file since 101351 was 101351, checked in by teddy.spip@…, 3 years ago
  • revoir le formulaire de configuration, application de classes ;
  • Faire en sorte sur le formulaire de configuration de récupérer les données saisies à l'affichage d'erreurs ;
  • Passer par la fonction lire_config au lieu de la GLOBALS. Cela permettra de suivre les évolutions éventuelles de SPIP à l'avenir ;
  • Eviter des warnings PHP ;
  • Renommer le répertoire prive/exec en prive/squelettes/contenu/ pour bénéficier du templating SPIP dans le BO.
  • Up de y. On pourra faire un merge avec la branches/v1 avant une grosse mise à jour.

TODO :

  • Consulter les alertes en court et celles qui devront être envoyées par spip_alertes_cron ;
  • Avoir un compteur d'alertes sur une page rubrique ;
  • Sur la page de consultation des alertes enregistrées, pouvoir filtrer par objet et id_objet.
File size: 3.9 KB
Line 
1<?php
2/*
3 * Plugin Alertes
4 * Distribué sous licence GPL
5 *
6 * Formulaire d'enregistrement des abonnements.
7 */
8if (!defined("_ECRIRE_INC_VERSION")) {
9        return;
10}
11
12function formulaires_alertes_email_charger_dist($id_auteur) {
13        $valeurs = array();
14        $id_auteur = intval($id_auteur);
15        //Récuperation de la configuration de base
16        include_spip('inc/config');
17        $a = lire_config('config_alertes');
18        //A-t-on Accès restreint ?
19        $ar = filtre_info_plugin_dist('accesrestreint', 'est_actif');
20        if ($ar == true) {
21                $zones_restreintes = array();
22                if ($sql_zones = sql_select("id_zone", "spip_zones_liens",
23                        "objet = 'auteur' AND id_objet = " . intval($id_auteur))
24                ) {
25                        while ($zone = sql_fetch($sql_zones)) {
26                                if ($sql_z = sql_select("id_objet", "spip_zones_liens",
27                                        "objet = 'rubrique' AND id_zone = " . intval($zone['id_zone']))
28                                ) {
29                                        while ($z = sql_fetch($sql_z)) {
30                                                $zones_restreintes[] = $z['id_objet'];
31                                        }
32                                }
33                        }
34                }
35                $valeurs['rubriques_restreintes'] = $zones_restreintes;
36        }
37        if (is_array($a)) {
38                //Récuperation des abonnements au mots
39                if ($a['groupes']) {
40                        $mots = array();
41                        $sql_mots = sql_select("id_objet", "spip_alertes", "objet = 'mot' AND id_auteur = " . $id_auteur);
42                        while ($mot = sql_fetch($sql_mots)) {
43                                $mots[] = $mot['id_objet'];
44                        }
45                        $valeurs['mots'] = $mots ? $mots : '';
46                }
47                //Récuperation des abonnements aux rubriques
48                if ($a['rubriques']) {
49                        $rubriques = array();
50                        $sql_rubriques = sql_select("id_objet", "spip_alertes", "objet = 'rubrique' AND id_auteur = " . $id_auteur);
51                        while ($rub = sql_fetch($sql_rubriques)) {
52                                $rubriques[] = $rub['id_objet'];
53                        }
54                        $valeurs['rubriques'] = $rubriques ? $rubriques : '';
55                }
56                //Récuperation des abonnements aux secteurs
57                if ($a['secteurs']) {
58                        $secteurs = array();
59                        $sql_secteurs = sql_select("id_objet", "spip_alertes", "objet = 'secteur' AND id_auteur = " . $id_auteur);
60                        while ($sec = sql_fetch($sql_secteurs)) {
61                                $secteurs[] = $sec['id_objet'];
62                        }
63                        $valeurs['secteurs'] = $secteurs ? $secteurs : '';
64                }
65                //Récuperation des abonnements aux auteurs
66                if ($a['auteurs']) {
67                        $auteurs = array();
68                        $sql_auteurs = sql_select("id_objet", "spip_alertes", "objet = 'auteur' AND id_auteur = " . $id_auteur);
69                        while ($aut = sql_fetch($sql_auteurs)) {
70                                $auteurs[] = $aut['id_objet'];
71                        }
72                        $valeurs['auteurs'] = $auteurs ? $auteurs : '';
73                }
74        }
75
76        return $valeurs;
77}
78
79function formulaires_alertes_email_traiter_dist($id_auteur) {
80        include_spip('inc/config');
81        $a = lire_config('config_alertes');
82        $now = date('Y-m-d h:i:s');
83        if (is_array($a)) {
84                //Supprimer les anciennes configuration d'abonnements. Tous d'un coup, brutal mais efficace et comme ça on n'a que des insert à faire.
85                sql_delete('spip_alertes', 'id_auteur = ' . intval($id_auteur));
86                //Mots
87                $mots = _request('mots');
88                foreach ($mots as $mot) {
89                        //Insertion des nouveaux mots abonnés
90                        $ins_mot = sql_insertq('spip_alertes',
91                                array('id_objet' => intval($mot), 'objet' => 'mot', 'id_auteur' => $id_auteur, 'maj' => $now));
92                }
93                //Rubriques
94                $rubriques = _request('rubriques');
95                foreach ($rubriques as $rubrique) {
96                        //Insertion des nouvelles rubriques abonnés
97                        $ins_rub = sql_insertq('spip_alertes', array(
98                                'id_objet' => intval($rubrique),
99                                'objet' => 'rubrique',
100                                'id_auteur' => $id_auteur,
101                                'maj' => $now,
102                        ));
103                }
104                //Secteurs
105                $secteurs = _request('secteurs');
106                foreach ($secteurs as $secteur) {
107                        //Insertion des nouveaux secteurs abonnés
108                        $ins_sec = sql_insertq('spip_alertes',
109                                array('id_objet' => intval($secteur), 'objet' => 'secteur', 'id_auteur' => $id_auteur, 'maj' => $now));
110                }
111                //Auteurs
112                $auteurs = _request('auteurs');
113                foreach ($auteurs as $auteur) {
114                        //Insertion des nouveaux auteurs abonnés
115                        $ins_aut = sql_insertq('spip_alertes',
116                                array('id_objet' => intval($auteur), 'objet' => 'auteur', 'id_auteur' => $id_auteur, 'maj' => $now));
117                }
118        }
119        $message = _T('alertes:your_alertes_message_ok');
120        $res = array('message_ok' => $message);
121
122        return $res;
123}
124
Note: See TracBrowser for help on using the repository browser.