source: spip-zone/_core_/plugins/organiseur/organiseur_autoriser.php

Last change on this file was 113294, checked in by spip.franck@…, 2 months ago

Il parait que le futur c'est maintenant :-D

File size: 5.5 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2019                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17/**
18 * Fonction vide pour charger ce fichier sans declencher de warning
19 *
20 * @return void
21 */
22function organiseur_autoriser() {
23}
24
25/**
26 * Autorisation de voir la page calendrier
27 *
28 * @param  string $faire Action demandée
29 * @param  string $type Type d'objet sur lequel appliquer l'action
30 * @param  int $id Identifiant de l'objet
31 * @param  array $qui Description de l'auteur demandant l'autorisation
32 * @param  array $opt Options de cette autorisation
33 * @return bool          true s'il a le droit, false sinon
34 **/
35function autoriser_calendrier_voir_dist($faire, $type, $id, $qui, $opt) {
36        if ($GLOBALS['meta']['messagerie_agenda'] == 'oui') {
37                return true;
38        }
39        return false;
40}
41
42/**
43 * Autorisation de voir la page messages
44 *
45 * @param  string $faire Action demandée
46 * @param  string $type Type d'objet sur lequel appliquer l'action
47 * @param  int $id Identifiant de l'objet
48 * @param  array $qui Description de l'auteur demandant l'autorisation
49 * @param  array $opt Options de cette autorisation
50 * @return bool          true s'il a le droit, false sinon
51 **/
52function autoriser_messages_voir_dist($faire, $type, $id, $qui, $opt) {
53        if ($GLOBALS['meta']['messagerie_agenda'] == 'oui') {
54                return true;
55        }
56        return false;
57}
58
59function autoriser_calendrier_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
60        return autoriser('voir', '_calendrier', $id, $qui, $opt);
61}
62
63function autoriser_messagerie_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
64        return autoriser('voir', '_messages', $id, $qui, $opt);
65}
66
67function autoriser_message_modifier_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
68        if (!intval($qui['id_auteur'])) {
69                return false;
70        }
71        $row = sql_fetsel('statut,type,id_auteur', 'spip_messages', 'id_message=' . intval($id));
72        // on peut modifier ses penses betes ou ses messages brouillons
73        if ($row['id_auteur'] == $qui['id_auteur'] and ($row['statut'] == 'prepa' or $row['type'] == 'pb')) {
74                return true;
75        }
76        // on peut modifier les annonces si on est admin
77        if ($qui['statut'] == '0minirezo' and $row['type'] == 'affich') {
78                return true;
79        }
80
81        return false;
82}
83
84function autoriser_message_instituer_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
85        // rediriger vers la bonne autorisation en cas de suppression
86        if ($opt['statut'] == 'poub') {
87                return autoriser('supprimer', 'message', $id, $qui, $opt);
88        }
89
90        return autoriser('modifier', 'message', $id, $qui, $opt);
91}
92
93function autoriser_message_supprimer_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
94        // on peut supprimer un message que l'on peut modifier
95        if (autoriser('modifier', 'message', $id, $qui, $opt)) {
96                return true;
97        }
98        // mais on peut aussi supprimer un message envoye par soi
99        // si tous ses dest l'on supprime aussi
100        if (
101                $qui['id_auteur']
102                and sql_countsel(
103                        'spip_messages',
104                        "statut='publie' AND id_auteur=" . intval($qui['id_auteur']) . ' AND id_message=' . intval($id)
105                ) and !sql_countsel(
106                        'spip_auteurs_liens',
107                        "objet='message' AND id_objet=" . intval($id) . " AND vu!='poub' AND id_auteur!=" . intval($qui['id_auteur'])
108                )) {
109                return true;
110        }
111
112        return false;
113}
114
115function autoriser_messagerecu_effacer_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
116        if (isset($opt['id_auteur'])) {
117                $id_auteur = $opt['id_auteur'];
118        } else {
119                $id_auteur = $qui['id_auteur'];
120        }
121        // seul le destinataire peut supprimer un message qui lui est destine
122        if (!intval($id_auteur) or intval($id_auteur) != intval($qui['id_auteur'])) {
123                return false;
124        }
125
126        // rien d'autre a verifier?...
127        return true;
128}
129
130function autoriser_message_dater_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
131        return false;
132}
133
134function autoriser_envoyermessage_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
135        if (!($GLOBALS['meta']['messagerie_agenda'] == 'oui') or !intval($qui['id_auteur'])) {
136                return false;
137        }
138        // on peut envoyer une annonce si on est admin
139        if (!($qui['statut'] == '0minirezo') and $type == 'affich') {
140                return false;
141        }
142
143        return true;
144}
145
146function autoriser_message_voir_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
147        if (!intval($qui['id_auteur'])) {
148                return false;
149        }
150        // message annonce ou message dont $qui est l'auteur : droit de le voir
151        if (sql_countsel(
152                'spip_messages',
153                'id_message=' . intval($id) . ' AND (type=\'affich\' OR id_auteur=' . intval($qui['id_auteur']) . ')'
154        )) {
155                return true;
156        }
157        // message dont $qui est destinataire
158        if (sql_countsel(
159                'spip_auteurs_liens',
160                'objet=\'message\' AND id_objet=' . intval($id) . " AND vu!='poub' AND id_auteur=" . intval($qui['id_auteur'])
161        )) {
162                return true;
163        }
164
165        return false;
166}
167
168function autoriser_message_repondre_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
169        return autoriser('ecrire', '', '', $qui['id_auteur']);
170}
Note: See TracBrowser for help on using the repository browser.