Autoriser un auteur s’il est présent dans la zone d’une rubrique #SPIP (acces restreint)
Une petite fonction d’autorisation sympas : autoriser un auteur (peu importe son statut) à publier dans une rubrique, s’il est dans la zone de cette rubrique. :
- <?php
- function autoriser_accesrestreint_publiedans($faire, $type, $id, $qui, $opt) {
- include_spip('accesrestreint_fonctions');
- // On récupère les zones de la rubrique
- $zones = accesrestreint_zones_rubrique_et_hierarchie($id);
- foreach ($zones as $zone) {
- // Est-ce que l'auteur appartient à la zone ?
- if (accesrestreint_acces_zone($zone, $qui['id_auteur'])) {
- return true;
- }
- }
- return false;
- }
Ensuite, on peut surcharger les autorisations de SPIP pour qu’elles tiennent compte de cette fonction :
- <?php
- /**
- * Surcharge de l'autorisation de publication dans les rubriques. On va prendre
- * en compte l'accès restreint. Si un auteur est dans la zone de la rubrique, on
- * l'autorise à publier
- */
- function autoriser_rubrique_publierdans($faire, $type, $id, $qui, $opt) {
- if (autoriser('publiedans', 'accesrestreint', $id, $qui, $opt)) {
- return true;
- }
- return autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt);
- }
- /**
- * Surcharge de l'autorisation de création d'article pour prendre en compte
- * l'autorisation d'accesrestreint
- */
- function autoriser_rubrique_creerarticledans($faire, $type, $id, $qui, $opt) {
- if (autoriser('publiedans', 'accesrestreint', $id, $qui, $opt)) {
- return true;
- }
- return autoriser_rubrique_creerarticledans_dist($faire, $type, $id, $qui, $opt);
- }