Pour créer une autorisation, il suffit de créer les fonctions adéquates.
function autoriser_documentation_troller_dist($faire, $type, $id, $qui, $opt) {
return false; // aucun troll permis ! non mais !
}
Déclarer cette fonction permet d’utiliser la fonction
autoriser('troller','documentation')
ou la balise
#AUTORISER{troller, documentation}
.
{{{Nouvelles fonctions, mais pas n’importe où !}}}
La fonction
autoriser()
, à son premier appel, charge un pipeline du même nom. Cet appel du
pipeline « autoriser » permet de charger les fichiers d’autorisations pour un dossier squelettes ou un plugin.
{{{Alias des objets}}}
SPIP traite automatiquement le paramètre ’type’ de autoriser par la fonction
objet_type
qui traite les alias de noms d’objets ou les cas particuliers où le nom de la table n’est pas terminé par un ’s’. Lorsqu’on veut éviter cela, on peut préfixer le type par un underscore ’_’.
Exemple
{{Dans un squelette :}}
_ Dans le fichier
config/mes_options.php
on ajoute l’appel d’une fonction pour nos autorisations :
<?php
$GLOBALS['spip_pipeline']['autoriser'] .= "|mes_autorisations";
function mes_autorisations(){
include_spip('inc/mes_autorisations');
}
?>
Ainsi lorsque le pipeline
autoriser
est appelé, il charge le fichier
inc/mes_autorisations.php
. On peut donc créer ce dossier et le fichier, qui contient les fonctions d’autorisations souhaitées, dans son dossier
squelettes/
.
{{Dans un plugin :}}
_ Pour un plugin, presque de la même façon, il faut déclarer l’utilisation du pipeline dans le
plugin.xml
:
<pipeline>
<nom>autoriser</nom>
<inclure>inc/prefixePlugin_autoriser.php</inclure>
</pipeline>
Et créer le fichier en question en ajoutant absolument, dans le fichier que le pipeline appelle, la fonction
prefixePlugin_autoriser()
.
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
// fonction pour le pipeline, n'a rien a effectuer
function prefixePlugin_autoriser(){}
// declarations d'autorisations
function autoriser_documentation_troller_dist($faire, $type, $id, $qui, $opt) {
return false; // aucun troll permis ! non mais !
}
?>