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

Last change on this file since 51438 was 51438, checked in by julienlfy@…, 10 years ago
  • correction : le calendrier n'était pas affiché dans la démo
  • xhtml sur le tableau généré par #SIMPLE_CALENDRIER
File size: 4.8 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
31// Remarque : Cette fonction est aussi appelée au niveau du core (API des listings - cf. inc/afficher_objets.php)
32// Le plugin "Acces restreint 3" la déclare également mais ne l'utilise pas (surement pour le plugin Agenda 2).
33// Ce qui pose problème car basé sur une table evenement différente de celle du plugin "simple-calendrier" !
34// il est donc normal que le plugin "simple-calendrier" la déclare pour son usage propre.
35// => celle du plugin "Acces restreint" ne sera donc pas utilisée (sauf si chargée en 1er => crash... cf. doc. pb connus)
36// => cela tombe bien puisqu'il ne s'en sert pas lui-même
37//    et que les plugins "simple-calendrier" et "agenda 2" sont naturellement incompatibles)
38function autoriser_evenement_voir($faire, $type, $id, $qui, $opt) {
39        if (!defined('_DIR_PLUGIN_ACCESRESTREINT')){
40        return in_array($qui['statut'], array('0minirezo', '1comite'));
41    } 
42    // ------------------------------------------
43    // si le plugin Acces restreint est actif
44    // ------------------------------------------
45    else {
46        static $evenements_statut;
47        $publique = isset($opt['publique'])?$opt['publique']:!test_espace_prive();
48        $id_auteur = isset($qui['id_auteur']) ? $qui['id_auteur'] : $GLOBALS['visiteur_session']['id_auteur'];
49        if (!isset($evenements_statut[$id_auteur][$publique][$id])){
50            $id_rubrique = sql_getfetsel('id_rubrique','spip_evenements','id_evenement='.intval($id));
51            $evenements_statut[$id_auteur][$publique][$id] = autoriser_rubrique_voir('voir', 'rubrique', $id_rubrique, $qui, $opt);
52        }
53        return $evenements_statut[$id_auteur][$publique][$id];
54    }
55}
56
57
58
59function simplecal_profils_autorises_a_creer(){
60    if ($GLOBALS['meta']['simplecal_autorisation_redac'] == 'oui'){
61        $whos = array('0minirezo', '1comite');
62    } else {
63        $whos = array('0minirezo');
64    }
65    return $whos;
66}
67
68// Creer un evenement
69function autoriser_evenement_creer($faire, $type, $id, $qui, $opt) {
70        $whos = simplecal_profils_autorises_a_creer();
71    return in_array($qui['statut'], $whos);
72}
73
74// Modifier l'evenement $id
75function autoriser_evenement_modifier($faire, $type, $id, $qui, $opt) {
76        $autorise = false;
77   
78    // Administrateur ?
79    if ($qui['statut'] == '0minirezo'){
80        $autorise = true;
81    } else {
82        // Redacteur ? (+ si config l'autorise)
83        if ($qui['statut'] == '1comite' && $GLOBALS['meta']['simplecal_autorisation_redac'] == 'oui'){
84           
85            // si l'evenement n'est pas publie
86            $row = sql_fetsel("statut", "spip_evenements", "id_evenement=$id");
87            if ($row['statut'] != 'publie') {
88                // Propriétaire ?
89                $nb = sql_countsel('spip_auteurs_evenements', "id_evenement=".$id." and id_auteur = ".$qui['id_auteur']);
90                if ($nb>0){
91                    $autorise = true;
92                }
93            }           
94        }
95    }
96    return $autorise;
97}
98
99
100// Afficher uniquement les groupes de mots clés spécifiés dans evenement_voir.
101// Sur le modele de ecrire/inc/autoriser.php (appelé par ecrire/inc/editer_mots.php)
102function autoriser_evenement_editermots_dist($faire,$quoi,$id,$qui,$opts){
103        return autoriser_rubrique_editermots_dist($faire,'evenement',0,$qui,$opts);
104}
105
106
107// Le bloc "joindre un document" du core est protégé par cette permission.
108// cf. inc/documents.php : afficher_documents_colonne
109// ET UTILISE UNIQUEMENT POUR LES REDACTEURS...
110function autoriser_evenement_joindredocument($faire, $type, $id, $qui, $opt) {
111    $whos = simplecal_profils_autorises_a_creer();
112    return in_array($qui['statut'], $whos);
113}
114
115// Pour la suppression du LOGO :
116// Customisation de l'autorisation du core (autoriser_iconifier_dist)
117// (sinon, crash lié au fait qu'il recherche la rubrique de l'objet...)
118// autorisation renommé avec _evenement_ pour qu'il ne matche que sur ce type (autoriser_$type_$faire)
119function autoriser_evenement_iconifier($faire,$quoi,$id,$qui,$opts){
120    $droit = autoriser('modifier', 'evenement', $id);
121    return $droit;
122}
123
124function autoriser_evenement_demo($faire, $type, $id, $qui, $opt) {
125    return in_array($qui['statut'], array('0minirezo'));
126}
127
128?>
Note: See TracBrowser for help on using the repository browser.