Ignore:
Timestamp:
Apr 26, 2016, 7:53:36 PM (5 years ago)
Author:
eric@…
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/svp_api/trunk/inc/svpapi_reponse.php

    r96784 r96818  
    33if (!defined("_ECRIRE_INC_VERSION")) return;
    44
     5
     6if (!defined('_SVPAPI_CHAMPS_MULTI_PLUGIN')) {
     7        define('_SVPAPI_CHAMPS_MULTI_PLUGIN', 'nom,slogan');
     8}
     9if (!defined('_SVPAPI_CHAMPS_SERIALISES_PLUGIN')) {
     10        define('_SVPAPI_CHAMPS_SERIALISES_PLUGIN', '');
     11}
     12
     13if (!defined('_SVPAPI_CHAMPS_MULTI_PAQUET')) {
     14        define('_SVPAPI_CHAMPS_MULTI_PAQUET', 'description');
     15}
     16if (!defined('_SVPAPI_CHAMPS_SERIALISES_PAQUET')) {
     17        define('_SVPAPI_CHAMPS_SERIALISES_PAQUET', 'auteur,credit,licence,copyright,dependances,procure,traductions');
     18}
    519
    620/**
     
    4357
    4458
     59function reponse_collectionner_plugins($where) {
     60
     61        // Initialisation de la collection
     62        $plugins = array();
     63
     64        // Récupérer la liste des plugins (filtrée ou pas).
     65        // Les plugins appartiennent forcément à un dépot logique installés sur le serveur. Les plugins
     66        // installés directement sur le serveur, donc hors dépôt sont exclus.
     67        $from = array('spip_plugins', 'spip_depots_plugins AS dp');
     68        $select = array('*');
     69        $where = array_merge(array('dp.id_depot>0', 'dp.id_plugin=spip_plugins.id_plugin'), $where);
     70        $group_by = array('spip_plugins.id_plugin');
     71        $collection = sql_allfetsel($select, $from, $where, $group_by);
     72
     73        // On refactore le tableau de sortie du allfetsel en un tableau associatif indexé par les préfixes.
     74        // On transforme les champs multi en tableau associatif indexé par la langue et on désérialise les
     75        // champs sérialisés.
     76        if ($collection) {
     77                foreach ($collection as $_plugin) {
     78                        unset($_plugin['id_plugin']);
     79                        unset($_plugin['id_depot']);
     80                        $plugins[$_plugin['prefixe']] = normaliser_champs('plugin', $_plugin);
     81                }
     82        }
     83
     84        return $plugins;
     85}
     86
     87
     88function reponse_collectionner_depots($where) {
     89
     90        // Initialisation de la collection
     91        $depots = array();
     92
     93        // Récupérer la liste des dépôts
     94        $from = array('spip_depots');
     95        $select = array('*');
     96        $collection = sql_allfetsel($select, $from, $where);
     97
     98        // Refactorer le tableau de sortie du allfetsel en supprimant
     99        // les champs id_depot et maj.
     100        if ($collection) {
     101                foreach ($collection as $_depot) {
     102                        unset($_depot['id_depot']);
     103                        unset($_depot['maj']);
     104                        $depots[] = $_depot;
     105                }
     106        }
     107
     108        return $depots;
     109}
     110
     111
     112function normaliser_champs($type_objet, $objet) {
     113
     114        $objet_normalise = $objet;
     115
     116        // Traitement des champs multi et sérialisés
     117        $champs_multi = explode(',', constant('_SVPAPI_CHAMPS_MULTI_' . strtoupper($type_objet)));
     118        $champs_serialises = explode(',', constant('_SVPAPI_CHAMPS_SERIALISES_' . strtoupper($type_objet)));
     119
     120        if ($objet) {
     121                foreach($objet as $_champ => $_valeur) {
     122                        if (in_array($_champ, $champs_multi)) {
     123                                include_spip('plugins/preparer_sql_plugin');
     124                                $objet_normalise[$_champ] = normaliser_multi($_valeur);
     125                        }
     126
     127                        if (in_array($_champ, $champs_serialises)) {
     128                                $objet_normalise[$_champ] = unserialize($_valeur);
     129                        }
     130                }
     131        }
     132
     133        return $objet_normalise;
     134}
     135
    45136/**
    46137 * @param $erreur
Note: See TracChangeset for help on using the changeset viewer.