Changeset 92840 in spip-zone


Ignore:
Timestamp:
Nov 11, 2015, 6:18:40 PM (4 years ago)
Author:
eric@…
Message:

Intégration des fonctions de gestion du cache dans inc/taxonomer.
Utilisation de importer_charset sur le nom de l'auteur.

Location:
_plugins_/taxonomie/trunk
Files:
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/taxonomie/trunk/demo/taxonomie.html

    r92837 r92840  
    2020<?php
    2121    $tsn = 202423;
     22    $taxon = '';
    2223//    $taxon = itis_get_record($tsn);
    2324    echo "Informations du taxon $tsn</br>";
     
    3536<?php
    3637//    $tsns = itis_list_vernaculars('fr');
    37     var_dump($tsns);
     38//    var_dump($tsns);
    3839?>
    3940
  • _plugins_/taxonomie/trunk/inc/taxonomer.php

    r92838 r92840  
    7979                _TAXONOMIE_RANGS_PARENTS_ESPECE . ':' . _TAXONOMIE_RANGS_ESPECE_ET_FILS);
    8080
     81if (!defined('_TAXONOMIE_CACHE_NOMDIR'))
     82        /**
     83         * Nom du dossier contenant les fichiers caches des éléments de taxonomie */
     84        define('_TAXONOMIE_CACHE_NOMDIR', 'cache-taxonomie/');
     85if (!defined('_TAXONOMIE_CACHE_DIR'))
     86        /**
     87         * Chemin du dossier contenant les fichiers caches des boussoles */
     88        define('_TAXONOMIE_CACHE_DIR', _DIR_VAR . _TAXONOMIE_CACHE_NOMDIR);
     89
    8190
    8291/**
    8392 * Renvoie, à partir de l'url du service, le tableau des données demandées.
    8493 * Le service utilise dans ce cas une chaine JSON qui est décodée pour fournir
    85  * le tableau de sortie.
     94 * le tableau de sortie. Le flux retourné par le service est systématiquement
     95 * transcodé dans le chrset du site avant d'être décodé.
    8696 *
    8797 *@param string $url
     
    160170}
    161171
     172/**
     173 * Ecriture d'un contenu issu d'un service web taxonomique dans un fichier texte afin d'optimiser le nombre
     174 * de requête adressée au service.
     175 *
     176 * @param string        $cache
     177 *              Contenu du fichier cache. Si le service appelant manipule un tableau il doit le sériliser avant
     178 *      d'appeler cette fonction.
     179 * @param string    $service
     180 * @param int       $tsn
     181 * @param string    $code_langue
     182 * @param string    $action
     183 *
     184 * @return boolean
     185 *              Toujours à vrai.
     186 */
     187function ecrire_cache_taxonomie($cache, $service, $tsn, $code_langue='', $action='') {
     188        // Création du dossier cache si besoin
     189        sous_repertoire(_DIR_VAR, trim(_TAXONOMIE_CACHE_DIR, '/'));
     190
     191        // Ecriture du fichier cache
     192        $fichier_cache = nommer_cache_taxonomie($service, $tsn, $code_langue, $action);
     193        ecrire_fichier($fichier_cache, $cache);
     194
     195        return true;
     196}
     197
     198
     199/**
     200 * @param $service
     201 * @param $tsn
     202 * @param string $code_langue
     203 * @param string $action
     204 * @return string
     205 */
     206function nommer_cache_taxonomie($service, $tsn, $code_langue='', $action='') {
     207        // Construction du chemin complet d'un fichier cache
     208        $fichier_cache = _TAXONOMIE_CACHE_DIR
     209                . $service
     210                . ($action ? '_' . $action : '')
     211                . '_' . $tsn
     212                . ($code_langue ? '_' . $code_langue : '');
     213
     214        return $fichier_cache;
     215}
     216
     217/**
     218 * Vérifie l'existence du fichier cache pour un taxon et un service donnés. Si le fichier existe
     219 * la fonction retourne son chemin complet.
     220 *
     221 * @param string    $service
     222 * @param int       $tsn
     223 * @param string    $code_langue
     224 * @param string    $action
     225 *
     226 * @return string
     227 *              Chemin du fichier cache si il existe ou chaine vide sinon.
     228 */
     229function cache_taxonomie_existe($service, $tsn, $code_langue='', $action='') {
     230        // Contruire le nom du fichier cache
     231        $fichier_cache = nommer_cache_taxonomie($service, $tsn, $code_langue, $action);
     232
     233        // Vérification de l'existence du fichier:
     234        // - chaine vide si le fichier n'existe pas
     235        // - chemin complet du fichier si il existe
     236        if (!file_exists($fichier_cache))
     237                $fichier_cache = '';
     238
     239        return $fichier_cache;
     240}
     241
     242
     243/**
     244 * Supprime tous les fichiers caches.
     245 *
     246 * @return boolean
     247 *              Toujours à vrai.
     248 */
     249function supprimer_caches(){
     250        include_spip('inc/flock');
     251
     252        if ($fichiers_cache = glob(_TAXONOMIE_CACHE_DIR . "*.*")) {
     253                foreach ($fichiers_cache as $_fichier) {
     254                        supprimer_fichier($_fichier);
     255                }
     256        }
     257
     258        return true;
     259}
     260
     261
     262/**
     263 * Etablit la liste de tous les caches y compris celui de la liste des boussoles
     264 * et construit un tableau avec la liste des fichiers et l'alias de la boussole
     265 * associée.
     266 *
     267 * @return array
     268 *              Tableau des caches recensés :
     269 *
     270 *              - fichier : chemin complet du fichier cache,
     271 *              - alias : alias de la boussole ou vide si on est en présence de la liste des boussoles.
     272 */
     273function trouver_caches(){
     274        $caches = array();
     275
     276        $fichier_liste = cache_liste_existe();
     277        if ($fichier_liste)
     278                $caches[] = array('fichier' => $fichier_liste, 'alias' => '');
     279
     280        $pattern_cache = _BOUSSOLE_DIR_CACHE . str_replace(_BOUSSOLE_PATTERN_ALIAS, '*', _BOUSSOLE_CACHE);
     281        $fichiers_cache = glob($pattern_cache);
     282        if ($fichiers_cache) {
     283                foreach($fichiers_cache as $_fichier) {
     284                        $alias_boussole = str_replace(_BOUSSOLE_PREFIXE_CACHE, '', basename($_fichier, '.xml'));
     285                        $caches[] = array('fichier' => $_fichier, 'alias' => $alias_boussole);
     286                }
     287        }
     288
     289        return $caches;
     290}
     291
    162292?>
  • _plugins_/taxonomie/trunk/services/itis/itis_api.php

    r92837 r92840  
    421421
    422422        if (array_key_exists($upto, $group_ids)) {
     423                include_spip('inc/charsets');
    423424                // Construire la regexp qui permet de limiter la hiérarchie comme demandée
    424425                $groups_list = implode('|', array_map('ucfirst', array_slice(array_flip($group_ids), 0, $group_ids[$upto])));
     
    445446                                                $taxon['rang'] = strtolower($match[1]);
    446447                                                $taxon['nom_scientifique'] = strtolower($match[2]);
    447                                                 $taxon['auteur'] = mb_convert_encoding(trim($match[3]), 'ISO-8859-1');
     448                                                $taxon['auteur'] = importer_charset(trim($match[3]), 'iso-8859-1');
    448449                                                $tsn = intval($match[4]);
    449450                                                $taxon['tsn'] = $tsn;
Note: See TracChangeset for help on using the changeset viewer.