Browse Source

Mise au point du controle des affectations de plugin

master
Eric Lupinacci 3 years ago
parent
commit
38f6eadee5
  1. 85
      ezcheck/controles/contrib_controle.php
  2. 6
      ezcheck/controles/contrib_plugin_affectation.yaml
  3. 1
      ezcheck/dashboards/contrib.yaml
  4. 6
      lang/contrib_fr.php
  5. 5
      lang/observation_fr.php

85
ezcheck/controles/contrib_controle.php

@ -115,7 +115,7 @@ function contrib_rubrique_plugin_rubplug_loc($id_observation, $id_auteur) {
);
objet_modifier('rubrique', intval($observation['id_objet']), $maj_rubrique);
} else {
$erreur = 'idnul';
$erreur = 'corr_nok';
}
return $erreur;
@ -173,7 +173,7 @@ function contrib_rubrique_categorie($id_controle, $id_auteur, $options) {
// le code de l'anomalie
$anomalie['code'] = $prefixe_anomalie
. '_'
. (!$rubriques ? 'abs' : 'exc');
. (!$rubriques ? 'abs' : 'max');
// On complète la description de l'anomalie avec l'objet et les paramètres
// et on la crée.
@ -196,3 +196,84 @@ function contrib_rubrique_categorie($id_controle, $id_auteur, $options) {
return $erreur;
}
/**
* Ce contrôle permet d'identifier les affectations plugin-catégorie pour lesquelles le préfixe de plugin
* est erroné (c'est le cas si celui-ci a été changé ou si le plugin a été retiré du référentiel).
*
* @param $id_controle
* @param $id_auteur
* @param $options
*
* @return string
*/
function contrib_plugin_affectation($id_controle, $id_auteur, $options) {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$erreur = '';
// Récupération des plugins du référentiel sous la forme [prefixe] = id_plugin
$select = array('prefixe', 'spip_plugins.id_plugin as id_plugin');
$from = array('spip_plugins', 'spip_depots_plugins');
$group_by = array('spip_plugins.id_plugin');
$where = array('spip_depots_plugins.id_depot>0', 'spip_depots_plugins.id_plugin=spip_plugins.id_plugin');
$plugins = sql_allfetsel($select, $from, $where, $group_by);
$plugins = array_column($plugins, 'id_plugin', 'prefixe');
// Récupération des affectations plugin-catégorie sous la forme [prefixe] = affectation
include_spip('inc/svptype_type_plugin');
$affectations = type_plugin_repertorier_affectation('categorie');
$affectations = array_column($affectations, null, 'prefixe');
if ($affectations) {
$affectations_erronees = array_diff_key($affectations, $plugins);
if ($affectations_erronees) {
include_spip('inc/ezcheck_observation');
// On ajoute une anomalie pour chaque affectation erronée
foreach ($affectations_erronees as $_prefixe => $_affectation) {
// Initialisation de l'anomalie plugaff_pfx.
$anomalie = array(
'type_controle' => 'contrib_plugin_affectation',
'code' => 'plugpfx_nok',
'parametres' => $_affectation,
'objet' => "${_prefixe}-{$_affectation['identifiant_mot']}"
);
// Création de l'anomalie
observation_ajouter(true, $id_controle, $anomalie);
}
}
}
return $erreur;
}
function contrib_plugin_affectation_plugpfx_nok($id_observation, $id_auteur) {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$erreur = '';
// Récupération des informations nécessaires sur l'observation
include_spip('action/editer_objet');
$observation = objet_lire('observation', $id_observation);
// Le champ 'parametres' de l'anomalie contient toutes les champs qui composent l'affectation (table de liens).
// - on supprime le lien à partir de sa clé composée de l'id du groupe, l'id du mot et le préfixe du plugin.
$parametres = unserialize($observation['parametres']);
if (
!empty($parametres['id_groupe'])
and !empty($parametres['id_mot'])
and !empty($parametres['prefixe'])
) {
$where = array(
'id_groupe=' . intval($parametres['id_groupe']),
'id_mot=' . intval($parametres['id_mot']),
'prefixe=' . sql_quote($parametres['prefixe'])
);
sql_delete('spip_plugins_typologies', $where);
} else {
$erreur = 'corr_nok';
}
return $erreur;
}

6
ezcheck/controles/contrib_plugin_affectation.yaml

@ -0,0 +1,6 @@
nom: '<:contrib:type_controle_plugin_affectation_nom:>'
description: '<:contrib:type_controle_plugin_affectation_desc:>'
icone: 'plugin-24.png'
include: 'contrib_controle'
corrections:
- 'plugpfx_nok'

1
ezcheck/dashboards/contrib.yaml

@ -8,6 +8,7 @@ groupes:
nom: '<:contrib:groupe_contrib_plugin_nom:>'
controles:
- 'contrib_plugin_categorie'
- 'contrib_plugin_affectation'
-
identifiant: 'rubrique'
nom: '<:contrib:groupe_contrib_rubrique_nom:>'

6
lang/contrib_fr.php

@ -47,11 +47,15 @@ $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_plugin_affectation_nom' => 'Affectations avec plugin invalide',
'type_controle_plugin_affectation_desc' => 'Ce contrôle identifie les affectations plugin-catégorie pour lesquelles le préfixe du plugin est invalide (situation provoquée par un changement de préfixe ou une disparition dudit plugin, anomalie <code>plugpfx_nok</code>).
Pour supprimer les affectations invalides, veuillez utiliser le bouton Corriger.',
'type_controle_plugin_categorie_nom' => 'Plugins sans catégorie',
'type_controle_plugin_categorie_desc' => 'Ce contrôle permet de lister les plugins non encore affectés à une catégorie.
Il est essentiel d\'assurer une complète correction des affectations plugin-catégorie avant d\'exécuter les contrôles liés aux rubriques-plugin.',
'type_controle_rubrique_categorie_nom' => 'Rubriques-catégorie en erreur',
'type_controle_rubrique_categorie_desc' => 'Ce contrôle permet d\'identifier les catégories racine ou feuille qui ne possèdent pas de secteur ou rubrique correspondante dans le site (anomalies <code>rubcat0_abs</code>, <code>rubcat1_abs</code>) ou les celles qui en possèdent plusieurs (anomalies <code>rubcat0_exc</code>, <code>rubcat1_exc</code>).',
'type_controle_rubrique_categorie_desc' => 'Ce contrôle permet d\'identifier les catégories racine ou feuille qui ne possèdent pas de secteur ou rubrique correspondante dans le site (anomalies <code>rubcat0_abs</code>, <code>rubcat1_abs</code>) ou les celles qui en possèdent plusieurs (anomalies <code>rubcat0_max</code>, <code>rubcat1_max</code>).',
'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, anomalie <code>rubplug_pfx</code>) ou celles qui sont mal positionnées dans l\'arborescence (la catégorie de la rubrique parent n\'est pas celle du plugin, anomalie <code>rubplug_loc</code>).

5
lang/observation_fr.php

@ -9,7 +9,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'contrib_rubrique_plugin_rubplug_loc' => 'Rubrique mal placée',
'contrib_rubrique_plugin_rubplug_pfx' => 'Préfixe erroné',
'contrib_rubrique_categorie_rubcat1_abs' => 'Rubrique absente',
'contrib_rubrique_categorie_rubcat1_exc' => 'Rubriques dupliquées (@rubriques@)',
'contrib_rubrique_categorie_rubcat1_max' => 'Rubriques dupliquées (@rubriques@)',
'contrib_rubrique_categorie_rubcat0_abs' => 'Secteur absent',
'contrib_rubrique_categorie_rubcat0_exc' => 'Secteurs dupliqués (@rubriques@)',
'contrib_rubrique_categorie_rubcat0_max' => 'Secteurs dupliqués (@rubriques@)',
'contrib_plugin_affectation_plugpfx_nok' => 'Préfixe invalide'
);

Loading…
Cancel
Save