Browse Source

Mise en oeuvre du controle sur les rubriques-plugin

master
Eric Lupinacci 3 years ago
parent
commit
4ff9c82abc
  1. 16
      ezcheck/contrib_controle.php
  2. 84
      ezcheck/controles/contrib_controle.php
  3. 5
      ezcheck/controles/contrib_rubrique_plugin.yaml
  4. 7
      ezcheck/controles/contrib_rubrique_prefixe.yaml
  5. 2
      ezcheck/dashboards/contrib.yaml
  6. 4
      lang/contrib_fr.php
  7. 11
      lang/observation_fr.php

16
ezcheck/contrib_controle.php

@ -1,16 +0,0 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function contrib_article_prepa($id_controle, $id_auteur) {
return true;
}
function contrib_rubrique_prefixe($id_controle, $id_auteur) {
return true;
}

84
ezcheck/controles/contrib_controle.php

@ -0,0 +1,84 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function contrib_article_prepa($id_controle, $id_auteur, $options) {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$erreur = '';
return $erreur;
}
function contrib_rubrique_plugin($id_controle, $id_auteur, $options) {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$erreur = '';
// Pour limiter le nombre de rubriques récupérées d'un coup, on boucle par secteur-plugin.
// -- les secteurs-plugin
include_spip('inc/contrib_rubrique');
$secteurs_plugin = rubrique_lister_secteur_plugin();
// Pour limiter le nombre de rubriques récupérées, on boucle par secteur.
foreach ($secteurs_plugin as $_id_secteur) {
// -- on récupère les rubriques-plugin en excluant les rubriques-plugin sans préfixe qui peuvent exister
// sans être une erreur.
$filtres = array(
'id_secteur' => intval($_id_secteur),
'prefixe' => '!',
'profondeur' => 2
);
$informations = array('id_rubrique', 'id_parent', 'prefixe');
$rubriques_plugin = rubrique_repertorier($filtres, $informations);
if ($rubriques_plugin) {
include_spip('inc/svp_plugin');
include_spip('inc/contrib_plugin');
foreach ($rubriques_plugin as $_rubrique) {
if ($_rubrique['prefixe']) {
// Initialisation par défaut d'une anomalie
$anomalie = array(
'id_controle' => $id_controle,
'objet' => 'rubrique',
'id_objet' => $_rubrique['id_rubrique'],
'gravite' => 'e',
'code' => '',
'statut' => 'publie',
'date' => date('Y-m-d H:i:s'),
'parametres' => serialize(array())
);
// Pour chaque rubrique-plugin on vérifie que :
// - le préfixe est bien référencé dans SVP
// - la catégorie d'appartenance est correcte.
if ($id_plugin = plugin_lire($_rubrique['prefixe'], 'id_plugin')) {
// On lit la catégorie du plugin telle que configurée dans la typologie
// - si elle n'est positionnée on ne renvoie aucune erreur car c'est un autre contrôle qui s'en occupe
if ($categorie_plugin = plugin_lire_categorie($_rubrique['prefixe'])) {
// On lit la catégorie de la rubrique parent
$categorie_parent = rubrique_lire($_rubrique['id_parent'], 'categorie');
if ($categorie_parent != $categorie_plugin) {
// La rubrique-plugin est mal positionnée dans l'arborescence
// - on génère une anomalie
$anomalie['code'] = 'rubplug_loc';
}
}
} else {
// Le préfixe du plugin n'est pas connu du référentiel SVP
// - on génère une anomalie
$anomalie['code'] = 'rubplug_pfx';
}
// Si une anomalie a été détectée on l'ajoute dans la base
if ($anomalie['code']) {
objet_inserer('observation', null, $anomalie);
}
}
}
}
}
return $erreur;
}

5
ezcheck/controles/contrib_rubrique_plugin.yaml

@ -0,0 +1,5 @@
nom: '<:contrib:type_controle_rubrique_plugin_nom:>'
description: '<:contrib:type_controle_rubrique_plugin_desc:>'
icone: 'rubrique-24.png'
fonction:
include: 'contrib_controle'

7
ezcheck/controles/contrib_rubrique_prefixe.yaml

@ -1,7 +0,0 @@
nom: '<:contrib:type_controle_rubrique_prefixe_nom:>'
description: '<:contrib:type_controle_rubrique_prefixe_desc:>'
icone: 'rubrique-24.png'
fonction:
include: 'contrib_controle'
periode: 'jour'
priorite: '1'

2
ezcheck/dashboards/contrib.yaml

@ -14,4 +14,4 @@ groupes:
identifiant: 'rubrique'
nom: '<:contrib:groupe_contrib_rubrique_nom:>'
controles:
- 'contrib_rubrique_prefixe'
- 'contrib_rubrique_plugin'

4
lang/contrib_fr.php

@ -46,6 +46,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// T
'type_controle_article_prepa_nom' => 'Articles en cours de rédaction',
'type_controle_article_prepa_desc' => 'Les articles sont classés par année, des plus anciens aux plus récents.',
'type_controle_rubrique_prefixe_nom' => 'Rubriques-plugin avec préfixe erroné',
'type_controle_rubrique_prefixe_desc' => 'Le préfixe est soit absent, soit inconnu de SVP.',
'type_controle_rubrique_plugin_nom' => 'Rubriques-plugin en erreur',
'type_controle_rubrique_plugin_desc' => 'Ce contrôle permet d\'identifier les rubriques-plugin dont le préfixe est erroné (non référencé par SVP) ou celles qui sont mal positionnées dans l\'arborescence (la catégorie de la rubrique parent n\'est pas celle du plugin).',
);

11
lang/observation_fr.php

@ -0,0 +1,11 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'anomalie_rubplug_loc' => 'Rubrique mal placée',
'anomalie_rubplug_pfx' => 'Préfixe erroné',
);
Loading…
Cancel
Save