source: spip-zone/_plugins_/taxonomie/trunk/inc/taxonomie_cacher.php @ 113822

Last change on this file since 113822 was 113822, checked in by root, 12 days ago

Suppression de fonctions inutiles et phpdoc

  • Property svn:eol-style set to native
File size: 4.1 KB
Line 
1<?php
2/**
3 * Ce fichier contient l'ensemble des constantes et des fonctions de gestion des caches de Taxonomie.
4 *
5 * @package SPIP\TAXONOMIE\CACHE
6 */
7if (!defined('_ECRIRE_INC_VERSION')) {
8        return;
9}
10
11
12/**
13 * Supprime tout ou partie des fichiers cache taxonomiques.
14 *
15 * @package SPIP\TAXONOMIE\CACHE
16 *
17 * @param array|string $caches
18 *        Liste des fichiers à supprimer ou vide si tous les fichiers cache doivent être supprimés.
19 *        Il est possible de passer un seul fichier comme une chaine.
20 *
21 * @return boolean
22 *        Toujours à `true`.
23 */
24function cache_taxonomie_supprimer($caches = array()) {
25
26        include_spip('inc/flock');
27
28        if ($caches) {
29                $fichiers_cache = is_string($caches) ? array($caches) : $caches;
30        } else {
31                $fichiers_cache = glob(_DIR_VAR . 'cache-taxonomie/' . '*.*');
32        }
33
34        if ($fichiers_cache) {
35                foreach ($fichiers_cache as $_fichier) {
36                        supprimer_fichier($_fichier);
37                }
38        }
39
40        return true;
41}
42
43/**
44 * Répertorie les fichiers caches issu de l'utilisation de l'API d'un service donné.
45 * La fonction renvoie une description de chaque fichier cache, à savoir, à minima, l'action lancée, le TSN
46 * du taxon concerné et le nom du fichier cache.
47 *
48 * @package SPIP\TAXONOMIE\CACHE
49 *
50 * @param string $service
51 *        Alias en minuscules du service pour lequel on veut lister les caches créés ou chaine vide si on souhaite
52 *        tous les caches sans distinction de service.
53 *
54 * @return array
55 *        Tableau des descriptions des fichiers cache créés par le service indexé par le chemin complet de
56 *        chaque fichier cache.
57 */
58function cache_taxonomie_repertorier($service = '') {
59
60        // Initialisation de la liste des descriptions des caches du service
61        $descriptions_cache = array();
62
63        // Tableau des taxons pour éviter de faire des appels SQL à chaque cache.
64        static $taxons = array();
65
66        // On constitue la liste des services requis par l'appel
67        include_spip('inc/taxonomie');
68        $services = taxon_lister_services();
69        if ($service) {
70                if (array_key_exists($service, $services)) {
71                        $services = array($service => $services[$service]);
72                } else {
73                        $services = array();
74                }
75        }
76
77        if ($services) {
78                foreach ($services as $_service => $_titre) {
79                        // Récupération des fichiers cache du service.
80                        $pattern_cache = _TAXONOMIE_CACHE_DIR . $_service . '_*.txt';
81                        $fichiers_cache = glob($pattern_cache);
82
83                        if ($fichiers_cache) {
84                                foreach ($fichiers_cache as $_fichier_cache) {
85                                        // On raz la description pour éviter de garder des éléments du cache précédent et on initialise avec
86                                        // le nom du fichier qui peut servir d'id, le chemin complet et le service.
87                                        $description = array();
88                                        $description['nom_cache'] = basename($_fichier_cache, '.txt');
89                                        $description['fichier_cache'] = $_fichier_cache;
90
91                                        // On extrait le service qui sert toujours d'index principal du tableau
92                                        $description['service'] = $_service;
93                                        $description['titre_service'] = $_titre;
94
95                                        // On décompose le nom pour récupérer l'action et le TSN correspondant ainsi que la langue.
96                                        // Le nom du fichier est composé d'éléments séparés par un underscore. La structure est toujours
97                                        // composée dans l'ordre du service, de l'action et du TSN et peut être complétée par la langue.
98                                        $elements = explode('_', $description['nom_cache']);
99                                        $description['action'] = $elements[1];
100                                        $description['tsn'] = intval($elements[2]);
101                                        if (isset($elements[3])) {
102                                                $description['langue'] = $elements[3];
103                                        }
104
105                                        // On rajoute le nom scientifique du taxon pour un affichage plus compréhensible
106                                        if (!isset($taxons[$description['tsn']])) {
107                                                // Si pas encore stocké, on cherche le nom scientifique du taxon et on le sauvegarde.
108                                                $where = array('tsn=' . $description['tsn']);
109                                                $taxons[$description['tsn']] = sql_getfetsel('nom_scientifique', 'spip_taxons', $where);
110                                        }
111                                        $description['nom_scientifique'] = $taxons[$description['tsn']];
112
113
114                                        // On structure le tableau par service.
115                                        $descriptions_cache[$_service]['titre_service'] = $_titre;
116                                        $descriptions_cache[$_service]['caches'][] = $description;
117                                }
118                        }
119                }
120        }
121
122        return $descriptions_cache;
123}
Note: See TracBrowser for help on using the repository browser.