var Phenix = function () {
Troll du Web depuis 1996

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. :

  1. <?php
  2. function autoriser_accesrestreint_publiedans($faire, $type, $id, $qui, $opt) {
  3.         include_spip('accesrestreint_fonctions');
  4.         // On récupère les zones de la rubrique
  5.         $zones = accesrestreint_zones_rubrique_et_hierarchie($id);
  6.         foreach ($zones as $zone) {
  7.                 // Est-ce que l'auteur appartient à la zone ?
  8.                 if (accesrestreint_acces_zone($zone, $qui['id_auteur'])) {
  9.                         return true;
  10.                 }
  11.         }
  12.  
  13.         return false;
  14. }

Ensuite, on peut surcharger les autorisations de SPIP pour qu’elles tiennent compte de cette fonction :

  1. <?php
  2. /**
  3.  * Surcharge de l'autorisation de publication dans les rubriques. On va prendre
  4.  * en compte l'accès restreint. Si un auteur est dans la zone de la rubrique, on
  5.  * l'autorise à publier
  6.  */
  7. function autoriser_rubrique_publierdans($faire, $type, $id, $qui, $opt) {
  8.         if (autoriser('publiedans', 'accesrestreint', $id, $qui, $opt)) {
  9.                 return true;
  10.         }
  11.  
  12.         return autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt);
  13. }
  14.  
  15. /**
  16.  * Surcharge de l'autorisation de création d'article pour prendre en compte
  17.  * l'autorisation d'accesrestreint
  18.  */
  19. function autoriser_rubrique_creerarticledans($faire, $type, $id, $qui, $opt) {
  20.  
  21.         if (autoriser('publiedans', 'accesrestreint', $id, $qui, $opt)) {
  22.                 return true;
  23.         }
  24.  
  25.         return autoriser_rubrique_creerarticledans_dist($faire, $type, $id, $qui, $opt);
  26. }
Un message, un commentaire ?
modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message
  • Pour créer des paragraphes, laissez simplement des lignes vides.