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

Last change on this file since 101473 was 101473, checked in by teddy.spip@…, 3 years ago

Début de refonte du plugin. On passe en v2.

  • On peut maintenant voir depuis le BO le nombre d'abonnement aux alertes ;
  • On peut s'abonner depuis l'espace privé sur les rubriques et secteurs enregistrés dans la config ;
  • On crée un fichier d'action pour ne pas modifier et casser supprimer_alerte.
File size: 4.7 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                $valeurs['editable_groupes'] = false;
48                if (isset($a['groupes']) and $a['groupes'] = to_array($a['groupes']) and count($a['groupes'])) {
49                        $valeurs['editable_groupes'] = true;
50                }
51                //Récuperation des abonnements aux rubriques
52                if ($a['rubriques']) {
53                        $rubriques = array();
54                        $sql_rubriques = sql_select("id_objet", "spip_alertes", "objet = 'rubrique' AND id_auteur = " . $id_auteur);
55                        while ($rub = sql_fetch($sql_rubriques)) {
56                                $rubriques[] = $rub['id_objet'];
57                        }
58                        $valeurs['rubriques'] = $rubriques ? $rubriques : '';
59                }
60                $valeurs['editable_rubriques'] = false;
61                if (isset($a['rubriques']) and $a['rubriques'] = to_array($a['rubriques']) and count($a['rubriques'])) {
62                        $valeurs['editable_rubriques'] = true;
63                }
64                //Récuperation des abonnements aux secteurs
65                if ($a['secteurs']) {
66                        $secteurs = array();
67                        $sql_secteurs = sql_select("id_objet", "spip_alertes", "objet = 'secteur' AND id_auteur = " . $id_auteur);
68                        while ($sec = sql_fetch($sql_secteurs)) {
69                                $secteurs[] = $sec['id_objet'];
70                        }
71                        $valeurs['secteurs'] = $secteurs ? $secteurs : '';
72                }
73                $valeurs['editable_secteurs'] = false;
74                if (isset($a['secteurs']) and $a['secteurs'] = to_array($a['secteurs']) and count($a['secteurs'])) {
75                        $valeurs['editable_secteurs'] = true;
76                }
77                //Récuperation des abonnements aux auteurs
78                if ($a['auteurs']) {
79                        $auteurs = array();
80                        $sql_auteurs = sql_select("id_objet", "spip_alertes", "objet = 'auteur' AND id_auteur = " . $id_auteur);
81                        while ($aut = sql_fetch($sql_auteurs)) {
82                                $auteurs[] = $aut['id_objet'];
83                        }
84                        $valeurs['auteurs'] = $auteurs ? $auteurs : '';
85                }
86                $valeurs['editable_auteurs'] = false;
87                if (isset($a['auteurs']) and $a['auteurs'] = to_array($a['auteurs']) and count($a['auteurs'])) {
88                        $valeurs['editable_auteurs'] = true;
89                }
90        }
91
92        return $valeurs;
93}
94
95function formulaires_alertes_email_traiter_dist($id_auteur) {
96        include_spip('inc/config');
97        $a = lire_config('config_alertes');
98        $now = date('Y-m-d h:i:s');
99        if (is_array($a)) {
100                //Supprimer les anciennes configuration d'abonnements. Tous d'un coup, brutal mais efficace et comme ça on n'a que des insert à faire.
101                sql_delete('spip_alertes', 'id_auteur = ' . intval($id_auteur));
102                //Mots
103                $mots = _request('mots');
104                foreach ($mots as $mot) {
105                        //Insertion des nouveaux mots abonnés
106                        $ins_mot = sql_insertq('spip_alertes',
107                                array('id_objet' => intval($mot), 'objet' => 'mot', 'id_auteur' => $id_auteur, 'maj' => $now));
108                }
109                //Rubriques
110                $rubriques = _request('rubriques');
111                foreach ($rubriques as $rubrique) {
112                        //Insertion des nouvelles rubriques abonnés
113                        $ins_rub = sql_insertq('spip_alertes', array(
114                                'id_objet' => intval($rubrique),
115                                'objet' => 'rubrique',
116                                'id_auteur' => $id_auteur,
117                                'maj' => $now,
118                        ));
119                }
120                //Secteurs
121                $secteurs = _request('secteurs');
122                foreach ($secteurs as $secteur) {
123                        //Insertion des nouveaux secteurs abonnés
124                        $ins_sec = sql_insertq('spip_alertes',
125                                array('id_objet' => intval($secteur), 'objet' => 'secteur', 'id_auteur' => $id_auteur, 'maj' => $now));
126                }
127                //Auteurs
128                $auteurs = _request('auteurs');
129                foreach ($auteurs as $auteur) {
130                        //Insertion des nouveaux auteurs abonnés
131                        $ins_aut = sql_insertq('spip_alertes',
132                                array('id_objet' => intval($auteur), 'objet' => 'auteur', 'id_auteur' => $id_auteur, 'maj' => $now));
133                }
134        }
135        $message = _T('alertes:your_alertes_message_ok');
136        $res = array('message_ok' => $message);
137
138        return $res;
139}
140
Note: See TracBrowser for help on using the repository browser.