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.
154 lines
5.0 KiB
154 lines
5.0 KiB
<?php |
|
/** |
|
* Ce fichier contient les filtres et les balises du plugin. |
|
*/ |
|
if (!defined('_ECRIRE_INC_VERSION')) { |
|
return; |
|
} |
|
|
|
/** |
|
* Compile la balise `#DASHBOARD` qui fournit la configuration complète d'un dashboard ou de tous les dashboards. |
|
* La signature de la balise est : `#DASHBOARD{dashboard_id}`. |
|
* |
|
* @balise |
|
* |
|
* @example |
|
* ``` |
|
* #DASHBOARD{contrib}, renvoie la description complète du dashboard d'id `contrib` |
|
* #DASHBOARD, renvoie la description de tous les dashboards |
|
* ``` |
|
* |
|
* @param Champ $p Pile au niveau de la balise. |
|
* |
|
* @return Champ Pile complétée par le code à générer. |
|
**/ |
|
function balise_DASHBOARD_dist(Champ $p) : Champ { |
|
// Récupération des arguments de la balise. |
|
// -- Identifiant du dashboard uniquement. |
|
$dashboard_id = interprete_argument_balise(1, $p); |
|
$dashboard_id = isset($dashboard_id) ? str_replace('\'', '"', $dashboard_id) : '""'; |
|
|
|
// Calcul de la balise |
|
$p->code = "(include_spip('inc/ezcheck_dashboard') |
|
? ({$dashboard_id} |
|
? dashboard_lire({$dashboard_id}) |
|
: dashboard_repertorier()) |
|
: [])"; |
|
|
|
return $p; |
|
} |
|
|
|
/** |
|
* Compile la balise `#DASHBOARD_CONTEXTE` qui fournit la configuration complète d'un dashboard ainsi que des |
|
* informations supplémentaires provenant de l'environnement de la page dashboard. |
|
* La signature de la balise est : `#DASHBOARD_CONTEXTE{dashboard_id, groupe_id, type_controle}`. |
|
* |
|
* @balise |
|
* |
|
* @example |
|
* ``` |
|
* #DASHBOARD_CONTEXTE{contrib, '', ''}, renvoie la description complète du dashboard d'id `contrib` ainsi que |
|
* l'id du premier groupe et le premier type de contrôle listé dans le groupe. |
|
* #DASHBOARD_CONTEXTE{contrib, article, ''}, renvoie la description complète du dashboard d'id `contrib` ainsi que |
|
* l'id du groupe précisé et le premier type de contrôle listé dans le groupe. |
|
* #DASHBOARD_CONTEXTE{contrib, 'article', 'article_prepa'}, renvoie la description complète du dashboard d'id `contrib` ainsi que |
|
* l'id du groupe et du type de contrôle précisés. |
|
* ``` |
|
* |
|
* @param Champ $p Pile au niveau de la balise. |
|
* |
|
* @return Champ Pile complétée par le code à générer. |
|
*/ |
|
function balise_DASHBOARD_CONTEXTE_dist(Champ $p) : Champ { |
|
// Récupération des arguments de la balise. |
|
// -- Tous les arguments sont obligatoires. |
|
$dashboard_id = interprete_argument_balise(1, $p); |
|
$dashboard_id = isset($dashboard_id) ? str_replace('\'', '"', $dashboard_id) : '""'; |
|
$groupe_id = interprete_argument_balise(2, $p); |
|
$groupe_id = isset($groupe_id) ? str_replace('\'', '"', $groupe_id) : '""'; |
|
$type_controle = interprete_argument_balise(3, $p); |
|
$type_controle = isset($type_controle) ? str_replace('\'', '"', $type_controle) : '""'; |
|
|
|
// Calcul de la balise |
|
$p->code = "(include_spip('inc/ezcheck_dashboard') |
|
? dashboard_contextualiser({$dashboard_id}, {$groupe_id}, {$type_controle}) |
|
: [])"; |
|
|
|
return $p; |
|
} |
|
|
|
/** |
|
* Compile la balise `#TYPE_CONTROLE_DASHBOARD` qui renvoie l'identifiant du dashboard auquel le type de contrôle est |
|
* rattaché. |
|
* La signature de la balise est : `#TYPE_CONTROLE_DASHBOARD{identifiant_type_controle}`. |
|
* |
|
* @balise |
|
* |
|
* @param Champ $p Pile au niveau de la balise. |
|
* |
|
* @return Champ Pile complétée par le code à générer. |
|
*/ |
|
function balise_TYPE_CONTROLE_DASHBOARD_dist(Champ $p) : Champ { |
|
// Récupération des arguments. |
|
// -- l'identifiant du type de contrôle unoiquement |
|
$type_controle = interprete_argument_balise(1, $p); |
|
$type_controle = isset($type_controle) ? str_replace('\'', '"', $type_controle) : '""'; |
|
|
|
// On calcule la balise |
|
$p->code = "(include_spip('inc/ezcheck_type_controle') |
|
? type_controle_identifier_dashboard({$type_controle}) |
|
: '')"; |
|
|
|
return $p; |
|
} |
|
|
|
/** |
|
* Construit le titre d'un contrôle. |
|
* |
|
* @param int $id_objet Identifiant du contrôle |
|
* @param array<string, mixed> $champs Liste des champs de l'objet concerné |
|
* |
|
* @return string |
|
*/ |
|
function generer_titre_controle(int $id_objet, array $champs) : string { |
|
// Le titre d'un contrôle est de la forme type_controle:id |
|
$titre = "{$champs['type_controle']}:{$id_objet}"; |
|
|
|
return $titre; |
|
} |
|
|
|
/** |
|
* Construit le titre d'une observation. |
|
* |
|
* @param int $id_objet Identifiant de l'observation |
|
* @param array<string, mixed> $champs Liste des champs de l'objet concerné |
|
* |
|
* @return string |
|
*/ |
|
function generer_titre_observation(int $id_objet, array $champs) : string { |
|
// Le titre d'une observation est de la forme code:id |
|
$titre = "{$champs['code']}:{$champs['id_controle']}-{$id_objet}"; |
|
|
|
return $titre; |
|
} |
|
|
|
/** |
|
* Passe la fonction `typo()` si la valeur du paramètre est un idiome, sinon ne rien faire. |
|
* Cette fonction est nécessaire pour passer le paramètre dans l'environnement. |
|
* |
|
* @param mixed $valeur Chaine représentant une valeur à afficher |
|
* |
|
* @return mixed Chaine à afficher |
|
*/ |
|
function parametre_preparer_pour_env($valeur) { |
|
// Si la variable est un idiome spip <:modute:item:> on passe typo |
|
if ( |
|
is_string($valeur) |
|
and (strpos($valeur, '<:') !== false) |
|
and preg_match('/^<:([^>]*?):>$/', $valeur) |
|
) { |
|
$valeur = typo($valeur); |
|
} |
|
|
|
return $valeur; |
|
}
|
|
|