source: spip-zone/_squelettes_/gribouille_2/branches/v1/gribouille_autoriser.php @ 109697

Last change on this file since 109697 was 109697, checked in by nicolas.dorigny@…, 3 years ago

Gribouille's back!
Préparation d'une nouvelle version...

File size: 5.7 KB
Line 
1<?php
2if (!defined("_ECRIRE_INC_VERSION")) return;
3/* pour que le pipeline ne rale pas ! */
4function gribouille_autoriser(){}
5
6/**
7 * Modification de l'autorisation de modifier un article
8 * - On se base d'abord sur l'autorisation de base de SPIP
9 * - Sinon on se base sur la configuration du cfg que nous avons faite
10 *
11 * @param object $faire
12 * @param object $quoi
13 * @param object $id
14 * @param object $qui
15 * @param object $opts
16 * @return
17 */
18function autoriser_article_modifier($faire,$quoi,$id,$qui,$opts){
19        $autorise = false;
20        if(autoriser_article_modifier_dist($faire,$quoi,$id,$qui,$opts)){
21                return autoriser_article_modifier_dist($faire,$quoi,$id,$qui,$opts);
22        }
23        if(function_exists('lire_config')){
24                $secteurs_wiki = lire_config('gribouille/principal/secteurs_wiki', array());
25                $id_secteur = sql_getfetsel('id_secteur','spip_articles','id_article='.intval($id));
26                if(in_array($id_secteur,$secteurs_wiki)){
27                        $type = lire_config('gribouille/autorisations/ecrire_type', 'webmestre');
28                        switch($type) {
29                                case 'webmestre':
30                                        // Webmestres uniquement
31                                        $autorise = tickets_verifier_webmestre($qui);
32                                        break;
33                                case 'par_statut':
34                                        // Traitement spécifique pour la valeur 'tous'
35                                        if(in_array('tous',lire_config('gribouille/autorisations/ecrire_statuts',array()))){
36                                                return true;
37                                        }
38                                        // Autorisation par statut
39                                        $autorise = in_array($qui['statut'], lire_config('gribouille/autorisations/ecrire_statuts',array('0minirezo')));
40                                        break;
41                                case 'par_auteur':
42                                        // Autorisation par id d'auteurs
43                                        $autorise = in_array($qui['id_auteur'], lire_config('gribouille/autorisations/ecrire_auteurs',array()));
44                                        break;
45                        }
46                }
47        }else{
48                return autoriser('modifier','article',$id,$qui,$opts);
49        }
50        return $autorise;
51}
52
53/**
54 * Modification de l'autorisation de publier un article ou une rubrique dans une autre
55 * - On se base d'abord sur l'autorisation de base de SPIP
56 * - Sinon on se base sur la configuration du cfg que nous avons faite
57 *
58 * @param object $faire
59 * @param object $quoi
60 * @param object $id
61 * @param object $qui
62 * @param object $opts
63 * @return
64 */
65function autoriser_rubrique_publierdans($faire,$quoi,$id,$qui,$opts){
66        $autorise = false;
67        if(autoriser_rubrique_publierdans_dist($faire,$quoi,$id,$qui,$opts)){
68                return autoriser_rubrique_publierdans_dist($faire,$quoi,$id,$qui,$opts);
69        }
70        if(function_exists('lire_config')){
71                $secteurs_wiki = lire_config('gribouille/principal/secteurs_wiki', array());
72                $id_secteur = sql_getfetsel('id_secteur','spip_rubriques','id_rubrique='.intval($id));
73                if(in_array($id_secteur,$secteurs_wiki)){
74                        $type = lire_config('gribouille/autorisations/ecrire_type', 'webmestre');
75                        switch($type) {
76                                case 'webmestre':
77                                        // Webmestres uniquement
78                                        $autorise = tickets_verifier_webmestre($qui);
79                                        break;
80                                case 'par_statut':
81                                        // Traitement spécifique pour la valeur 'tous'
82                                        if(in_array('tous',lire_config('gribouille/autorisations/ecrire_statuts',array()))){
83                                                return true;
84                                        }
85                                        // Autorisation par statut
86                                        $autorise = in_array($qui['statut'], lire_config('gribouille/autorisations/ecrire_statuts',array('0minirezo')));
87                                        break;
88                                case 'par_auteur':
89                                        // Autorisation par id d'auteurs
90                                        $autorise = in_array($qui['id_auteur'], lire_config('gribouille/autorisations/ecrire_auteurs',array()));
91                                        break;
92                        }
93                }
94        }else{
95                return autoriser('publier_dans','rubrique',$id,$qui,$opts);
96        }
97        return $autorise;
98}
99
100/**
101 * Modification de l'autorisation de voir les rubriques (utilisées dans le privé)
102 * Nous l'utilisons au moment du choix du squelette dans le pipeline styliser
103 * On renvoie une erreur 404 si nous ne sommes pas autorisé.
104 * - On vérifie tout d'abord si nous sommes autorisé à plublier dans cette rubrique
105 * Si oui, on passe outre la configuration
106 * - On vérifie ensuite si on est autorisé dans le CFG
107 *
108 * @param string $faire L'action à réaliser
109 * @param string $quoi L'objet sur lequel on réalise cette action
110 * @param int $id L'id de l'objet en question
111 * @param array $qui L'array des infos de session de l'auteur connecté
112 * @param object $opts
113 * @return true ou false
114 */
115function autoriser_rubrique_voir($faire,$quoi,$id,$qui,$opts){
116        $autorise = false;
117        if(autoriser('publierdans','rubrique',$id,$qui,$opts)){
118                return autoriser('publierdans','rubrique',$id,$qui,$opts);
119        }
120        if(function_exists('lire_config')){
121                $secteurs_wiki = lire_config('gribouille/principal/secteurs_wiki', array());
122                $id_secteur = sql_getfetsel('id_secteur','spip_rubriques','id_rubrique='.intval($id));
123                if(in_array($id_secteur,$secteurs_wiki)){
124                        $type = lire_config('gribouille/autorisations/voir_type', 'webmestre');
125                        switch($type) {
126                                case 'webmestre':
127                                        // Webmestres uniquement
128                                        $autorise = tickets_verifier_webmestre($qui);
129                                        break;
130                                case 'par_statut':
131                                        // Traitement spécifique pour la valeur 'tous'
132                                        if(in_array('tous',lire_config('gribouille/autorisations/voir_statuts',array()))){
133                                                return true;
134                                        }
135                                        // Autorisation par statut
136                                        $autorise = in_array($qui['statut'], lire_config('gribouille/autorisations/voir_statuts',array('0minirezo')));
137                                        break;
138                                case 'par_auteur':
139                                        // Autorisation par id d'auteurs
140                                        $autorise = in_array($qui['id_auteur'], lire_config('gribouille/autorisations/voir_auteurs',array()));
141                                        break;
142                        }
143                }
144        }else{
145                return autoriser('voir','rubrique',$id,$qui,$opts);
146        }
147        return $autorise;
148}
149function gribouille_verifier_webmestre($qui){
150        $webmestre =  false;
151        $webmestre = in_array($qui['id_auteur'],explode(':', _ID_WEBMESTRES));
152        if(!$webmestre && ($qui['webmestre']=='oui')){
153                $webmestre =  true;
154        }
155        return $webmestres;
156}
157?>
Note: See TracBrowser for help on using the repository browser.