Browse Source

Corriger aussi l'autorisation de modifier le préfixe d'une rubrique qui ne fonctionnait que si la rubrique existait déjà.

Un peu de phpdoc.
master
Eric Lupinacci 3 years ago
parent
commit
74a296dc17
  1. 2
      action/rubrique_plugin_generer_prefixe.php
  2. 46
      contrib_autorisations.php
  3. 19
      inc/contrib_rubrique.php
  4. 2
      paquet.xml

2
action/rubrique_plugin_generer_prefixe.php

@ -60,6 +60,6 @@ function action_rubrique_plugin_generer_prefixe_dist() {
}
}
// TODO : ajouter le déblocage de toutes les éditions de l'auteur
// Déblocage de toutes les éditions de l'auteur
rubrique_debloquer_edition($GLOBALS['visiteur_session']['id_auteur']);
}

46
contrib_autorisations.php

@ -28,9 +28,14 @@ function autoriser_contrib_dist($faire, $type, $id, $qui, $options) {
* Autorisation de modifier le champ extra catégorie d'une rubrique.
* Il faut :
* - être un webmestre,
* - que la rubrique ait une profondeur égale à 0 ou 1,
* - que le secteur ne soit ni un secteur-carnet, ni un secteur-apropos, ni un secteur-galaxie.
* - et que si la rubrique est de profondeur 1, le secteur a déjà sa catégorie remplie.
* - et que si la rubrique est un secteur :
* -- qu'elle soit en création ou sinon que son secteur ne soit ni un secteur-carnet, ni un secteur-apropos,
* ni un secteur-galaxie.
* - ou si la rubrique n'est pas un secteur :
* -- qu'elle ait une profondeur égale 1,
* -- que son secteur ne soit ni un secteur-carnet, ni un secteur-apropos, ni un secteur-galaxie.
* -- et qu'il ait déjà sa catégorie remplie.
*
*
* @param $faire
* L'action se nomme modifierextra
@ -58,21 +63,21 @@ function autoriser_rubrique_modifierextra_categorie($faire, $type, $id, $qui, $o
if (!is_null($id_parent)) {
if (!$id_parent) {
// La rubrique parent est nulle: la rubrique en cours de création ou de modification est un secteur.
if ($id == 'oui') {
$id_rubrique = intval($id);
if (!$id_rubrique) {
// Création d'un secteur: on autorise car c'est plus surement un secteur plugin.
$autoriser = true;
} else {
// Modification d'un secteur: on autorise si ce n'est pas apropos, carnet ou galaxie sinon
// l'autorisation est refusée.
if (($id_rubrique = intval($id))
and !rubrique_dans_secteur_apropos($id_rubrique)
if (!rubrique_dans_secteur_apropos($id_rubrique)
and !rubrique_dans_secteur_carnet($id_rubrique)
and !rubrique_dans_secteur_galaxie($id_rubrique)) {
$autoriser = true;
}
}
} else {
// La rubrique parent est a minima un secteur. Il faudra donc tester la profondeur de la rubrique
// La rubrique parent est a minima un secteur. Il faut donc tester la profondeur de la rubrique
// en cours de traitement qui ne doit pas dépasser 1.
// On vérifie si la rubrique parent est dans un secteur à exclure (non plugin).
// - le carnet wiki
@ -81,7 +86,7 @@ function autoriser_rubrique_modifierextra_categorie($faire, $type, $id, $qui, $o
if (!rubrique_dans_secteur_apropos($id_parent)
and !rubrique_dans_secteur_carnet($id_parent)
and !rubrique_dans_secteur_galaxie($id_parent)) {
// On vérifie la profondeur de la rubrique parent est égale à 0 et qu'elle a une catégorie
// On vérifie la profondeur de la rubrique parent est un secteur et qu'elle a une catégorie
// non vide.
$parent = rubrique_lire($id_parent);
$profondeur = intval($parent['profondeur']);
@ -102,7 +107,8 @@ function autoriser_rubrique_modifierextra_categorie($faire, $type, $id, $qui, $o
* Il faut :
* - être un webmestre,
* - que la rubrique ait une profondeur égale à 2,
* - que la catégorie de sa rubrique parente soit non vide (rubrique-categorie).
* - que la catégorie de sa rubrique parente soit non vide (rubrique-categorie) ce qui n'est possible que si
* la rubrique est dans un secteur-plugin.
* Cela implique que le préfixe ne peut être positionné que si les rubriques parentes
* ont déjà une catégorie.
*
@ -127,20 +133,16 @@ function autoriser_rubrique_modifierextra_prefixe($faire, $type, $id, $qui, $opt
// Seuls les webmestres peuvent configurer le préfixe d'une rubrique-plugin.
if (autoriser('webmestre')) {
if ($id_rubrique = intval($id)) {
// On vérifie la profondeur de la rubrique qui ne peut-être que 2.
$id_parent = isset($opt['contexte']['id_parent']) ? intval($opt['contexte']['id_parent']) : 0;
if ($id_parent) {
// On vérifie la profondeur de la rubrique parent qui ne peut-être que 2 et le remplissage de sa
// catégorie.
include_spip('inc/contrib_rubrique');
$rubrique = rubrique_lire($id_rubrique);
$profondeur = intval($rubrique['profondeur']);
if (($profondeur !== null)
and ($profondeur == 2)) {
// On vérifie que l'on est bien dans une rubrique-categorie ce qui implique la rubrique
// parente possède une catégorie non vide (la rubrique parent n'est jamais un secteur du fait
// de la profondeur).
if (($id_parent = intval($rubrique['id_parent']))
and rubrique_lire($id_parent, 'categorie')) {
$autoriser = true;
}
$parent = rubrique_lire($id_parent);
$profondeur = intval($parent['profondeur']);
if (($profondeur == 1)
and $parent['categorie']) {
$autoriser = true;
}
}
}

19
inc/contrib_rubrique.php

@ -207,12 +207,9 @@ function rubrique_dans_secteur_apropos($id_rubrique) {
* Le secteur-carnet est déterminé par la configuration de l'espace wiki dans le plugin
* Autorité.
*
* @param int $id
* Id de la rubrique concernée.
* @param mixed $id_rubrique
* @param mixed $id_rubrique Id de la rubrique concernée.
*
* @return bool
* True si la rubrique fait partie du secteur-carnet, false sinon.
* @return bool True si la rubrique fait partie du secteur-carnet, false sinon.
*/
function rubrique_dans_secteur_carnet($id_rubrique) {
$est_carnet = false;
@ -230,16 +227,12 @@ function rubrique_dans_secteur_carnet($id_rubrique) {
}
/**
* Vérifie que la rubrique concernée fait bien partie du secteur-carnet.
* Le secteur-carnet est déterminé par la configuration de l'espace wiki dans le plugin
* Autorité.
* Vérifie que la rubrique concernée fait bien partie du secteur-galaxie.
* Les secteurs-galaxie sont déterminés par une configuration du plugin Contrib.
*
* @param int $id
* Id de la rubrique concernée.
* @param mixed $id_rubrique
* @param mixed $id_rubrique Id de la rubrique concernée.
*
* @return bool
* True si la rubrique fait partie du secteur-carnet, false sinon.
* @return bool True si la rubrique fait partie du secteur-galaxie, false sinon.
*/
function rubrique_dans_secteur_galaxie($id_rubrique) {
$est_galaxie = false;

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="contrib"
categorie="outil"
version="0.1.1"
version="0.1.2"
etat="dev"
compatibilite="[3.3.0-dev;3.3.*]"
logo="contrib_logo-64.png"

Loading…
Cancel
Save