source: spip-zone/_plugins_/verifier/inc/verifier.php @ 109086

Last change on this file since 109086 was 109086, checked in by tcharlss@…, 2 years ago

PHPDoc

File size: 4.0 KB
Line 
1<?php
2/**
3 * Fonctions de l'API de vérification
4 *
5 * @plugin     verifier
6 * @copyright  2018
7 * @author     Les Développements Durables
8 * @licence    GNU/GPL
9 */
10
11// Sécurité
12if (!defined('_ECRIRE_INC_VERSION')) {
13        return;
14}
15
16/**
17 * Fonction de base de l'API de vérification.
18 *
19 * @param mixed $valeur La valeur a verifier.
20 * @param string $type Le type de verification a appliquer.
21 * @param array $options Un eventuel tableau d'options suivant le type.
22 * @param array $valeur_normalisee
23 *              Si des options de verification modifient la valeur entrante (normalisent),
24 *              alors la valeur modifie sera stockee dans cette variable.
25 * @return string Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
26 */
27function inc_verifier_dist($valeur, $type, $options = null, &$valeur_normalisee = null) {
28
29        $erreur = array();
30        // On vérifie que les options sont bien un tableau
31        if (!is_array($options)) {
32                $options = array();
33        }
34
35        // Si la valeur est vide, il n'y a rien a verifier donc c'est bon
36        if (is_null($valeur) or (is_string($valeur) and $valeur == '')) {
37                return '';
38        }
39        // Si c'est une date avec horaire c'est un tableau
40        if (is_array($valeur) and isset($valeur['date']) and $valeur['date'] == '') {
41                return '';
42        }
43
44        // On cherche si une fonction correspondant au type existe
45        if ($verifier = charger_fonction($type, 'verifier', true)) {
46                $erreur = $verifier($valeur, $options, $valeur_normalisee);
47        }
48
49        // On passe le tout dans le pipeline du meme nom
50        $erreur = pipeline(
51                'verifier',
52                array(
53                        'args' => array(
54                                'valeur' => $valeur,
55                                'type' => $type,
56                                'options' => $options,
57                        ),
58                        'data' => $erreur
59                )
60        );
61
62        return $erreur;
63}
64
65/**
66 * Liste toutes les vérifications possibles
67 *
68 * @param string $repertoire
69 *              Dans quel repertoire chercher les yaml.
70 *
71 * @return array Retourne un tableau listant les vérifications et leurs options
72 */
73function verifier_lister_disponibles($repertoire = 'verifier') {
74        static $verifications = array();
75
76        if (!isset($verifications[$repertoire])) {
77                $verifications[$repertoire] = array();
78                $liste = find_all_in_path("$repertoire/", '.+[.]yaml$');
79
80                if (count($liste)) {
81                        foreach ($liste as $fichier => $chemin) {
82                                $type = preg_replace(',[.]yaml$,i', '', $fichier);
83                                $dossier = str_replace($fichier, '', $chemin);
84                                // On ne garde que les vérifications qui ont bien la fonction !
85                                if (charger_fonction($type, $repertoire, true)
86                                        and (
87                                                is_array($verif = verifier_charger_infos($type, $repertoire))
88                                        )
89                                ) {
90                                        $verifications[$repertoire][$type] = $verif;
91                                }
92                        }
93                }
94        }
95
96        return $verifications[$repertoire];
97}
98
99/**
100 * Fonction de callback pour uasort()
101 * Afin de trier selon le titre
102 * @param array $array1 premier élèment
103 * @param array $array2 second élèment
104 * @return int 1,0,-1
105 **/
106function verifier_trier_par_titre($array1,$array2) {
107        if (isset($array1['titre']) and isset($array2['titre'])) {
108                if ($array1['titre'] == $array2['titre']) {
109                        return 0;
110                } elseif ($array1['titre'] > $array2['titre']) {
111                        return 1;
112                } else {
113                        return -1;
114                }
115        } else {
116                return 0;
117        }
118}
119
120/**
121 * Charger les informations contenues dans le yaml d'une vérification
122 *
123 * @param string $type_verif
124 *              Le type de la vérification
125 *
126 * @param string $repertoire
127 *              Dans quel repertoire chercher les yaml.
128 *
129 * @return array Un tableau contenant le YAML décodé
130 */
131function verifier_charger_infos($type_verif, $repertoire = 'verifier') {
132        $verif = array();       
133
134        if (defined('_DIR_PLUGIN_YAML')) {
135                include_spip('inc/yaml');
136                $fichier = find_in_path("$repertoire/$type_verif.yaml");
137
138                $verif = yaml_decode_file($fichier);
139                if (is_array($verif)) {
140                        $verif['titre']       = (isset($verif['titre'])       and $verif['titre'])       ? _T_ou_typo($verif['titre']) : $type_verif;
141                        $verif['description'] = (isset($verif['description']) and $verif['description']) ? _T_ou_typo($verif['description']) : '';
142                        $verif['icone']       = (isset($verif['icone'])       and $verif['icone'])       ? _T_ou_typo($verif['icone']) : '';
143                }
144        }
145        return $verif;
146}
Note: See TracBrowser for help on using the repository browser.