Ignore:
Timestamp:
Feb 3, 2019, 2:36:25 PM (3 months ago)
Author:
eric@…
Message:

Mise en cohérence du nom des caches Wikipédia.
Ajout d'une fonction et d'un formulaire de vidage des caches.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/taxonomie/trunk/inc/taxonomie_cacher.php

    r108904 r113719  
    163163        return true;
    164164}
     165
     166/**
     167 * Répertorie les fichiers caches issu de l'utilisation de l'API d'un service donné.
     168 * La fonction renvoie une description de chaque fichier cache, à savoir, à minima, l'action lancée, le TSN
     169 * du taxon concerné et le nom du fichier cache.
     170 *
     171 * @package SPIP\TAXONOMIE\CACHE
     172 *
     173 * @param string $service
     174 *        Alias en minuscules du service pour lequel on veut lister les caches créés ou chaine vide si on souhaite
     175 *        tous les caches sans distinction de service.
     176 *
     177 * @return array
     178 *        Tableau des descriptions des fichiers cache créés par le service indexé par le chemin complet de
     179 *        chaque fichier cache.
     180 */
     181function cache_taxonomie_repertorier($service = '') {
     182
     183        // Initialisation de la liste des descriptions des caches du service
     184        $descriptions_cache = array();
     185
     186        // Tableau des taxons pour éviter de faire des appels SQL à chaque cache.
     187        static $taxons = array();
     188
     189        // On constitue la liste des services requis par l'appel
     190        include_spip('taxonomie_fonctions');
     191        $services = taxon_lister_services();
     192        if ($service) {
     193                if (array_key_exists($service, $services)) {
     194                        $services = array($service => $services[$service]);
     195                } else {
     196                        $services = array();
     197                }
     198        }
     199
     200        if ($services) {
     201                foreach ($services as $_service => $_titre) {
     202                        // Récupération des fichiers cache du service.
     203                        $pattern_cache = _TAXONOMIE_CACHE_DIR . $_service . '_*.txt';
     204                        $fichiers_cache = glob($pattern_cache);
     205
     206                        if ($fichiers_cache) {
     207                                foreach ($fichiers_cache as $_fichier_cache) {
     208                                        // On raz la description pour éviter de garder des éléments du cache précédent et on initialise avec
     209                                        // le nom du fichier qui peut servir d'id, le chemin complet et le service.
     210                                        $description = array();
     211                                        $description['nom_cache'] = basename($_fichier_cache, '.txt');
     212                                        $description['fichier_cache'] = $_fichier_cache;
     213                                        $description['service'] = $_service;
     214
     215                                        // On extrait le service qui sert toujours d'index principal du tableau
     216                                        $description['service'] = $_service;
     217                                        $description['titre_service'] = $_titre;
     218
     219                                        // On décompose le nom pour récupérer l'action et le TSN correspondant ainsi que la langue.
     220                                        // Le nom du fichier est composé d'éléments séparés par un underscore. La structure est toujours
     221                                        // composée dans l'ordre du service, de l'action et du TSN et peut être complétée par la langue.
     222                                        $elements = explode('_', $description['nom_cache']);
     223                                        $description['action'] = $elements[1];
     224                                        $description['tsn'] = intval($elements[2]);
     225                                        if (isset($elements[3])) {
     226                                                $description['langue'] = $elements[3];
     227                                        }
     228
     229                                        // On rajoute le nom scientifique du taxon pour un affichage plus compréhensible
     230                                        if (!isset($taxons[$description['tsn']])) {
     231                                                // Si pas encore stocké, on cherche le nom scientifique du taxon et on le sauvegarde.
     232                                                $where = array('tsn=' . $description['tsn']);
     233                                                $taxons[$description['tsn']] = sql_getfetsel('nom_scientifique', 'spip_taxons', $where);
     234                                        }
     235                                        $description['nom_scientifique'] = $taxons[$description['tsn']];
     236
     237
     238                                        // On structure le tableau par service.
     239                                        $descriptions_cache[$_service]['titre_service'] = $_titre;
     240                                        $descriptions_cache[$_service]['caches'][] = $description;
     241                                }
     242                        }
     243                }
     244        }
     245
     246        return $descriptions_cache;
     247}
Note: See TracChangeset for help on using the changeset viewer.