source: spip-zone/_plugins_/taxonomie/trunk/inc/cacher.php @ 92837

Last change on this file since 92837 was 92837, checked in by eric@…, 4 years ago

Renommage et phpdoc.
Mise au point du package cache.

  • Property svn:eol-style set to native
File size: 3.8 KB
Line 
1<?php
2/**
3 * Ce fichier contient les fonctions qui permettent de construire, vérifier ou créer
4 * les fichiers cache des services taxonomiques et les dossiers les contenant.
5 *
6 * @package SPIP\TAXONOMIE\CACHE
7 */
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11if (!defined('_TAXONOMIE_CACHE_NOMDIR'))
12        /**
13         * Nom du dossier contenant les fichiers caches des éléments de taxonomie */
14        define('_TAXONOMIE_CACHE_NOMDIR', 'cache-taxonomie/');
15if (!defined('_TAXONOMIE_CACHE_DIR'))
16        /**
17         * Chemin du dossier contenant les fichiers caches des boussoles */
18        define('_TAXONOMIE_CACHE_DIR', _DIR_VAR . _TAXONOMIE_CACHE_NOMDIR);
19
20
21/**
22 * Ecriture d'un contenu issu d'un service web taxonomique dans un fichier texte afin d'optimiser le nombre
23 * de requête adressée au service.
24 *
25 * @param string        $cache
26 *              Contenu du fichier cache. Si le service appelant manipule un tableau il doit le sériliser avant
27 *      d'appeler cette fonction.
28 * @param string    $service
29 * @param int       $tsn
30 * @param string    $code_langue
31 * @param string    $action
32 *
33 * @return boolean
34 *              Toujours à vrai.
35 */
36function ecrire_cache_taxonomie($cache, $service, $tsn, $code_langue='', $action='') {
37        // Création du dossier cache si besoin
38        sous_repertoire(_DIR_VAR, trim(_TAXONOMIE_CACHE_DIR, '/'));
39
40        // Ecriture du fichier cache
41        $fichier_cache = nommer_cache_taxonomie($service, $tsn, $code_langue, $action);
42        ecrire_fichier($fichier_cache, $cache);
43
44        return true;
45}
46
47
48/**
49 * @param $service
50 * @param $tsn
51 * @param string $code_langue
52 * @param string $action
53 * @return string
54 */
55function nommer_cache_taxonomie($service, $tsn, $code_langue='', $action='') {
56        // Construction du chemin complet d'un fichier cache
57        $fichier_cache = _TAXONOMIE_CACHE_DIR
58                . $service
59                . ($action ? '_' . $action : '')
60                . '_' . $tsn
61                . ($code_langue ? '_' . $code_langue : '');
62
63        return $fichier_cache;
64}
65
66/**
67 * Vérifie l'existence du fichier cache pour un taxon et un service donnés. Si le fichier existe
68 * la fonction retourne son chemin complet.
69 *
70 * @param string    $service
71 * @param int       $tsn
72 * @param string    $code_langue
73 * @param string    $action
74 *
75 * @return string
76 *              Chemin du fichier cache si il existe ou chaine vide sinon.
77 */
78function cache_taxonomie_existe($service, $tsn, $code_langue='', $action='') {
79        // Contruire le nom du fichier cache
80        $fichier_cache = nommer_cache_taxonomie($service, $tsn, $code_langue, $action);
81
82        // Vérification de l'existence du fichier:
83        // - chaine vide si le fichier n'existe pas
84        // - chemin complet du fichier si il existe
85        if (!file_exists($fichier_cache))
86                $fichier_cache = '';
87
88        return $fichier_cache;
89}
90
91
92/**
93 * Supprime tous les fichiers caches.
94 *
95 * @return boolean
96 *              Toujours à vrai.
97 */
98function supprimer_caches(){
99        include_spip('inc/flock');
100
101        if ($fichiers_cache = glob(_TAXONOMIE_CACHE_DIR . "*.*")) {
102                foreach ($fichiers_cache as $_fichier) {
103                        supprimer_fichier($_fichier);
104                }
105        }
106
107        return true;
108}
109
110
111/**
112 * Etablit la liste de tous les caches y compris celui de la liste des boussoles
113 * et construit un tableau avec la liste des fichiers et l'alias de la boussole
114 * associée.
115 *
116 * @return array
117 *              Tableau des caches recensés :
118 *
119 *              - fichier : chemin complet du fichier cache,
120 *              - alias : alias de la boussole ou vide si on est en présence de la liste des boussoles.
121 */
122function trouver_caches(){
123        $caches = array();
124
125        $fichier_liste = cache_liste_existe();
126        if ($fichier_liste)
127                $caches[] = array('fichier' => $fichier_liste, 'alias' => '');
128
129        $pattern_cache = _BOUSSOLE_DIR_CACHE . str_replace(_BOUSSOLE_PATTERN_ALIAS, '*', _BOUSSOLE_CACHE);
130        $fichiers_cache = glob($pattern_cache);
131        if ($fichiers_cache) {
132                foreach($fichiers_cache as $_fichier) {
133                        $alias_boussole = str_replace(_BOUSSOLE_PREFIXE_CACHE, '', basename($_fichier, '.xml'));
134                        $caches[] = array('fichier' => $_fichier, 'alias' => $alias_boussole);
135                }
136        }
137
138        return $caches;
139}
140
141
142?>
Note: See TracBrowser for help on using the repository browser.