#PHP [(#INCLURE{fond=fabrique/entetes/php,env, description=Définit les autorisations du plugin #ENV{paquet/nom}, package=Autorisations})] /* * Un fichier d'autorisations permet de regrouper * les fonctions d'autorisations de votre plugin */ /** * Fonction d'appel pour le pipeline * @pipeline autoriser */ function [(#PREFIXE)]_autoriser() { } /* Exemple function autoriser_[(#PREFIXE)]_configurer_dist($faire, $type, $id, $qui, $opt) { // type est un objet (la plupart du temps) ou une chose. // autoriser('configurer', '_[(#PREFIXE)]') => $type = '[(#PREFIXE)]' // au choix : return autoriser('webmestre', $type, $id, $qui, $opt); // seulement les webmestres return autoriser('configurer', '', $id, $qui, $opt); // seulement les administrateurs complets return $qui['statut'] == '0minirezo'; // seulement les administrateurs (même les restreints) // ... } */ [ (#SET{type,#TYPE|fabrique_type_autorisation})][ (#SET{objet,#OBJET|fabrique_type_autorisation}) ]// ----------------- // Objet [(#OBJET)] [ /** * Autorisation de voir un élément de menu \(#GET{objet}\) * * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action * @param int $id Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ function autoriser_#GET{objet}_menu_dist($faire, $type, $id, $qui, $opt) { return true; }(#VAL{menu_edition}|in_any{#VALEUR{boutons}})] [ /** * Autorisation de voir le bouton d'accès rapide de création \(#GET{type}\) * * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action * @param int $id Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ function autoriser_#GET{type}creer_menu_dist($faire, $type, $id, $qui, $opt) { return autoriser('creer', ['(#TYPE)'], '', $qui, $opt); }(#VAL{outils_rapides}|in_any{#VALEUR{boutons}})] /** * Autorisation de créer \(#GET{type}\) *[(#SET{creer,[(#AUTORISATIONS|fabrique_code_autorisation_defaut{objet_creer, #PREFIXE, #VALEUR})]})] * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action * @param int $id Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ function autoriser_#GET{type}_creer_dist($faire, $type, $id, $qui, $opt) {[ return \([(#GET{creer})] and sql_countsel('spip_rubriques')>0\);(#VALEUR|champ_present{id_rubrique}|oui)][ return #GET{creer};(#VALEUR|champ_present{id_rubrique}|non)] } /** * Autorisation de voir \(#GET{type}\) * * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action * @param int $id Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ function autoriser_#GET{type}_voir_dist($faire, $type, $id, $qui, $opt) { return [(#AUTORISATIONS|fabrique_code_autorisation_defaut{objet_voir, #PREFIXE, #VALEUR})]; } /** * Autorisation de modifier \(#GET{type}\) * * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action * @param int $id Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ function autoriser_#GET{type}_modifier_dist($faire, $type, $id, $qui, $opt) { return [(#AUTORISATIONS|fabrique_code_autorisation_defaut{objet_modifier, #PREFIXE, #VALEUR})]; } /** * Autorisation de supprimer \(#GET{type}\) * * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action * @param int $id Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ function autoriser_#GET{type}_supprimer_dist($faire, $type, $id, $qui, $opt) { return [(#AUTORISATIONS|fabrique_code_autorisation_defaut{objet_supprimer, #PREFIXE, #VALEUR})]; } /** * Autorisation de créer l'élément \(#GET{type}\) dans une rubrique * * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action * @param int $id Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ function autoriser_rubrique_creer#GET{type}dans_dist($faire, $type, $id, $qui, $opt) { return ($id and autoriser('voir', 'rubrique', $id) and autoriser('creer', '[(#TYPE)]', $id)); } /** * Autorisation de créer l'élément \(#GET{type}\) dans un [(#VALEUR{parent/objet})] * * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action * @param int $id Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ function autoriser_[(#VALEUR{parent/type}|fabrique_type_autorisation)]_creer#GET{type}dans_dist($faire, $type, $id, $qui, $opt) { return ($id and autoriser('voir', '[(#VALEUR{parent/objet})]', $id) and autoriser('creer', '[(#TYPE)]')); } /** * Autorisation de lier/délier l'élément \(#GET{objet}\) * * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action * @param int $id Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ function autoriser_associer#GET{objet}_dist($faire, $type, $id, $qui, $opt) { return [(#AUTORISATIONS|fabrique_code_autorisation_defaut{associerobjet, #OBJET, #VALEUR|champ_present{id_rubrique}})]; }[(#REM) ][(#REM) ] /** * Lister les auteurs liés à un objet * * @param int $objet Type de l'objet * @param int $id_objet Identifiant de l'objet * @return array Liste des id_auteur trouvés */ function [(#PREFIXE)]_auteurs_objet($objet, $id_objet) { $auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', array('objet = ' . sql_quote($objet), 'id_objet = ' . intval($id_objet))); if (is_array($auteurs)) { return array_column($auteurs, 'id_auteur'); } return array(); } [(#REM) ] /** * Tester si on est administrateur complet ou admin restreint sur cette rubrique * * @param string $objet Type d'objet * @param int $id_objet Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @return bool true s'il a le droit, false sinon **/ function [(#PREFIXE)]_autoriser_admins($objet, $id_objet, $qui) { $id = sql_getfetsel('id_rubrique', table_objet_sql($objet), id_table_objet($objet) . ' = ' . intval($id_objet)); return ($qui['statut'] == '0minirezo') and (!$qui['restreint'] or !$id or in_array($id, $qui['restreint'])); } [(#REM) ] /** * Tester si le statut de l'objet autorise des changements, en fonction du statut de l'auteur. * * @param string $objet Type d'objet * @param int $id_objet Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de l'autorisation * @return bool true s'il a le droit, false sinon **/ function [(#PREFIXE)]_autoriser_statuts($objet, $id_objet, $qui, $opt) { $statut = sql_getfetsel('statut', table_objet_sql($objet), id_table_objet($objet) . ' = ' . intval($id_objet)); return (!isset($opt['statut']) or $opt['statut'] !== 'publie') and in_array($qui['statut'], array('0minirezo', '1comite')) and in_array($statut, array('prop', 'prepa', 'poubelle')); } [(#REM) ]