Changeset 113722 in spip-zone


Ignore:
Timestamp:
Feb 3, 2019, 6:34:37 PM (2 weeks ago)
Author:
eric@…
Message:

Ajout d'un formulaire de vidage des cache d'un service.

Location:
_plugins_/rainette/trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/rainette/trunk/inc/rainette_normaliser.php

    r108245 r113722  
    316316);
    317317
     318if (!defined('_RAINETTE_CACHE_NOMDIR')) {
     319        /**
     320         * Nom du dossier contenant les fichiers caches
     321         */
     322        define('_RAINETTE_CACHE_NOMDIR', 'cache-rainette/');
     323}
     324if (!defined('_RAINETTE_CACHE_DIR')) {
     325        /**
     326         * Chemin du dossier contenant les fichiers caches
     327         */
     328        define('_RAINETTE_CACHE_DIR', _DIR_VAR . _RAINETTE_CACHE_NOMDIR);
     329}
     330
    318331
    319332/**
     
    664677        // Construction du chemin du fichier cache
    665678        // Création et/ou détermination du dossier de destination du cache en fonction du service
    666         $dossier_cache = sous_repertoire(_DIR_VAR, 'cache-rainette');
     679        $dossier_cache = sous_repertoire(_DIR_VAR, trim(_RAINETTE_CACHE_NOMDIR, '/'));
    667680        $dossier_cache = sous_repertoire($dossier_cache, $configuration_service['alias']);
    668681
     
    680693
    681694        return $fichier_cache;
     695}
     696
     697
     698/**
     699 * Construit le nom du cache en fonction du servide, du lieu, du type de données et de la langue utilisée par le site.
     700 *
     701 * @param string       $service
     702 *        Alias du service météorologique.
     703 * @param array|string $caches
     704 *        Liste des fichiers à supprimer ou vide si tous les fichiers cache doivent être supprimés.
     705 *        Il est possible de passer un seul fichier comme une chaine.
     706 *
     707 * @return boolean
     708 *        Toujours à `true`.
     709 */
     710function cache_supprimer($service, $caches = array()) {
     711
     712        include_spip('inc/flock');
     713
     714        if ($caches) {
     715                $fichiers_cache = is_string($caches) ? array($caches) : $caches;
     716        } else {
     717                $fichiers_cache = glob(_RAINETTE_CACHE_DIR . $service . '/*.txt');
     718        }
     719
     720        if ($fichiers_cache) {
     721                foreach ($fichiers_cache as $_fichier) {
     722                        supprimer_fichier($_fichier);
     723                }
     724        }
     725
     726        return true;
     727}
     728
     729
     730/**
     731 * Répertorie les fichiers caches issu de l'utilisation de l'API d'un service donné.
     732 * La fonction renvoie une description de chaque fichier cache, à savoir, à minima, l'action lancée, le TSN
     733 * du taxon concerné et le nom du fichier cache.
     734 *
     735 * @package SPIP\TAXONOMIE\CACHE
     736 *
     737 * @param string $service
     738 *        Alias en minuscules du service pour lequel on veut lister les caches créés ou chaine vide si on souhaite
     739 *        tous les caches sans distinction de service.
     740 *
     741 * @return array
     742 *        Tableau des descriptions des fichiers cache créés par le ou les services.
     743 */
     744function cache_repertorier($service = '') {
     745
     746        // Initialisation de la liste des descriptions des caches du service
     747        $descriptions_cache = array();
     748
     749        // On constitue la liste des services requis par l'appel
     750        include_spip('rainette_fonctions');
     751        $services = rainette_lister_services();
     752        if ($service) {
     753                if (array_key_exists($service, $services)) {
     754                        $services = array($service => $services[$service]);
     755                } else {
     756                        $services = array();
     757                }
     758        }
     759
     760        if ($services) {
     761                foreach ($services as $_service => $_titre) {
     762                        // Récupération des fichiers cache du service.
     763                        $fichiers_cache = glob(_RAINETTE_CACHE_DIR . $_service . '/*.txt');
     764
     765                        if ($fichiers_cache) {
     766                                foreach ($fichiers_cache as $_fichier_cache) {
     767                                        // On raz la description pour éviter de garder des éléments du cache précédent et on initialise avec
     768                                        // le nom du fichier qui peut servir d'id, le chemin complet et le service.
     769                                        $description = array();
     770                                        $description['nom_cache'] = basename($_fichier_cache, '.txt');
     771                                        $description['fichier_cache'] = $_fichier_cache;
     772
     773                                        // On extrait le service qui sert toujours d'index principal du tableau
     774                                        $description['service'] = $_service;
     775                                        $description['titre_service'] = $_titre;
     776
     777                                        // On décompose le nom pour récupérer l'action et le TSN correspondant ainsi que la langue.
     778                                        // Le nom du fichier est composé d'éléments séparés par un underscore. La structure est toujours
     779                                        // composée dans l'ordre du service, de l'action et du TSN et peut être complétée par la langue.
     780                                        $elements = explode('_', $description['nom_cache']);
     781                                        $description['lieu'] = $elements[0];
     782                                        $description['modele'] = $elements[1];
     783                                        $description['langue'] = $elements[2];
     784
     785                                        // On structure le tableau suivant que l'on demande un service ou tous.
     786                                        if ($service) {
     787                                                $descriptions_cache['ervice'] = $_service;
     788                                                $descriptions_cache['titre_service'] = $_titre;
     789                                                $descriptions_cache['caches'][] = $description;
     790                                        } else {
     791                                                $descriptions_cache[$_service]['titre_service'] = $_titre;
     792                                                $descriptions_cache[$_service]['caches'][] = $description;
     793                                        }
     794                                }
     795                        }
     796                }
     797        }
     798
     799        return $descriptions_cache;
    682800}
    683801
     
    727845        // On détermine la "bonne langue" : on choisit soit celle de la page en cours
    728846        // soit celle en cours pour l'affichage.
    729         $langue_spip = $GLOBALS['lang'] ? $GLOBALS['lang'] : $GLOBALS['spip_lang'];
     847        $langue_spip = !empty($GLOBALS['lang']) ? $GLOBALS['lang'] : $GLOBALS['spip_lang'];
    730848
    731849        // On cherche d'abord si le service fournit la langue utilisée par le site.
  • _plugins_/rainette/trunk/lang/rainette_fr.php

    r110174 r113722  
    55
    66$GLOBALS[$GLOBALS['idx_lang']] = array(
     7
     8        //B
     9        'bouton_cocher_aucun' => 'Tout décocher',
     10        'bouton_cocher_tout' => 'Tout cocher',
    711
    812        // C
     
    9599
    96100        // L
     101        'label_vider_cache' => 'Caches créés par le service',
    97102        'label_cle' => 'Clé d\'inscription',
    98103        'label_compteur_month' => 'Compteur mois',
     
    255260        'noisette_titre_previsions_24h' => 'Prévisions météorologiques 24h',
    256261        'noisette_preview_previsions' => 'Jours de prévisions : @nb_jours@ - Premier jour : @jour_1@.',
     262        'notice_liste_aucun_cache' => 'Aucun cache n\'a encore été créé par le service.',
    257263        'nuit' => 'nuit',
    258264
     
    269275        // S
    270276        'station_observation' => 'station',
     277        'succes_vider_caches' => 'Les caches sélectionnés ont bien été supprimés.',
    271278
    272279        // T
     
    283290        'tendance_texte_steady' => 'stable',
    284291        'titre_page_configurer' => 'Configuration du plugin Rainette',
     292        'titre_form_vidage_cache' => 'Vider les caches du service',
    285293
    286294        // U
  • _plugins_/rainette/trunk/prive/squelettes/contenu/configurer_rainette.html

    r108194 r113722  
    22<h1 class="grostitre"><:rainette:titre_page_configurer:></h1>
    33
    4 [<div class='ajax'>(#FORMULAIRE_CONFIGURER_RAINETTE_SERVICE{#ENV{service, weather}})</div>]
     4[<div class='ajax'>
     5        (#FORMULAIRE_CONFIGURER_RAINETTE_SERVICE{#ENV{service, weather}})
     6</div>]
     7
     8[<div class='ajax'>
     9        (#FORMULAIRE_VIDER_CACHE_RAINETTE_SERVICE{#ENV{service, weather}})
     10</div>]
Note: See TracChangeset for help on using the changeset viewer.