source: spip-zone/_plugins_/lim/branches/V1/lim_autorisations.php @ 103742

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

report de r103741 : La désactivation des logos sur l’objet ‘Site Référencés’ ne doit pas avoir d’influence sur la gestion du logo du site

File size: 4.9 KB
Line 
1<?php
2/**
3 * Définit les autorisations du plugin Lim
4 *
5 * @plugin     Lim
6 * @copyright  2015
7 * @author     Pierre Miquel
8 * @licence    GNU/GPL
9 * @package    SPIP\Lim\Autorisations
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) return;
13
14
15/**
16 * Fonction d'appel pour le pipeline
17 * @pipeline autoriser */
18function lim_autoriser(){}
19
20/**************************************************************/
21/************* DESACTIVER DES LOGOS PAR CONTENUS *************/
22
23/* Exceptions historiques */
24function autoriser_auteur_iconifier($faire,$type,$id,$qui,$opt){
25        if (in_array(table_objet_sql($type),explode(',',lire_config('lim_logos'))))
26                return false;
27        else return (($id == $qui['id_auteur']) OR
28                        (($qui['statut'] == '0minirezo') AND !$qui['restreint']));
29}
30
31function autoriser_mot_iconifier($faire,$type,$id,$qui,$opt){
32        if (in_array(table_objet_sql($type),explode(',',lire_config('lim_logos'))))
33                return false;
34        return (($qui['statut'] == '0minirezo') AND !$qui['restreint']);
35}
36
37function autoriser_groupemots_iconifier($faire,$type,$id,$qui,$opt){
38        if (in_array(table_objet_sql($type),explode(',',lire_config('lim_logos'))))
39                return false;
40        else return (($qui['statut'] == '0minirezo') AND !$qui['restreint']);
41}
42
43function autoriser_rubrique_iconifier($faire,$type,$id,$qui,$opt){
44        if (in_array(table_objet_sql($type),explode(',',lire_config('lim_logos'))))
45                return false;
46        return autoriser('publierdans', 'rubrique', $id, $qui, $opt);
47}
48
49
50// iconifier ou non les objets
51function autoriser_iconifier($faire, $type, $id, $qui, $opt) {
52        // on gère d'abord une exception sur l'objet Sites référencés
53    // on a toujours le droit d'ajouter un logo au site lui même.
54    if (_request('exec') == 'configurer_identite' AND  $type =='site') {
55        return true;
56    }
57        if (in_array(table_objet_sql($type),explode(',',lire_config('lim_logos'))))
58                return false;
59        // par defaut, on a le droit d'iconifier si on a le droit de modifier
60        else return autoriser('modifier', $type, $id, $qui, $opt);
61}
62
63/**********************************************************/
64/************* RESTRICTION DANS LES RUBRIQUES *************/
65/**
66 * gérer création et modification (en fait publierdans)
67 * @pipeline autoriser
68 */
69
70if (!function_exists('autoriser_rubrique_creerrubriquedans')) {
71        function autoriser_rubrique_creerrubriquedans($faire, $type, $id, $qui, $opt) {
72                $quelles_rubriques = lire_config('lim_rubriques/rubrique');
73                is_null($quelles_rubriques) ? $lim_rub = true : $lim_rub = !in_array($id,$quelles_rubriques);
74                return
75                        $lim_rub
76                        AND autoriser_rubrique_creerrubriquedans_dist($faire, $type, $id, $qui, $opt);
77        }
78}
79
80if (!function_exists('autoriser_rubrique_creerarticledans')) {
81        function autoriser_rubrique_creerarticledans($faire, $type, $id, $qui, $opt) {
82                $quelles_rubriques = lire_config('lim_rubriques/article');
83                is_null($quelles_rubriques) ? $lim_rub = true : $lim_rub = !in_array($id,$quelles_rubriques);
84               
85                return
86                        $lim_rub
87                        AND autoriser_rubrique_creerarticledans_dist($faire, $type, $id, $qui, $opt);
88        }
89}
90
91if (!function_exists('autoriser_rubrique_creerbrevedans')) {
92        function autoriser_rubrique_creerbrevedans($faire, $type, $id, $qui, $opt) {
93                $r = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=".intval($id));
94                $quelles_rubriques = lire_config('lim_rubriques/breve');
95                is_null($quelles_rubriques) ? $lim_rub = true : $lim_rub = !in_array($id,$quelles_rubriques);
96
97                return
98                        $lim_rub
99                        AND autoriser_rubrique_creerbrevedans_dist($faire, $type, $id, $qui, $opt);
100        }
101}
102
103if (!function_exists('autoriser_rubrique_creersitedans')) {
104        function autoriser_rubrique_creersitedans($faire, $type, $id, $qui, $opt) {
105                $quelles_rubriques = lire_config('lim_rubriques/site');
106                is_null($quelles_rubriques) ? $lim_rub = true : $lim_rub = !in_array($id,$quelles_rubriques);
107
108                // exception : la page exec=sites accessible depuis le menu "Edition -> Sites référencés"
109                if (_request('exec') == 'sites') $lim_rub = true;
110               
111                return
112                        $lim_rub
113                        AND autoriser_rubrique_creersitedans_dist($faire, $type, $id, $qui, $opt);
114        }
115}
116
117if (!function_exists('autoriser_rubrique_publierdans')) {
118        function autoriser_rubrique_publierdans($faire, $type, $id, $qui, $opt) {
119
120                // Dans LIM l'appel à cette autorisation signifie que forcément $opt est renseigné
121                if (is_array($opt) AND array_key_exists('lim_except_rub',$opt) AND array_key_exists('type',$opt)) {
122                        $type = $opt['type'];
123                        $quelles_rubriques = lire_config("lim_rubriques/$type");
124                        if (!is_null($quelles_rubriques)) {
125                                $rubrique_except = array(0 => $opt['lim_except_rub']);
126                                $quelles_rubriques = array_diff($quelles_rubriques, $opt);
127                                $lim_rub = !in_array($id,$quelles_rubriques);
128                        }
129                        // cas possible : un objet peut avoir été sélectionné dans ?exec=configurer_lim_rubriques, mais aucune restriction activée
130                        else $lim_rub = true;
131                }
132                // ici gestion hors CVT
133                else $lim_rub = true;
134
135                return
136                        $lim_rub
137                        AND autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt);
138        }
139}
140
141?>
Note: See TracBrowser for help on using the repository browser.