source: spip-zone/_plugins_/svp_api/trunk/inc/svpapi_requete.php @ 96818

Last change on this file since 96818 was 96818, checked in by eric@…, 5 years ago

Ajout d'une collection depots qui renvoie tous les objets dépôts hébergés par le serveur SVP.
Pour tous les objets renvoyés on désérialise les champs sérialisés et on présente les champs multi comme des tableaux.
Pour la peine on passe en 0.2.0

  • Property svn:eol-style set to native
File size: 4.2 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) return;
4
5
6/**
7 * Détermine si la valeur du crtière compatibilité SPIP est valide.
8 * La fonction compare uniquement la structure de la chaine passée qui doit être un numéro de version ou de branche.
9 *
10 * @param string        $valeur
11 *              La valeur du critère compatibilite SPIP
12 * @param array         $erreur
13 *
14 * @return boolean
15 *              True si la valeur est valide, false sinon.
16 */
17function requete_verifier_format($valeur, &$erreur) {
18        $format_valide = true;
19
20        if (!in_array($valeur, array('json', 'xml'))) {
21                $erreur = array(
22                        'status'        => 400,
23                        'type'          => 'format_nok',
24                        'element'       => 'format',
25                        'valeur'        => $valeur);
26                $format_valide = false;
27        }
28
29        return $format_valide;
30}
31
32
33/**
34 * Détermine si la collection demandée est valide.
35 * Le service ne fournit que la collection plugins.
36 *
37 * @param string $valeur
38 *              La valeur de la collection demandée
39 *
40 * @return boolean
41 *              True si la valeur est valide, false sinon.
42 */
43function requete_verifier_collection($valeur, &$erreur) {
44        $collection_valide = true;
45
46        if (!in_array($valeur, array('plugins', 'depots'))) {
47                $erreur = array(
48                        'status'        => 400,
49                        'type'          => 'collection_nok',
50                        'element'       => 'collection',
51                        'valeur'        => $valeur);
52                $collection_valide = false;
53        }
54
55        return $collection_valide;
56}
57
58
59/**
60 * Détermine si la collection demandée est valide.
61 * Le service ne fournit que la collection plugins.
62 *
63 * @param string $valeur
64 *              La valeur de la collection demandée
65 *
66 * @return boolean
67 *              True si la valeur est valide, false sinon.
68 */
69function requete_verifier_ressource($valeur, &$erreur) {
70        $ressource_valide = true;
71
72        if (!in_array($valeur, array('plugin'))) {
73                $erreur = array(
74                        'status'        => 400,
75                        'type'          => 'ressource_nok',
76                        'element'       => 'ressource',
77                        'valeur'        => $valeur);
78                $ressource_valide = false;
79        }
80
81        return $ressource_valide;
82}
83
84
85/**
86 * Détermine si la valeur du préfixe de plugin est valide.
87 * La fonction compare uniquement la structure de la chaine passée qui doit être cohérente avec
88 * celui d'un nom de variable.
89 *
90 * @param string $valeur
91 *              La valeur du préfixe
92 *
93 * @return boolean
94 *              True si la valeur est valide, false sinon.
95 */
96function requete_verifier_prefixe($valeur, &$erreur) {
97        $prefixe_valide = true;
98
99        if (!preg_match('#^(\w){2,}$#', strtolower($valeur))) {
100                $erreur = array(
101                        'status'        => 400,
102                        'type'          => 'prefixe_nok',
103                        'element'       => 'prefixe',
104                        'valeur'        => $valeur);
105                $prefixe_valide = false;
106        }
107
108        return $prefixe_valide;
109}
110
111
112function requete_verifier_criteres($criteres, &$erreur) {
113
114        $critere_valide = true;
115        $erreur = array();
116
117        if ($criteres) {
118                // On vérifie pour chaque critère :
119                // -- si le critère est valide
120                // -- si la valeur du critère est valide
121                // On arrête dès qu'une erreur est trouvée et on la reporte
122                foreach ($criteres as $_critere => $_valeur) {
123                        $verifier = "requete_verifier_critere_${_critere}";
124                        if (!$verifier($_valeur)) {
125                                $erreur = array(
126                                        'status'        => 400,
127                                        'type'          => 'critere_nok',
128                                        'element'       => $_critere,
129                                        'valeur'        => $_valeur);
130                                $critere_valide = false;
131                                break;
132                        }
133                }
134        }
135
136        return $critere_valide;
137}
138
139
140/**
141 * Détermine si la valeur de la catégorie est valide.
142 * La fonction fait appel à un filtre de SVP pour récupérer la liste des catégories autorisées.
143 *
144 * @param string $valeur
145 *              La valeur du critère catégorie
146 *
147 * @return boolean
148 *              True si la valeur est valide, false sinon.
149 */
150function requete_verifier_critere_categorie($valeur) {
151        $critere_valide = true;
152
153        include_spip('inc/svp_phraser');
154        if (!in_array($valeur, $GLOBALS['categories_plugin'])) {
155                $critere_valide = false;
156        }
157
158        return $critere_valide;
159}
160
161
162/**
163 * Détermine si la valeur du critère compatibilité SPIP est valide.
164 * La fonction compare uniquement la structure de la chaine passée qui doit être cohérente avec
165 * un numéro de version ou de branche.
166 *
167 * @param string $valeur
168 *              La valeur du critère compatibilite SPIP
169 *
170 * @return boolean
171 *              True si la valeur est valide, false sinon.
172 */
173function requete_verifier_critere_compatible_spip($valeur) {
174        $critere_valide = true;
175
176        if (!preg_match('#^(\d+)(\.\d+){0,2}$#', $valeur)) {
177                $critere_valide = false;
178        }
179
180        return $critere_valide;
181}
Note: See TracBrowser for help on using the repository browser.