Changeset 96887 in spip-zone


Ignore:
Timestamp:
Apr 30, 2016, 1:13:35 PM (5 years ago)
Author:
eric@…
Message:

Phpdoc.
Correction de l'appel de la fonction de vérification du serveur.
Ajout des items d'erreur 501 serveur.
Formatage PSR.

Location:
_plugins_/svp_api/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/svp_api/trunk/http/svp.php

    r96873 r96887  
    11<?php
    2 
    3 // Sécurité
     2/**
     3 * Ce fichier contient l'ensemble des constantes et fonctions implémentant une API REST pour SVP
     4 * selon le modèle imposé par le serveur HTTP abstrait.
     5 *
     6 * @package SPIP\SVPAPI\API
     7 */
    48if (!defined('_ECRIRE_INC_VERSION')) {
    59        return;
    610}
    711
    8 /*
    9  * Implémentation d'un serveur REST pour SVP
    10  */
    11 
    12 /**
    13  * Traitement des erreurs directements détectées par le serveur HTTP abstrait.
    14  * Elles sont mises au format de l'API SVP et fournie au client en JSON.
     12
     13/**
     14 * Traite les erreurs directement détectées par le serveur HTTP abstrait uniquement.
     15 * Celles-ci sont mises au format de l'API SVP et fournies au client systématiquement en JSON.
     16 *
     17 * @api
    1518 *
    1619 * @param int $code
    17  *        Le code HTTP de l'erreur à générer
    18  *
    19  * @return string
    20  *        Retourne une chaîne vide
     20 *      Le code HTTP de l'erreur à générer
     21 *
     22 * @return Symfony\Component\HttpFoundation\Response
     23 *      Retourne l'objet réponse dont le contenu est mis à jour avec les éléments du bloc d'erreur.
    2124 */
    2225function http_svp_erreur_dist($code, $requete, $reponse) {
     
    5154
    5255/**
    53  * Fait un GET sur une collection de plugins.
    54  * La requête est du type /svp/plugins et renvoie les objets plugin contenu dans la base du serveur (hors les plugins
    55  * installés). Il est possible de filtrer cette requête par catégorie /svp/plugins&categorie=outil et/ou par
    56  * compatibilité SPIP.
    57  *
    58  * @param Symfony\Component\HttpFoundation\Request $requete
    59  *        Objet matérialisant la requête faite au serveur SVP.
     56 * Fait un GET sur une collection de plugins ou de dépôts.
     57 * La requête est du type `/svp/plugins` ou `/svp/depots` et renvoie les objets plugin contenus dans la base du serveur
     58 * (hors les plugins installés) ou les objets dépôt hébergés par le serveur.
     59 * Il est possible de filtrer la collection des plugins par catégorie /svp/plugins&categorie=outil et par
     60 * compatibilité SPIP /svp/plugins&compatible_spip=2.1.
     61 *
     62 * @api
     63 *
     64 * @param Symfony\Component\HttpFoundation\Request  $requete
     65 *      Objet matérialisant la requête faite au serveur SVP.
    6066 * @param Symfony\Component\HttpFoundation\Response $reponse
    61  *        Objet matérialisant la réponse telle qu'initialisée par le serveur HTTP abstrait. Cet objet sera
    62  *        complétée avant d'être retourné par la fonction.
     67 *      Objet matérialisant la réponse telle qu'initialisée par le serveur HTTP abstrait. Cet objet sera
     68 *      complétée avant d'être retourné par la fonction.
    6369 *
    6470 * @return object
    65  *        Objet réponse complétée (status, contenu de la ressource...).
    66  *        La fonction peut lever une erreur sur le format de sortie, la collection et sur les critères de filtre,
    67  *        catégorie et compatibilité SPIP.
     71 *      Objet réponse complétée (status, contenu de la ressource...).
     72 *      La fonction peut lever une erreur sur l'état du serveur, le format de sortie, la collection et sur les critères
     73 *        de filtre à savoir catégorie et compatibilité SPIP.
    6874 */
    6975function http_svp_get_collection_dist($requete, $reponse) {
     
    7985        // Vérification du mode SVP du serveur : celui-ci ne doit pas être en mode runtime pour
    8086        // renvoyer des données complètes
    81         if (requete_verifier_format($contenu['requete']['format'], $erreur)) {
     87        if (requete_verifier_serveur($erreur)) {
    8288                // Vérification du format de sortie demandé
    8389                if (requete_verifier_format($contenu['requete']['format'], $erreur)) {
     
    127133
    128134/**
    129  * Fait un GET sur une ressource de type plugin identifié par son préfixe.
    130  *
    131  * @param Symfony\Component\HttpFoundation\Request $requete
    132  *        Objet matérialisant la requête faite au serveur SVP.
     135 * Fait un GET sur une ressource de type plugin identifiée par son préfixe.
     136 *
     137 * @api
     138 *
     139 * @param Symfony\Component\HttpFoundation\Request  $requete
     140 *      Objet matérialisant la requête faite au serveur SVP.
    133141 * @param Symfony\Component\HttpFoundation\Response $reponse
    134  *        Objet matérialisant la réponse telle qu'initialisée par le serveur HTTP abstrait. Cet objet sera
    135  *        complétée avant d'être retourné par la fonction.
     142 *      Objet matérialisant la réponse telle qu'initialisée par le serveur HTTP abstrait. Cet objet sera
     143 *      complétée avant d'être retourné par la fonction.
    136144 *
    137145 * @return object
    138  *        Objet réponse complétée (status, contenu de la ressource...).
     146 *      Objet réponse complété (status, contenu de la ressource...).
     147 *      La fonction peut lever une erreur sur l'état du serveur, le format de sortie, le type de ressouce et
     148 *        sur l'existante de la ressource demandée.
    139149 */
    140150function http_svp_get_ressource_dist($requete, $reponse) {
     
    150160        // Vérification du mode SVP du serveur : celui-ci ne doit pas être en mode runtime pour
    151161        // renvoyer des données complètes
    152         if (requete_verifier_format($contenu['requete']['format'], $erreur)) {
     162        if (requete_verifier_serveur($erreur)) {
    153163                // Vérification du format de sortie demandé
    154164                if (requete_verifier_format($contenu['requete']['format'], $erreur)) {
  • _plugins_/svp_api/trunk/inc/svpapi_reponse.php

    r96873 r96887  
    11<?php
    2 
    3 if (!defined("_ECRIRE_INC_VERSION")) return;
     2/**
     3 * Ce fichier contient l'ensemble des constantes et fonctions de construction du contenu des réponses aux
     4 * requête à l'API SVP.
     5 *
     6 * @package SPIP\SVPAPI\REPONSE
     7 */
     8if (!defined('_ECRIRE_INC_VERSION')) {
     9        return;
     10}
    411
    512
    613if (!defined('_SVPAPI_CHAMPS_MULTI_PLUGIN')) {
    714        /**
    8          *
     15         * Liste des champs de l'objet plugin contenant un texte multi.
    916         */
    1017        define('_SVPAPI_CHAMPS_MULTI_PLUGIN', 'nom,slogan');
     
    1219if (!defined('_SVPAPI_CHAMPS_SERIALISES_PLUGIN')) {
    1320        /**
    14          *
     21         * Liste des champs de l'objet plugin contenant un tableau sérialisé.
    1522         */
    1623        define('_SVPAPI_CHAMPS_SERIALISES_PLUGIN', '');
     
    1825if (!defined('_SVPAPI_CHAMPS_VERSION_PLUGIN')) {
    1926        /**
    20          *
     27         * Liste des champs de l'objet plugin contenant un numéro de version pouvant être
     28         * normalisé (exemple: 012.001.023 au lieu de 12.1.23).
    2129         */
    2230        define('_SVPAPI_CHAMPS_VERSION_PLUGIN', 'vmax');
     
    2432if (!defined('_SVPAPI_CHAMPS_LISTE_PLUGIN')) {
    2533        /**
    26          *
     34         * Liste des champs de l'objet plugin contenant un texte au format liste dont chaque
     35         * élément est séparé par une virgule.
    2736         */
    2837        define('_SVPAPI_CHAMPS_LISTE_PLUGIN', 'branches_spip');
     
    3140if (!defined('_SVPAPI_CHAMPS_MULTI_PAQUET')) {
    3241        /**
    33          *
     42         * Liste des champs de l'objet paquet contenant un texte multi.
    3443         */
    3544        define('_SVPAPI_CHAMPS_MULTI_PAQUET', 'description');
     
    3746if (!defined('_SVPAPI_CHAMPS_SERIALISES_PAQUET')) {
    3847        /**
    39          *
     48         * Liste des champs de l'objet paquet contenant un tableau sérialisé.
    4049         */
    4150        define('_SVPAPI_CHAMPS_SERIALISES_PAQUET', 'auteur,credit,licence,copyright,dependances,procure,traductions');
     
    4352if (!defined('_SVPAPI_CHAMPS_VERSION_PAQUET')) {
    4453        /**
    45          *
     54         * Liste des champs de l'objet paquet contenant un numéro de version pouvant être
     55         * normalisé (exemple: 012.001.023 au lieu de 12.1.23).
    4656         */
    4757        define('_SVPAPI_CHAMPS_VERSION_PAQUET', 'version, version_base');
     
    4959if (!defined('_SVPAPI_CHAMPS_LISTE_PAQUET')) {
    5060        /**
    51          *
     61         * Liste des champs de l'objet paquet contenant un texte au format liste dont chaque
     62         * élément est séparé par une virgule.
    5263         */
    5364        define('_SVPAPI_CHAMPS_LISTE_PAQUET', 'branches_spip');
     
    5566
    5667/**
    57  * @param Symfony\Component\HttpFoundation\Request      $requete
    58  *
    59  * @return array
     68 * Initialise le contenu d'une réponse qui se présente comme un tableau associatif.
     69 * En particulier, la fonction stocke les éléments de la requête, positionne le bloc d'erreur
     70 * par défaut à ok, et récupère le schéma de données du plugin SVP.
     71 *
     72 * @param Symfony\Component\HttpFoundation\Request $requete
     73 *      Objet requête fourni par le plugin Serveur HTTP abstrait.
     74 *
     75 * @return array
     76 *      Le contenu d'une réponse de l'API SVP est un tableau associatif à 4 entrées:
     77 *      - requete : sous-tableau des éléments de la requête
     78 *      - erreur : sous-tableau des éléments descriptifs d'une erreur (status 200 par défaut)
     79 *      - schema : la version du schéma du plugin SVP hébergé par le serveur
     80 *      - donnees : le tableau des objets demandés fonction de la requête (vide)
    6081 */
    6182function reponse_initialiser_contenu($requete) {
     
    84105        // en cas d'erreur sur le format demandé dans la requête de renvoyer une erreur dans un format lisible.
    85106        $contenu = array(
    86                 'requete'       => $demande,
    87                 'erreur'        => $erreur,
    88                 'schema'        => $schema,
    89                 'donnees'               => array());
     107                'requete' => $demande,
     108                'erreur'  => $erreur,
     109                'schema'  => $schema,
     110                'donnees' => array()
     111        );
    90112
    91113        return $contenu;
     
    94116
    95117/**
    96  * @param array $where
    97  *
    98  * @return array
     118 * Récupère la liste des plugins de la table spip_plugins éventuellement filtrés par les critères
     119 * additionnels positionnés dans la requête.
     120 * Les plugins fournis sont toujours issus d'un dépôt hébergé par le serveur ce qui exclu les plugins
     121 * installés sur le serveur et non liés à un dépôt (par exemple un zip personnel).
     122 * Chaque objet plugin est présenté comme un tableau dont tous les champs sont accessibles comme un
     123 * type PHP simple, entier, chaine ou tableau.
     124 *
     125 * @param array $where
     126 *      Tableau des critères additionnels à appliquer au select.
     127 *
     128 * @return array
     129 *      Tableau des plugins dont l'index est le préfixe du plugin.
     130 *      Les champs de type id ou maj ne sont pas renvoyés.
    99131 */
    100132function reponse_collectionner_plugins($where) {
     
    128160
    129161/**
    130  * @param array $where
    131  *
    132  * @return array
     162 * Récupère la liste des dépôts hébergés par le serveur.
     163 * Contrairement aux plugins et paquets les champs d'un dépôt ne nécessitent aucun formatage.
     164 *
     165 * @param array $where
     166 *      Tableau des critères additionnels à appliquer au select (non utilisé).
     167 *
     168 * @return array
     169 *      Tableau des dépôts.
     170 *      Les champs de type id ou maj ne sont pas renvoyés.
    133171 */
    134172function reponse_collectionner_depots($where) {
     
    157195
    158196/**
    159  * @param string        $type_objet
    160  * @param array         $objet
     197 * @param string $type_objet
     198 * @param array  $objet
    161199 *
    162200 * @return array
     
    175213                include_spip('plugins/preparer_sql_plugin');
    176214                include_spip('svp_fonctions');
    177                 foreach($objet as $_champ => $_valeur) {
     215                foreach ($objet as $_champ => $_valeur) {
    178216                        if (in_array($_champ, $champs_multi)) {
    179217                                // Passer un champ multi en tableau indexé par la langue
     
    203241
    204242/**
    205  * @param array $erreur
     243 * Construit à partir du status et du type de l'erreur le titre et l'explication de l'erreur.
     244 * Le tableau renvoyé sera concaténé avec les autres éléments du bloc d'erreur.
     245 *
     246 * @param array $erreur
    206247 *
    207248 * @return array
     
    211252        $prefixe = 'svpapi:erreur_' . $erreur['status'] . '_' . $erreur['type'];
    212253        $parametres = array(
    213                 'element'       => $erreur['element'],
    214                 'valeur'        => $erreur['valeur']
    215                 );
     254                'element' => $erreur['element'],
     255                'valeur'  => $erreur['valeur']
     256        );
    216257
    217258        $explication['title'] = _T("${prefixe}_titre", $parametres);
     
    223264
    224265/**
    225  * @param Symfony\Component\HttpFoundation\Response     $reponse
    226  * @param array                                                                         $contenu
    227  * @param string                                                                        $format_reponse
     266 * Finalise la réponse à la requête en complétant le header et le contenu mis au préalable
     267 * au format demandé.
     268 *
     269 * @param Symfony\Component\HttpFoundation\Response $reponse
     270 * @param array                                     $contenu
     271 * @param string                                    $format_reponse
    228272 *
    229273 * @return mixed
  • _plugins_/svp_api/trunk/inc/svpapi_requete.php

    r96873 r96887  
    11<?php
    2 
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
    4 
    5 
    6 /**
    7  * Détermine si le serveur est en mode run-time ou pas.
     2/**
     3 * Ce fichier contient l'ensemble des constantes et fonctions de vérification des éléments d'une requête à
     4 * l'API SVP.
     5 *
     6 * @package SPIP\SVPAPI\REQUETE
     7 */
     8
     9if (!defined('_ECRIRE_INC_VERSION')) {
     10        return;
     11}
     12
     13
     14/**
     15 * Détermine si le serveur est capable de répondre aux requêtes SVP.
     16 * Pour cela on vérifie si le serveur est en mode run-time ou pas.
    817 * On considère qu'un serveur en mode run-time n'est pas valide pour
    918 * traiter les requêtes.
    1019 *
    11  * @param &array        $erreur
    12  *              Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
    13  *      Les index mis à jour sont:
    14  *      - status : le code de l'erreur HTTP, soit 501
    15  *      - type : chaine identifiant l'erreur plus précisément, soit serveur_nok
    16  *      - element : type d'objet sur lequel porte l'erreur, soit serveur
    17  *      - valeur : la valeur du mode runtime
    18  *
    19  * @return boolean
    20  *              True si le serveur est valide, false sinon.
     20 * @param &array    $erreur
     21 *        Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
     22 *        Les index mis à jour sont:
     23 *        - status : le code de l'erreur HTTP, soit 501
     24 *        - type : chaine identifiant l'erreur plus précisément, soit serveur_nok
     25 *        - element : type d'objet sur lequel porte l'erreur, soit serveur
     26 *        - valeur : la valeur du mode runtime
     27 *
     28 * @return boolean
     29 *        True si le serveur est valide, false sinon.
    2130 */
    2231function requete_verifier_serveur(&$erreur) {
    23         $serveur_valide = true;
     32        $valide = true;
    2433
    2534        include_spip('inc/svp_phraser');
    2635        if (!_SVP_MODE_RUNTIME) {
    2736                $erreur = array(
    28                         'status'        => 501,
    29                         'type'          => 'serveur_nok',
    30                         'element'       => 'serveur',
    31                         'valeur'        => _SVP_MODE_RUNTIME);
    32                 $serveur_valide = false;
    33         }
    34 
    35         return $serveur_valide;
     37                        'status'  => 501,
     38                        'type'    => 'serveur_nok',
     39                        'element' => 'runtime',
     40                        'valeur'  => _SVP_MODE_RUNTIME
     41                );
     42                $valide = false;
     43        }
     44
     45        return $valide;
    3646}
    3747
     
    4151 * Seul le format JSON est accepté.
    4252 *
    43  * @param string        $valeur
    44  *              La valeur du format de sortie
    45  * @param &array        $erreur
    46  *              Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
    47  *      Les index mis à jour sont:
    48  *      - status : le code de l'erreur HTTP, soit 400
    49  *      - type : chaine identifiant l'erreur plus précisément, soit format_nok
    50  *      - element : type d'objet sur lequel porte l'erreur, soit format
    51  *      - valeur : la valeur du format
    52  *
    53  * @return boolean
    54  *              True si la valeur est valide, false sinon.
     53 * @param string $valeur
     54 *        La valeur du format de sortie
     55 * @param &array    $erreur
     56 *        Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
     57 *        Les index mis à jour sont:
     58 *        - status : le code de l'erreur HTTP, soit 400
     59 *        - type : chaine identifiant l'erreur plus précisément, soit format_nok
     60 *        - element : type d'objet sur lequel porte l'erreur, soit format
     61 *        - valeur : la valeur du format
     62 *
     63 * @return boolean
     64 *        True si la valeur est valide, false sinon.
    5565 */
    5666function requete_verifier_format($valeur, &$erreur) {
    57         $format_valide = true;
     67        $valide = true;
    5868
    5969        if (!in_array($valeur, array('json'))) {
    6070                $erreur = array(
    61                         'status'        => 400,
    62                         'type'          => 'format_nok',
    63                         'element'       => 'format',
    64                         'valeur'        => $valeur);
    65                 $format_valide = false;
    66         }
    67 
    68         return $format_valide;
     71                        'status'  => 400,
     72                        'type'    => 'format_nok',
     73                        'element' => 'format',
     74                        'valeur'  => $valeur
     75                );
     76                $valide = false;
     77        }
     78
     79        return $valide;
    6980}
    7081
     
    7283/**
    7384 * Détermine si la collection demandée est valide.
    74  * Le service ne fournit que la collection plugins.
    75  *
    76  * @param string $valeur
    77  *              La valeur de la collection demandée
    78  * @param &array        $erreur
    79  *              Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
    80  *      Les index mis à jour sont:
    81  *      - status : le code de l'erreur HTTP, soit 400
    82  *      - type : chaine identifiant l'erreur plus précisément, soit collection_nok
    83  *      - element : type d'objet sur lequel porte l'erreur, soit collection
    84  *      - valeur : la valeur de la collection
    85  *
    86  * @return boolean
    87  *              True si la valeur est valide, false sinon.
     85 * Le service ne fournit que les collections plugins et dépôts.
     86 *
     87 * @param string $valeur
     88 *        La valeur de la collection demandée
     89 * @param &array    $erreur
     90 *        Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
     91 *        Les index mis à jour sont:
     92 *        - status : le code de l'erreur HTTP, soit 400
     93 *        - type : chaine identifiant l'erreur plus précisément, soit collection_nok
     94 *        - element : type d'objet sur lequel porte l'erreur, soit collection
     95 *        - valeur : la valeur de la collection
     96 *
     97 * @return boolean
     98 *        True si la valeur est valide, false sinon.
    8899 */
    89100function requete_verifier_collection($valeur, &$erreur) {
    90         $collection_valide = true;
     101        $valide = true;
    91102
    92103        if (!in_array($valeur, array('plugins', 'depots'))) {
    93104                $erreur = array(
    94                         'status'        => 400,
    95                         'type'          => 'collection_nok',
    96                         'element'       => 'collection',
    97                         'valeur'        => $valeur);
    98                 $collection_valide = false;
    99         }
    100 
    101         return $collection_valide;
    102 }
    103 
    104 
    105 /**
    106  * Détermine si la collection demandée est valide.
    107  * Le service ne fournit que la collection plugins.
    108  *
    109  * @param string $valeur
    110  *              La valeur de la collection demandée
    111  * @param &array        $erreur
    112  *              Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
    113  *      Les index mis à jour sont:
    114  *      - status : le code de l'erreur HTTP, soit 400
    115  *      - type : chaine identifiant l'erreur plus précisément, soit ressource_nok
    116  *      - element : type d'objet sur lequel porte l'erreur, soit ressource
    117  *      - valeur : la valeur de la ressource
    118  *
    119  * @return boolean
    120  *              True si la valeur est valide, false sinon.
     105                        'status'  => 400,
     106                        'type'    => 'collection_nok',
     107                        'element' => 'collection',
     108                        'valeur'  => $valeur
     109                );
     110                $valide = false;
     111        }
     112
     113        return $valide;
     114}
     115
     116
     117/**
     118 * Détermine si le type de ressource demandée est valide.
     119 * Le service ne fournit que des ressources de type plugin.
     120 *
     121 * @param string $valeur
     122 *        La valeur de la collection demandée
     123 * @param &array    $erreur
     124 *        Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
     125 *        Les index mis à jour sont:
     126 *        - status : le code de l'erreur HTTP, soit 400
     127 *        - type : chaine identifiant l'erreur plus précisément, soit ressource_nok
     128 *        - element : type d'objet sur lequel porte l'erreur, soit ressource
     129 *        - valeur : la valeur de la ressource
     130 *
     131 * @return boolean
     132 *        True si la valeur est valide, false sinon.
    121133 */
    122134function requete_verifier_ressource($valeur, &$erreur) {
    123         $ressource_valide = true;
     135        $valide = true;
    124136
    125137        if (!in_array($valeur, array('plugin'))) {
    126138                $erreur = array(
    127                         'status'        => 400,
    128                         'type'          => 'ressource_nok',
    129                         'element'       => 'ressource',
    130                         'valeur'        => $valeur);
    131                 $ressource_valide = false;
    132         }
    133 
    134         return $ressource_valide;
     139                        'status'  => 400,
     140                        'type'    => 'ressource_nok',
     141                        'element' => 'ressource',
     142                        'valeur'  => $valeur
     143                );
     144                $valide = false;
     145        }
     146
     147        return $valide;
    135148}
    136149
     
    142155 *
    143156 * @param string $valeur
    144  *              La valeur du préfixe
    145  * @param &array        $erreur
    146  *              Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
    147  *      Les index mis à jour sont:
    148  *      - status : le code de l'erreur HTTP, soit 400
    149  *      - type : chaine identifiant l'erreur plus précisément, soit prefixe_nok
    150  *      - element : type d'objet sur lequel porte l'erreur, soit prefixe
    151  *      - valeur : la valeur du préfixe
    152  *
    153  * @return boolean
    154  *              True si la valeur est valide, false sinon.
     157 *        La valeur du préfixe
     158 * @param &array    $erreur
     159 *        Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
     160 *        Les index mis à jour sont:
     161 *        - status : le code de l'erreur HTTP, soit 400
     162 *        - type : chaine identifiant l'erreur plus précisément, soit prefixe_nok
     163 *        - element : type d'objet sur lequel porte l'erreur, soit prefixe
     164 *        - valeur : la valeur du préfixe
     165 *
     166 * @return boolean
     167 *        True si la valeur est valide, false sinon.
    155168 */
    156169function requete_verifier_prefixe($valeur, &$erreur) {
    157         $prefixe_valide = true;
     170        $valide = true;
    158171
    159172        if (!preg_match('#^(\w){2,}$#', strtolower($valeur))) {
    160173                $erreur = array(
    161                         'status'        => 400,
    162                         'type'          => 'prefixe_nok',
    163                         'element'       => 'prefixe',
    164                         'valeur'        => $valeur);
    165                 $prefixe_valide = false;
    166         }
    167 
    168         return $prefixe_valide;
    169 }
    170 
    171 
    172 /**
    173  * Détermine si la valeur de chaque critère est valide.
     174                        'status'  => 400,
     175                        'type'    => 'prefixe_nok',
     176                        'element' => 'prefixe',
     177                        'valeur'  => $valeur
     178                );
     179                $valide = false;
     180        }
     181
     182        return $valide;
     183}
     184
     185
     186/**
     187 * Détermine si la valeur de chaque critère de filtre d'une collection est valide.
    174188 * Si plusieurs critères sont fournis, la fonction s'interromp dès qu'elle trouve un
    175189 * critère invalide.
    176190 *
    177  * @param array $criteres
    178  *              Tableau associatif des critères (couple nom du critère, valeur du critère)
    179  * @param &array        $erreur
    180  *              Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
    181  *      Les index mis à jour sont:
    182  *      - status : le code de l'erreur HTTP, soit 400
    183  *      - type : chaine identifiant l'erreur plus précisément, soit critere_nok
    184  *      - element : nom du critère en erreur
    185  *      - valeur : valeur du critère
    186  *
    187  * @return boolean
    188  *              True si la valeur est valide, false sinon.
     191 * @param array $criteres
     192 *        Tableau associatif des critères (couple nom du critère, valeur du critère)
     193 * @param &array    $erreur
     194 *        Tableau initialisé avec les index identifiant l'erreur ou vide si pas d'erreur.
     195 *        Les index mis à jour sont:
     196 *        - status : le code de l'erreur HTTP, soit 400
     197 *        - type : chaine identifiant l'erreur plus précisément, soit critere_nok
     198 *        - element : nom du critère en erreur
     199 *        - valeur : valeur du critère
     200 *
     201 * @return boolean
     202 *        True si la valeur est valide, false sinon.
    189203 */
    190204function requete_verifier_criteres($criteres, &$erreur) {
    191205
    192         $critere_valide = true;
     206        $valide = true;
    193207        $erreur = array();
    194208
     
    202216                        if (!$verifier($_valeur)) {
    203217                                $erreur = array(
    204                                         'status'        => 400,
    205                                         'type'          => 'critere_nok',
    206                                         'element'       => $_critere,
    207                                         'valeur'        => $_valeur);
    208                                 $critere_valide = false;
     218                                        'status'  => 400,
     219                                        'type'    => 'critere_nok',
     220                                        'element' => $_critere,
     221                                        'valeur'  => $_valeur
     222                                );
     223                                $valide = false;
    209224                                break;
    210225                        }
     
    212227        }
    213228
    214         return $critere_valide;
     229        return $valide;
    215230}
    216231
     
    218233/**
    219234 * Détermine si la valeur de la catégorie est valide.
    220  * La fonction fait appel à un filtre de SVP pour récupérer la liste des catégories autorisées.
    221  *
    222  * @param string $valeur
    223  *              La valeur du critère catégorie
    224  *
    225  * @return boolean
    226  *              True si la valeur est valide, false sinon.
     235 * La fonction récupère dans le plugin SVP la liste des catégories autorisées.
     236 *
     237 * @param string $valeur
     238 *        La valeur du critère catégorie
     239 *
     240 * @return boolean
     241 *        True si la valeur est valide, false sinon.
    227242 */
    228243function requete_verifier_critere_categorie($valeur) {
    229         $critere_valide = true;
     244        $valide = true;
    230245
    231246        include_spip('inc/svp_phraser');
    232247        if (!in_array($valeur, $GLOBALS['categories_plugin'])) {
    233                 $critere_valide = false;
    234         }
    235 
    236         return $critere_valide;
     248                $valide = false;
     249        }
     250
     251        return $valide;
    237252}
    238253
     
    244259 *
    245260 * @param string $valeur
    246  *              La valeur du critère compatibilite SPIP
    247  *
    248  * @return boolean
    249  *              True si la valeur est valide, false sinon.
     261 *        La valeur du critère compatibilite SPIP
     262 *
     263 * @return boolean
     264 *        True si la valeur est valide, false sinon.
    250265 */
    251266function requete_verifier_critere_compatible_spip($valeur) {
    252         $critere_valide = true;
     267        $valide = true;
    253268
    254269        if (!preg_match('#^(\d+)(\.\d+){0,2}$#', $valeur)) {
    255                 $critere_valide = false;
    256         }
    257 
    258         return $critere_valide;
    259 }
     270                $valide = false;
     271        }
     272
     273        return $valide;
     274}
  • _plugins_/svp_api/trunk/lang/paquet-svpapi_fr.php

    r96783 r96887  
    11<?php
    22// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
    3 // Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/svp_stats/trunk/lang/
    43if (!defined('_ECRIRE_INC_VERSION')) {
    54        return;
     
    1211_ Il permet, sur un site utilisé comme un serveur de plugins à l\'instar de Plugins SPIP, de fournir une API REST de récupération des données d\'un plugin ou d\'un paquet.
    1312Les données sont fournies, par défaut, en format JSON.',
    14         'svpapi_slogan' => 'API REST pour interroger un serveur de plugins SVP'
     13        'svpapi_slogan'      => 'API REST pour interroger un serveur de plugins SVP'
    1514);
    16 
    17 ?>
  • _plugins_/svp_api/trunk/lang/svpapi_fr.php

    r96818 r96887  
    99        // E
    1010        'erreur_400_collection_nok_message' => 'Vous avez demandé une collection qui n\'est pas supportée par ce service. SVP ne fournit que des collections de plugins.',
    11         'erreur_400_collection_nok_titre' => 'La collection &#171; @valeur@ &#187 n\'est pas fournie par ce service',
    12         'erreur_400_format_nok_message' => 'Vous avez demandé de renvoyer les données dans un format qui n\'est pas supportée par ce service. SVP n\'utilise que les formats de sortie JSON et XML.',
    13         'erreur_400_format_nok_titre' => 'Le format &#171; @valeur@ &#187 n\'est pas supporté par ce service',
    14         'erreur_400_critere_nok_message' => 'Vous avez demandé de filtrer une collection avec un critère dont la valeur est invalide. Veuillez consulter la documentation pour spécifier un critère valide.',
    15         'erreur_400_critere_nok_titre' => 'La valeur &#171; @valeur@ &#187 du critère &#171; @element@ &#187 est invalide',
    16         'erreur_400_prefixe_nok_message' => 'Vous avez demandé un plugin mais le préfixe spécifié &#171; @valeur@ &#187 est invalide. Un préfixe ne peut contenir que des caractères alphanumériques et le souligné.',
    17         'erreur_400_prefixe_nok_titre' => 'La valeur &#171; @valeur@ &#187 du préfixe de plugin est invalide',
    18         'erreur_400_ressource_nok_message' => 'Vous avez demandé un type de ressource qui n\'est pas supporté par ce service. SVP ne fournit que des ressources de type plugin.',
    19         'erreur_400_ressource_nok_titre' => 'Le type de ressource &#171; @valeur@ &#187 n\'est pas fourni par ce service',
    20         'erreur_404_plugin_nok_message' => 'Vous avez demandé un plugin mais le préfixe spécifié ne correspond à aucun plugin enregistré dans la base de données du serveur. Soit vous avez fait une erreur sur le préfixe, soit le plugin spécifié n\'est pas fourni par un des dépôts enregistrés sur le serveur',
    21         'erreur_404_plugin_nok_titre' => 'Le plugin de préfixe &#171; @valeur@ &#187 n\'est pas disponible sur le serveur',
     11        'erreur_400_collection_nok_titre'   => 'La collection « @valeur@ » n\'est pas fournie par ce service',
     12        'erreur_400_format_nok_message'     => 'Vous avez demandé de renvoyer les données dans un format qui n\'est pas supportée par ce service. SVP n\'utilise que les formats de sortie JSON et XML.',
     13        'erreur_400_format_nok_titre'       => 'Le format « @valeur@ » n\'est pas supporté par ce service',
     14        'erreur_400_critere_nok_message'    => 'Vous avez demandé de filtrer une collection avec un critère dont la valeur est invalide. Veuillez consulter la documentation pour spécifier un critère valide.',
     15        'erreur_400_critere_nok_titre'      => 'La valeur « @valeur@ » du critère « @element@ » est invalide',
     16        'erreur_400_prefixe_nok_message'    => 'Vous avez demandé un plugin mais le préfixe spécifié « @valeur@ » est invalide. Un préfixe ne peut contenir que des caractères alphanumériques et le souligné.',
     17        'erreur_400_prefixe_nok_titre'      => 'La valeur « @valeur@ » du préfixe de plugin est invalide',
     18        'erreur_400_ressource_nok_message'  => 'Vous avez demandé un type de ressource qui n\'est pas supporté par ce service. SVP ne fournit que des ressources de type plugin.',
     19        'erreur_400_ressource_nok_titre'    => 'Le type de ressource « @valeur@ » n\'est pas fourni par ce service',
     20        'erreur_404_plugin_nok_message'     => 'Vous avez demandé un plugin mais le préfixe spécifié ne correspond à aucun plugin enregistré dans la base de données du serveur. Soit vous avez fait une erreur sur le préfixe, soit le plugin spécifié n\'est pas fourni par un des dépôts enregistrés sur le serveur',
     21        'erreur_404_plugin_nok_titre'       => 'Le plugin de préfixe « @valeur@ » n\'est pas disponible sur le serveur',
     22        'erreur_501_serveur_nok_message'    => 'Vous avez essayé d\'utiliser l\'API SVP sur un serveur qui n\'est pas correctement configuré pour cela. En effet, le serveur concerné est configuré en mode « SVP runtime » ce qui est incompatible avec le service REST SVP.',
     23        'erreur_501_serveur_nok_titre'      => 'Le serveur n\'est pas correctement configuré',
    2224);
    23 
    24 ?>
  • _plugins_/svp_api/trunk/paquet.xml

    r96873 r96887  
    22        prefix="svpapi"
    33        categorie="outil"
    4         version="0.3.0"
     4        version="0.3.1"
    55        etat="test"
    66        compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.