source: spip-zone/_plugins_/simple_calendrier/trunk/simplecal_autoriser.php @ 51863

Last change on this file since 51863 was 51863, checked in by julienlfy@…, 8 years ago

Prise en compte du plugin 'bando' : Affichage icone dans le menu d'Edition

File size: 4.9 KB
Line 
1<?php
2/**
3 * Plugin Simple Calendrier pour Spip 2.1.2
4 * Licence GPL (c) 2010-2011 Julien Lanfrey
5 *
6 */
7
8if (!defined("_ECRIRE_INC_VERSION")) return;
9
10
11function simplecal_autoriser(){} 
12
13/*
14autoriser('creer', 'evenement', null);
15=> à la recherche des fonctions suivantes
161 - autoriser_$type_$faire
172 - autoriser_$type
183 - autoriser_$faire
19
20$type  = 'evenement'
21*/
22
23
24
25// Bouton défini dans plugin.xml
26function autoriser_bt_simplecal_accueil($faire, $type, $id, $qui, $opt) {
27        return in_array($qui['statut'], array('0minirezo', '1comite'));
28}
29
30// Idem mais pour le plugin 'bando'
31function autoriser_bt_simplecal_accueil_bando($faire, $type, $id, $qui, $opt) {
32        return in_array($qui['statut'], array('0minirezo', '1comite'));
33}
34
35// Remarque : Cette fonction est aussi appelée au niveau du core (API des listings - cf. inc/afficher_objets.php)
36// Le plugin "Acces restreint 3" la déclare également mais ne l'utilise pas (surement pour le plugin Agenda 2).
37// Ce qui pose problème car basé sur une table evenement différente de celle du plugin "simple-calendrier" !
38// il est donc normal que le plugin "simple-calendrier" la déclare pour son usage propre.
39// => celle du plugin "Acces restreint" ne sera donc pas utilisée (sauf si chargée en 1er => crash... cf. doc. pb connus)
40// => cela tombe bien puisqu'il ne s'en sert pas lui-même
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        static $evenements_statut;
51        $publique = isset($opt['publique'])?$opt['publique']:!test_espace_prive();
52        $id_auteur = isset($qui['id_auteur']) ? $qui['id_auteur'] : $GLOBALS['visiteur_session']['id_auteur'];
53        if (!isset($evenements_statut[$id_auteur][$publique][$id])){
54            $id_rubrique = sql_getfetsel('id_rubrique','spip_evenements','id_evenement='.intval($id));
55            $evenements_statut[$id_auteur][$publique][$id] = autoriser_rubrique_voir('voir', 'rubrique', $id_rubrique, $qui, $opt);
56        }
57        return $evenements_statut[$id_auteur][$publique][$id];
58    }
59}
60
61
62
63function simplecal_profils_autorises_a_creer(){
64    if ($GLOBALS['meta']['simplecal_autorisation_redac'] == 'oui'){
65        $whos = array('0minirezo', '1comite');
66    } else {
67        $whos = array('0minirezo');
68    }
69    return $whos;
70}
71
72// Creer un evenement
73function autoriser_evenement_creer($faire, $type, $id, $qui, $opt) {
74        $whos = simplecal_profils_autorises_a_creer();
75    return in_array($qui['statut'], $whos);
76}
77
78// Modifier l'evenement $id
79function autoriser_evenement_modifier($faire, $type, $id, $qui, $opt) {
80        $autorise = false;
81   
82    // Administrateur ?
83    if ($qui['statut'] == '0minirezo'){
84        $autorise = true;
85    } else {
86        // Redacteur ? (+ si config l'autorise)
87        if ($qui['statut'] == '1comite' && $GLOBALS['meta']['simplecal_autorisation_redac'] == 'oui'){
88           
89            // si l'evenement n'est pas publie
90            $row = sql_fetsel("statut", "spip_evenements", "id_evenement=$id");
91            if ($row['statut'] != 'publie') {
92                // Propriétaire ?
93                $nb = sql_countsel('spip_auteurs_evenements', "id_evenement=".$id." and id_auteur = ".$qui['id_auteur']);
94                if ($nb>0){
95                    $autorise = true;
96                }
97            }           
98        }
99    }
100    return $autorise;
101}
102
103
104// Afficher uniquement les groupes de mots clés spécifiés dans evenement_voir.
105// Sur le modele de ecrire/inc/autoriser.php (appelé par ecrire/inc/editer_mots.php)
106function autoriser_evenement_editermots_dist($faire,$quoi,$id,$qui,$opts){
107        return autoriser_rubrique_editermots_dist($faire,'evenement',0,$qui,$opts);
108}
109
110
111// Le bloc "joindre un document" du core est protégé par cette permission.
112// cf. inc/documents.php : afficher_documents_colonne
113// ET UTILISE UNIQUEMENT POUR LES REDACTEURS...
114function autoriser_evenement_joindredocument($faire, $type, $id, $qui, $opt) {
115    $whos = simplecal_profils_autorises_a_creer();
116    return in_array($qui['statut'], $whos);
117}
118
119// Pour la suppression du LOGO :
120// Customisation de l'autorisation du core (autoriser_iconifier_dist)
121// (sinon, crash lié au fait qu'il recherche la rubrique de l'objet...)
122// autorisation renommé avec _evenement_ pour qu'il ne matche que sur ce type (autoriser_$type_$faire)
123function autoriser_evenement_iconifier($faire,$quoi,$id,$qui,$opts){
124    $droit = autoriser('modifier', 'evenement', $id);
125    return $droit;
126}
127
128function autoriser_evenement_demo($faire, $type, $id, $qui, $opt) {
129    return in_array($qui['statut'], array('0minirezo'));
130}
131
132?>
Note: See TracBrowser for help on using the repository browser.