source: spip-zone/_plugins_/lim/branches/V2/lim_autorisations.php @ 113755

Last change on this file since 113755 was 113755, checked in by peetdu@…, 20 months ago

Report de z113754 : pour la gestion de la restriction des documents par rubrique, vérifier dans l’autorisation ‘autoriser_joindredocument’ que l’on est bien dans un contexte de rubrique justement. (Merci le plugin Swiper ;-)

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