source: spip-zone/_plugins_/alertes/trunk/inc/alertes.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: 2.6 KB
Line 
1<?php
2/*
3 * Plugin Alertes
4 * Distribué sous licence GPL
5 *
6 * Fonctions reprise du plugin Mes favoris de Olivier Sallou, Cedric Morin.
7 */
8
9/**
10 * Cette fonction permet de supprimer une alerte.
11 * Il faut lui passer en argument un tableau contenant le `WHERE` de la requête SQL.
12 *
13 * @example
14 *      alertes_supprimer(array('id_alerte' => 2));
15 *
16 * @param array $paires
17 */
18function alertes_supprimer($paires) {
19        if (is_array($paires) and count($paires)) {
20                $cond = array();
21                foreach ($paires as $k => $v) {
22                        $cond[] = "$k=" . sql_quote($v);
23                }
24                $cond = implode(' AND ', $cond);
25                $res = sql_select('id_alerte,objet,id_objet,id_auteur', 'spip_alertes', $cond);
26                include_spip('inc/invalideur');
27                while ($row = sql_fetch($res)) {
28                        sql_delete("spip_alertes", "id_alerte=" . intval($row['id_alerte']));
29                        suivre_invalideur("alerte/" . $row['objet'] . "/" . $row['id_objet']);
30                        suivre_invalideur("alerte/auteur/" . $row['id_auteur']);
31                }
32        }
33}
34
35/**
36 * Ajouter une nouvelle alerte pour un auteur donné.
37 *
38 * @param int $id_objet
39 * @param string $objet
40 * @param int $id_auteur
41 *
42 * @return bool
43 *      true : Si l'alerte a bien été ajouté
44 *      false : Si l'alerte existe déjà en base ou si les arguments passés en paramètre ne sont pas conforme.
45 */
46function alertes_ajouter($id_objet, $objet, $id_auteur) {
47        include_spip('inc/utils');
48        if ($id_auteur
49                AND $id_objet = intval($id_objet)
50                AND preg_match(",^\w+$,", $objet)
51        ) {
52
53                if (!alertes_trouver($id_objet, $objet, $id_auteur)) {
54                        sql_insertq("spip_alertes", array('id_auteur' => $id_auteur, 'id_objet' => $id_objet, 'objet' => $objet));
55                        include_spip('inc/invalideur');
56                        suivre_invalideur("alerte/$objet/$id_objet");
57                        suivre_invalideur("alerte/auteur/$id_auteur");
58                        spip_log("L'alerte $id_objet-$objet-$id_auteur a été ajouté.", "alertes");
59
60                        return true;
61                }
62                spip_log("Erreur ajouter alerte $id_objet-$objet-$id_auteur, l'alerte existe déjà.", "alertes");
63
64                return false;
65        } else {
66                spip_log("Erreur ajouter alerte $id_objet-$objet-$id_auteur", "alertes");
67
68                return false;
69        }
70}
71
72/**
73 * Recherche l'alerte lié à l'auteur et l'objet en court.
74 *
75 * @param int $id_objet
76 * @param string $objet
77 * @param int $id_auteur
78 *
79 * @return array|bool
80 */
81function alertes_trouver($id_objet, $objet, $id_auteur) {
82        $row = false;
83        if ($id_auteur = intval($id_auteur)
84                AND $id_objet = intval($id_objet)
85                AND preg_match(",^\w+$,", $objet)
86        ) {
87                $row = sql_fetsel("*", "spip_alertes",
88                        "id_auteur=" . intval($id_auteur) . " AND id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet));
89        }
90
91        return $row;
92}
93
Note: See TracBrowser for help on using the repository browser.