You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

132 lines
4.0 KiB

<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* @param $id_controle
* @param $id_auteur
* @param $options
* @return string
*/
function contrib_rubrique_plugin($id_controle, $id_auteur, $options) {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$erreur = '';
// Initialisation par défaut d'une anomalie pour le type de contrôle
$anomalie = array(
'type_controle' => 'contrib_rubrique_plugin'
);
// 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.
include_spip('inc/svp_plugin');
include_spip('inc/contrib_plugin');
include_spip('inc/ezcheck_observation');
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) {
foreach ($rubriques_plugin as $_rubrique) {
if ($_rubrique['prefixe']) {
// 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 pas 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 de la rubrique en cours
// - si elle est vide on ne renvoie pas d'erreur car c'est un autre contrôle qui s'en
// occupe.
if (
($categorie_parent = rubrique_lire($_rubrique['id_parent'], 'categorie'))
and ($categorie_parent != $categorie_plugin)
) {
// La rubrique-plugin est mal positionnée dans l'arborescence alors que la rubrique
// correspondant à la catégorie de rattachement du plugin existe.
// - on génère une anomalie
$anomalie['code'] = 'rubplug_loc';
// On en profite pour stocker dans les paramètres de l'anomalie la rubrique
// auquel elle devrait être rattachée (elle est forcément unique).
$where = array(
'categorie=' . sql_quote($categorie_plugin)
);
if ($id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques', $where)) {
$anomalie['parametres'] = array('id_parent' => $id_rubrique);
}
}
}
} 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 (!empty($anomalie['code'])) {
observation_ajouter('anomalie', $id_controle, $anomalie);
}
}
}
}
}
return $erreur;
}
/**
* @param $id_controle
* @param $id_auteur
* @param $options
* @return string
*/
function contrib_rubrique_categorie($id_controle, $id_auteur, $options) {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$erreur = '';
return $erreur;
}
/**
* @param $id_controle
* @param $id_auteur
* @param $options
* @return string
*/
function contrib_plugin_categorie($id_controle, $id_auteur, $options) {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$erreur = '';
return $erreur;
}
/**
* @param $id_controle
* @param $id_auteur
* @param $options
* @return string
*/
function contrib_article_prepa($id_controle, $id_auteur, $options) {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$erreur = '';
return $erreur;
}