source: spip-zone/_plugins_/simple_calendrier/branches/v2/simplecal_autoriser.php @ 109929

Last change on this file since 109929 was 109929, checked in by peetdu@…, 3 years ago

Hop, la v2 est maintenant de nouveau sur pied (muchas gracias senior b_b)

File size: 5.3 KB
Line 
1<?php
2/**
3 * Plugin Simple Calendrier v2 pour SPIP 3
4 * Licence GNU/GPL
5 * 2010-2016
6 *
7 * cf. paquet.xml pour plus d'infos.
8 */
9
10if (!defined("_ECRIRE_INC_VERSION")) return;
11
12
13function simplecal_autoriser(){} 
14
15
16// bouton du bandeau
17function autoriser_evenements_menu_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
18        return in_array($qui['statut'], array('0minirezo', '1comite'));
19}
20function autoriser_evenementcreer_menu_dist($faire, $type, $id, $qui, $opt){
21        $whos = simplecal_profils_autorises_a_creer();
22        return in_array($qui['statut'], $whos);
23}
24
25
26function autoriser_simplecal_lister($faire, $type, $id, $qui, $opt){
27        return in_array($qui['statut'], array('0minirezo', '1comite'));
28}
29
30function autoriser_simplecal_demo($faire, $type, $id, $qui, $opt) {
31        return in_array($qui['statut'], array('0minirezo'));
32}
33
34
35// Remarque : Cette fonction est aussi appelee au niveau du core (API des listings - cf. inc/afficher_objets.php)
36// Le plugin "Acces restreint 3" la declare egalement mais ne l'utilise pas (surement pour le plugin Agenda 2).
37// Ce qui pose probleme car base sur une table evenement differente de celle du plugin "simple-calendrier" !
38// il est donc normal que le plugin "simple-calendrier" la declare pour son usage propre.
39// => celle du plugin "Acces restreint" ne sera donc pas utilisee.
40// => cela tombe bien puisqu'il ne s'en sert pas lui-meme
41//    et que les plugins "simple-calendrier" et "agenda 2" sont naturellement incompatibles)
42function autoriser_evenement_voir($faire, $type, $id, $qui, $opt) {
43        if (!defined('_DIR_PLUGIN_ACCESRESTREINT')){
44                return in_array($qui['statut'], array('0minirezo', '1comite'));
45        } 
46        // ------------------------------------------
47        // si le plugin Acces restreint est actif
48        // ------------------------------------------
49        else {
50                include_spip('public/quete');
51                include_spip('inc/accesrestreint');
52               
53                $publique = isset($options['publique']) ? $options['publique'] : !test_espace_prive();
54                $id_auteur = isset($qui['id_auteur']) ? $qui['id_auteur'] : $GLOBALS['visiteur_session']['id_auteur'];
55               
56                // Si l'évènement fait partie des contenus restreints directement, c'est niet
57                if (in_array($id, accesrestreint_liste_objets_exclus('evenements', $publique, $id_auteur))) {
58                        return false;
59                }
60               
61                if (!$id_rubrique = $options['id_rubrique']){
62                        $evenement = quete_parent_lang('spip_evenements', $id);
63                        $id_rubrique = $evenement['id_rubrique'];
64                }
65               
66                return autoriser_rubrique_voir('voir', 'rubrique', $id_rubrique, $qui, $options);
67        }
68}
69
70
71
72function simplecal_profils_autorises_a_creer(){
73        if ($GLOBALS['meta']['simplecal_autorisation_redac'] == 'oui'){
74                $whos = array('0minirezo', '1comite');
75        } else {
76                $whos = array('0minirezo');
77        }
78        return $whos;
79}
80
81// Proprietaire de l'evenement ?
82function simplecal_auteur_evenement($id, $id_auteur){
83        $b = false;
84        $nb = sql_countsel('spip_auteurs_liens as lien', "lien.objet='evenement' and lien.id_objet=".$id." and lien.id_auteur = ".$id_auteur);
85        if ($nb>0){
86                $b = true;
87        }
88        return $b;
89}
90
91// Creer un evenement
92function autoriser_evenement_creer($faire, $type, $id, $qui, $opt) {
93        $whos = simplecal_profils_autorises_a_creer();
94        return in_array($qui['statut'], $whos);
95}
96
97// Modifier l'evenement $id
98// Redacteur : Comme pour les articles : on ne peut plus le modifier une fois publie
99function autoriser_evenement_modifier($faire, $type, $id, $qui, $opt) {
100        $autorise = false;
101
102        // Administrateur ?
103        if ($qui['statut'] == '0minirezo'){
104                $autorise = true;
105        } else {
106                // Redacteur ? (+ si config l'autorise)
107                if ($qui['statut'] == '1comite' && $GLOBALS['meta']['simplecal_autorisation_redac'] == 'oui'){
108                       
109                        // Si l'autorisation n'est pas fonction d'un statut, ou que ce statut n'est pas 'publie'
110                        if (!isset($opt['statut']) OR $opt['statut']!=='publie') {
111                                // Le statut de l'objet n'est pas publie
112                                $row = sql_fetsel("statut", "spip_evenements", "id_evenement=$id");
113                                if (in_array($row['statut'], array('prop','prepa', 'poubelle'))){
114                                        // Auteur = proprietaire de l'objet.
115                                        if (simplecal_auteur_evenement($id, $qui['id_auteur'])){
116                                                $autorise = true;
117                                        }
118                                }
119                        } else {
120                                // l'autorisation est fonction d'un statut (cf. autoriser:instituer_objet).
121                                // ET ce statut est publie
122                                // => False
123                        }
124                }
125        }
126        return $autorise;
127}
128
129/**
130 * Autorisation de créer un événement dans une rubrique
131 *
132 * @param  string $faire Action demandée
133 * @param  string $type  Type d'objet sur lequel appliquer l'action
134 * @param  int    $id    Identifiant de l'objet
135 * @param  array  $qui   Description de l'auteur demandant l'autorisation
136 * @param  array  $opt   Options de cette autorisation
137 * @return bool          true s'il a le droit, false sinon
138**/
139function autoriser_rubrique_creerevenementdans_dist($faire, $type, $id, $qui, $opt) {
140        return ($id and autoriser('voir', 'rubrique', $id) and autoriser('creer', 'evenement', $id));
141}
142
143/* Compatibilité avec le plugin LIM : restriction par rubrique */
144if (!function_exists('autoriser_rubrique_creerevenementdans') AND test_plugin_actif('lim')) {
145        function autoriser_rubrique_creerevenementdans($faire, $type, $id, $qui, $opt) {
146                $quelles_rubriques = lire_config('lim_rubriques/evenement');
147                is_null($quelles_rubriques) ? $lim_rub = true : $lim_rub = !in_array($id,$quelles_rubriques);
148               
149                return
150                        $lim_rub
151                        AND autoriser_rubrique_creerevenementdans_dist($faire, $type, $id, $qui, $opt);
152        }
153}
154
155?>
Note: See TracBrowser for help on using the repository browser.